m_zuckerman updated this revision to Diff 58201.
http://reviews.llvm.org/D20359
Files:
include/llvm/IR/IntrinsicsX86.td
lib/Target/X86/X86ISelLowering.cpp
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
@@ -33,7 +33,7 @@
INTR_TYPE_SCALAR_MASK_RM, INTR_TYPE_3OP_SCALAR_MASK_RM,
COMPRESS_EXPAND_IN_REG, COMPRESS_TO_MEM, BRCST_SUBVEC_TO_VEC,
TRUNCATE_TO_MEM_VI8, TRUNCATE_TO_MEM_VI16, TRUNCATE_TO_MEM_VI32,
- EXPAND_FROM_MEM, LOADA, LOADU, STOREA, STOREU, STOREANT, BLEND, INSERT_SUBVEC,
+ EXPAND_FROM_MEM, LOADA, LOADU, STOREA, STOREU, BLEND, INSERT_SUBVEC,
TERLOG_OP_MASK, TERLOG_OP_MASKZ, BROADCASTM, KUNPCK, FIXUPIMM, FIXUPIMM_MASKZ, FIXUPIMMS,
FIXUPIMMS_MASKZ, CONVERT_MASK_TO_VEC, CONVERT_TO_MASK
};
@@ -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: lib/Target/X86/X86ISelLowering.cpp
===
--- lib/Target/X86/X86ISelLowering.cpp
+++ lib/Target/X86/X86ISelLowering.cpp
@@ -4072,7 +4072,6 @@
break;
}
case STOREA:
- case STOREANT:
case STOREU: {
Info.ptrVal = I.getArgOperand(0);
Info.memVT = MVT::getVT(I.getArgOperand(1)->getType());
@@ -18256,20 +18255,6 @@
return DAG.getMaskedStore(Chain, dl, Data, Addr, VMask, VT,
MemIntr->getMemOperand(), false);
}
- case STOREANT: {
-// Store (MOVNTPD, MOVNTPS, MOVNTDQ) using non-temporal hint intrinsic implementation.
-SDValue Data = Op.getOperand(3);
-SDValue Addr = Op.getOperand(2);
-SDValue Chain = Op.getOperand(0);
-
-MemIntrinsicSDNode *MemIntr = dyn_cast(Op);
-assert(MemIntr && "Expected MemIntrinsicSDNode!");
-MachineMemOperand *MMO = MemIntr->getMemOperand();
-
-MMO->setFlags(MachineMemOperand::MONonTemporal);
-
-return DAG.getStore(Chain, dl, Data, Addr, MMO);
- }
}
}
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@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)