Skip to content

Commit 743177c

Browse files
authored
[X86][APX] Use TEST instruction for CLOAD/CSTORE (#151160)
1 parent 058d96f commit 743177c

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58074,11 +58074,9 @@ static SDValue combineX86CloadCstore(SDNode *N, SelectionDAG &DAG) {
5807458074
// res, flags2 = sub 0, (and X, Y)
5807558075
// cload/cstore ..., cond_ne, flag2
5807658076
// ->
58077-
// res, flags2 = and X, Y
58077+
// res, flags2 = cmp (and X, Y), 0
5807858078
// cload/cstore ..., cond_ne, flag2
58079-
Ops[4] = DAG.getNode(X86ISD::AND, DL, Sub->getVTList(), Op1.getOperand(0),
58080-
Op1.getOperand(1))
58081-
.getValue(1);
58079+
Ops[4] = DAG.getNode(X86ISD::CMP, DL, MVT::i32, Op1, Sub.getOperand(0));
5808258080
} else {
5808358081
return SDValue();
5808458082
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ entry:
162162
define void @load_zext(i1 %cond, ptr %b, ptr %p) {
163163
; CHECK-LABEL: load_zext:
164164
; CHECK: # %bb.0: # %entry
165-
; CHECK-NEXT: andb $1, %dil
165+
; CHECK-NEXT: testb $1, %dil
166166
; CHECK-NEXT: cfcmovnew (%rsi), %ax
167167
; CHECK-NEXT: movzwl %ax, %eax
168168
; CHECK-NEXT: cfcmovnel %eax, (%rdx)
@@ -180,7 +180,7 @@ entry:
180180
define void @load_sext(i1 %cond, ptr %b, ptr %p) {
181181
; CHECK-LABEL: load_sext:
182182
; CHECK: # %bb.0: # %entry
183-
; CHECK-NEXT: andb $1, %dil
183+
; CHECK-NEXT: testb $1, %dil
184184
; CHECK-NEXT: cfcmovnel (%rsi), %eax
185185
; CHECK-NEXT: cltq
186186
; CHECK-NEXT: cfcmovneq %rax, (%rdx)

0 commit comments

Comments
 (0)