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: 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: 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: 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) define i16@test_int_x86_avx512_ptestnm_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) {