Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
16dc142a
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
16dc142a
编写于
9月 02, 2018
作者:
A
alexey-milovidov
提交者:
GitHub
9月 02, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3017 from yandex/ubsan-fixes
Fixes for UBSan.
上级
1c2e4c36
45a4a959
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
77 addition
and
67 deletion
+77
-67
dbms/programs/client/Client.cpp
dbms/programs/client/Client.cpp
+4
-0
dbms/src/Common/RWLockFIFO.h
dbms/src/Common/RWLockFIFO.h
+1
-1
dbms/src/Common/SipHash.h
dbms/src/Common/SipHash.h
+2
-1
dbms/src/Interpreters/Cluster.h
dbms/src/Interpreters/Cluster.h
+1
-1
libs/libcommon/include/common/StringRef.h
libs/libcommon/include/common/StringRef.h
+4
-4
libs/libmemcpy/impl/FastMemcpy.h
libs/libmemcpy/impl/FastMemcpy.h
+65
-60
未找到文件。
dbms/programs/client/Client.cpp
浏览文件 @
16dc142a
...
...
@@ -63,6 +63,10 @@
#include "Suggest.h"
#endif
#ifndef __clang__
#pragma GCC optimize("-fno-var-tracking-assignments")
#endif
/// http://en.wikipedia.org/wiki/ANSI_escape_code
...
...
dbms/src/Common/RWLockFIFO.h
浏览文件 @
16dc142a
...
...
@@ -40,7 +40,7 @@ private:
int
thread_number
=
0
;
std
::
time_t
enqueue_time
=
0
;
std
::
time_t
start_time
=
0
;
Type
type
;
Type
type
=
Read
;
};
public:
...
...
dbms/src/Common/SipHash.h
浏览文件 @
16dc142a
...
...
@@ -14,6 +14,7 @@
*/
#include <common/Types.h>
#include <common/unaligned.h>
#include <type_traits>
#define ROTL(x, b) static_cast<UInt64>(((x) << (b)) | ((x) >> (64 - (b))))
...
...
@@ -106,7 +107,7 @@ public:
while
(
data
+
8
<=
end
)
{
current_word
=
*
reinterpret_cast
<
const
UInt64
*
>
(
data
);
current_word
=
unalignedLoad
<
UInt64
>
(
data
);
v3
^=
current_word
;
SIPROUND
;
...
...
dbms/src/Interpreters/Cluster.h
浏览文件 @
16dc142a
...
...
@@ -114,7 +114,7 @@ public:
ConnectionPoolWithFailoverPtr
pool
;
/// Connection pool for each replica, contains nullptr for local replicas
ConnectionPoolPtrs
per_replica_pools
;
bool
has_internal_replication
;
bool
has_internal_replication
=
false
;
};
using
ShardsInfo
=
std
::
vector
<
ShardInfo
>
;
...
...
libs/libcommon/include/common/StringRef.h
浏览文件 @
16dc142a
...
...
@@ -103,18 +103,18 @@ inline bool memequalSSE2Wide(const char * p1, const char * p2, size_t size)
case
15
:
if
(
p1
[
14
]
!=
p2
[
14
])
return
false
;
[[
fallthrough
]];
case
14
:
if
(
p1
[
13
]
!=
p2
[
13
])
return
false
;
[[
fallthrough
]];
case
13
:
if
(
p1
[
12
]
!=
p2
[
12
])
return
false
;
[[
fallthrough
]];
case
12
:
if
(
reinterpret_cast
<
const
uint32_t
*>
(
p1
)[
2
]
==
reinterpret_cast
<
const
uint32_t
*>
(
p2
)[
2
]
)
goto
l8
;
else
return
false
;
case
12
:
if
(
unalignedLoad
<
uint32_t
>
(
p1
+
8
)
==
unalignedLoad
<
uint32_t
>
(
p2
+
8
)
)
goto
l8
;
else
return
false
;
case
11
:
if
(
p1
[
10
]
!=
p2
[
10
])
return
false
;
[[
fallthrough
]];
case
10
:
if
(
p1
[
9
]
!=
p2
[
9
])
return
false
;
[[
fallthrough
]];
case
9
:
if
(
p1
[
8
]
!=
p2
[
8
])
return
false
;
l8:
[[
fallthrough
]];
case
8
:
return
reinterpret_cast
<
const
UInt64
*>
(
p1
)[
0
]
==
reinterpret_cast
<
const
UInt64
*>
(
p2
)[
0
]
;
case
8
:
return
unalignedLoad
<
uint64_t
>
(
p1
)
==
unalignedLoad
<
uint64_t
>
(
p2
)
;
case
7
:
if
(
p1
[
6
]
!=
p2
[
6
])
return
false
;
[[
fallthrough
]];
case
6
:
if
(
p1
[
5
]
!=
p2
[
5
])
return
false
;
[[
fallthrough
]];
case
5
:
if
(
p1
[
4
]
!=
p2
[
4
])
return
false
;
[[
fallthrough
]];
case
4
:
return
reinterpret_cast
<
const
uint32_t
*>
(
p1
)[
0
]
==
reinterpret_cast
<
const
uint32_t
*>
(
p2
)[
0
]
;
case
4
:
return
unalignedLoad
<
uint32_t
>
(
p1
)
==
unalignedLoad
<
uint32_t
>
(
p2
)
;
case
3
:
if
(
p1
[
2
]
!=
p2
[
2
])
return
false
;
[[
fallthrough
]];
case
2
:
return
reinterpret_cast
<
const
uint16_t
*>
(
p1
)[
0
]
==
reinterpret_cast
<
const
uint16_t
*>
(
p2
)[
0
]
;
case
2
:
return
unalignedLoad
<
uint16_t
>
(
p1
)
==
unalignedLoad
<
uint16_t
>
(
p2
)
;
case
1
:
if
(
p1
[
0
]
!=
p2
[
0
])
return
false
;
[[
fallthrough
]];
case
0
:
break
;
}
...
...
libs/libmemcpy/impl/FastMemcpy.h
浏览文件 @
16dc142a
...
...
@@ -34,6 +34,11 @@
#endif
typedef
__attribute__
((
__aligned__
(
1
)))
uint16_t
uint16_unaligned_t
;
typedef
__attribute__
((
__aligned__
(
1
)))
uint32_t
uint32_unaligned_t
;
typedef
__attribute__
((
__aligned__
(
1
)))
uint64_t
uint64_unaligned_t
;
//---------------------------------------------------------------------
// fast copy for different sizes
...
...
@@ -103,97 +108,97 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
66
:
memcpy_sse2_64
(
dd
-
66
,
ss
-
66
);
case
2
:
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
67
:
memcpy_sse2_64
(
dd
-
67
,
ss
-
67
);
case
3
:
*
((
uint16_
t
*
)(
dd
-
3
))
=
*
((
uint16
_t
*
)(
ss
-
3
));
*
((
uint16_
unaligned_t
*
)(
dd
-
3
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
3
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
case
68
:
memcpy_sse2_64
(
dd
-
68
,
ss
-
68
);
case
4
:
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
69
:
memcpy_sse2_64
(
dd
-
69
,
ss
-
69
);
case
5
:
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
case
70
:
memcpy_sse2_64
(
dd
-
70
,
ss
-
70
);
case
6
:
*
((
uint32_
t
*
)(
dd
-
6
))
=
*
((
uint32
_t
*
)(
ss
-
6
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint32_
unaligned_t
*
)(
dd
-
6
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
6
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
71
:
memcpy_sse2_64
(
dd
-
71
,
ss
-
71
);
case
7
:
*
((
uint32_
t
*
)(
dd
-
7
))
=
*
((
uint32
_t
*
)(
ss
-
7
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
7
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
7
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
72
:
memcpy_sse2_64
(
dd
-
72
,
ss
-
72
);
case
8
:
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
73
:
memcpy_sse2_64
(
dd
-
73
,
ss
-
73
);
case
9
:
*
((
uint64_
t
*
)(
dd
-
9
))
=
*
((
uint64
_t
*
)(
ss
-
9
));
*
((
uint64_
unaligned_t
*
)(
dd
-
9
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
9
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
case
74
:
memcpy_sse2_64
(
dd
-
74
,
ss
-
74
);
case
10
:
*
((
uint64_
t
*
)(
dd
-
10
))
=
*
((
uint64
_t
*
)(
ss
-
10
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint64_
unaligned_t
*
)(
dd
-
10
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
10
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
75
:
memcpy_sse2_64
(
dd
-
75
,
ss
-
75
);
case
11
:
*
((
uint64_
t
*
)(
dd
-
11
))
=
*
((
uint64
_t
*
)(
ss
-
11
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint64_
unaligned_t
*
)(
dd
-
11
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
11
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
76
:
memcpy_sse2_64
(
dd
-
76
,
ss
-
76
);
case
12
:
*
((
uint64_
t
*
)(
dd
-
12
))
=
*
((
uint64
_t
*
)(
ss
-
12
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint64_
unaligned_t
*
)(
dd
-
12
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
12
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
77
:
memcpy_sse2_64
(
dd
-
77
,
ss
-
77
);
case
13
:
*
((
uint64_
t
*
)(
dd
-
13
))
=
*
((
uint64
_t
*
)(
ss
-
13
));
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint64_
unaligned_t
*
)(
dd
-
13
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
13
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
case
78
:
memcpy_sse2_64
(
dd
-
78
,
ss
-
78
);
case
14
:
*
((
uint64_
t
*
)(
dd
-
14
))
=
*
((
uint64
_t
*
)(
ss
-
14
));
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
14
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
14
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
79
:
memcpy_sse2_64
(
dd
-
79
,
ss
-
79
);
case
15
:
*
((
uint64_
t
*
)(
dd
-
15
))
=
*
((
uint64
_t
*
)(
ss
-
15
));
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
15
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
15
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
80
:
...
...
@@ -213,14 +218,14 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
82
,
ss
-
82
);
case
18
:
memcpy_sse2_16
(
dd
-
18
,
ss
-
18
);
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
83
:
memcpy_sse2_64
(
dd
-
83
,
ss
-
83
);
case
19
:
memcpy_sse2_16
(
dd
-
19
,
ss
-
19
);
*
((
uint16_
t
*
)(
dd
-
3
))
=
*
((
uint16
_t
*
)(
ss
-
3
));
*
((
uint16_
unaligned_t
*
)(
dd
-
3
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
3
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -228,14 +233,14 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
84
,
ss
-
84
);
case
20
:
memcpy_sse2_16
(
dd
-
20
,
ss
-
20
);
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
85
:
memcpy_sse2_64
(
dd
-
85
,
ss
-
85
);
case
21
:
memcpy_sse2_16
(
dd
-
21
,
ss
-
21
);
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -243,16 +248,16 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
86
,
ss
-
86
);
case
22
:
memcpy_sse2_16
(
dd
-
22
,
ss
-
22
);
*
((
uint32_
t
*
)(
dd
-
6
))
=
*
((
uint32
_t
*
)(
ss
-
6
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint32_
unaligned_t
*
)(
dd
-
6
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
6
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
87
:
memcpy_sse2_64
(
dd
-
87
,
ss
-
87
);
case
23
:
memcpy_sse2_16
(
dd
-
23
,
ss
-
23
);
*
((
uint32_
t
*
)(
dd
-
7
))
=
*
((
uint32
_t
*
)(
ss
-
7
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
7
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
7
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
88
:
...
...
@@ -328,14 +333,14 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
98
,
ss
-
98
);
case
34
:
memcpy_sse2_32
(
dd
-
34
,
ss
-
34
);
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
99
:
memcpy_sse2_64
(
dd
-
99
,
ss
-
99
);
case
35
:
memcpy_sse2_32
(
dd
-
35
,
ss
-
35
);
*
((
uint16_
t
*
)(
dd
-
3
))
=
*
((
uint16
_t
*
)(
ss
-
3
));
*
((
uint16_
unaligned_t
*
)(
dd
-
3
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
3
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -343,14 +348,14 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
100
,
ss
-
100
);
case
36
:
memcpy_sse2_32
(
dd
-
36
,
ss
-
36
);
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
101
:
memcpy_sse2_64
(
dd
-
101
,
ss
-
101
);
case
37
:
memcpy_sse2_32
(
dd
-
37
,
ss
-
37
);
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -358,30 +363,30 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
102
,
ss
-
102
);
case
38
:
memcpy_sse2_32
(
dd
-
38
,
ss
-
38
);
*
((
uint32_
t
*
)(
dd
-
6
))
=
*
((
uint32
_t
*
)(
ss
-
6
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint32_
unaligned_t
*
)(
dd
-
6
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
6
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
103
:
memcpy_sse2_64
(
dd
-
103
,
ss
-
103
);
case
39
:
memcpy_sse2_32
(
dd
-
39
,
ss
-
39
);
*
((
uint32_
t
*
)(
dd
-
7
))
=
*
((
uint32
_t
*
)(
ss
-
7
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
7
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
7
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
104
:
memcpy_sse2_64
(
dd
-
104
,
ss
-
104
);
case
40
:
memcpy_sse2_32
(
dd
-
40
,
ss
-
40
);
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
105
:
memcpy_sse2_64
(
dd
-
105
,
ss
-
105
);
case
41
:
memcpy_sse2_32
(
dd
-
41
,
ss
-
41
);
*
((
uint64_
t
*
)(
dd
-
9
))
=
*
((
uint64
_t
*
)(
ss
-
9
));
*
((
uint64_
unaligned_t
*
)(
dd
-
9
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
9
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -389,32 +394,32 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
106
,
ss
-
106
);
case
42
:
memcpy_sse2_32
(
dd
-
42
,
ss
-
42
);
*
((
uint64_
t
*
)(
dd
-
10
))
=
*
((
uint64
_t
*
)(
ss
-
10
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint64_
unaligned_t
*
)(
dd
-
10
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
10
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
107
:
memcpy_sse2_64
(
dd
-
107
,
ss
-
107
);
case
43
:
memcpy_sse2_32
(
dd
-
43
,
ss
-
43
);
*
((
uint64_
t
*
)(
dd
-
11
))
=
*
((
uint64
_t
*
)(
ss
-
11
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint64_
unaligned_t
*
)(
dd
-
11
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
11
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
108
:
memcpy_sse2_64
(
dd
-
108
,
ss
-
108
);
case
44
:
memcpy_sse2_32
(
dd
-
44
,
ss
-
44
);
*
((
uint64_
t
*
)(
dd
-
12
))
=
*
((
uint64
_t
*
)(
ss
-
12
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint64_
unaligned_t
*
)(
dd
-
12
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
12
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
109
:
memcpy_sse2_64
(
dd
-
109
,
ss
-
109
);
case
45
:
memcpy_sse2_32
(
dd
-
45
,
ss
-
45
);
*
((
uint64_
t
*
)(
dd
-
13
))
=
*
((
uint64
_t
*
)(
ss
-
13
));
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint64_
unaligned_t
*
)(
dd
-
13
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
13
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -422,16 +427,16 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
memcpy_sse2_64
(
dd
-
110
,
ss
-
110
);
case
46
:
memcpy_sse2_32
(
dd
-
46
,
ss
-
46
);
*
((
uint64_
t
*
)(
dd
-
14
))
=
*
((
uint64
_t
*
)(
ss
-
14
));
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
14
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
14
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
111
:
memcpy_sse2_64
(
dd
-
111
,
ss
-
111
);
case
47
:
memcpy_sse2_32
(
dd
-
47
,
ss
-
47
);
*
((
uint64_
t
*
)(
dd
-
15
))
=
*
((
uint64
_t
*
)(
ss
-
15
));
*
((
uint64_
t
*
)(
dd
-
8
))
=
*
((
uint64
_t
*
)(
ss
-
8
));
*
((
uint64_
unaligned_t
*
)(
dd
-
15
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
15
));
*
((
uint64_
unaligned_t
*
)(
dd
-
8
))
=
*
((
uint64_unaligned
_t
*
)(
ss
-
8
));
break
;
case
112
:
...
...
@@ -454,7 +459,7 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
50
:
memcpy_sse2_32
(
dd
-
50
,
ss
-
50
);
memcpy_sse2_16
(
dd
-
18
,
ss
-
18
);
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
115
:
...
...
@@ -462,7 +467,7 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
51
:
memcpy_sse2_32
(
dd
-
51
,
ss
-
51
);
memcpy_sse2_16
(
dd
-
19
,
ss
-
19
);
*
((
uint16_
t
*
)(
dd
-
3
))
=
*
((
uint16
_t
*
)(
ss
-
3
));
*
((
uint16_
unaligned_t
*
)(
dd
-
3
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
3
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -471,7 +476,7 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
52
:
memcpy_sse2_32
(
dd
-
52
,
ss
-
52
);
memcpy_sse2_16
(
dd
-
20
,
ss
-
20
);
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
117
:
...
...
@@ -479,7 +484,7 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
53
:
memcpy_sse2_32
(
dd
-
53
,
ss
-
53
);
memcpy_sse2_16
(
dd
-
21
,
ss
-
21
);
*
((
uint32_
t
*
)(
dd
-
5
))
=
*
((
uint32
_t
*
)(
ss
-
5
));
*
((
uint32_
unaligned_t
*
)(
dd
-
5
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
5
));
dd
[
-
1
]
=
ss
[
-
1
];
break
;
...
...
@@ -488,8 +493,8 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
54
:
memcpy_sse2_32
(
dd
-
54
,
ss
-
54
);
memcpy_sse2_16
(
dd
-
22
,
ss
-
22
);
*
((
uint32_
t
*
)(
dd
-
6
))
=
*
((
uint32
_t
*
)(
ss
-
6
));
*
((
uint16_
t
*
)(
dd
-
2
))
=
*
((
uint16
_t
*
)(
ss
-
2
));
*
((
uint32_
unaligned_t
*
)(
dd
-
6
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
6
));
*
((
uint16_
unaligned_t
*
)(
dd
-
2
))
=
*
((
uint16_unaligned
_t
*
)(
ss
-
2
));
break
;
case
119
:
...
...
@@ -497,8 +502,8 @@ static INLINE void *memcpy_tiny(void *dst, const void *src, size_t size) {
case
55
:
memcpy_sse2_32
(
dd
-
55
,
ss
-
55
);
memcpy_sse2_16
(
dd
-
23
,
ss
-
23
);
*
((
uint32_
t
*
)(
dd
-
7
))
=
*
((
uint32
_t
*
)(
ss
-
7
));
*
((
uint32_
t
*
)(
dd
-
4
))
=
*
((
uint32
_t
*
)(
ss
-
4
));
*
((
uint32_
unaligned_t
*
)(
dd
-
7
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
7
));
*
((
uint32_
unaligned_t
*
)(
dd
-
4
))
=
*
((
uint32_unaligned
_t
*
)(
ss
-
4
));
break
;
case
120
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录