@@ -1625,18 +1625,18 @@ define i1 @fpclass(float %x) {
16251625; RV32I: # %bb.0:
16261626; RV32I-NEXT: slli a1, a0, 1
16271627; RV32I-NEXT: lui a2, 2048
1628- ; RV32I-NEXT: slti a0, a0, 0
16291628; RV32I-NEXT: lui a3, 522240
16301629; RV32I-NEXT: lui a4, 1046528
1631- ; RV32I-NEXT: srli a1 , a1, 1
1630+ ; RV32I-NEXT: srli a5 , a1, 1
16321631; RV32I-NEXT: addi a2, a2, -1
1633- ; RV32I-NEXT: addi a5, a1, -1
1632+ ; RV32I-NEXT: xor a6, a5, a3
1633+ ; RV32I-NEXT: slt a3, a3, a5
1634+ ; RV32I-NEXT: add a4, a5, a4
1635+ ; RV32I-NEXT: addi a5, a5, -1
16341636; RV32I-NEXT: sltu a2, a5, a2
1635- ; RV32I-NEXT: xor a5, a1, a3
1636- ; RV32I-NEXT: slt a3, a3, a1
1637- ; RV32I-NEXT: add a4, a1, a4
1637+ ; RV32I-NEXT: slti a0, a0, 0
16381638; RV32I-NEXT: seqz a1, a1
1639- ; RV32I-NEXT: seqz a5, a5
1639+ ; RV32I-NEXT: seqz a5, a6
16401640; RV32I-NEXT: srli a4, a4, 24
16411641; RV32I-NEXT: and a2, a2, a0
16421642; RV32I-NEXT: or a1, a1, a5
@@ -1649,29 +1649,29 @@ define i1 @fpclass(float %x) {
16491649;
16501650; RV64I-LABEL: fpclass:
16511651; RV64I: # %bb.0:
1652- ; RV64I-NEXT: sext.w a1, a0
1653- ; RV64I-NEXT: slli a0, a0, 33
1652+ ; RV64I-NEXT: slli a1, a0, 33
16541653; RV64I-NEXT: lui a2, 2048
16551654; RV64I-NEXT: lui a3, 522240
16561655; RV64I-NEXT: lui a4, 1046528
1657- ; RV64I-NEXT: srli a0, a0 , 33
1656+ ; RV64I-NEXT: srli a5, a1 , 33
16581657; RV64I-NEXT: addi a2, a2, -1
1659- ; RV64I-NEXT: slti a1, a1, 0
1660- ; RV64I-NEXT: addi a5, a0, -1
1658+ ; RV64I-NEXT: xor a6, a5, a3
1659+ ; RV64I-NEXT: slt a3, a3, a5
1660+ ; RV64I-NEXT: add a4, a5, a4
1661+ ; RV64I-NEXT: addi a5, a5, -1
16611662; RV64I-NEXT: sltu a2, a5, a2
1662- ; RV64I-NEXT: xor a5, a0, a3
1663- ; RV64I-NEXT: slt a3, a3, a0
1664- ; RV64I-NEXT: add a4, a0, a4
1665- ; RV64I-NEXT: seqz a0, a0
1666- ; RV64I-NEXT: seqz a5, a5
1663+ ; RV64I-NEXT: sext.w a0, a0
1664+ ; RV64I-NEXT: slti a0, a0, 0
1665+ ; RV64I-NEXT: seqz a1, a1
1666+ ; RV64I-NEXT: seqz a5, a6
16671667; RV64I-NEXT: srliw a4, a4, 24
1668- ; RV64I-NEXT: and a2, a2, a1
1669- ; RV64I-NEXT: or a0, a0 , a5
1668+ ; RV64I-NEXT: and a2, a2, a0
1669+ ; RV64I-NEXT: or a1, a1 , a5
16701670; RV64I-NEXT: sltiu a4, a4, 127
1671- ; RV64I-NEXT: or a0, a0 , a2
1672- ; RV64I-NEXT: or a0, a0 , a3
1673- ; RV64I-NEXT: and a1 , a4, a1
1674- ; RV64I-NEXT: or a0, a0, a1
1671+ ; RV64I-NEXT: or a1, a1 , a2
1672+ ; RV64I-NEXT: or a1, a1 , a3
1673+ ; RV64I-NEXT: and a0 , a4, a0
1674+ ; RV64I-NEXT: or a0, a1, a0
16751675; RV64I-NEXT: ret
16761676 %cmp = call i1 @llvm.is.fpclass.f32 (float %x , i32 639 )
16771677 ret i1 %cmp
0 commit comments