Skip to content

Commit 2bd33e1

Browse files
committed
Add test for __builtin_ia32_vperm2f128_pd256/_mm256_permute2f128_pd
1 parent a50178d commit 2bd33e1

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

tests/simd.x86_64/src/test_x86.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ impl PartialEq for ShuffleVectors {
7575
b: u128,
7676
c: u128,
7777
d: (u128, u128),
78+
ep: (u128, u128),
7879
e: (u128, u128),
7980
f: u128,
8081
g: u128,

tests/simd.x86_64/src/x86.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ typedef struct {
1414
__m128d c;
1515
__m256 d;
1616
__m256d e;
17+
__m256d ep;
1718
__m128i f, g, h, o;
1819
#ifdef __AVX2__
1920
__m256i i, j, k;
@@ -48,6 +49,7 @@ void zero_init_all(void) {
4849
__m256 b;
4950
__m128d c;
5051
__m128i d;
52+
__m256d ep;
5153
__m256d e;
5254
__m256i f;
5355
#ifdef MMX
@@ -65,6 +67,7 @@ ShuffleVectors call_all(void) {
6567
__m256d e = _mm256_set_pd(1.1, 2.2, 3.3, 4.4);
6668
__m128i f = _mm_set1_epi8(123);
6769
__m256i g = _mm256_set_epi32(14, 18, 22, 33, -11, -3, 8, 300);
70+
__m256d h = _mm256_set_pd(5.5, 6.6, 7.7, 8.8);
6871

6972
ShuffleVectors sv = {
7073
#ifdef MMX
@@ -76,6 +79,7 @@ ShuffleVectors call_all(void) {
7679
_mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 2, 1, 0)),
7780
_mm_shuffle_pd(b, b, (1 << 1 | 1 << 0)),
7881
_mm256_shuffle_ps(d, d, _MM_SHUFFLE(1, 2, 2, 1)),
82+
_mm256_permute2f128_pd(e, h, 0x31),
7983
_mm256_shuffle_pd(e, e, (1 << 3 | 1 << 2 | 0 << 1 | 0 << 0)),
8084
_mm_shuffle_epi32(f, _MM_SHUFFLE(1, 0, 0, 1)),
8185
_mm_shufflehi_epi16(f, _MM_SHUFFLE(0, 1, 2, 3)),
@@ -112,6 +116,7 @@ ShuffleVectors call_all_used(void) {
112116
__m256d ee = _mm256_set_pd(4.4, 3.3, 2.2, 1.1);
113117
__m128i ff = _mm_set1_epi8(13);
114118
__m256i gg = _mm256_set_epi32(-12, 33, 44, 100, -44, 42, -33, -100);
119+
__m256d hh = _mm256_set_pd(5.5, 6.6, 7.7, 8.8);
115120

116121
#ifdef MMX
117122
__m64 a;
@@ -120,6 +125,7 @@ ShuffleVectors call_all_used(void) {
120125
__m128d c;
121126
__m256 d;
122127
__m256d e;
128+
__m256d ep;
123129
__m128i f, g, h, o;
124130
__m256i i, j, k;
125131
#ifdef MMX
@@ -140,6 +146,7 @@ ShuffleVectors call_all_used(void) {
140146
b = _mm_shuffle_ps(aa, aa, _MM_SHUFFLE(3, 2, 1, 0));
141147
c = _mm_shuffle_pd(bb, bb, (1 << 1 | 1 << 0));
142148
d = _mm256_shuffle_ps(dd, dd, _MM_SHUFFLE(1, 2, 2, 1));
149+
ep = _mm256_permute2f128_pd(ee, hh, 0x31),
143150
e = _mm256_shuffle_pd(ee, ee, (1 << 3 | 1 << 2 | 0 << 1 | 0 << 0));
144151
f = _mm_shuffle_epi32(ff, _MM_SHUFFLE(1, 0, 0, 1));
145152
g = _mm_shufflehi_epi16(f, _MM_SHUFFLE(0, 1, 2, 3));
@@ -167,7 +174,7 @@ ShuffleVectors call_all_used(void) {
167174
#ifdef MMX
168175
a,
169176
#endif
170-
b, c, d, e, f, g, h, o,
177+
b, c, d, e, ep, f, g, h, o,
171178

172179
#ifdef __AVX2__
173180
i, j, k,

0 commit comments

Comments
 (0)