Skip to content

Commit 0ab3f16

Browse files
committed
[RISCV] Add coverage of add (mul X, C), Y oppurtunity using shNadd
1 parent 1b87418 commit 0ab3f16

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

llvm/test/CodeGen/RISCV/rv64zba.ll

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,18 @@ define i64 @addmul20(i64 %a, i64 %b) {
479479
ret i64 %d
480480
}
481481

482+
define i64 @addmul22(i64 %a, i64 %b) {
483+
; CHECK-LABEL: addmul22:
484+
; CHECK: # %bb.0:
485+
; CHECK-NEXT: li a2, 22
486+
; CHECK-NEXT: mul a0, a0, a2
487+
; CHECK-NEXT: add a0, a0, a1
488+
; CHECK-NEXT: ret
489+
%c = mul i64 %a, 22
490+
%d = add i64 %c, %b
491+
ret i64 %d
492+
}
493+
482494
define i64 @addmul24(i64 %a, i64 %b) {
483495
; RV64I-LABEL: addmul24:
484496
; RV64I: # %bb.0:
@@ -551,6 +563,67 @@ define i64 @addmul72(i64 %a, i64 %b) {
551563
ret i64 %d
552564
}
553565

566+
define i64 @addmul162(i64 %a, i64 %b) {
567+
; CHECK-LABEL: addmul162:
568+
; CHECK: # %bb.0:
569+
; CHECK-NEXT: li a2, 162
570+
; CHECK-NEXT: mul a0, a0, a2
571+
; CHECK-NEXT: add a0, a0, a1
572+
; CHECK-NEXT: ret
573+
%c = mul i64 %a, 162
574+
%d = add i64 %c, %b
575+
ret i64 %d
576+
}
577+
578+
define i64 @addmul180(i64 %a, i64 %b) {
579+
; CHECK-LABEL: addmul180:
580+
; CHECK: # %bb.0:
581+
; CHECK-NEXT: li a2, 180
582+
; CHECK-NEXT: mul a0, a0, a2
583+
; CHECK-NEXT: add a0, a0, a1
584+
; CHECK-NEXT: ret
585+
%c = mul i64 %a, 180
586+
%d = add i64 %c, %b
587+
ret i64 %d
588+
}
589+
590+
define i64 @add255mul180(i64 %a) {
591+
; CHECK-LABEL: add255mul180:
592+
; CHECK: # %bb.0:
593+
; CHECK-NEXT: li a1, 180
594+
; CHECK-NEXT: mul a0, a0, a1
595+
; CHECK-NEXT: addi a0, a0, 255
596+
; CHECK-NEXT: ret
597+
%c = mul i64 %a, 180
598+
%d = add i64 %c, 255
599+
ret i64 %d
600+
}
601+
602+
603+
define i64 @addmul4096(i64 %a, i64 %b) {
604+
; CHECK-LABEL: addmul4096:
605+
; CHECK: # %bb.0:
606+
; CHECK-NEXT: slli a0, a0, 12
607+
; CHECK-NEXT: add a0, a0, a1
608+
; CHECK-NEXT: ret
609+
%c = mul i64 %a, 4096
610+
%d = add i64 %c, %b
611+
ret i64 %d
612+
}
613+
614+
define i64 @addmul4230(i64 %a, i64 %b) {
615+
; CHECK-LABEL: addmul4230:
616+
; CHECK: # %bb.0:
617+
; CHECK-NEXT: lui a2, 1
618+
; CHECK-NEXT: addiw a2, a2, 134
619+
; CHECK-NEXT: mul a0, a0, a2
620+
; CHECK-NEXT: add a0, a0, a1
621+
; CHECK-NEXT: ret
622+
%c = mul i64 %a, 4230
623+
%d = add i64 %c, %b
624+
ret i64 %d
625+
}
626+
554627
define i64 @mul96(i64 %a) {
555628
; RV64I-LABEL: mul96:
556629
; RV64I: # %bb.0:

0 commit comments

Comments
 (0)