Skip to content

Commit 868efa3

Browse files
committed
fixup! Use G_SEXTLOAD for PIC on RV64.
1 parent 33200b5 commit 868efa3

File tree

3 files changed

+5
-8
lines changed

3 files changed

+5
-8
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -720,9 +720,8 @@ bool RISCVLegalizerInfo::legalizeBRJT(MachineInstr &MI,
720720
// For PIC, the sequence is:
721721
// BRIND(load(Jumptable + index) + RelocBase)
722722
// RelocBase can be JumpTable, GOT or some sort of global base.
723-
auto Load = MIRBuilder.buildLoadInstr(
724-
TargetOpcode::G_LOAD, LLT::scalar(EntrySize * 8), Addr, *MMO);
725-
Load = MIRBuilder.buildSExtOrTrunc(IndexTy, Load);
723+
unsigned LoadOpc = STI.is64Bit() ? TargetOpcode::G_SEXTLOAD : TargetOpcode::G_LOAD;
724+
auto Load = MIRBuilder.buildLoadInstr(LoadOpc, IndexTy, Addr, *MMO);
726725
TargetReg = MIRBuilder.buildPtrAdd(PtrTy, PtrReg, Load).getReg(0);
727726
break;
728727
}

llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-jump-table-brjt-pic-rv32.mir

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ body: |
7373
; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ADD]], [[C9]](s32)
7474
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SHL]](s32)
7575
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)
76-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32)
77-
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[COPY1]](s32)
76+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[LOAD]](s32)
7877
; CHECK-NEXT: G_BRINDIRECT [[PTR_ADD1]](p0)
7978
; CHECK-NEXT: {{ $}}
8079
; CHECK-NEXT: bb.2.bb1:

llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-jump-table-brjt-pic-rv64.mir

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ body: |
6767
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
6868
; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[SUB]], [[C2]](s64)
6969
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SHL]](s64)
70-
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)
71-
; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[LOAD]](s32)
72-
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SEXT]](s64)
70+
; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s64) = G_SEXTLOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)
71+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SEXTLOAD]](s64)
7372
; CHECK-NEXT: G_BRINDIRECT [[PTR_ADD1]](p0)
7473
; CHECK-NEXT: {{ $}}
7574
; CHECK-NEXT: bb.2.bb1:

0 commit comments

Comments
 (0)