@@ -347,13 +347,13 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
347
347
; RV32-NEXT: call __moddi3@plt
348
348
; RV32-NEXT: xori a2, s2, 2
349
349
; RV32-NEXT: or a2, a2, s3
350
+ ; RV32-NEXT: seqz a2, a2
350
351
; RV32-NEXT: xori a3, s5, 1
351
352
; RV32-NEXT: or a3, a3, s6
353
+ ; RV32-NEXT: seqz a3, a3
352
354
; RV32-NEXT: or a0, a0, a1
353
355
; 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
357
357
; RV32-NEXT: addi a2, a2, -1
358
358
; RV32-NEXT: neg a3, a0
359
359
; RV32-NEXT: sw a3, 0(s0)
@@ -389,24 +389,24 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
389
389
; RV64-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
390
390
; RV64-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
391
391
; 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)
402
397
; 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
403
403
; RV64-NEXT: srai a0, a0, 31
404
- ; RV64-NEXT: slli a1, a1 , 31
404
+ ; RV64-NEXT: slli a1, a2 , 31
405
405
; RV64-NEXT: srai s2, a1, 31
406
- ; RV64-NEXT: li a1, -5
406
+ ; RV64-NEXT: li a1, 7
407
407
; RV64-NEXT: call __moddi3@plt
408
408
; RV64-NEXT: mv s3, a0
409
- ; RV64-NEXT: li a1, 7
409
+ ; RV64-NEXT: li a1, -5
410
410
; RV64-NEXT: mv a0, s1
411
411
; RV64-NEXT: call __moddi3@plt
412
412
; RV64-NEXT: mv s1, a0
@@ -421,24 +421,24 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
421
421
; RV64-NEXT: srli a0, a0, 1
422
422
; RV64-NEXT: or a0, a0, a2
423
423
; 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
426
425
; 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
429
427
; RV64-NEXT: seqz a2, a2
428
+ ; RV64-NEXT: neg a0, a0
430
429
; 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
432
432
; RV64-NEXT: srli a3, a3, 61
433
433
; 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
436
436
; 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)
439
439
; RV64-NEXT: slli a0, a0, 31
440
440
; RV64-NEXT: srli a0, a0, 31
441
- ; RV64-NEXT: slli a1, a1 , 33
441
+ ; RV64-NEXT: slli a1, a2 , 33
442
442
; RV64-NEXT: or a0, a0, a1
443
443
; RV64-NEXT: sd a0, 0(s0)
444
444
; RV64-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
@@ -498,13 +498,13 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
498
498
; RV32M-NEXT: call __moddi3@plt
499
499
; RV32M-NEXT: xori a2, s2, 2
500
500
; RV32M-NEXT: or a2, a2, s3
501
+ ; RV32M-NEXT: seqz a2, a2
501
502
; RV32M-NEXT: xori a3, s5, 1
502
503
; RV32M-NEXT: or a3, a3, s6
504
+ ; RV32M-NEXT: seqz a3, a3
503
505
; RV32M-NEXT: or a0, a0, a1
504
506
; 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
508
508
; RV32M-NEXT: addi a2, a2, -1
509
509
; RV32M-NEXT: neg a3, a0
510
510
; RV32M-NEXT: sw a3, 0(s0)
@@ -533,65 +533,65 @@ define void @test_srem_vec(<3 x i33>* %X) nounwind {
533
533
;
534
534
; RV64M-LABEL: test_srem_vec:
535
535
; 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)
546
541
; RV64M-NEXT: slli a1, a1, 29
547
542
; 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
554
556
; RV64M-NEXT: lui a5, %hi(.LCPI3_1)
555
557
; 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
566
570
; RV64M-NEXT: lui a4, %hi(.LCPI3_2)
567
571
; RV64M-NEXT: ld a4, %lo(.LCPI3_2)(a4)
568
572
; RV64M-NEXT: lui a5, %hi(.LCPI3_3)
569
573
; 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
583
583
; RV64M-NEXT: addi a1, a1, -1
584
- ; RV64M-NEXT: neg a2, a2
584
+ ; RV64M-NEXT: neg a3, a3
585
585
; RV64M-NEXT: slli a4, a1, 29
586
586
; RV64M-NEXT: srli a4, a4, 61
587
587
; 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)
593
593
; RV64M-NEXT: slli a1, a1, 2
594
- ; RV64M-NEXT: slli a2, a3 , 31
594
+ ; RV64M-NEXT: slli a2, a2 , 31
595
595
; RV64M-NEXT: srli a2, a2, 62
596
596
; RV64M-NEXT: or a1, a2, a1
597
597
; RV64M-NEXT: sw a1, 8(a0)
0 commit comments