================
@@ -126,6 +126,51 @@ __m512d test_mm512_permute_pd(__m512d A) {
return _mm512_permute_pd(A, 0x55);
}
+__m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
+ // CIR-LABEL: test_mm512_insertf64x4
+ // CIR: %{{.*}} = cir.vec.shuffle(%{{.*}}, %{{.*}} : !cir.vector<8 x
!cir.double>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i,
#cir.int<3> : !s32i, #cir.int<8> : !s32i, #cir.int<9> : !s32i, #cir.int<10> :
!s32i, #cir.int<11> : !s32i] : !cir.vector<8 x !cir.double>
+
+ // LLVM-LABEL: test_mm512_insertf64x4
+ // LLVM: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32>
<i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
+
+ // OGCG-LABEL: test_mm512_insertf64x4
+ // OGCG: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32>
<i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
+ return _mm512_insertf64x4(__A, __B, 1);
+}
+
+__m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
+ // CIR-LABEL: test_mm512_insertf32x4
+ // CIR: %{{.*}} = cir.vec.shuffle(%{{.*}}, %{{.*}} : !cir.vector<16 x
!cir.float>) [#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i,
#cir.int<3> : !s32i, #cir.int<16> : !s32i, #cir.int<17> : !s32i, #cir.int<18> :
!s32i, #cir.int<19> : !s32i, #cir.int<8> : !s32i, #cir.int<9> : !s32i,
#cir.int<10> : !s32i, #cir.int<11> : !s32i, #cir.int<12> : !s32i, #cir.int<13>
: !s32i, #cir.int<14> : !s32i, #cir.int<15> : !s32i] : !cir.vector<16 x
!cir.float>
+
+ // LLVM-LABEL: test_mm512_insertf32x4
+ // LLVM: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x
i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9,
i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
+
+ // OGCG-LABEL: test_mm512_insertf32x4
+ // OGCG: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x
i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9,
i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
+ return _mm512_insertf32x4(__A, __B, 1);
+}
+
+__m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
+ // CIR-LABEL: test_mm512_inserti64x4
+ // CIR: %{{.*}} = cir.vec.shuffle(%{{.*}}, %{{.*}} : !cir.vector<8 x !s64i>)
[#cir.int<0> : !s32i, #cir.int<1> : !s32i, #cir.int<2> : !s32i, #cir.int<3> :
!s32i, #cir.int<8> : !s32i, #cir.int<9> : !s32i, #cir.int<10> : !s32i,
#cir.int<11> : !s32i] : !cir.vector<8 x !s64i>
+
+ // LLVM-LABEL: test_mm512_inserti64x4
+ // LLVM: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32
0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
+ return _mm512_inserti64x4(__A, __B, 1);
----------------
andykaylor wrote:
Please add the OGCG checks here.
https://github.com/llvm/llvm-project/pull/170924
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits