Skip to content

Commit c60b930

Browse files
committed
Revert "[X86][CodeGen] Convert masked.load/store to CLOAD/CSTORE node only when vector size = 1"
This reverts commit 74984de. It caused AArch64 test sve-nontemporal-masked-ldst.ll to fail.
1 parent 74984de commit c60b930

File tree

2 files changed

+5
-31
lines changed

2 files changed

+5
-31
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4798,11 +4798,8 @@ void SelectionDAGBuilder::visitMaskedStore(const CallInst &I,
47984798
const auto &TTI =
47994799
TLI.getTargetMachine().getTargetTransformInfo(*I.getFunction());
48004800
SDValue StoreNode =
4801-
!IsCompressing &&
4802-
cast<FixedVectorType>(I.getArgOperand(0)->getType())
4803-
->getNumElements() == 1 &&
4804-
TTI.hasConditionalLoadStoreForType(
4805-
I.getArgOperand(0)->getType()->getScalarType())
4801+
!IsCompressing && TTI.hasConditionalLoadStoreForType(
4802+
I.getArgOperand(0)->getType()->getScalarType())
48064803
? TLI.visitMaskedStore(DAG, sdl, getMemoryRoot(), MMO, Ptr, Src0,
48074804
Mask)
48084805
: DAG.getMaskedStore(getMemoryRoot(), sdl, Src0, Ptr, Offset, Mask,
@@ -4987,10 +4984,8 @@ void SelectionDAGBuilder::visitMaskedLoad(const CallInst &I, bool IsExpanding) {
49874984
// variables.
49884985
SDValue Load;
49894986
SDValue Res;
4990-
if (!IsExpanding &&
4991-
cast<FixedVectorType>(Src0Operand->getType())->getNumElements() == 1 &&
4992-
TTI.hasConditionalLoadStoreForType(
4993-
Src0Operand->getType()->getScalarType()))
4987+
if (!IsExpanding && TTI.hasConditionalLoadStoreForType(
4988+
Src0Operand->getType()->getScalarType()))
49944989
Res = TLI.visitMaskedLoad(DAG, sdl, InChain, MMO, Load, Ptr, Src0, Mask);
49954990
else
49964991
Res = Load =

llvm/test/CodeGen/X86/apx/cf.ll

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple=x86_64 -mattr=+cf,+avx512f -verify-machineinstrs | FileCheck %s
2+
; RUN: llc < %s -mtriple=x86_64 -mattr=+cf -verify-machineinstrs | FileCheck %s
33

44
define void @basic(i32 %a, ptr %b, ptr %p, ptr %q) {
55
; CHECK-LABEL: basic:
@@ -103,24 +103,3 @@ entry:
103103
%2 = bitcast <1 x i64> %1 to i64
104104
ret i64 %2
105105
}
106-
107-
define void @no_crash(ptr %p, <4 x i1> %cond1, <4 x i1> %cond2) {
108-
; CHECK-LABEL: no_crash:
109-
; CHECK: # %bb.0: # %entry
110-
; CHECK-NEXT: vpslld $31, %xmm1, %xmm1
111-
; CHECK-NEXT: vptestmd %zmm1, %zmm1, %k0
112-
; CHECK-NEXT: kshiftlw $12, %k0, %k0
113-
; CHECK-NEXT: kshiftrw $12, %k0, %k1
114-
; CHECK-NEXT: vpslld $31, %xmm0, %xmm0
115-
; CHECK-NEXT: vptestmd %zmm0, %zmm0, %k0
116-
; CHECK-NEXT: kshiftlw $12, %k0, %k0
117-
; CHECK-NEXT: kshiftrw $12, %k0, %k2
118-
; CHECK-NEXT: vmovdqu64 (%rdi), %zmm0 {%k2} {z}
119-
; CHECK-NEXT: vmovdqu64 %zmm0, (%rdi) {%k1}
120-
; CHECK-NEXT: vzeroupper
121-
; CHECK-NEXT: retq
122-
entry:
123-
%0 = call <4 x i64> @llvm.masked.load.v4i64.p0(ptr %p, i32 8, <4 x i1> %cond1, <4 x i64> poison)
124-
call void @llvm.masked.store.v4i64.p0(<4 x i64> %0, ptr %p, i32 8, <4 x i1> %cond2)
125-
ret void
126-
}

0 commit comments

Comments
 (0)