Skip to content

Commit 53ce22e

Browse files
committed
Recommit "[RISCV] Use setcc's original SDLoc when inverting it in performSUBCombine."
This time using N1 instead of N0 since N1 points to the original setcc. This now affects scheduling as I expected. Original commit message: We change seteq<->setne but it doesn't change the semantics of the setcc. We should keep original debug location. This is consistent with visitXor in the generic DAGCombiner.
1 parent 2dfa4b6 commit 53ce22e

File tree

3 files changed

+85
-85
lines changed

3 files changed

+85
-85
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8298,7 +8298,7 @@ static SDValue performSUBCombine(SDNode *N, SelectionDAG &DAG) {
82988298
// and may increase the number of constants we need.
82998299
if (ImmValMinus1.isSignedIntN(12)) {
83008300
CCVal = ISD::getSetCCInverse(CCVal, SetCCOpVT);
8301-
SDValue NewN0 = DAG.getSetCC(SDLoc(N), VT, N1.getOperand(0),
8301+
SDValue NewN0 = DAG.getSetCC(SDLoc(N1), VT, N1.getOperand(0),
83028302
N1.getOperand(1), CCVal);
83038303
SDValue NewN1 = DAG.getConstant(ImmValMinus1, SDLoc(N), VT);
83048304
return DAG.getNode(ISD::ADD, SDLoc(N), VT, NewN0, NewN1);

llvm/test/CodeGen/RISCV/get-setcc-result-type.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@
55
define void @getSetCCResultType(<4 x i32>* %p, <4 x i32>* %q) nounwind {
66
; RV32I-LABEL: getSetCCResultType:
77
; RV32I: # %bb.0: # %entry
8-
; RV32I-NEXT: lw a1, 0(a0)
9-
; RV32I-NEXT: lw a2, 12(a0)
8+
; RV32I-NEXT: lw a1, 12(a0)
9+
; RV32I-NEXT: lw a2, 8(a0)
1010
; RV32I-NEXT: lw a3, 4(a0)
11-
; RV32I-NEXT: lw a4, 8(a0)
11+
; RV32I-NEXT: lw a4, 0(a0)
1212
; RV32I-NEXT: snez a1, a1
13-
; RV32I-NEXT: addi a1, a1, -1
13+
; RV32I-NEXT: snez a2, a2
1414
; RV32I-NEXT: snez a3, a3
15-
; RV32I-NEXT: addi a3, a3, -1
1615
; RV32I-NEXT: snez a4, a4
1716
; RV32I-NEXT: addi a4, a4, -1
18-
; RV32I-NEXT: snez a2, a2
17+
; RV32I-NEXT: addi a3, a3, -1
1918
; RV32I-NEXT: addi a2, a2, -1
20-
; RV32I-NEXT: sw a2, 12(a0)
21-
; RV32I-NEXT: sw a4, 8(a0)
19+
; RV32I-NEXT: addi a1, a1, -1
20+
; RV32I-NEXT: sw a1, 12(a0)
21+
; RV32I-NEXT: sw a2, 8(a0)
2222
; RV32I-NEXT: sw a3, 4(a0)
23-
; RV32I-NEXT: sw a1, 0(a0)
23+
; RV32I-NEXT: sw a4, 0(a0)
2424
; RV32I-NEXT: ret
2525
entry:
2626
%0 = load <4 x i32>, <4 x i32>* %p, align 16

llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,13 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
347347
; RV32-NEXT: call __moddi3@plt
348348
; RV32-NEXT: xori a2, s2, 2
349349
; RV32-NEXT: or a2, a2, s3
350+
; RV32-NEXT: seqz a2, a2
350351
; RV32-NEXT: xori a3, s5, 1
351352
; RV32-NEXT: or a3, a3, s6
353+
; RV32-NEXT: seqz a3, a3
352354
; RV32-NEXT: or a0, a0, a1
353355
; RV32-NEXT: snez a0, a0
354-
; RV32-NEXT: seqz a1, a3
355-
; RV32-NEXT: addi a1, a1, -1
356-
; RV32-NEXT: seqz a2, a2
356+
; RV32-NEXT: addi a1, a3, -1
357357
; RV32-NEXT: addi a2, a2, -1
358358
; RV32-NEXT: neg a3, a0
359359
; RV32-NEXT: sw a3, 0(s0)
@@ -389,24 +389,24 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
389389
; RV64-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
390390
; RV64-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
391391
; RV64-NEXT: mv s0, a0
392-
; RV64-NEXT: lwu a0, 8(a0)
393-
; RV64-NEXT: ld a1, 0(s0)
394-
; RV64-NEXT: slli a2, a0, 31
395-
; RV64-NEXT: srli a3, a1, 33
396-
; RV64-NEXT: lb a4, 12(s0)
397-
; RV64-NEXT: or a2, a3, a2
398-
; RV64-NEXT: slli a2, a2, 31
399-
; RV64-NEXT: srai s1, a2, 31
400-
; RV64-NEXT: slli a2, a4, 32
401-
; RV64-NEXT: or a0, a0, a2
392+
; RV64-NEXT: lb a0, 12(a0)
393+
; RV64-NEXT: lwu a1, 8(s0)
394+
; RV64-NEXT: slli a0, a0, 32
395+
; RV64-NEXT: or a0, a1, a0
396+
; RV64-NEXT: ld a2, 0(s0)
402397
; RV64-NEXT: slli a0, a0, 29
398+
; RV64-NEXT: srai s1, a0, 31
399+
; RV64-NEXT: slli a0, a1, 31
400+
; RV64-NEXT: srli a1, a2, 33
401+
; RV64-NEXT: or a0, a1, a0
402+
; RV64-NEXT: slli a0, a0, 31
403403
; RV64-NEXT: srai a0, a0, 31
404-
; RV64-NEXT: slli a1, a1, 31
404+
; RV64-NEXT: slli a1, a2, 31
405405
; RV64-NEXT: srai s2, a1, 31
406-
; RV64-NEXT: li a1, -5
406+
; RV64-NEXT: li a1, 7
407407
; RV64-NEXT: call __moddi3@plt
408408
; RV64-NEXT: mv s3, a0
409-
; RV64-NEXT: li a1, 7
409+
; RV64-NEXT: li a1, -5
410410
; RV64-NEXT: mv a0, s1
411411
; RV64-NEXT: call __moddi3@plt
412412
; RV64-NEXT: mv s1, a0
@@ -421,24 +421,24 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
421421
; RV64-NEXT: srli a0, a0, 1
422422
; RV64-NEXT: or a0, a0, a2
423423
; RV64-NEXT: sltu a0, a1, a0
424-
; RV64-NEXT: neg a0, a0
425-
; RV64-NEXT: addi a1, s1, -1
424+
; RV64-NEXT: addi a1, s1, -2
426425
; RV64-NEXT: seqz a1, a1
427-
; RV64-NEXT: addi a1, a1, -1
428-
; RV64-NEXT: addi a2, s3, -2
426+
; RV64-NEXT: addi a2, s3, -1
429427
; RV64-NEXT: seqz a2, a2
428+
; RV64-NEXT: neg a0, a0
430429
; RV64-NEXT: addi a2, a2, -1
431-
; RV64-NEXT: slli a3, a2, 29
430+
; RV64-NEXT: addi a1, a1, -1
431+
; RV64-NEXT: slli a3, a1, 29
432432
; RV64-NEXT: srli a3, a3, 61
433433
; RV64-NEXT: sb a3, 12(s0)
434-
; RV64-NEXT: slli a2, a2, 2
435-
; RV64-NEXT: slli a3, a1, 31
434+
; RV64-NEXT: slli a1, a1, 2
435+
; RV64-NEXT: slli a3, a2, 31
436436
; RV64-NEXT: srli a3, a3, 62
437-
; RV64-NEXT: or a2, a3, a2
438-
; RV64-NEXT: sw a2, 8(s0)
437+
; RV64-NEXT: or a1, a3, a1
438+
; RV64-NEXT: sw a1, 8(s0)
439439
; RV64-NEXT: slli a0, a0, 31
440440
; RV64-NEXT: srli a0, a0, 31
441-
; RV64-NEXT: slli a1, a1, 33
441+
; RV64-NEXT: slli a1, a2, 33
442442
; RV64-NEXT: or a0, a0, a1
443443
; RV64-NEXT: sd a0, 0(s0)
444444
; RV64-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
@@ -498,13 +498,13 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
498498
; RV32M-NEXT: call __moddi3@plt
499499
; RV32M-NEXT: xori a2, s2, 2
500500
; RV32M-NEXT: or a2, a2, s3
501+
; RV32M-NEXT: seqz a2, a2
501502
; RV32M-NEXT: xori a3, s5, 1
502503
; RV32M-NEXT: or a3, a3, s6
504+
; RV32M-NEXT: seqz a3, a3
503505
; RV32M-NEXT: or a0, a0, a1
504506
; RV32M-NEXT: snez a0, a0
505-
; RV32M-NEXT: seqz a1, a3
506-
; RV32M-NEXT: addi a1, a1, -1
507-
; RV32M-NEXT: seqz a2, a2
507+
; RV32M-NEXT: addi a1, a3, -1
508508
; RV32M-NEXT: addi a2, a2, -1
509509
; RV32M-NEXT: neg a3, a0
510510
; RV32M-NEXT: sw a3, 0(s0)
@@ -533,65 +533,65 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
533533
;
534534
; RV64M-LABEL: test_srem_vec:
535535
; RV64M: # %bb.0:
536-
; RV64M-NEXT: lwu a1, 8(a0)
537-
; RV64M-NEXT: ld a2, 0(a0)
538-
; RV64M-NEXT: lb a3, 12(a0)
539-
; RV64M-NEXT: slli a4, a1, 31
540-
; RV64M-NEXT: srli a5, a2, 33
541-
; RV64M-NEXT: or a4, a5, a4
542-
; RV64M-NEXT: slli a3, a3, 32
543-
; RV64M-NEXT: lui a5, %hi(.LCPI3_0)
544-
; RV64M-NEXT: ld a5, %lo(.LCPI3_0)(a5)
545-
; RV64M-NEXT: or a1, a1, a3
536+
; RV64M-NEXT: lb a1, 12(a0)
537+
; RV64M-NEXT: lwu a2, 8(a0)
538+
; RV64M-NEXT: slli a1, a1, 32
539+
; RV64M-NEXT: or a1, a2, a1
540+
; RV64M-NEXT: ld a3, 0(a0)
546541
; RV64M-NEXT: slli a1, a1, 29
547542
; RV64M-NEXT: srai a1, a1, 31
548-
; RV64M-NEXT: mulh a3, a1, a5
549-
; RV64M-NEXT: srli a5, a3, 63
550-
; RV64M-NEXT: srai a3, a3, 1
551-
; RV64M-NEXT: add a3, a3, a5
552-
; RV64M-NEXT: slli a5, a3, 2
553-
; RV64M-NEXT: add a3, a5, a3
543+
; RV64M-NEXT: slli a2, a2, 31
544+
; RV64M-NEXT: srli a4, a3, 33
545+
; RV64M-NEXT: lui a5, %hi(.LCPI3_0)
546+
; RV64M-NEXT: ld a5, %lo(.LCPI3_0)(a5)
547+
; RV64M-NEXT: or a2, a4, a2
548+
; RV64M-NEXT: slli a2, a2, 31
549+
; RV64M-NEXT: srai a2, a2, 31
550+
; RV64M-NEXT: mulh a4, a2, a5
551+
; RV64M-NEXT: srli a5, a4, 63
552+
; RV64M-NEXT: srai a4, a4, 1
553+
; RV64M-NEXT: add a4, a4, a5
554+
; RV64M-NEXT: slli a5, a4, 3
555+
; RV64M-NEXT: sub a4, a4, a5
554556
; RV64M-NEXT: lui a5, %hi(.LCPI3_1)
555557
; RV64M-NEXT: ld a5, %lo(.LCPI3_1)(a5)
556-
; RV64M-NEXT: slli a4, a4, 31
557-
; RV64M-NEXT: srai a4, a4, 31
558-
; RV64M-NEXT: add a1, a1, a3
559-
; RV64M-NEXT: mulh a3, a4, a5
560-
; RV64M-NEXT: srli a5, a3, 63
561-
; RV64M-NEXT: srai a3, a3, 1
562-
; RV64M-NEXT: add a3, a3, a5
563-
; RV64M-NEXT: slli a5, a3, 3
564-
; RV64M-NEXT: sub a3, a3, a5
565-
; RV64M-NEXT: add a3, a4, a3
558+
; RV64M-NEXT: slli a3, a3, 31
559+
; RV64M-NEXT: srai a3, a3, 31
560+
; RV64M-NEXT: add a2, a2, a4
561+
; RV64M-NEXT: mulh a4, a1, a5
562+
; RV64M-NEXT: srli a5, a4, 63
563+
; RV64M-NEXT: srai a4, a4, 1
564+
; RV64M-NEXT: add a4, a4, a5
565+
; RV64M-NEXT: slli a5, a4, 2
566+
; RV64M-NEXT: add a4, a5, a4
567+
; RV64M-NEXT: add a1, a1, a4
568+
; RV64M-NEXT: addi a1, a1, -2
569+
; RV64M-NEXT: seqz a1, a1
566570
; RV64M-NEXT: lui a4, %hi(.LCPI3_2)
567571
; RV64M-NEXT: ld a4, %lo(.LCPI3_2)(a4)
568572
; RV64M-NEXT: lui a5, %hi(.LCPI3_3)
569573
; RV64M-NEXT: ld a5, %lo(.LCPI3_3)(a5)
570-
; RV64M-NEXT: slli a2, a2, 31
571-
; RV64M-NEXT: srai a2, a2, 31
572-
; RV64M-NEXT: mul a2, a2, a4
573-
; RV64M-NEXT: add a2, a2, a5
574-
; RV64M-NEXT: slli a4, a2, 63
575-
; RV64M-NEXT: srli a2, a2, 1
576-
; RV64M-NEXT: or a2, a2, a4
577-
; RV64M-NEXT: sltu a2, a5, a2
578-
; RV64M-NEXT: addi a3, a3, -1
579-
; RV64M-NEXT: seqz a3, a3
580-
; RV64M-NEXT: addi a3, a3, -1
581-
; RV64M-NEXT: addi a1, a1, -2
582-
; RV64M-NEXT: seqz a1, a1
574+
; RV64M-NEXT: addi a2, a2, -1
575+
; RV64M-NEXT: seqz a2, a2
576+
; RV64M-NEXT: mul a3, a3, a4
577+
; RV64M-NEXT: add a3, a3, a5
578+
; RV64M-NEXT: slli a4, a3, 63
579+
; RV64M-NEXT: srli a3, a3, 1
580+
; RV64M-NEXT: or a3, a3, a4
581+
; RV64M-NEXT: sltu a3, a5, a3
582+
; RV64M-NEXT: addi a2, a2, -1
583583
; RV64M-NEXT: addi a1, a1, -1
584-
; RV64M-NEXT: neg a2, a2
584+
; RV64M-NEXT: neg a3, a3
585585
; RV64M-NEXT: slli a4, a1, 29
586586
; RV64M-NEXT: srli a4, a4, 61
587587
; RV64M-NEXT: sb a4, 12(a0)
588-
; RV64M-NEXT: slli a4, a3, 33
589-
; RV64M-NEXT: slli a2, a2, 31
590-
; RV64M-NEXT: srli a2, a2, 31
591-
; RV64M-NEXT: or a2, a2, a4
592-
; RV64M-NEXT: sd a2, 0(a0)
588+
; RV64M-NEXT: slli a4, a2, 33
589+
; RV64M-NEXT: slli a3, a3, 31
590+
; RV64M-NEXT: srli a3, a3, 31
591+
; RV64M-NEXT: or a3, a3, a4
592+
; RV64M-NEXT: sd a3, 0(a0)
593593
; RV64M-NEXT: slli a1, a1, 2
594-
; RV64M-NEXT: slli a2, a3, 31
594+
; RV64M-NEXT: slli a2, a2, 31
595595
; RV64M-NEXT: srli a2, a2, 62
596596
; RV64M-NEXT: or a1, a2, a1
597597
; RV64M-NEXT: sw a1, 8(a0)

0 commit comments

Comments
 (0)