Skip to content

Commit b393fc6

Browse files
committed
[PowerPC][NFC] Add more check directives in only cxx_fast_tlscc lit test.
Use utils/update_llc_test_checks.py to add full CHECK directives to the test for cxx_fast_tls calling convention. The calling convention is arguably dead on PowerPC since dropping Darwin subtarget support in the PowerPC backend. This test change helps show the atrocious code generation for this lit test which was hidden by having few CHECK directives.
1 parent a2b6ece commit b393fc6

File tree

1 file changed

+78
-8
lines changed

1 file changed

+78
-8
lines changed

llvm/test/CodeGen/PowerPC/cxx_tlscc64.ll

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -relocation-model=static -verify-machineinstrs < %s --enable-shrink-wrap=false -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s
23
%struct.S = type { i8 }
34

@@ -10,33 +11,102 @@ declare void @_ZN1SC1Ev(%struct.S*)
1011
declare void @_ZN1SD1Ev(%struct.S*)
1112
declare i32 @_tlv_atexit(void (i8*)*, i8*, i8*)
1213

13-
; CHECK-LABEL: _ZTW2sg
1414
define cxx_fast_tlscc nonnull %struct.S* @_ZTW2sg() nounwind {
15+
; CHECK-LABEL: _ZTW2sg:
16+
; CHECK: # %bb.0:
17+
; CHECK-NEXT: mflr 0
18+
; CHECK-NEXT: std 0, 16(1)
19+
; CHECK-NEXT: stdu 1, -48(1)
20+
; CHECK-NEXT: addis 3, 13, __tls_guard@tprel@ha
21+
; CHECK-NEXT: lbz 4, __tls_guard@tprel@l(3)
22+
; CHECK-NEXT: andi. 4, 4, 1
23+
; CHECK-NEXT: bc 12, 1, .LBB0_2
24+
; CHECK-NEXT: # %bb.1: # %init.i
25+
; CHECK-NEXT: li 4, 1
26+
; CHECK-NEXT: std 31, 40(1) # 8-byte Folded Spill
27+
; CHECK-NEXT: mr 31, 14
28+
; CHECK-NEXT: mr 14, 15
29+
; CHECK-NEXT: mr 15, 16
30+
; CHECK-NEXT: mr 16, 17
31+
; CHECK-NEXT: stb 4, __tls_guard@tprel@l(3)
32+
; CHECK-NEXT: addis 3, 13, sg@tprel@ha
33+
; CHECK-NEXT: mr 17, 18
34+
; CHECK-NEXT: mr 18, 19
35+
; CHECK-NEXT: mr 19, 20
36+
; CHECK-NEXT: mr 20, 21
37+
; CHECK-NEXT: mr 21, 22
38+
; CHECK-NEXT: mr 22, 23
39+
; CHECK-NEXT: mr 23, 24
40+
; CHECK-NEXT: mr 24, 25
41+
; CHECK-NEXT: mr 25, 26
42+
; CHECK-NEXT: mr 26, 27
43+
; CHECK-NEXT: mr 27, 28
44+
; CHECK-NEXT: mr 28, 29
45+
; CHECK-NEXT: mr 29, 30
46+
; CHECK-NEXT: addi 30, 3, sg@tprel@l
47+
; CHECK-NEXT: mr 3, 30
48+
; CHECK-NEXT: bl _ZN1SC1Ev
49+
; CHECK-NEXT: nop
50+
; CHECK-NEXT: addis 3, 2, .LC0@toc@ha
51+
; CHECK-NEXT: addis 4, 2, .LC1@toc@ha
52+
; CHECK-NEXT: ld 3, .LC0@toc@l(3)
53+
; CHECK-NEXT: ld 5, .LC1@toc@l(4)
54+
; CHECK-NEXT: mr 4, 30
55+
; CHECK-NEXT: mr 30, 29
56+
; CHECK-NEXT: mr 29, 28
57+
; CHECK-NEXT: mr 28, 27
58+
; CHECK-NEXT: mr 27, 26
59+
; CHECK-NEXT: mr 26, 25
60+
; CHECK-NEXT: mr 25, 24
61+
; CHECK-NEXT: mr 24, 23
62+
; CHECK-NEXT: mr 23, 22
63+
; CHECK-NEXT: mr 22, 21
64+
; CHECK-NEXT: mr 21, 20
65+
; CHECK-NEXT: mr 20, 19
66+
; CHECK-NEXT: mr 19, 18
67+
; CHECK-NEXT: mr 18, 17
68+
; CHECK-NEXT: mr 17, 16
69+
; CHECK-NEXT: mr 16, 15
70+
; CHECK-NEXT: mr 15, 14
71+
; CHECK-NEXT: mr 14, 31
72+
; CHECK-NEXT: ld 31, 40(1) # 8-byte Folded Reload
73+
; CHECK-NEXT: bl _tlv_atexit
74+
; CHECK-NEXT: nop
75+
; CHECK-NEXT: .LBB0_2: # %__tls_init.exit
76+
; CHECK-NEXT: addis 3, 13, sg@tprel@ha
77+
; CHECK-NEXT: addi 3, 3, sg@tprel@l
78+
; CHECK-NEXT: addi 1, 1, 48
79+
; CHECK-NEXT: ld 0, 16(1)
80+
; CHECK-NEXT: mtlr 0
81+
; CHECK-NEXT: blr
1582
%.b.i = load i1, i1* @__tls_guard, align 1
16-
; CHECK: bc 12, 1, [[BB_end:.?LBB0_[0-9]+]]
1783
br i1 %.b.i, label %__tls_init.exit, label %init.i
1884

1985
init.i:
20-
; CHECK: Folded Spill
2186
store i1 true, i1* @__tls_guard, align 1
2287
tail call void @_ZN1SC1Ev(%struct.S* nonnull @sg) #2
23-
; CHECK: bl _ZN1SC1Ev
2488
%1 = tail call i32 @_tlv_atexit(void (i8*)* nonnull bitcast (void (%struct.S*)* @_ZN1SD1Ev to void (i8*)*), i8* nonnull getelementptr inbounds (%struct.S, %struct.S* @sg, i64 0, i32 0), i8* nonnull @__dso_handle) #2
25-
; CHECK: Folded Reload
26-
; CHECK: _tlv_atexit
2789
br label %__tls_init.exit
2890

29-
; CHECK: [[BB_end]]:
3091
__tls_init.exit:
3192
ret %struct.S* @sg
3293
}
3394

34-
; CHECK-LABEL: _ZTW4sum1
3595
define cxx_fast_tlscc nonnull i32* @_ZTW4sum1() nounwind {
96+
; CHECK-LABEL: _ZTW4sum1:
97+
; CHECK: # %bb.0:
98+
; CHECK-NEXT: addis 3, 13, sum1@tprel@ha
99+
; CHECK-NEXT: addi 3, 3, sum1@tprel@l
100+
; CHECK-NEXT: blr
36101
ret i32* @sum1
37102
}
38103

39104
define cxx_fast_tlscc i32* @_ZTW4sum2() #0 {
105+
; CHECK-LABEL: _ZTW4sum2:
106+
; CHECK: # %bb.0:
107+
; CHECK-NEXT: addis 3, 13, sum1@tprel@ha
108+
; CHECK-NEXT: addi 3, 3, sum1@tprel@l
109+
; CHECK-NEXT: blr
40110
ret i32* @sum1
41111
}
42112

0 commit comments

Comments
 (0)