diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -3192,7 +3192,8 @@ unsigned PPCTargetLowering::getJumpTableEncoding() const { if (isJumpTableRelative()) return MachineJumpTableInfo::EK_LabelDifference32; - + if (UseAbsoluteJumpTables) + return MachineJumpTableInfo::EK_BlockAddress; return TargetLowering::getJumpTableEncoding(); } diff --git a/llvm/test/CodeGen/PowerPC/absol-jump-table-enabled.ll b/llvm/test/CodeGen/PowerPC/absol-jump-table-enabled.ll --- a/llvm/test/CodeGen/PowerPC/absol-jump-table-enabled.ll +++ b/llvm/test/CodeGen/PowerPC/absol-jump-table-enabled.ll @@ -55,34 +55,34 @@ ; ; CHECK-BE-LABEL: jumpTableTest: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE: rldic r[[REG:[0-9]+]], r[[REG]], 2, 30 -; CHECK-BE: lwax r[[REG]], r[[REG]], r[[REG1:[0-9]+]] +; CHECK-BE: rldic r[[REG:[0-9]+]], r[[REG]], 3, 29 +; CHECK-BE: ldx r[[REG]], r[[REG]], r[[REG1:[0-9]+]] ; CHECK-BE: mtctr r[[REG]] ; CHECK-BE: bctr ; CHECK-BE: blr ; ; CHECK-AIX-LABEL: jumpTableTest: ; CHECK-AIX: # %bb.0: # %entry -; CHECK-AIX: rldic r[[REG:[0-9]+]], r[[REG]], 2, 30 -; CHECK-AIX: lwax r[[REG]], r[[REG]], r[[REG1:[0-9]+]] +; CHECK-AIX: rldic r[[REG:[0-9]+]], r[[REG]], 3, 29 +; CHECK-AIX: ldx r[[REG]], r[[REG]], r[[REG1:[0-9]+]] ; CHECK-AIX: mtctr r[[REG]] ; CHECK-AIX: bctr ; CHECK-AIX: blr ; ; CHECK-A-PIC-LE-LABEL: .LJTI0_0: -; CHECK-A-PIC-LE: .long .LBB0_6-.LJTI0_0 +; CHECK-A-PIC-LE: .quad .LBB0_6 ; ; CHECK-R-PIC-LE-LABEL: .LJTI0_0: ; CHECK-R-PIC-LE: .long .LBB0_6-.LJTI0_0 ; ; CHECK-A-PIC-BE-LABEL: .LJTI0_0: -; CHECK-A-PIC-BE: .long .LBB0_9-.LJTI0_0 +; CHECK-A-PIC-BE: .quad .LBB0_9 ; ; CHECK-R-PIC-BE-LABEL: .LJTI0_0: ; CHECK-R-PIC-BE: .long .LBB0_9-.LJTI0_0 ; ; CHECK-A-PIC-AIX-LABEL: L..JTI0_0: -; CHECK-A-PIC-AIX: .vbyte 4, L..BB0_9-L..JTI0_0 +; CHECK-A-PIC-AIX: .vbyte 8, L..BB0_9 ; ; CHECK-R-PIC-AIX-LABEL: L..JTI0_0: ; CHECK-R-PIC-AIX: .vbyte 4, L..BB0_9-L..JTI0_0 diff --git a/llvm/test/CodeGen/PowerPC/pcrel-jump-table.ll b/llvm/test/CodeGen/PowerPC/pcrel-jump-table.ll --- a/llvm/test/CodeGen/PowerPC/pcrel-jump-table.ll +++ b/llvm/test/CodeGen/PowerPC/pcrel-jump-table.ll @@ -35,13 +35,12 @@ ; CHECK-A-LE-NEXT: bctr ; CHECK-A-BE-LABEL: jumptable: ; CHECK-A-BE: # %bb.1: # %entry -; CHECK-A-BE-NEXT: paddi r5, 0, .LJTI0_0@PCREL, 1 ; CHECK-A-BE-NEXT: rldic r4, r4 -; CHECK-A-BE-NEXT: lwax r4, r4, r5 +; CHECK-A-BE-NEXT: paddi r5, 0, .LJTI0_0@PCREL, 1 +; CHECK-A-BE-NEXT: ldx r4, r4, r5 ; CHECK-A-BE-NEXT: mtctr r4 ; CHECK-A-BE-NEXT: bctr - entry: switch i32 %param, label %sw.default [ i32 1, label %return