[PATCH] D20359: Convert AVX non-temporal store builtins to LLVM-native IR. This was previously done for SSE builtins.
michael zuckerman via cfe-commits
cfe-commits at lists.llvm.org
Wed May 18 04:34:54 PDT 2016
m_zuckerman created this revision.
m_zuckerman added a reviewer: craig.topper.
m_zuckerman added subscribers: delena, cfe-commits, AsafBadouh, igorb.
http://reviews.llvm.org/D20359
Files:
include/llvm/IR/IntrinsicsX86.td
lib/Target/X86/X86IntrinsicsInfo.h
test/CodeGen/X86/avx512-intrinsics.ll
Index: lib/Target/X86/X86IntrinsicsInfo.h
===================================================================
--- lib/Target/X86/X86IntrinsicsInfo.h
+++ lib/Target/X86/X86IntrinsicsInfo.h
@@ -276,9 +276,6 @@
X86_INTRINSIC_DATA(avx512_scattersiv4_si, SCATTER, X86::VPSCATTERDDZ128mr, 0),
X86_INTRINSIC_DATA(avx512_scattersiv8_sf, SCATTER, X86::VSCATTERDPSZ256mr, 0),
X86_INTRINSIC_DATA(avx512_scattersiv8_si, SCATTER, X86::VPSCATTERDDZ256mr, 0),
- X86_INTRINSIC_DATA(avx512_storent_pd_512, STOREANT, ISD::DELETED_NODE, 0),
- X86_INTRINSIC_DATA(avx512_storent_ps_512, STOREANT, ISD::DELETED_NODE, 0),
- X86_INTRINSIC_DATA(avx512_storent_q_512, STOREANT, ISD::DELETED_NODE, 0),
X86_INTRINSIC_DATA(rdpmc, RDPMC, X86ISD::RDPMC_DAG, 0),
X86_INTRINSIC_DATA(rdrand_16, RDRAND, X86ISD::RDRAND, 0),
X86_INTRINSIC_DATA(rdrand_32, RDRAND, X86ISD::RDRAND, 0),
Index: include/llvm/IR/IntrinsicsX86.td
===================================================================
--- include/llvm/IR/IntrinsicsX86.td
+++ include/llvm/IR/IntrinsicsX86.td
@@ -2234,18 +2234,6 @@
[IntrArgMemOnly]>;
}
-// Store ops using non-temporal hint
-let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
- def int_x86_avx512_storent_q_512 :
- GCCBuiltin<"__builtin_ia32_movntdq512">,
- Intrinsic<[], [llvm_ptr_ty, llvm_v8i64_ty], [IntrArgMemOnly]>;
- def int_x86_avx512_storent_pd_512 :
- GCCBuiltin<"__builtin_ia32_movntpd512">,
- Intrinsic<[], [llvm_ptr_ty, llvm_v8f64_ty], [IntrArgMemOnly]>;
- def int_x86_avx512_storent_ps_512 :
- GCCBuiltin<"__builtin_ia32_movntps512">,
- Intrinsic<[], [llvm_ptr_ty, llvm_v16f32_ty], [IntrArgMemOnly]>;
-}
//===----------------------------------------------------------------------===//
// AVX2
Index: test/CodeGen/X86/avx512-intrinsics.ll
===================================================================
--- test/CodeGen/X86/avx512-intrinsics.ll
+++ test/CodeGen/X86/avx512-intrinsics.ll
@@ -7413,39 +7413,6 @@
ret <2 x double> %res4
}
-declare void @llvm.x86.avx512.storent.q.512(i8*, <8 x i64>)
-
-define void at test_storent_q_512(<8 x i64> %data, i8* %ptr) {
-; CHECK-LABEL: test_storent_q_512:
-; CHECK: ## BB#0:
-; CHECK-NEXT: vmovntdq %zmm0, (%rdi)
-; CHECK-NEXT: retq
- call void @llvm.x86.avx512.storent.q.512(i8* %ptr, <8 x i64> %data)
- ret void
-}
-
-declare void @llvm.x86.avx512.storent.pd.512(i8*, <8 x double>)
-
-define void @test_storent_pd_512(<8 x double> %data, i8* %ptr) {
-; CHECK-LABEL: test_storent_pd_512:
-; CHECK: ## BB#0:
-; CHECK-NEXT: vmovntpd %zmm0, (%rdi)
-; CHECK-NEXT: retq
- call void @llvm.x86.avx512.storent.pd.512(i8* %ptr, <8 x double> %data)
- ret void
-}
-
-declare void @llvm.x86.avx512.storent.ps.512(i8*, <16 x float>)
-
-define void @test_storent_ps_512(<16 x float> %data, i8* %ptr) {
-; CHECK-LABEL: test_storent_ps_512:
-; CHECK: ## BB#0:
-; CHECK-NEXT: vmovntps %zmm0, (%rdi)
-; CHECK-NEXT: retq
- call void @llvm.x86.avx512.storent.ps.512(i8* %ptr, <16 x float> %data)
- ret void
-}
-
declare i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32>, <16 x i32>, i16 %x2)
define i16 at test_int_x86_avx512_ptestnm_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20359.57589.patch
Type: text/x-patch
Size: 3337 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160518/40ad57d0/attachment-0001.bin>
More information about the cfe-commits
mailing list