@@ -1039,26 +1039,30 @@ int test_mm256_extract_epi8(__m256i A) {
1039
1039
// CHECK: zext i8 %{{.*}} to i32
1040
1040
return _mm256_extract_epi8 (A , 31 );
1041
1041
}
1042
+ TEST_CONSTEXPR (_mm256_extract_epi8 (((__m256i )(__v32qs ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 }), 45 ) == 13 );
1042
1043
1043
1044
int test_mm256_extract_epi16 (__m256i A ) {
1044
1045
// CHECK-LABEL: test_mm256_extract_epi16
1045
1046
// CHECK: extractelement <16 x i16> %{{.*}}, {{i32|i64}} 15
1046
1047
// CHECK: zext i16 %{{.*}} to i32
1047
1048
return _mm256_extract_epi16 (A , 15 );
1048
1049
}
1050
+ TEST_CONSTEXPR (_mm256_extract_epi16 (((__m256i )(__v16hi ){0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 }), 50 ) == 4 );
1049
1051
1050
1052
int test_mm256_extract_epi32 (__m256i A ) {
1051
1053
// CHECK-LABEL: test_mm256_extract_epi32
1052
1054
// CHECK: extractelement <8 x i32> %{{.*}}, {{i32|i64}} 7
1053
1055
return _mm256_extract_epi32 (A , 7 );
1054
1056
}
1057
+ TEST_CONSTEXPR (_mm256_extract_epi32 (((__m256i )(__v8si ){0 , 5 , 10 , 15 , 20 , 25 , 30 , 35 }), 18 ) == 10 );
1055
1058
1056
1059
#if __x86_64__
1057
1060
long long test_mm256_extract_epi64 (__m256i A ) {
1058
1061
// X64-LABEL: test_mm256_extract_epi64
1059
1062
// X64: extractelement <4 x i64> %{{.*}}, {{i32|i64}} 3
1060
1063
return _mm256_extract_epi64 (A , 3 );
1061
1064
}
1065
+ TEST_CONSTEXPR (_mm256_extract_epi64 (((__m256i )(__v4di ){5 , 15 , 25 , 35 }), 14 ) == 25 );
1062
1066
#endif
1063
1067
1064
1068
__m128d test_mm256_extractf128_pd (__m256d A ) {
@@ -1120,25 +1124,29 @@ __m256i test_mm256_insert_epi8(__m256i x, char b) {
1120
1124
// CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, {{i32|i64}} 14
1121
1125
return _mm256_insert_epi8 (x , b , 14 );
1122
1126
}
1127
+ TEST_CONSTEXPR (match_v32qi (_mm256_insert_epi8 (((__m256i )(__v32qs ){0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 }), 77 , 47 ), 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 77 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ));
1123
1128
1124
1129
__m256i test_mm256_insert_epi16 (__m256i x , int b ) {
1125
1130
// CHECK-LABEL: test_mm256_insert_epi16
1126
1131
// CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, {{i32|i64}} 4
1127
1132
return _mm256_insert_epi16 (x , b , 4 );
1128
1133
}
1134
+ TEST_CONSTEXPR (match_v16hi (_mm256_insert_epi16 (((__m256i )(__v16hi ){0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 }), 909 , 62 ), 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 909 , 30 ));
1129
1135
1130
1136
__m256i test_mm256_insert_epi32 (__m256i x , int b ) {
1131
1137
// CHECK-LABEL: test_mm256_insert_epi32
1132
1138
// CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, {{i32|i64}} 5
1133
1139
return _mm256_insert_epi32 (x , b , 5 );
1134
1140
}
1141
+ TEST_CONSTEXPR (match_v8si (_mm256_insert_epi32 (((__m256i )(__v8si ){ 0 , 5 , 10 , 15 , 20 , 25 , 30 , 35 }), 4321 , 18 ), 0 , 5 , 4321 , 15 , 20 , 25 , 30 , 35 ));
1135
1142
1136
1143
#if __x86_64__
1137
1144
__m256i test_mm256_insert_epi64 (__m256i x , long long b ) {
1138
1145
// X64-LABEL: test_mm256_insert_epi64
1139
1146
// X64: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, {{i32|i64}} 2
1140
1147
return _mm256_insert_epi64 (x , b , 2 );
1141
1148
}
1149
+ TEST_CONSTEXPR (match_v4di (_mm256_insert_epi64 (((__m256i )(__v4di ){5 , 15 , 25 , 35 }), -123456789LL , 10 ), 5 , 15 , -123456789LL , 35 ));
1142
1150
#endif
1143
1151
1144
1152
__m256d test_mm256_insertf128_pd (__m256d A , __m128d B ) {
0 commit comments