
In review of bbde6b, I had originally proposed that we support the legacy text format. As review evolved, it bacame clear this had been a bad idea (too much complexity), but in order to let that patch finally move forward, I approved the change with the variant. This change undoes the variant, and updates all the tests to just use the array form.
67 lines
2.3 KiB
YAML
67 lines
2.3 KiB
YAML
# ADJCALLSTACKDOWN and ADJCALLSTACKUP must be generated around TLS pseudo code as scheduling fence (PR25839).
|
|
# RUN: llc -mtriple=powerpc64le-linux-gnu -run-pass=ppc-tls-dynamic-call -verify-machineinstrs -o - %s | FileCheck %s
|
|
|
|
--- |
|
|
target datalayout = "e-m:e-i64:64-n32:64"
|
|
target triple = "powerpc64le-unknown-linux-gnu"
|
|
|
|
@tls_var = external thread_local local_unnamed_addr global i32
|
|
|
|
define i32 @tls_func() local_unnamed_addr {
|
|
entry:
|
|
%0 = load i32, ptr @tls_var
|
|
ret i32 %0
|
|
}
|
|
|
|
...
|
|
---
|
|
name: tls_func
|
|
alignment: 16
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
registers:
|
|
- { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }
|
|
- { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }
|
|
- { id: 2, class: g8rc, preferred-register: '' }
|
|
liveins:
|
|
- { reg: '$x2' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 0
|
|
offsetAdjustment: 0
|
|
maxAlignment: 0
|
|
adjustsStack: false
|
|
hasCalls: false
|
|
stackProtector: ''
|
|
maxCallFrameSize: 4294967295
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
savePoint: []
|
|
restorePoint: []
|
|
fixedStack:
|
|
stack:
|
|
constants:
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x2
|
|
%0 = ADDIStlsgdHA $x2, @tls_var
|
|
%1 = ADDItlsgdLADDR killed %0, @tls_var, @tls_var, implicit-def dead $x0, implicit-def dead $x3, implicit-def dead $x4, implicit-def dead $x5, implicit-def dead $x6, implicit-def dead $x7, implicit-def dead $x8, implicit-def dead $x9, implicit-def dead $x10, implicit-def dead $x11, implicit-def dead $x12, implicit-def dead $lr8, implicit-def dead $ctr8, implicit-def dead $cr0, implicit-def dead $cr1, implicit-def dead $cr5, implicit-def dead $cr6, implicit-def dead $cr7
|
|
%2 = LWZ8 0, killed %1 :: (dereferenceable load (s32) from @tls_var)
|
|
$x3 = COPY %2
|
|
BLR8 implicit $lr8, implicit $rm, implicit $x3
|
|
; CHECK-LABEL: bb.0.entry
|
|
; CHECK: %[[reg1:[0-9]+]]:g8rc_and_g8rc_nox0 = ADDIStlsgdHA $x2, @tls_var
|
|
; CHECK: ADJCALLSTACKDOWN 0, 0
|
|
; CHECK: $x3 = ADDItlsgdL %[[reg1]], @tls_var
|
|
; CHECK: $x3 = GETtlsADDR $x3, @tls_var
|
|
; CHECK: ADJCALLSTACKUP 0, 0
|
|
; CHECK: BLR8
|
|
...
|