[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