[llvm] 0ab3f16 - [RISCV] Add coverage of add (mul X, C), Y oppurtunity using shNadd
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 17 14:34:00 PDT 2024
Author: Philip Reames
Date: 2024-04-17T14:33:28-07:00
New Revision: 0ab3f160c4bff1c7d57c046b95ab8c5035ae986f
URL: https://github.com/llvm/llvm-project/commit/0ab3f160c4bff1c7d57c046b95ab8c5035ae986f
DIFF: https://github.com/llvm/llvm-project/commit/0ab3f160c4bff1c7d57c046b95ab8c5035ae986f.diff
LOG: [RISCV] Add coverage of add (mul X, C), Y oppurtunity using shNadd
Added:
Modified:
llvm/test/CodeGen/RISCV/rv64zba.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/RISCV/rv64zba.ll b/llvm/test/CodeGen/RISCV/rv64zba.ll
index 6939185947f443..ccb23fc2bbfa36 100644
--- a/llvm/test/CodeGen/RISCV/rv64zba.ll
+++ b/llvm/test/CodeGen/RISCV/rv64zba.ll
@@ -479,6 +479,18 @@ define i64 @addmul20(i64 %a, i64 %b) {
ret i64 %d
}
+define i64 @addmul22(i64 %a, i64 %b) {
+; CHECK-LABEL: addmul22:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li a2, 22
+; CHECK-NEXT: mul a0, a0, a2
+; CHECK-NEXT: add a0, a0, a1
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 22
+ %d = add i64 %c, %b
+ ret i64 %d
+}
+
define i64 @addmul24(i64 %a, i64 %b) {
; RV64I-LABEL: addmul24:
; RV64I: # %bb.0:
@@ -551,6 +563,67 @@ define i64 @addmul72(i64 %a, i64 %b) {
ret i64 %d
}
+define i64 @addmul162(i64 %a, i64 %b) {
+; CHECK-LABEL: addmul162:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li a2, 162
+; CHECK-NEXT: mul a0, a0, a2
+; CHECK-NEXT: add a0, a0, a1
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 162
+ %d = add i64 %c, %b
+ ret i64 %d
+}
+
+define i64 @addmul180(i64 %a, i64 %b) {
+; CHECK-LABEL: addmul180:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li a2, 180
+; CHECK-NEXT: mul a0, a0, a2
+; CHECK-NEXT: add a0, a0, a1
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 180
+ %d = add i64 %c, %b
+ ret i64 %d
+}
+
+define i64 @add255mul180(i64 %a) {
+; CHECK-LABEL: add255mul180:
+; CHECK: # %bb.0:
+; CHECK-NEXT: li a1, 180
+; CHECK-NEXT: mul a0, a0, a1
+; CHECK-NEXT: addi a0, a0, 255
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 180
+ %d = add i64 %c, 255
+ ret i64 %d
+}
+
+
+define i64 @addmul4096(i64 %a, i64 %b) {
+; CHECK-LABEL: addmul4096:
+; CHECK: # %bb.0:
+; CHECK-NEXT: slli a0, a0, 12
+; CHECK-NEXT: add a0, a0, a1
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 4096
+ %d = add i64 %c, %b
+ ret i64 %d
+}
+
+define i64 @addmul4230(i64 %a, i64 %b) {
+; CHECK-LABEL: addmul4230:
+; CHECK: # %bb.0:
+; CHECK-NEXT: lui a2, 1
+; CHECK-NEXT: addiw a2, a2, 134
+; CHECK-NEXT: mul a0, a0, a2
+; CHECK-NEXT: add a0, a0, a1
+; CHECK-NEXT: ret
+ %c = mul i64 %a, 4230
+ %d = add i64 %c, %b
+ ret i64 %d
+}
+
define i64 @mul96(i64 %a) {
; RV64I-LABEL: mul96:
; RV64I: # %bb.0:
More information about the llvm-commits
mailing list