[llvm] [PowerPC] Support local-dynamic TLS relocation on AIX (PR #66316)
Felix via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 21 20:18:20 PDT 2023
================
@@ -181,10 +182,12 @@ define void @storesTIUninit(i32 %Val) #0 {
; LARGE32-NEXT: stw 0, 40(1)
; LARGE32-NEXT: mr 6, 3
; LARGE32-NEXT: addis 3, L..C4 at u(2)
-; LARGE32-NEXT: addis 4, L..C5 at u(2)
; LARGE32-NEXT: lwz 3, L..C4 at l(3)
-; LARGE32-NEXT: lwz 4, L..C5 at l(4)
-; LARGE32-NEXT: bla .__tls_get_addr[PR]
+; LARGE32-NEXT: addis 4, L..C5 at u(2)
+; LARGE32-NEXT: lwz 7, L..C5 at l(4)
+; LARGE32-NEXT: bla .__tls_get_mod[PR]
----------------
orcguru wrote:
```
# *** IR Dump After PowerPC TLS Dynamic Call Fixup (ppc-tls-dynamic-call) ***:
# Machine code for function storesTIUninit: IsSSA, TracksLiveness
Function Live Ins: $r3 in %0
bb.0.entry:
liveins: $r3
%0:gprc = COPY $r3
%4:gprc_and_gprc_nor0 = ADDIStocHA $r2, target-flags(ppc-tlsld) &"_$TLSML[TC]"
%5:gprc_and_gprc_nor0 = LWZtocL target-flags(ppc-tlsld) &"_$TLSML[TC]", %4:gprc_and_gprc_nor0
$r3 = COPY %5:gprc_and_gprc_nor0
$r3 = GETtlsMOD32AIX $r3, implicit-def $r0, implicit-def $r4, implicit-def $r5, implicit-def $r11, implicit-def $lr, implicit-def $cr0
%1:gprc_and_gprc_nor0 = ADDIStocHA $r2, target-flags(ppc-tlsld) @TIUninit
%2:gprc = LWZtocL target-flags(ppc-tlsld) @TIUninit, %1:gprc_and_gprc_nor0 :: (load (s32) from got)
ADJCALLSTACKDOWN 0, 0, implicit-def $r1, implicit $r1
$r4 = COPY %2:gprc
$r3 = ADD4 $r3, $r4
ADJCALLSTACKUP 0, 0, implicit-def $r1, implicit $r1
%3:gprc_and_gprc_nor0 = COPY $r3
STW %0:gprc, 0, %3:gprc_and_gprc_nor0 :: (store (s32) into @TIUninit)
BLR implicit $lr, implicit $rm
# End machine code for function storesTIUninit.
```
```
# *** IR Dump After Machine Instruction Scheduler (machine-scheduler) ***:
# Machine code for function storesTIUninit: NoPHIs, TracksLiveness, TiedOpsRewritten
Function Live Ins: $r3 in %0
0B bb.0.entry:
liveins: $r3
16B %0:gprc = COPY $r3
32B %4:gprc_and_gprc_nor0 = ADDIStocHA $r2, target-flags(ppc-tlsld) &"_$TLSML[TC]"
48B %5:gprc_and_gprc_nor0 = LWZtocL target-flags(ppc-tlsld) &"_$TLSML[TC]", %4:gprc_and_gprc_nor0, implicit $r2
56B %1:gprc_and_gprc_nor0 = ADDIStocHA $r2, target-flags(ppc-tlsld) @TIUninit
64B $r3 = COPY %5:gprc_and_gprc_nor0
72B %2:gprc = LWZtocL target-flags(ppc-tlsld) @TIUninit, %1:gprc_and_gprc_nor0, implicit $r2 :: (load (s32) from got)
80B $r3 = GETtlsMOD32AIX $r3, implicit-def dead $r0, implicit-def dead $r4, implicit-def dead $r5, implicit-def dead $r11, implicit-def $lr, implicit-def dead $cr0
128B ADJCALLSTACKDOWN 0, 0, implicit-def $r1, implicit $r1
144B $r4 = COPY %2:gprc
160B $r3 = ADD4 $r3, killed $r4
176B ADJCALLSTACKUP 0, 0, implicit-def $r1, implicit $r1
192B %3:gprc_and_gprc_nor0 = COPY $r3
208B STW %0:gprc, 0, %3:gprc_and_gprc_nor0 :: (store (s32) into @TIUninit)
224B BLR implicit $lr, implicit $rm
# End machine code for function storesTIUninit.
```
https://github.com/llvm/llvm-project/pull/66316
More information about the llvm-commits
mailing list