Skip to content

Commit 694719a

Browse files
authored
[RISCV][GISel] Add G_ZEXT to RISCVInstructionSelector::selectZExtBits. (#115391)
1 parent ae509a0 commit 694719a

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ RISCVInstructionSelector::selectZExtBits(MachineOperand &Root,
288288
return {{[=](MachineInstrBuilder &MIB) { MIB.addReg(RegX); }}};
289289
}
290290

291+
if (mi_match(RootReg, *MRI, m_GZExt(m_Reg(RegX))) &&
292+
MRI->getType(RegX).getScalarSizeInBits() == Bits)
293+
return {{[=](MachineInstrBuilder &MIB) { MIB.addReg(RegX); }}};
294+
291295
unsigned Size = MRI->getType(RootReg).getScalarSizeInBits();
292296
if (KB->maskedValueIsZero(RootReg, APInt::getBitsSetFrom(Size, Bits)))
293297
return {{[=](MachineInstrBuilder &MIB) { MIB.add(Root); }}};

llvm/test/CodeGen/RISCV/GlobalISel/double-convert.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,7 @@ define signext i32 @fcvt_d_wu_demanded_bits(i32 signext %0, ptr %1) nounwind {
300300
; RV64IFD-LABEL: fcvt_d_wu_demanded_bits:
301301
; RV64IFD: # %bb.0:
302302
; RV64IFD-NEXT: addiw a0, a0, 1
303-
; RV64IFD-NEXT: slli a2, a0, 32
304-
; RV64IFD-NEXT: srli a2, a2, 32
305-
; RV64IFD-NEXT: fcvt.d.wu fa5, a2
303+
; RV64IFD-NEXT: fcvt.d.wu fa5, a0
306304
; RV64IFD-NEXT: fsd fa5, 0(a1)
307305
; RV64IFD-NEXT: ret
308306
%3 = add i32 %0, 1

llvm/test/CodeGen/RISCV/GlobalISel/float-convert.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,9 +272,7 @@ define signext i32 @fcvt_s_wu_demanded_bits(i32 signext %0, ptr %1) nounwind {
272272
; RV64IF-LABEL: fcvt_s_wu_demanded_bits:
273273
; RV64IF: # %bb.0:
274274
; RV64IF-NEXT: addiw a0, a0, 1
275-
; RV64IF-NEXT: slli a2, a0, 32
276-
; RV64IF-NEXT: srli a2, a2, 32
277-
; RV64IF-NEXT: fcvt.s.wu fa5, a2
275+
; RV64IF-NEXT: fcvt.s.wu fa5, a0
278276
; RV64IF-NEXT: fsw fa5, 0(a1)
279277
; RV64IF-NEXT: ret
280278
%3 = add i32 %0, 1

0 commit comments

Comments
 (0)