[llvm] 39532ea - [RISCV] Add signext attribute to i32 arguments in some tests. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 8 10:59:06 PDT 2022
Author: Craig Topper
Date: 2022-10-08T10:50:16-07:00
New Revision: 39532ea0735ff2ced1a0bf706dcdc523e8fcec82
URL: https://github.com/llvm/llvm-project/commit/39532ea0735ff2ced1a0bf706dcdc523e8fcec82
DIFF: https://github.com/llvm/llvm-project/commit/39532ea0735ff2ced1a0bf706dcdc523e8fcec82.diff
LOG: [RISCV] Add signext attribute to i32 arguments in some tests. NFC
Added:
Modified:
llvm/test/CodeGen/RISCV/aext-to-sext.ll
llvm/test/CodeGen/RISCV/setcc-logic.ll
llvm/test/CodeGen/RISCV/xaluo.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/RISCV/aext-to-sext.ll b/llvm/test/CodeGen/RISCV/aext-to-sext.ll
index d866b4b453e58..4a533a187af64 100644
--- a/llvm/test/CodeGen/RISCV/aext-to-sext.ll
+++ b/llvm/test/CodeGen/RISCV/aext-to-sext.ll
@@ -51,10 +51,9 @@ declare void @hoge()
; Because custom type legalization for i32 is enabled, this resulted in
; LowerOperation being called for the amount. This was not expected and
; triggered an assert.
-define i32 @crash(i32 %x, i32 %y, i32 %z) {
+define i32 @crash(i32 signext %x, i32 signext %y, i32 signext %z) {
; RV64I-LABEL: crash:
; RV64I: # %bb.0:
-; RV64I-NEXT: sext.w a0, a0
; RV64I-NEXT: seqz a3, a0
; RV64I-NEXT: addw a0, a1, a2
; RV64I-NEXT: slli a1, a3, 3
diff --git a/llvm/test/CodeGen/RISCV/setcc-logic.ll b/llvm/test/CodeGen/RISCV/setcc-logic.ll
index b0512dc879411..2e75b02e27b90 100644
--- a/llvm/test/CodeGen/RISCV/setcc-logic.ll
+++ b/llvm/test/CodeGen/RISCV/setcc-logic.ll
@@ -4,7 +4,7 @@
; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64I
-define i1 @and_icmp_eq(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
+define i1 @and_icmp_eq(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
; RV32I-LABEL: and_icmp_eq:
; RV32I: # %bb.0:
; RV32I-NEXT: xor a0, a0, a1
@@ -18,7 +18,6 @@ define i1 @and_icmp_eq(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
; RV64I-NEXT: xor a0, a0, a1
; RV64I-NEXT: xor a1, a2, a3
; RV64I-NEXT: or a0, a0, a1
-; RV64I-NEXT: sext.w a0, a0
; RV64I-NEXT: seqz a0, a0
; RV64I-NEXT: ret
%cmp1 = icmp eq i32 %a, %b
@@ -27,7 +26,7 @@ define i1 @and_icmp_eq(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
ret i1 %and
}
-define i1 @or_icmp_ne(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
+define i1 @or_icmp_ne(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
; RV32I-LABEL: or_icmp_ne:
; RV32I: # %bb.0:
; RV32I-NEXT: xor a0, a0, a1
@@ -41,7 +40,6 @@ define i1 @or_icmp_ne(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
; RV64I-NEXT: xor a0, a0, a1
; RV64I-NEXT: xor a1, a2, a3
; RV64I-NEXT: or a0, a0, a1
-; RV64I-NEXT: sext.w a0, a0
; RV64I-NEXT: snez a0, a0
; RV64I-NEXT: ret
%cmp1 = icmp ne i32 %a, %b
diff --git a/llvm/test/CodeGen/RISCV/xaluo.ll b/llvm/test/CodeGen/RISCV/xaluo.ll
index 922368aedc343..f6963fd674d3e 100644
--- a/llvm/test/CodeGen/RISCV/xaluo.ll
+++ b/llvm/test/CodeGen/RISCV/xaluo.ll
@@ -7,7 +7,7 @@
;
; Get the actual value of the overflow bit.
;
-define zeroext i1 @saddo1.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @saddo1.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: saddo1.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a3, a0, a1
@@ -19,8 +19,6 @@ define zeroext i1 @saddo1.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64-LABEL: saddo1.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: add a3, a0, a1
; RV64-NEXT: addw a0, a0, a1
; RV64-NEXT: xor a0, a0, a3
@@ -39,8 +37,6 @@ define zeroext i1 @saddo1.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64ZBA-LABEL: saddo1.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: add a3, a0, a1
; RV64ZBA-NEXT: addw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a3
@@ -56,7 +52,7 @@ entry:
}
; Test the immediate version.
-define zeroext i1 @saddo2.i32(i32 %v1, i32* %res) {
+define zeroext i1 @saddo2.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: saddo2.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, 4
@@ -66,7 +62,6 @@ define zeroext i1 @saddo2.i32(i32 %v1, i32* %res) {
;
; RV64-LABEL: saddo2.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: addi a2, a0, 4
; RV64-NEXT: addiw a0, a0, 4
; RV64-NEXT: xor a0, a0, a2
@@ -83,7 +78,6 @@ define zeroext i1 @saddo2.i32(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: saddo2.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: addi a2, a0, 4
; RV64ZBA-NEXT: addiw a0, a0, 4
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -99,7 +93,7 @@ entry:
}
; Test negative immediates.
-define zeroext i1 @saddo3.i32(i32 %v1, i32* %res) {
+define zeroext i1 @saddo3.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: saddo3.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, -4
@@ -110,7 +104,6 @@ define zeroext i1 @saddo3.i32(i32 %v1, i32* %res) {
;
; RV64-LABEL: saddo3.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: addi a2, a0, -4
; RV64-NEXT: addiw a0, a0, -4
; RV64-NEXT: xor a0, a0, a2
@@ -128,7 +121,6 @@ define zeroext i1 @saddo3.i32(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: saddo3.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: addi a2, a0, -4
; RV64ZBA-NEXT: addiw a0, a0, -4
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -144,7 +136,7 @@ entry:
}
; Test immediates that are too large to be encoded.
-define zeroext i1 @saddo4.i32(i32 %v1, i32* %res) {
+define zeroext i1 @saddo4.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: saddo4.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: lui a2, 4096
@@ -156,7 +148,6 @@ define zeroext i1 @saddo4.i32(i32 %v1, i32* %res) {
;
; RV64-LABEL: saddo4.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: lui a2, 4096
; RV64-NEXT: addiw a2, a2, -1
; RV64-NEXT: add a3, a0, a2
@@ -177,7 +168,6 @@ define zeroext i1 @saddo4.i32(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: saddo4.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: lui a2, 4096
; RV64ZBA-NEXT: addiw a2, a2, -1
; RV64ZBA-NEXT: add a3, a0, a2
@@ -348,7 +338,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @uaddo.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @uaddo.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: uaddo.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a1, a0, a1
@@ -359,7 +349,6 @@ define zeroext i1 @uaddo.i32(i32 %v1, i32 %v2, i32* %res) {
; RV64-LABEL: uaddo.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: addw a1, a0, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sltu a0, a1, a0
; RV64-NEXT: sw a1, 0(a2)
; RV64-NEXT: ret
@@ -374,7 +363,6 @@ define zeroext i1 @uaddo.i32(i32 %v1, i32 %v2, i32* %res) {
; RV64ZBA-LABEL: uaddo.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: addw a1, a0, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sltu a0, a1, a0
; RV64ZBA-NEXT: sw a1, 0(a2)
; RV64ZBA-NEXT: ret
@@ -386,7 +374,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @uaddo.i32.constant(i32 %v1, i32* %res) {
+define zeroext i1 @uaddo.i32.constant(i32 signext %v1, i32* %res) {
; RV32-LABEL: uaddo.i32.constant:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, -2
@@ -396,10 +384,9 @@ define zeroext i1 @uaddo.i32.constant(i32 %v1, i32* %res) {
;
; RV64-LABEL: uaddo.i32.constant:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a2, a0
-; RV64-NEXT: addiw a3, a0, -2
-; RV64-NEXT: sltu a0, a3, a2
-; RV64-NEXT: sw a3, 0(a1)
+; RV64-NEXT: addiw a2, a0, -2
+; RV64-NEXT: sltu a0, a2, a0
+; RV64-NEXT: sw a2, 0(a1)
; RV64-NEXT: ret
;
; RV32ZBA-LABEL: uaddo.i32.constant:
@@ -411,10 +398,9 @@ define zeroext i1 @uaddo.i32.constant(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: uaddo.i32.constant:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a2, a0
-; RV64ZBA-NEXT: addiw a3, a0, -2
-; RV64ZBA-NEXT: sltu a0, a3, a2
-; RV64ZBA-NEXT: sw a3, 0(a1)
+; RV64ZBA-NEXT: addiw a2, a0, -2
+; RV64ZBA-NEXT: sltu a0, a2, a0
+; RV64ZBA-NEXT: sw a2, 0(a1)
; RV64ZBA-NEXT: ret
entry:
%t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 -2)
@@ -424,7 +410,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @uaddo.i32.constant_one(i32 %v1, i32* %res) {
+define zeroext i1 @uaddo.i32.constant_one(i32 signext %v1, i32* %res) {
; RV32-LABEL: uaddo.i32.constant_one:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, 1
@@ -560,7 +546,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @ssubo1.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @ssubo1.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: ssubo1.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sgtz a3, a1
@@ -572,8 +558,6 @@ define zeroext i1 @ssubo1.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64-LABEL: ssubo1.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sub a3, a0, a1
; RV64-NEXT: subw a0, a0, a1
; RV64-NEXT: xor a0, a0, a3
@@ -592,8 +576,6 @@ define zeroext i1 @ssubo1.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64ZBA-LABEL: ssubo1.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sub a3, a0, a1
; RV64ZBA-NEXT: subw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a3
@@ -608,7 +590,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @ssubo2.i32(i32 %v1, i32* %res) {
+define zeroext i1 @ssubo2.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: ssubo2.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, 4
@@ -618,7 +600,6 @@ define zeroext i1 @ssubo2.i32(i32 %v1, i32* %res) {
;
; RV64-LABEL: ssubo2.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: addi a2, a0, 4
; RV64-NEXT: addiw a0, a0, 4
; RV64-NEXT: xor a0, a0, a2
@@ -635,7 +616,6 @@ define zeroext i1 @ssubo2.i32(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: ssubo2.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: addi a2, a0, 4
; RV64ZBA-NEXT: addiw a0, a0, 4
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -706,7 +686,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @usubo.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @usubo.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: usubo.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sub a1, a0, a1
@@ -717,7 +697,6 @@ define zeroext i1 @usubo.i32(i32 %v1, i32 %v2, i32* %res) {
; RV64-LABEL: usubo.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: subw a1, a0, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sltu a0, a0, a1
; RV64-NEXT: sw a1, 0(a2)
; RV64-NEXT: ret
@@ -732,7 +711,6 @@ define zeroext i1 @usubo.i32(i32 %v1, i32 %v2, i32* %res) {
; RV64ZBA-LABEL: usubo.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: subw a1, a0, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sltu a0, a0, a1
; RV64ZBA-NEXT: sw a1, 0(a2)
; RV64ZBA-NEXT: ret
@@ -744,7 +722,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @usubo.i32.constant.rhs(i32 %v1, i32* %res) {
+define zeroext i1 @usubo.i32.constant.rhs(i32 signext %v1, i32* %res) {
; RV32-LABEL: usubo.i32.constant.rhs:
; RV32: # %bb.0: # %entry
; RV32-NEXT: addi a2, a0, 2
@@ -755,7 +733,6 @@ define zeroext i1 @usubo.i32.constant.rhs(i32 %v1, i32* %res) {
; RV64-LABEL: usubo.i32.constant.rhs:
; RV64: # %bb.0: # %entry
; RV64-NEXT: addiw a2, a0, 2
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sltu a0, a0, a2
; RV64-NEXT: sw a2, 0(a1)
; RV64-NEXT: ret
@@ -770,7 +747,6 @@ define zeroext i1 @usubo.i32.constant.rhs(i32 %v1, i32* %res) {
; RV64ZBA-LABEL: usubo.i32.constant.rhs:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: addiw a2, a0, 2
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sltu a0, a0, a2
; RV64ZBA-NEXT: sw a2, 0(a1)
; RV64ZBA-NEXT: ret
@@ -782,7 +758,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @usubo.i32.constant.lhs(i32 %v1, i32* %res) {
+define zeroext i1 @usubo.i32.constant.lhs(i32 signext %v1, i32* %res) {
; RV32-LABEL: usubo.i32.constant.lhs:
; RV32: # %bb.0: # %entry
; RV32-NEXT: li a2, -2
@@ -882,7 +858,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @smulo.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @smulo.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: smulo.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulh a3, a0, a1
@@ -895,8 +871,6 @@ define zeroext i1 @smulo.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64-LABEL: smulo.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: mul a3, a0, a1
; RV64-NEXT: mulw a0, a0, a1
; RV64-NEXT: xor a0, a0, a3
@@ -916,8 +890,6 @@ define zeroext i1 @smulo.i32(i32 %v1, i32 %v2, i32* %res) {
;
; RV64ZBA-LABEL: smulo.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: mul a3, a0, a1
; RV64ZBA-NEXT: mulw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a3
@@ -932,7 +904,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @smulo2.i32(i32 %v1, i32* %res) {
+define zeroext i1 @smulo2.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: smulo2.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: li a2, 13
@@ -946,7 +918,6 @@ define zeroext i1 @smulo2.i32(i32 %v1, i32* %res) {
;
; RV64-LABEL: smulo2.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: li a2, 13
; RV64-NEXT: mul a3, a0, a2
; RV64-NEXT: mulw a0, a0, a2
@@ -968,7 +939,6 @@ define zeroext i1 @smulo2.i32(i32 %v1, i32* %res) {
;
; RV64ZBA-LABEL: smulo2.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sh1add a2, a0, a0
; RV64ZBA-NEXT: sh2add a2, a2, a0
; RV64ZBA-NEXT: sext.w a0, a2
@@ -1216,7 +1186,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @umulo.i32(i32 %v1, i32 %v2, i32* %res) {
+define zeroext i1 @umulo.i32(i32 signext %v1, i32 signext %v2, i32* %res) {
; RV32-LABEL: umulo.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulhu a3, a0, a1
@@ -1262,7 +1232,7 @@ entry:
ret i1 %obit
}
-define zeroext i1 @umulo2.i32(i32 %v1, i32* %res) {
+define zeroext i1 @umulo2.i32(i32 signext %v1, i32* %res) {
; RV32-LABEL: umulo2.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: li a3, 13
@@ -1498,7 +1468,7 @@ entry:
;
; Check the use of the overflow bit in combination with a select instruction.
;
-define i32 @saddo.select.i32(i32 %v1, i32 %v2) {
+define i32 @saddo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: saddo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a2, a0, a1
@@ -1512,11 +1482,9 @@ define i32 @saddo.select.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: saddo.select.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a2, a1
-; RV64-NEXT: sext.w a3, a0
-; RV64-NEXT: add a4, a3, a2
-; RV64-NEXT: addw a2, a3, a2
-; RV64-NEXT: bne a2, a4, .LBB28_2
+; RV64-NEXT: add a2, a0, a1
+; RV64-NEXT: addw a3, a0, a1
+; RV64-NEXT: bne a3, a2, .LBB28_2
; RV64-NEXT: # %bb.1: # %entry
; RV64-NEXT: mv a0, a1
; RV64-NEXT: .LBB28_2: # %entry
@@ -1535,11 +1503,9 @@ define i32 @saddo.select.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: saddo.select.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a2, a1
-; RV64ZBA-NEXT: sext.w a3, a0
-; RV64ZBA-NEXT: add a4, a3, a2
-; RV64ZBA-NEXT: addw a2, a3, a2
-; RV64ZBA-NEXT: bne a2, a4, .LBB28_2
+; RV64ZBA-NEXT: add a2, a0, a1
+; RV64ZBA-NEXT: addw a3, a0, a1
+; RV64ZBA-NEXT: bne a3, a2, .LBB28_2
; RV64ZBA-NEXT: # %bb.1: # %entry
; RV64ZBA-NEXT: mv a0, a1
; RV64ZBA-NEXT: .LBB28_2: # %entry
@@ -1551,7 +1517,7 @@ entry:
ret i32 %ret
}
-define i1 @saddo.not.i32(i32 %v1, i32 %v2) {
+define i1 @saddo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: saddo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a2, a0, a1
@@ -1563,8 +1529,6 @@ define i1 @saddo.not.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: saddo.not.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: add a2, a0, a1
; RV64-NEXT: addw a0, a0, a1
; RV64-NEXT: xor a0, a0, a2
@@ -1582,8 +1546,6 @@ define i1 @saddo.not.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: saddo.not.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: add a2, a0, a1
; RV64ZBA-NEXT: addw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -1712,7 +1674,7 @@ entry:
ret i1 %ret
}
-define i32 @uaddo.select.i32(i32 %v1, i32 %v2) {
+define i32 @uaddo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: uaddo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a2, a0, a1
@@ -1725,8 +1687,7 @@ define i32 @uaddo.select.i32(i32 %v1, i32 %v2) {
; RV64-LABEL: uaddo.select.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: addw a2, a0, a1
-; RV64-NEXT: sext.w a3, a0
-; RV64-NEXT: bltu a2, a3, .LBB32_2
+; RV64-NEXT: bltu a2, a0, .LBB32_2
; RV64-NEXT: # %bb.1: # %entry
; RV64-NEXT: mv a0, a1
; RV64-NEXT: .LBB32_2: # %entry
@@ -1744,8 +1705,7 @@ define i32 @uaddo.select.i32(i32 %v1, i32 %v2) {
; RV64ZBA-LABEL: uaddo.select.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: addw a2, a0, a1
-; RV64ZBA-NEXT: sext.w a3, a0
-; RV64ZBA-NEXT: bltu a2, a3, .LBB32_2
+; RV64ZBA-NEXT: bltu a2, a0, .LBB32_2
; RV64ZBA-NEXT: # %bb.1: # %entry
; RV64ZBA-NEXT: mv a0, a1
; RV64ZBA-NEXT: .LBB32_2: # %entry
@@ -1757,7 +1717,7 @@ entry:
ret i32 %ret
}
-define i1 @uaddo.not.i32(i32 %v1, i32 %v2) {
+define i1 @uaddo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: uaddo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a1, a0, a1
@@ -1768,7 +1728,6 @@ define i1 @uaddo.not.i32(i32 %v1, i32 %v2) {
; RV64-LABEL: uaddo.not.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: addw a1, a0, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sltu a0, a1, a0
; RV64-NEXT: xori a0, a0, 1
; RV64-NEXT: ret
@@ -1783,7 +1742,6 @@ define i1 @uaddo.not.i32(i32 %v1, i32 %v2) {
; RV64ZBA-LABEL: uaddo.not.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: addw a1, a0, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sltu a0, a1, a0
; RV64ZBA-NEXT: xori a0, a0, 1
; RV64ZBA-NEXT: ret
@@ -1904,7 +1862,7 @@ entry:
ret i1 %ret
}
-define i32 @ssubo.select.i32(i32 %v1, i32 %v2) {
+define i32 @ssubo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: ssubo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sgtz a2, a1
@@ -1918,11 +1876,9 @@ define i32 @ssubo.select.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: ssubo.select.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a2, a1
-; RV64-NEXT: sext.w a3, a0
-; RV64-NEXT: sub a4, a3, a2
-; RV64-NEXT: subw a2, a3, a2
-; RV64-NEXT: bne a2, a4, .LBB36_2
+; RV64-NEXT: sub a2, a0, a1
+; RV64-NEXT: subw a3, a0, a1
+; RV64-NEXT: bne a3, a2, .LBB36_2
; RV64-NEXT: # %bb.1: # %entry
; RV64-NEXT: mv a0, a1
; RV64-NEXT: .LBB36_2: # %entry
@@ -1941,11 +1897,9 @@ define i32 @ssubo.select.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: ssubo.select.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a2, a1
-; RV64ZBA-NEXT: sext.w a3, a0
-; RV64ZBA-NEXT: sub a4, a3, a2
-; RV64ZBA-NEXT: subw a2, a3, a2
-; RV64ZBA-NEXT: bne a2, a4, .LBB36_2
+; RV64ZBA-NEXT: sub a2, a0, a1
+; RV64ZBA-NEXT: subw a3, a0, a1
+; RV64ZBA-NEXT: bne a3, a2, .LBB36_2
; RV64ZBA-NEXT: # %bb.1: # %entry
; RV64ZBA-NEXT: mv a0, a1
; RV64ZBA-NEXT: .LBB36_2: # %entry
@@ -1957,7 +1911,7 @@ entry:
ret i32 %ret
}
-define i1 @ssubo.not.i32(i32 %v1, i32 %v2) {
+define i1 @ssubo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: ssubo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sgtz a2, a1
@@ -1969,8 +1923,6 @@ define i1 @ssubo.not.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: ssubo.not.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sub a2, a0, a1
; RV64-NEXT: subw a0, a0, a1
; RV64-NEXT: xor a0, a0, a2
@@ -1988,8 +1940,6 @@ define i1 @ssubo.not.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: ssubo.not.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sub a2, a0, a1
; RV64ZBA-NEXT: subw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -2110,7 +2060,7 @@ entry:
ret i1 %ret
}
-define i32 @usubo.select.i32(i32 %v1, i32 %v2) {
+define i32 @usubo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: usubo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sub a2, a0, a1
@@ -2123,8 +2073,7 @@ define i32 @usubo.select.i32(i32 %v1, i32 %v2) {
; RV64-LABEL: usubo.select.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: subw a2, a0, a1
-; RV64-NEXT: sext.w a3, a0
-; RV64-NEXT: bltu a3, a2, .LBB40_2
+; RV64-NEXT: bltu a0, a2, .LBB40_2
; RV64-NEXT: # %bb.1: # %entry
; RV64-NEXT: mv a0, a1
; RV64-NEXT: .LBB40_2: # %entry
@@ -2142,8 +2091,7 @@ define i32 @usubo.select.i32(i32 %v1, i32 %v2) {
; RV64ZBA-LABEL: usubo.select.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: subw a2, a0, a1
-; RV64ZBA-NEXT: sext.w a3, a0
-; RV64ZBA-NEXT: bltu a3, a2, .LBB40_2
+; RV64ZBA-NEXT: bltu a0, a2, .LBB40_2
; RV64ZBA-NEXT: # %bb.1: # %entry
; RV64ZBA-NEXT: mv a0, a1
; RV64ZBA-NEXT: .LBB40_2: # %entry
@@ -2155,7 +2103,7 @@ entry:
ret i32 %ret
}
-define i1 @usubo.not.i32(i32 %v1, i32 %v2) {
+define i1 @usubo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: usubo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sub a1, a0, a1
@@ -2166,7 +2114,6 @@ define i1 @usubo.not.i32(i32 %v1, i32 %v2) {
; RV64-LABEL: usubo.not.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: subw a1, a0, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sltu a0, a0, a1
; RV64-NEXT: xori a0, a0, 1
; RV64-NEXT: ret
@@ -2181,7 +2128,6 @@ define i1 @usubo.not.i32(i32 %v1, i32 %v2) {
; RV64ZBA-LABEL: usubo.not.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: subw a1, a0, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sltu a0, a0, a1
; RV64ZBA-NEXT: xori a0, a0, 1
; RV64ZBA-NEXT: ret
@@ -2310,7 +2256,7 @@ entry:
ret i1 %ret
}
-define i32 @smulo.select.i32(i32 %v1, i32 %v2) {
+define i32 @smulo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: smulo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulh a2, a0, a1
@@ -2324,11 +2270,9 @@ define i32 @smulo.select.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: smulo.select.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a2, a1
-; RV64-NEXT: sext.w a3, a0
-; RV64-NEXT: mul a4, a3, a2
-; RV64-NEXT: mulw a2, a3, a2
-; RV64-NEXT: bne a2, a4, .LBB44_2
+; RV64-NEXT: mul a2, a0, a1
+; RV64-NEXT: mulw a3, a0, a1
+; RV64-NEXT: bne a3, a2, .LBB44_2
; RV64-NEXT: # %bb.1: # %entry
; RV64-NEXT: mv a0, a1
; RV64-NEXT: .LBB44_2: # %entry
@@ -2347,11 +2291,9 @@ define i32 @smulo.select.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: smulo.select.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a2, a1
-; RV64ZBA-NEXT: sext.w a3, a0
-; RV64ZBA-NEXT: mul a4, a3, a2
-; RV64ZBA-NEXT: mulw a2, a3, a2
-; RV64ZBA-NEXT: bne a2, a4, .LBB44_2
+; RV64ZBA-NEXT: mul a2, a0, a1
+; RV64ZBA-NEXT: mulw a3, a0, a1
+; RV64ZBA-NEXT: bne a3, a2, .LBB44_2
; RV64ZBA-NEXT: # %bb.1: # %entry
; RV64ZBA-NEXT: mv a0, a1
; RV64ZBA-NEXT: .LBB44_2: # %entry
@@ -2363,7 +2305,7 @@ entry:
ret i32 %ret
}
-define i1 @smulo.not.i32(i32 %v1, i32 %v2) {
+define i1 @smulo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: smulo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulh a2, a0, a1
@@ -2375,8 +2317,6 @@ define i1 @smulo.not.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: smulo.not.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: mul a2, a0, a1
; RV64-NEXT: mulw a0, a0, a1
; RV64-NEXT: xor a0, a0, a2
@@ -2394,8 +2334,6 @@ define i1 @smulo.not.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: smulo.not.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: mul a2, a0, a1
; RV64ZBA-NEXT: mulw a0, a0, a1
; RV64ZBA-NEXT: xor a0, a0, a2
@@ -2686,7 +2624,7 @@ entry:
ret i1 %ret
}
-define i32 @umulo.select.i32(i32 %v1, i32 %v2) {
+define i32 @umulo.select.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: umulo.select.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulhu a2, a0, a1
@@ -2735,7 +2673,7 @@ entry:
ret i32 %ret
}
-define i1 @umulo.not.i32(i32 %v1, i32 %v2) {
+define i1 @umulo.not.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: umulo.not.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulhu a0, a0, a1
@@ -2912,7 +2850,7 @@ entry:
;
; Check the use of the overflow bit in combination with a branch instruction.
;
-define zeroext i1 @saddo.br.i32(i32 %v1, i32 %v2) {
+define zeroext i1 @saddo.br.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: saddo.br.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: add a2, a0, a1
@@ -2928,8 +2866,6 @@ define zeroext i1 @saddo.br.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: saddo.br.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: add a2, a0, a1
; RV64-NEXT: addw a0, a0, a1
; RV64-NEXT: beq a0, a2, .LBB52_2
@@ -2955,8 +2891,6 @@ define zeroext i1 @saddo.br.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: saddo.br.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: add a2, a0, a1
; RV64ZBA-NEXT: addw a0, a0, a1
; RV64ZBA-NEXT: beq a0, a2, .LBB52_2
@@ -3184,7 +3118,7 @@ continue:
ret i1 true
}
-define zeroext i1 @ssubo.br.i32(i32 %v1, i32 %v2) {
+define zeroext i1 @ssubo.br.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: ssubo.br.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sgtz a2, a1
@@ -3200,8 +3134,6 @@ define zeroext i1 @ssubo.br.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: ssubo.br.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: sub a2, a0, a1
; RV64-NEXT: subw a0, a0, a1
; RV64-NEXT: beq a0, a2, .LBB56_2
@@ -3227,8 +3159,6 @@ define zeroext i1 @ssubo.br.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: ssubo.br.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: sub a2, a0, a1
; RV64ZBA-NEXT: subw a0, a0, a1
; RV64ZBA-NEXT: beq a0, a2, .LBB56_2
@@ -3322,7 +3252,7 @@ continue:
ret i1 true
}
-define zeroext i1 @usubo.br.i32(i32 %v1, i32 %v2) {
+define zeroext i1 @usubo.br.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: usubo.br.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: sub a1, a0, a1
@@ -3337,7 +3267,6 @@ define zeroext i1 @usubo.br.i32(i32 %v1, i32 %v2) {
; RV64-LABEL: usubo.br.i32:
; RV64: # %bb.0: # %entry
; RV64-NEXT: subw a1, a0, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: bgeu a0, a1, .LBB58_2
; RV64-NEXT: # %bb.1: # %overflow
; RV64-NEXT: li a0, 0
@@ -3360,7 +3289,6 @@ define zeroext i1 @usubo.br.i32(i32 %v1, i32 %v2) {
; RV64ZBA-LABEL: usubo.br.i32:
; RV64ZBA: # %bb.0: # %entry
; RV64ZBA-NEXT: subw a1, a0, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: bgeu a0, a1, .LBB58_2
; RV64ZBA-NEXT: # %bb.1: # %overflow
; RV64ZBA-NEXT: li a0, 0
@@ -3456,7 +3384,7 @@ continue:
ret i1 true
}
-define zeroext i1 @smulo.br.i32(i32 %v1, i32 %v2) {
+define zeroext i1 @smulo.br.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: smulo.br.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulh a2, a0, a1
@@ -3472,8 +3400,6 @@ define zeroext i1 @smulo.br.i32(i32 %v1, i32 %v2) {
;
; RV64-LABEL: smulo.br.i32:
; RV64: # %bb.0: # %entry
-; RV64-NEXT: sext.w a1, a1
-; RV64-NEXT: sext.w a0, a0
; RV64-NEXT: mul a2, a0, a1
; RV64-NEXT: mulw a0, a0, a1
; RV64-NEXT: beq a0, a2, .LBB60_2
@@ -3499,8 +3425,6 @@ define zeroext i1 @smulo.br.i32(i32 %v1, i32 %v2) {
;
; RV64ZBA-LABEL: smulo.br.i32:
; RV64ZBA: # %bb.0: # %entry
-; RV64ZBA-NEXT: sext.w a1, a1
-; RV64ZBA-NEXT: sext.w a0, a0
; RV64ZBA-NEXT: mul a2, a0, a1
; RV64ZBA-NEXT: mulw a0, a0, a1
; RV64ZBA-NEXT: beq a0, a2, .LBB60_2
@@ -3819,7 +3743,7 @@ continue:
ret i1 true
}
-define zeroext i1 @umulo.br.i32(i32 %v1, i32 %v2) {
+define zeroext i1 @umulo.br.i32(i32 signext %v1, i32 signext %v2) {
; RV32-LABEL: umulo.br.i32:
; RV32: # %bb.0: # %entry
; RV32-NEXT: mulhu a0, a0, a1
More information about the llvm-commits
mailing list