-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[CIR] Upstream builtin scatter from ClangIR incubator #170353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-clangir Author: Jasmine Tang (badumbatish) ChangesPart of #167752 Full diff: https://github.com/llvm/llvm-project/pull/170353.diff 2 Files Affected:
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
index 224a182ed17d1..82820915bcbe5 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
@@ -685,7 +685,94 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
case X86::BI__builtin_ia32_scattersiv4sf:
case X86::BI__builtin_ia32_scattersiv4si:
case X86::BI__builtin_ia32_scattersiv8sf:
- case X86::BI__builtin_ia32_scattersiv8si:
+ case X86::BI__builtin_ia32_scattersiv8si: {
+ llvm::StringRef intrinsicName;
+ switch (builtinID) {
+ default:
+ llvm_unreachable("Unexpected builtin");
+ case X86::BI__builtin_ia32_scattersiv8df:
+ intrinsicName = "x86.avx512.mask.scatter.dpd.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv16sf:
+ intrinsicName = "x86.avx512.mask.scatter.dps.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8df:
+ intrinsicName = "x86.avx512.mask.scatter.qpd.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv16sf:
+ intrinsicName = "x86.avx512.mask.scatter.qps.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8di:
+ intrinsicName = "x86.avx512.mask.scatter.dpq.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv16si:
+ intrinsicName = "x86.avx512.mask.scatter.dpi.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8di:
+ intrinsicName = "x86.avx512.mask.scatter.qpq.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv16si:
+ intrinsicName = "x86.avx512.mask.scatter.qpi.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv2df:
+ intrinsicName = "x86.avx512.mask.scatterdiv2.df";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv2di:
+ intrinsicName = "x86.avx512.mask.scatterdiv2.di";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4df:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.df";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4di:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.di";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4sf:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.sf";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4si:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.si";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8sf:
+ intrinsicName = "x86.avx512.mask.scatterdiv8.sf";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8si:
+ intrinsicName = "x86.avx512.mask.scatterdiv8.si";
+ break;
+ case X86::BI__builtin_ia32_scattersiv2df:
+ intrinsicName = "x86.avx512.mask.scattersiv2.df";
+ break;
+ case X86::BI__builtin_ia32_scattersiv2di:
+ intrinsicName = "x86.avx512.mask.scattersiv2.di";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4df:
+ intrinsicName = "x86.avx512.mask.scattersiv4.df";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4di:
+ intrinsicName = "x86.avx512.mask.scattersiv4.di";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4sf:
+ intrinsicName = "x86.avx512.mask.scattersiv4.sf";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4si:
+ intrinsicName = "x86.avx512.mask.scattersiv4.si";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8sf:
+ intrinsicName = "x86.avx512.mask.scattersiv8.sf";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8si:
+ intrinsicName = "x86.avx512.mask.scattersiv8.si";
+ break;
+ }
+
+ mlir::Location loc = getLoc(expr->getExprLoc());
+ unsigned minElts =
+ std::min(cast<cir::VectorType>(ops[2].getType()).getSize(),
+ cast<cir::VectorType>(ops[3].getType()).getSize());
+ ops[1] = getMaskVecValue(builder, loc, ops[1], minElts);
+
+ return emitIntrinsicCallOp(builder, loc, intrinsicName.str(),
+ convertType(expr->getType()), ops);
+ }
case X86::BI__builtin_ia32_vextractf128_pd256:
case X86::BI__builtin_ia32_vextractf128_ps256:
case X86::BI__builtin_ia32_vextractf128_si256:
diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
index e03109510a931..21841b163832c 100644
--- a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
+++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
@@ -446,3 +446,171 @@ __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m25
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
}
+
+void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpd.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpd.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpd.512
+ return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpd.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpd.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpd.512
+ return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dps.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.dps.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.dps.512
+ return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dps.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.dps.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.dps.512
+ return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpd.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpd.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpd.512
+ return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpd.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpd.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpd.512
+ return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qps.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.qps.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.qps.512
+ return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qps.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.qps.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.qps.512
+ return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpi.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpi.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpi.512
+ return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpi.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpi.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpi.512
+ return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_epi64
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpq.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_epi64
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpq.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_epi64
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpq.512
+ return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_epi64
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpq.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_epi64
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpq.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_epi64
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpq.512
+ return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpi.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpi.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpi.512
+ return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpi.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpi.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpi.512
+ return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
+}
|
|
@llvm/pr-subscribers-clang Author: Jasmine Tang (badumbatish) ChangesPart of #167752 Full diff: https://github.com/llvm/llvm-project/pull/170353.diff 2 Files Affected:
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
index 224a182ed17d1..82820915bcbe5 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
@@ -685,7 +685,94 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
case X86::BI__builtin_ia32_scattersiv4sf:
case X86::BI__builtin_ia32_scattersiv4si:
case X86::BI__builtin_ia32_scattersiv8sf:
- case X86::BI__builtin_ia32_scattersiv8si:
+ case X86::BI__builtin_ia32_scattersiv8si: {
+ llvm::StringRef intrinsicName;
+ switch (builtinID) {
+ default:
+ llvm_unreachable("Unexpected builtin");
+ case X86::BI__builtin_ia32_scattersiv8df:
+ intrinsicName = "x86.avx512.mask.scatter.dpd.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv16sf:
+ intrinsicName = "x86.avx512.mask.scatter.dps.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8df:
+ intrinsicName = "x86.avx512.mask.scatter.qpd.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv16sf:
+ intrinsicName = "x86.avx512.mask.scatter.qps.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8di:
+ intrinsicName = "x86.avx512.mask.scatter.dpq.512";
+ break;
+ case X86::BI__builtin_ia32_scattersiv16si:
+ intrinsicName = "x86.avx512.mask.scatter.dpi.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8di:
+ intrinsicName = "x86.avx512.mask.scatter.qpq.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv16si:
+ intrinsicName = "x86.avx512.mask.scatter.qpi.512";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv2df:
+ intrinsicName = "x86.avx512.mask.scatterdiv2.df";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv2di:
+ intrinsicName = "x86.avx512.mask.scatterdiv2.di";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4df:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.df";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4di:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.di";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4sf:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.sf";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv4si:
+ intrinsicName = "x86.avx512.mask.scatterdiv4.si";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8sf:
+ intrinsicName = "x86.avx512.mask.scatterdiv8.sf";
+ break;
+ case X86::BI__builtin_ia32_scatterdiv8si:
+ intrinsicName = "x86.avx512.mask.scatterdiv8.si";
+ break;
+ case X86::BI__builtin_ia32_scattersiv2df:
+ intrinsicName = "x86.avx512.mask.scattersiv2.df";
+ break;
+ case X86::BI__builtin_ia32_scattersiv2di:
+ intrinsicName = "x86.avx512.mask.scattersiv2.di";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4df:
+ intrinsicName = "x86.avx512.mask.scattersiv4.df";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4di:
+ intrinsicName = "x86.avx512.mask.scattersiv4.di";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4sf:
+ intrinsicName = "x86.avx512.mask.scattersiv4.sf";
+ break;
+ case X86::BI__builtin_ia32_scattersiv4si:
+ intrinsicName = "x86.avx512.mask.scattersiv4.si";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8sf:
+ intrinsicName = "x86.avx512.mask.scattersiv8.sf";
+ break;
+ case X86::BI__builtin_ia32_scattersiv8si:
+ intrinsicName = "x86.avx512.mask.scattersiv8.si";
+ break;
+ }
+
+ mlir::Location loc = getLoc(expr->getExprLoc());
+ unsigned minElts =
+ std::min(cast<cir::VectorType>(ops[2].getType()).getSize(),
+ cast<cir::VectorType>(ops[3].getType()).getSize());
+ ops[1] = getMaskVecValue(builder, loc, ops[1], minElts);
+
+ return emitIntrinsicCallOp(builder, loc, intrinsicName.str(),
+ convertType(expr->getType()), ops);
+ }
case X86::BI__builtin_ia32_vextractf128_pd256:
case X86::BI__builtin_ia32_vextractf128_ps256:
case X86::BI__builtin_ia32_vextractf128_si256:
diff --git a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
index e03109510a931..21841b163832c 100644
--- a/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
+++ b/clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
@@ -446,3 +446,171 @@ __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m25
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
}
+
+void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpd.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpd.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpd.512
+ return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpd.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpd.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpd.512
+ return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dps.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.dps.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.dps.512
+ return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dps.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.dps.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.dps.512
+ return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpd.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpd.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpd.512
+ return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_pd
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpd.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_pd
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpd.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_pd
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpd.512
+ return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qps.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.qps.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.qps.512
+ return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_ps
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qps.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_ps
+ // LLVM: @llvm.x86.avx512.mask.scatter.qps.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_ps
+ // OGCG: @llvm.x86.avx512.mask.scatter.qps.512
+ return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_i32scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpi.512"
+
+ // LLVM-LABEL: test_mm512_i32scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpi.512
+
+ // OGCG-LABEL: test_mm512_i32scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpi.512
+ return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_mask_i32scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.dpi.512"
+
+ // LLVM-LABEL: test_mm512_mask_i32scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.dpi.512
+
+ // OGCG-LABEL: test_mm512_mask_i32scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.dpi.512
+ return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_epi64
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpq.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_epi64
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpq.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_epi64
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpq.512
+ return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_epi64
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpq.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_epi64
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpq.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_epi64
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpq.512
+ return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
+}
+
+void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
+ // CIR-LABEL: test_mm512_i64scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpi.512"
+
+ // LLVM-LABEL: test_mm512_i64scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpi.512
+
+ // OGCG-LABEL: test_mm512_i64scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpi.512
+ return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
+}
+
+void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
+ // CIR-LABEL: test_mm512_mask_i64scatter_epi32
+ // CIR: cir.call_llvm_intrinsic "x86.avx512.mask.scatter.qpi.512"
+
+ // LLVM-LABEL: test_mm512_mask_i64scatter_epi32
+ // LLVM: @llvm.x86.avx512.mask.scatter.qpi.512
+
+ // OGCG-LABEL: test_mm512_mask_i64scatter_epi32
+ // OGCG: @llvm.x86.avx512.mask.scatter.qpi.512
+ return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
+}
|
andykaylor
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good. I have just one nit.
Remove std::string conversion
Part of #167752