Skip to content

Commit 4f585c4

Browse files
committed
[X86] Remove redundant code in X86
These transforms are now handled in DAGCombine, so enable hasAndNotCompare for the same cases for X86, and remove the platform-specific code that does the same thing.
1 parent b01cdde commit 4f585c4

File tree

4 files changed

+52
-94
lines changed

4 files changed

+52
-94
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 10 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3485,29 +3485,23 @@ bool X86TargetLowering::isMaskAndCmp0FoldingBeneficial(
34853485
}
34863486

34873487
bool X86TargetLowering::hasAndNotCompare(SDValue Y) const {
3488-
EVT VT = Y.getValueType();
3489-
3490-
if (VT.isVector())
3491-
return false;
3492-
3493-
if (!Subtarget.hasBMI())
3494-
return false;
3495-
3496-
// There are only 32-bit and 64-bit forms for 'andn'.
3497-
if (VT != MVT::i32 && VT != MVT::i64)
3498-
return false;
3499-
3500-
return !isa<ConstantSDNode>(Y) || cast<ConstantSDNode>(Y)->isOpaque();
3488+
return Y.getValueType().isScalarInteger();
35013489
}
35023490

35033491
bool X86TargetLowering::hasAndNot(SDValue Y) const {
35043492
EVT VT = Y.getValueType();
35053493

3506-
if (!VT.isVector())
3507-
return hasAndNotCompare(Y);
3494+
if (!VT.isVector()) {
3495+
if (!Subtarget.hasBMI())
3496+
return false;
35083497

3509-
// Vector.
3498+
// There are only 32-bit and 64-bit forms for 'andn'.
3499+
if (VT != MVT::i32 && VT != MVT::i64)
3500+
return false;
3501+
return !isa<ConstantSDNode>(Y) || cast<ConstantSDNode>(Y)->isOpaque();
3502+
}
35103503

3504+
// Vector.
35113505
if (!Subtarget.hasSSE1() || VT.getSizeInBits() < 128)
35123506
return false;
35133507

@@ -56363,42 +56357,6 @@ static SDValue combineSetCC(SDNode *N, SelectionDAG &DAG,
5636356357

5636456358
if (CC == ISD::SETNE || CC == ISD::SETEQ) {
5636556359
if (OpVT.isScalarInteger()) {
56366-
// cmpeq(or(X,Y),X) --> cmpeq(and(~X,Y),0)
56367-
// cmpne(or(X,Y),X) --> cmpne(and(~X,Y),0)
56368-
auto MatchOrCmpEq = [&](SDValue N0, SDValue N1) {
56369-
if (N0.getOpcode() == ISD::OR && N0->hasOneUse()) {
56370-
if (N0.getOperand(0) == N1)
56371-
return DAG.getNode(ISD::AND, DL, OpVT, DAG.getNOT(DL, N1, OpVT),
56372-
N0.getOperand(1));
56373-
if (N0.getOperand(1) == N1)
56374-
return DAG.getNode(ISD::AND, DL, OpVT, DAG.getNOT(DL, N1, OpVT),
56375-
N0.getOperand(0));
56376-
}
56377-
return SDValue();
56378-
};
56379-
if (SDValue AndN = MatchOrCmpEq(LHS, RHS))
56380-
return DAG.getSetCC(DL, VT, AndN, DAG.getConstant(0, DL, OpVT), CC);
56381-
if (SDValue AndN = MatchOrCmpEq(RHS, LHS))
56382-
return DAG.getSetCC(DL, VT, AndN, DAG.getConstant(0, DL, OpVT), CC);
56383-
56384-
// cmpeq(and(X,Y),Y) --> cmpeq(and(~X,Y),0)
56385-
// cmpne(and(X,Y),Y) --> cmpne(and(~X,Y),0)
56386-
auto MatchAndCmpEq = [&](SDValue N0, SDValue N1) {
56387-
if (N0.getOpcode() == ISD::AND && N0->hasOneUse()) {
56388-
if (N0.getOperand(0) == N1)
56389-
return DAG.getNode(ISD::AND, DL, OpVT, N1,
56390-
DAG.getNOT(DL, N0.getOperand(1), OpVT));
56391-
if (N0.getOperand(1) == N1)
56392-
return DAG.getNode(ISD::AND, DL, OpVT, N1,
56393-
DAG.getNOT(DL, N0.getOperand(0), OpVT));
56394-
}
56395-
return SDValue();
56396-
};
56397-
if (SDValue AndN = MatchAndCmpEq(LHS, RHS))
56398-
return DAG.getSetCC(DL, VT, AndN, DAG.getConstant(0, DL, OpVT), CC);
56399-
if (SDValue AndN = MatchAndCmpEq(RHS, LHS))
56400-
return DAG.getSetCC(DL, VT, AndN, DAG.getConstant(0, DL, OpVT), CC);
56401-
5640256360
// cmpeq(trunc(x),C) --> cmpeq(x,C)
5640356361
// cmpne(trunc(x),C) --> cmpne(x,C)
5640456362
// iff x upper bits are zero.

llvm/test/CodeGen/X86/avx512-cmp.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ B:
155155
define i32 @test10(i64 %b, i64 %c, i1 %d) {
156156
; ALL-LABEL: test10:
157157
; ALL: ## %bb.0:
158+
; ALL-NEXT: xorb $1, %dl
158159
; ALL-NEXT: cmpq %rsi, %rdi
159160
; ALL-NEXT: sete %al
160-
; ALL-NEXT: notb %dl
161-
; ALL-NEXT: testb %al, %dl
161+
; ALL-NEXT: testb %dl, %al
162162
; ALL-NEXT: je LBB8_1
163163
; ALL-NEXT: ## %bb.2: ## %if.end.i
164164
; ALL-NEXT: movl $6, %eax

llvm/test/CodeGen/X86/known-pow2.ll

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ define i1 @pow2_srl_fail0(i32 %x, i32 %y) {
118118
; CHECK-LABEL: pow2_srl_fail0:
119119
; CHECK: # %bb.0:
120120
; CHECK-NEXT: movl %esi, %ecx
121-
; CHECK-NEXT: andb $30, %cl
122121
; CHECK-NEXT: notl %edi
122+
; CHECK-NEXT: andb $30, %cl
123123
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
124124
; CHECK-NEXT: shll %cl, %edi
125125
; CHECK-NEXT: testl $1048576, %edi # imm = 0x100000
@@ -136,8 +136,8 @@ define i1 @pow2_srl_fail1(i32 %x, i32 %y) {
136136
; CHECK-LABEL: pow2_srl_fail1:
137137
; CHECK: # %bb.0:
138138
; CHECK-NEXT: movl %esi, %ecx
139-
; CHECK-NEXT: andb $7, %cl
140139
; CHECK-NEXT: notl %edi
140+
; CHECK-NEXT: andb $7, %cl
141141
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
142142
; CHECK-NEXT: shll %cl, %edi
143143
; CHECK-NEXT: testl $1048577, %edi # imm = 0x100001
@@ -170,12 +170,12 @@ define i1 @pow2_rotl_fail0(i32 %x, i32 %y) {
170170
; CHECK-LABEL: pow2_rotl_fail0:
171171
; CHECK: # %bb.0:
172172
; CHECK-NEXT: movl %esi, %ecx
173+
; CHECK-NEXT: notl %edi
173174
; CHECK-NEXT: movl $1048576, %eax # imm = 0x100000
174175
; CHECK-NEXT: movl $512, %edx # imm = 0x200
175176
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
176177
; CHECK-NEXT: shldl %cl, %eax, %edx
177-
; CHECK-NEXT: notl %edi
178-
; CHECK-NEXT: testl %edi, %edx
178+
; CHECK-NEXT: testl %edx, %edi
179179
; CHECK-NEXT: sete %al
180180
; CHECK-NEXT: retq
181181
%d = call i32 @llvm.fshl.i32(i32 512, i32 1048576, i32 %y)
@@ -188,11 +188,11 @@ define i1 @pow2_rotl_fail1(i32 %x, i32 %y) {
188188
; CHECK-LABEL: pow2_rotl_fail1:
189189
; CHECK: # %bb.0:
190190
; CHECK-NEXT: movl %esi, %ecx
191+
; CHECK-NEXT: notl %edi
191192
; CHECK-NEXT: movl $511, %eax # imm = 0x1FF
192193
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
193194
; CHECK-NEXT: roll %cl, %eax
194-
; CHECK-NEXT: notl %edi
195-
; CHECK-NEXT: testl %edi, %eax
195+
; CHECK-NEXT: testl %eax, %edi
196196
; CHECK-NEXT: sete %al
197197
; CHECK-NEXT: retq
198198
%d = call i32 @llvm.fshl.i32(i32 511, i32 511, i32 %y)
@@ -221,12 +221,12 @@ define i1 @pow2_rotr_fail0(i32 %x, i32 %y) {
221221
; CHECK-LABEL: pow2_rotr_fail0:
222222
; CHECK: # %bb.0:
223223
; CHECK-NEXT: movl %esi, %ecx
224+
; CHECK-NEXT: notl %edi
224225
; CHECK-NEXT: movl $512, %eax # imm = 0x200
225226
; CHECK-NEXT: movl $1048576, %edx # imm = 0x100000
226227
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
227228
; CHECK-NEXT: shrdl %cl, %eax, %edx
228-
; CHECK-NEXT: notl %edi
229-
; CHECK-NEXT: testl %edi, %edx
229+
; CHECK-NEXT: testl %edx, %edi
230230
; CHECK-NEXT: sete %al
231231
; CHECK-NEXT: retq
232232
%d = call i32 @llvm.fshr.i32(i32 512, i32 1048576, i32 %y)
@@ -239,11 +239,11 @@ define i1 @pow2_rotr_fail1(i32 %x, i32 %y) {
239239
; CHECK-LABEL: pow2_rotr_fail1:
240240
; CHECK: # %bb.0:
241241
; CHECK-NEXT: movl %esi, %ecx
242+
; CHECK-NEXT: notl %edi
242243
; CHECK-NEXT: movl $511, %eax # imm = 0x1FF
243244
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
244245
; CHECK-NEXT: rorl %cl, %eax
245-
; CHECK-NEXT: notl %edi
246-
; CHECK-NEXT: testl %edi, %eax
246+
; CHECK-NEXT: testl %eax, %edi
247247
; CHECK-NEXT: sete %al
248248
; CHECK-NEXT: retq
249249
%d = call i32 @llvm.fshr.i32(i32 511, i32 511, i32 %y)
@@ -276,14 +276,14 @@ define i1 @pow2_umin_fail0(i32 %x, i32 %y) {
276276
; CHECK-LABEL: pow2_umin_fail0:
277277
; CHECK: # %bb.0:
278278
; CHECK-NEXT: movl %esi, %ecx
279+
; CHECK-NEXT: notl %edi
279280
; CHECK-NEXT: movl $4, %eax
280281
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
281282
; CHECK-NEXT: shll %cl, %eax
282283
; CHECK-NEXT: cmpl $262144, %eax # imm = 0x40000
283284
; CHECK-NEXT: movl $262144, %ecx # imm = 0x40000
284285
; CHECK-NEXT: cmovbl %eax, %ecx
285-
; CHECK-NEXT: notl %edi
286-
; CHECK-NEXT: testl %edi, %ecx
286+
; CHECK-NEXT: testl %ecx, %edi
287287
; CHECK-NEXT: sete %al
288288
; CHECK-NEXT: retq
289289
%yy = shl i32 4, %y
@@ -297,14 +297,14 @@ define i1 @pow2_umin_fail1(i32 %x, i32 %y) {
297297
; CHECK-LABEL: pow2_umin_fail1:
298298
; CHECK: # %bb.0:
299299
; CHECK-NEXT: movl %esi, %ecx
300+
; CHECK-NEXT: notl %edi
300301
; CHECK-NEXT: movl $1, %eax
301302
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
302303
; CHECK-NEXT: shll %cl, %eax
303304
; CHECK-NEXT: cmpl $12345, %eax # imm = 0x3039
304305
; CHECK-NEXT: movl $12345, %ecx # imm = 0x3039
305306
; CHECK-NEXT: cmovbl %eax, %ecx
306-
; CHECK-NEXT: notl %edi
307-
; CHECK-NEXT: testl %edi, %ecx
307+
; CHECK-NEXT: testl %ecx, %edi
308308
; CHECK-NEXT: sete %al
309309
; CHECK-NEXT: retq
310310
%yy = shl i32 1, %y
@@ -341,6 +341,7 @@ define i1 @pow2_umax_fail0(i32 %x, i32 %y, i32 %z) {
341341
; CHECK-LABEL: pow2_umax_fail0:
342342
; CHECK: # %bb.0:
343343
; CHECK-NEXT: movl %esi, %ecx
344+
; CHECK-NEXT: notl %edi
344345
; CHECK-NEXT: movl $1, %eax
345346
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
346347
; CHECK-NEXT: shll %cl, %eax
@@ -349,8 +350,7 @@ define i1 @pow2_umax_fail0(i32 %x, i32 %y, i32 %z) {
349350
; CHECK-NEXT: shrl %cl, %esi
350351
; CHECK-NEXT: cmpl %esi, %eax
351352
; CHECK-NEXT: cmoval %eax, %esi
352-
; CHECK-NEXT: notl %edi
353-
; CHECK-NEXT: testl %edi, %esi
353+
; CHECK-NEXT: testl %esi, %edi
354354
; CHECK-NEXT: sete %al
355355
; CHECK-NEXT: retq
356356
%yy = shl i32 1, %y
@@ -365,6 +365,7 @@ define i1 @pow2_umax_fail1(i32 %x, i32 %y, i32 %z) {
365365
; CHECK-LABEL: pow2_umax_fail1:
366366
; CHECK: # %bb.0:
367367
; CHECK-NEXT: movl %esi, %ecx
368+
; CHECK-NEXT: notl %edi
368369
; CHECK-NEXT: movl $4, %eax
369370
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
370371
; CHECK-NEXT: shll %cl, %eax
@@ -373,8 +374,7 @@ define i1 @pow2_umax_fail1(i32 %x, i32 %y, i32 %z) {
373374
; CHECK-NEXT: shrl %cl, %esi
374375
; CHECK-NEXT: cmpl %esi, %eax
375376
; CHECK-NEXT: cmoval %eax, %esi
376-
; CHECK-NEXT: notl %edi
377-
; CHECK-NEXT: testl %edi, %esi
377+
; CHECK-NEXT: testl %esi, %edi
378378
; CHECK-NEXT: sete %al
379379
; CHECK-NEXT: retq
380380
%yy = shl i32 4, %y
@@ -409,14 +409,14 @@ define i1 @pow2_smin_fail0(i32 %x, i32 %y) {
409409
; CHECK-LABEL: pow2_smin_fail0:
410410
; CHECK: # %bb.0:
411411
; CHECK-NEXT: movl %esi, %ecx
412+
; CHECK-NEXT: notl %edi
412413
; CHECK-NEXT: movl $4, %eax
413414
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
414415
; CHECK-NEXT: shll %cl, %eax
415416
; CHECK-NEXT: cmpl $262144, %eax # imm = 0x40000
416417
; CHECK-NEXT: movl $262144, %ecx # imm = 0x40000
417418
; CHECK-NEXT: cmovll %eax, %ecx
418-
; CHECK-NEXT: notl %edi
419-
; CHECK-NEXT: testl %edi, %ecx
419+
; CHECK-NEXT: testl %ecx, %edi
420420
; CHECK-NEXT: sete %al
421421
; CHECK-NEXT: retq
422422
%yy = shl i32 4, %y
@@ -430,14 +430,14 @@ define i1 @pow2_smin_fail1(i32 %x, i32 %y) {
430430
; CHECK-LABEL: pow2_smin_fail1:
431431
; CHECK: # %bb.0:
432432
; CHECK-NEXT: movl %esi, %ecx
433+
; CHECK-NEXT: notl %edi
433434
; CHECK-NEXT: movl $1, %eax
434435
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
435436
; CHECK-NEXT: shll %cl, %eax
436437
; CHECK-NEXT: cmpl $12345, %eax # imm = 0x3039
437438
; CHECK-NEXT: movl $12345, %ecx # imm = 0x3039
438439
; CHECK-NEXT: cmovll %eax, %ecx
439-
; CHECK-NEXT: notl %edi
440-
; CHECK-NEXT: testl %edi, %ecx
440+
; CHECK-NEXT: testl %ecx, %edi
441441
; CHECK-NEXT: sete %al
442442
; CHECK-NEXT: retq
443443
%yy = shl i32 1, %y
@@ -474,6 +474,7 @@ define i1 @pow2_smax_fail0(i32 %x, i32 %y, i32 %z) {
474474
; CHECK-LABEL: pow2_smax_fail0:
475475
; CHECK: # %bb.0:
476476
; CHECK-NEXT: movl %esi, %ecx
477+
; CHECK-NEXT: notl %edi
477478
; CHECK-NEXT: movl $1, %eax
478479
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
479480
; CHECK-NEXT: shll %cl, %eax
@@ -482,8 +483,7 @@ define i1 @pow2_smax_fail0(i32 %x, i32 %y, i32 %z) {
482483
; CHECK-NEXT: shrl %cl, %esi
483484
; CHECK-NEXT: cmpl %esi, %eax
484485
; CHECK-NEXT: cmovgl %eax, %esi
485-
; CHECK-NEXT: notl %edi
486-
; CHECK-NEXT: testl %edi, %esi
486+
; CHECK-NEXT: testl %esi, %edi
487487
; CHECK-NEXT: sete %al
488488
; CHECK-NEXT: retq
489489
%yy = shl i32 1, %y
@@ -498,6 +498,7 @@ define i1 @pow2_smax_fail1(i32 %x, i32 %y, i32 %z) {
498498
; CHECK-LABEL: pow2_smax_fail1:
499499
; CHECK: # %bb.0:
500500
; CHECK-NEXT: movl %esi, %ecx
501+
; CHECK-NEXT: notl %edi
501502
; CHECK-NEXT: movl $4, %eax
502503
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
503504
; CHECK-NEXT: shll %cl, %eax
@@ -506,8 +507,7 @@ define i1 @pow2_smax_fail1(i32 %x, i32 %y, i32 %z) {
506507
; CHECK-NEXT: shrl %cl, %esi
507508
; CHECK-NEXT: cmpl %esi, %eax
508509
; CHECK-NEXT: cmovgl %eax, %esi
509-
; CHECK-NEXT: notl %edi
510-
; CHECK-NEXT: testl %edi, %esi
510+
; CHECK-NEXT: testl %esi, %edi
511511
; CHECK-NEXT: sete %al
512512
; CHECK-NEXT: retq
513513
%yy = shl i32 4, %y
@@ -547,6 +547,7 @@ define i1 @pow2_select_fail0(i1 %c, i32 %x, i32 %y, i32 %z) {
547547
; CHECK: # %bb.0:
548548
; CHECK-NEXT: movl %ecx, %eax
549549
; CHECK-NEXT: movl %edx, %ecx
550+
; CHECK-NEXT: notl %esi
550551
; CHECK-NEXT: movl $1, %edx
551552
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
552553
; CHECK-NEXT: shll %cl, %edx
@@ -555,8 +556,7 @@ define i1 @pow2_select_fail0(i1 %c, i32 %x, i32 %y, i32 %z) {
555556
; CHECK-NEXT: shrl %cl, %r8d
556557
; CHECK-NEXT: testb $1, %dil
557558
; CHECK-NEXT: cmovnel %edx, %r8d
558-
; CHECK-NEXT: notl %esi
559-
; CHECK-NEXT: testl %esi, %r8d
559+
; CHECK-NEXT: testl %r8d, %esi
560560
; CHECK-NEXT: sete %al
561561
; CHECK-NEXT: retq
562562
%yy = shl i32 1, %y
@@ -572,6 +572,7 @@ define i1 @pow2_select_fail2(i1 %c, i32 %x, i32 %y, i32 %z) {
572572
; CHECK: # %bb.0:
573573
; CHECK-NEXT: movl %ecx, %eax
574574
; CHECK-NEXT: movl %edx, %ecx
575+
; CHECK-NEXT: notl %esi
575576
; CHECK-NEXT: movl $4, %edx
576577
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
577578
; CHECK-NEXT: shll %cl, %edx
@@ -580,8 +581,7 @@ define i1 @pow2_select_fail2(i1 %c, i32 %x, i32 %y, i32 %z) {
580581
; CHECK-NEXT: shrl %cl, %r8d
581582
; CHECK-NEXT: testb $1, %dil
582583
; CHECK-NEXT: cmovnel %edx, %r8d
583-
; CHECK-NEXT: notl %esi
584-
; CHECK-NEXT: testl %esi, %r8d
584+
; CHECK-NEXT: testl %r8d, %esi
585585
; CHECK-NEXT: sete %al
586586
; CHECK-NEXT: retq
587587
%yy = shl i32 4, %y
@@ -781,14 +781,14 @@ define i1 @pow2_and_fail0(i32 %x, i32 %y) {
781781
; CHECK-LABEL: pow2_and_fail0:
782782
; CHECK: # %bb.0:
783783
; CHECK-NEXT: movl %esi, %ecx
784+
; CHECK-NEXT: notl %edi
784785
; CHECK-NEXT: movl $4, %eax
785786
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
786787
; CHECK-NEXT: shll %cl, %eax
787788
; CHECK-NEXT: movl %eax, %ecx
788789
; CHECK-NEXT: negl %ecx
789790
; CHECK-NEXT: andl %eax, %ecx
790-
; CHECK-NEXT: notl %edi
791-
; CHECK-NEXT: testl %edi, %ecx
791+
; CHECK-NEXT: testl %ecx, %edi
792792
; CHECK-NEXT: sete %al
793793
; CHECK-NEXT: retq
794794
%yy = shl i32 4, %y
@@ -803,14 +803,14 @@ define i1 @pow2_and_fail1(i32 %x, i32 %y) {
803803
; CHECK-LABEL: pow2_and_fail1:
804804
; CHECK: # %bb.0:
805805
; CHECK-NEXT: movl %esi, %ecx
806+
; CHECK-NEXT: notl %edi
806807
; CHECK-NEXT: movl $1, %eax
807808
; CHECK-NEXT: movl $1, %edx
808809
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
809810
; CHECK-NEXT: shll %cl, %edx
810811
; CHECK-NEXT: subl %edx, %eax
811812
; CHECK-NEXT: andl %edx, %eax
812-
; CHECK-NEXT: notl %edi
813-
; CHECK-NEXT: testl %edi, %eax
813+
; CHECK-NEXT: testl %eax, %edi
814814
; CHECK-NEXT: sete %al
815815
; CHECK-NEXT: retq
816816
%yy = shl i32 1, %y
@@ -825,12 +825,12 @@ define i1 @pow2_and_fail2(i32 %x, i32 %y, i32 %z) {
825825
; CHECK-LABEL: pow2_and_fail2:
826826
; CHECK: # %bb.0:
827827
; CHECK-NEXT: movl %esi, %ecx
828+
; CHECK-NEXT: notl %edi
828829
; CHECK-NEXT: movl $1, %eax
829830
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
830831
; CHECK-NEXT: shll %cl, %eax
831832
; CHECK-NEXT: andl %edx, %eax
832-
; CHECK-NEXT: notl %edi
833-
; CHECK-NEXT: testl %edi, %eax
833+
; CHECK-NEXT: testl %eax, %edi
834834
; CHECK-NEXT: sete %al
835835
; CHECK-NEXT: retq
836836
%yy = shl i32 1, %y

0 commit comments

Comments
 (0)