[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / builtin_sjlj_landingpad.ll
blob7de0dfd68d61795a01b96b02b192541c4b7256bd
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=ve -exception-model=sjlj < %s | FileCheck %s
3 ; RUN: llc -mtriple=ve -exception-model=sjlj -relocation-model=pic < %s | \
4 ; RUN:     FileCheck --check-prefix=PIC %s
6 @SomeGlobal = external dso_local global i8
8 define dso_local i32 @foo(i32 %arg) local_unnamed_addr personality ptr @__gxx_personality_sj0 {
9 ; CHECK-LABEL: foo:
10 ; CHECK:       # %bb.0: # %entry
11 ; CHECK-NEXT:    st %s9, (, %s11)
12 ; CHECK-NEXT:    st %s10, 8(, %s11)
13 ; CHECK-NEXT:    or %s9, 0, %s11
14 ; CHECK-NEXT:    lea %s11, -352(, %s11)
15 ; CHECK-NEXT:    brge.l %s11, %s8, .LBB0_8
16 ; CHECK-NEXT:  # %bb.7: # %entry
17 ; CHECK-NEXT:    ld %s61, 24(, %s14)
18 ; CHECK-NEXT:    or %s62, 0, %s0
19 ; CHECK-NEXT:    lea %s63, 315
20 ; CHECK-NEXT:    shm.l %s63, (%s61)
21 ; CHECK-NEXT:    shm.l %s8, 8(%s61)
22 ; CHECK-NEXT:    shm.l %s11, 16(%s61)
23 ; CHECK-NEXT:    monc
24 ; CHECK-NEXT:    or %s0, 0, %s62
25 ; CHECK-NEXT:  .LBB0_8: # %entry
26 ; CHECK-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill
27 ; CHECK-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill
28 ; CHECK-NEXT:    st %s20, 64(, %s9) # 8-byte Folded Spill
29 ; CHECK-NEXT:    st %s21, 72(, %s9) # 8-byte Folded Spill
30 ; CHECK-NEXT:    st %s22, 80(, %s9) # 8-byte Folded Spill
31 ; CHECK-NEXT:    st %s23, 88(, %s9) # 8-byte Folded Spill
32 ; CHECK-NEXT:    st %s24, 96(, %s9) # 8-byte Folded Spill
33 ; CHECK-NEXT:    st %s25, 104(, %s9) # 8-byte Folded Spill
34 ; CHECK-NEXT:    st %s26, 112(, %s9) # 8-byte Folded Spill
35 ; CHECK-NEXT:    st %s27, 120(, %s9) # 8-byte Folded Spill
36 ; CHECK-NEXT:    st %s28, 128(, %s9) # 8-byte Folded Spill
37 ; CHECK-NEXT:    st %s29, 136(, %s9) # 8-byte Folded Spill
38 ; CHECK-NEXT:    st %s30, 144(, %s9) # 8-byte Folded Spill
39 ; CHECK-NEXT:    st %s31, 152(, %s9) # 8-byte Folded Spill
40 ; CHECK-NEXT:    st %s32, 160(, %s9) # 8-byte Folded Spill
41 ; CHECK-NEXT:    st %s33, 168(, %s9) # 8-byte Folded Spill
42 ; CHECK-NEXT:    lea %s0, __gxx_personality_sj0@lo
43 ; CHECK-NEXT:    and %s0, %s0, (32)0
44 ; CHECK-NEXT:    lea.sl %s0, __gxx_personality_sj0@hi(, %s0)
45 ; CHECK-NEXT:    st %s0, -56(, %s9)
46 ; CHECK-NEXT:    lea %s0, GCC_except_table0@lo
47 ; CHECK-NEXT:    and %s0, %s0, (32)0
48 ; CHECK-NEXT:    lea.sl %s0, GCC_except_table0@hi(, %s0)
49 ; CHECK-NEXT:    st %s0, -48(, %s9)
50 ; CHECK-NEXT:    st %s9, -40(, %s9)
51 ; CHECK-NEXT:    st %s11, -24(, %s9)
52 ; CHECK-NEXT:    lea %s0, .LBB0_3@lo
53 ; CHECK-NEXT:    and %s0, %s0, (32)0
54 ; CHECK-NEXT:    lea.sl %s0, .LBB0_3@hi(, %s0)
55 ; CHECK-NEXT:    st %s0, -32(, %s9)
56 ; CHECK-NEXT:    or %s0, 1, (0)1
57 ; CHECK-NEXT:    st %s0, -96(, %s9)
58 ; CHECK-NEXT:    lea %s0, _Unwind_SjLj_Register@lo
59 ; CHECK-NEXT:    and %s0, %s0, (32)0
60 ; CHECK-NEXT:    lea.sl %s12, _Unwind_SjLj_Register@hi(, %s0)
61 ; CHECK-NEXT:    lea %s0, -104(, %s9)
62 ; CHECK-NEXT:    bsic %s10, (, %s12)
63 ; CHECK-NEXT:  .Ltmp0:
64 ; CHECK-NEXT:    lea %s0, errorbar@lo
65 ; CHECK-NEXT:    and %s0, %s0, (32)0
66 ; CHECK-NEXT:    lea.sl %s12, errorbar@hi(, %s0)
67 ; CHECK-NEXT:    bsic %s10, (, %s12)
68 ; CHECK-NEXT:  .Ltmp1:
69 ; CHECK-NEXT:  # %bb.1: # %exit
70 ; CHECK-NEXT:    lea %s0, _Unwind_SjLj_Unregister@lo
71 ; CHECK-NEXT:    and %s0, %s0, (32)0
72 ; CHECK-NEXT:    lea.sl %s12, _Unwind_SjLj_Unregister@hi(, %s0)
73 ; CHECK-NEXT:    lea %s0, -104(, %s9)
74 ; CHECK-NEXT:    bsic %s10, (, %s12)
75 ; CHECK-NEXT:    or %s0, 0, (0)1
76 ; CHECK-NEXT:  .LBB0_2: # %exit
77 ; CHECK-NEXT:    ld %s33, 168(, %s9) # 8-byte Folded Reload
78 ; CHECK-NEXT:    ld %s32, 160(, %s9) # 8-byte Folded Reload
79 ; CHECK-NEXT:    ld %s31, 152(, %s9) # 8-byte Folded Reload
80 ; CHECK-NEXT:    ld %s30, 144(, %s9) # 8-byte Folded Reload
81 ; CHECK-NEXT:    ld %s29, 136(, %s9) # 8-byte Folded Reload
82 ; CHECK-NEXT:    ld %s28, 128(, %s9) # 8-byte Folded Reload
83 ; CHECK-NEXT:    ld %s27, 120(, %s9) # 8-byte Folded Reload
84 ; CHECK-NEXT:    ld %s26, 112(, %s9) # 8-byte Folded Reload
85 ; CHECK-NEXT:    ld %s25, 104(, %s9) # 8-byte Folded Reload
86 ; CHECK-NEXT:    ld %s24, 96(, %s9) # 8-byte Folded Reload
87 ; CHECK-NEXT:    ld %s23, 88(, %s9) # 8-byte Folded Reload
88 ; CHECK-NEXT:    ld %s22, 80(, %s9) # 8-byte Folded Reload
89 ; CHECK-NEXT:    ld %s21, 72(, %s9) # 8-byte Folded Reload
90 ; CHECK-NEXT:    ld %s20, 64(, %s9) # 8-byte Folded Reload
91 ; CHECK-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload
92 ; CHECK-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload
93 ; CHECK-NEXT:    or %s11, 0, %s9
94 ; CHECK-NEXT:    ld %s10, 8(, %s11)
95 ; CHECK-NEXT:    ld %s9, (, %s11)
96 ; CHECK-NEXT:    b.l.t (, %s10)
97 ; CHECK-NEXT:  .LBB0_3:
98 ; CHECK-NEXT:    ldl.zx %s0, -96(, %s9)
99 ; CHECK-NEXT:    brgt.l 1, %s0, .LBB0_4
100 ; CHECK-NEXT:  # %bb.5:
101 ; CHECK-NEXT:    lea %s0, abort@lo
102 ; CHECK-NEXT:    and %s0, %s0, (32)0
103 ; CHECK-NEXT:    lea.sl %s0, abort@hi(, %s0)
104 ; CHECK-NEXT:    bsic %s10, (, %s0)
105 ; CHECK-NEXT:  .LBB0_4:
106 ; CHECK-NEXT:    lea %s1, .LJTI0_0@lo
107 ; CHECK-NEXT:    and %s1, %s1, (32)0
108 ; CHECK-NEXT:    lea.sl %s1, .LJTI0_0@hi(, %s1)
109 ; CHECK-NEXT:    sll %s0, %s0, 3
110 ; CHECK-NEXT:    ld %s0, (%s0, %s1)
111 ; CHECK-NEXT:    b.l.t (, %s0)
112 ; CHECK-NEXT:  .LBB0_6: # %handle
113 ; CHECK-NEXT:  .Ltmp2:
114 ; CHECK-NEXT:    ld %s0, -88(, %s9)
115 ; CHECK-NEXT:    ld %s0, -80(, %s9)
116 ; CHECK-NEXT:    lea %s0, _Unwind_SjLj_Unregister@lo
117 ; CHECK-NEXT:    and %s0, %s0, (32)0
118 ; CHECK-NEXT:    lea.sl %s12, _Unwind_SjLj_Unregister@hi(, %s0)
119 ; CHECK-NEXT:    lea %s0, -104(, %s9)
120 ; CHECK-NEXT:    bsic %s10, (, %s12)
121 ; CHECK-NEXT:    or %s0, 1, (0)1
122 ; CHECK-NEXT:    br.l.t .LBB0_2
124 ; PIC-LABEL: foo:
125 ; PIC:       # %bb.0: # %entry
126 ; PIC-NEXT:    st %s9, (, %s11)
127 ; PIC-NEXT:    st %s10, 8(, %s11)
128 ; PIC-NEXT:    st %s15, 24(, %s11)
129 ; PIC-NEXT:    st %s16, 32(, %s11)
130 ; PIC-NEXT:    or %s9, 0, %s11
131 ; PIC-NEXT:    lea %s11, -352(, %s11)
132 ; PIC-NEXT:    brge.l %s11, %s8, .LBB0_8
133 ; PIC-NEXT:  # %bb.7: # %entry
134 ; PIC-NEXT:    ld %s61, 24(, %s14)
135 ; PIC-NEXT:    or %s62, 0, %s0
136 ; PIC-NEXT:    lea %s63, 315
137 ; PIC-NEXT:    shm.l %s63, (%s61)
138 ; PIC-NEXT:    shm.l %s8, 8(%s61)
139 ; PIC-NEXT:    shm.l %s11, 16(%s61)
140 ; PIC-NEXT:    monc
141 ; PIC-NEXT:    or %s0, 0, %s62
142 ; PIC-NEXT:  .LBB0_8: # %entry
143 ; PIC-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill
144 ; PIC-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill
145 ; PIC-NEXT:    st %s20, 64(, %s9) # 8-byte Folded Spill
146 ; PIC-NEXT:    st %s21, 72(, %s9) # 8-byte Folded Spill
147 ; PIC-NEXT:    st %s22, 80(, %s9) # 8-byte Folded Spill
148 ; PIC-NEXT:    st %s23, 88(, %s9) # 8-byte Folded Spill
149 ; PIC-NEXT:    st %s24, 96(, %s9) # 8-byte Folded Spill
150 ; PIC-NEXT:    st %s25, 104(, %s9) # 8-byte Folded Spill
151 ; PIC-NEXT:    st %s26, 112(, %s9) # 8-byte Folded Spill
152 ; PIC-NEXT:    st %s27, 120(, %s9) # 8-byte Folded Spill
153 ; PIC-NEXT:    st %s28, 128(, %s9) # 8-byte Folded Spill
154 ; PIC-NEXT:    st %s29, 136(, %s9) # 8-byte Folded Spill
155 ; PIC-NEXT:    st %s30, 144(, %s9) # 8-byte Folded Spill
156 ; PIC-NEXT:    st %s31, 152(, %s9) # 8-byte Folded Spill
157 ; PIC-NEXT:    st %s32, 160(, %s9) # 8-byte Folded Spill
158 ; PIC-NEXT:    st %s33, 168(, %s9) # 8-byte Folded Spill
159 ; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)
160 ; PIC-NEXT:    and %s15, %s15, (32)0
161 ; PIC-NEXT:    sic %s16
162 ; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)
163 ; PIC-NEXT:    lea %s0, __gxx_personality_sj0@got_lo
164 ; PIC-NEXT:    and %s0, %s0, (32)0
165 ; PIC-NEXT:    lea.sl %s0, __gxx_personality_sj0@got_hi(, %s0)
166 ; PIC-NEXT:    ld %s0, (%s0, %s15)
167 ; PIC-NEXT:    st %s0, -56(, %s9)
168 ; PIC-NEXT:    lea %s0, GCC_except_table0@gotoff_lo
169 ; PIC-NEXT:    and %s0, %s0, (32)0
170 ; PIC-NEXT:    lea.sl %s0, GCC_except_table0@gotoff_hi(%s0, %s15)
171 ; PIC-NEXT:    st %s0, -48(, %s9)
172 ; PIC-NEXT:    st %s9, -40(, %s9)
173 ; PIC-NEXT:    st %s11, -24(, %s9)
174 ; PIC-NEXT:    lea %s0, .LBB0_3@gotoff_lo
175 ; PIC-NEXT:    and %s0, %s0, (32)0
176 ; PIC-NEXT:    lea.sl %s0, .LBB0_3@gotoff_hi(%s0, %s15)
177 ; PIC-NEXT:    st %s0, -32(, %s9)
178 ; PIC-NEXT:    or %s0, 1, (0)1
179 ; PIC-NEXT:    st %s0, -96(, %s9)
180 ; PIC-NEXT:    lea %s12, _Unwind_SjLj_Register@plt_lo(-24)
181 ; PIC-NEXT:    and %s12, %s12, (32)0
182 ; PIC-NEXT:    sic %s16
183 ; PIC-NEXT:    lea.sl %s12, _Unwind_SjLj_Register@plt_hi(%s16, %s12)
184 ; PIC-NEXT:    lea %s0, -104(, %s9)
185 ; PIC-NEXT:    bsic %s10, (, %s12)
186 ; PIC-NEXT:  .Ltmp0:
187 ; PIC-NEXT:    lea %s12, errorbar@plt_lo(-24)
188 ; PIC-NEXT:    and %s12, %s12, (32)0
189 ; PIC-NEXT:    sic %s16
190 ; PIC-NEXT:    lea.sl %s12, errorbar@plt_hi(%s16, %s12)
191 ; PIC-NEXT:    bsic %s10, (, %s12)
192 ; PIC-NEXT:  .Ltmp1:
193 ; PIC-NEXT:  # %bb.1: # %exit
194 ; PIC-NEXT:    lea %s12, _Unwind_SjLj_Unregister@plt_lo(-24)
195 ; PIC-NEXT:    and %s12, %s12, (32)0
196 ; PIC-NEXT:    sic %s16
197 ; PIC-NEXT:    lea.sl %s12, _Unwind_SjLj_Unregister@plt_hi(%s16, %s12)
198 ; PIC-NEXT:    lea %s0, -104(, %s9)
199 ; PIC-NEXT:    bsic %s10, (, %s12)
200 ; PIC-NEXT:    or %s0, 0, (0)1
201 ; PIC-NEXT:  .LBB0_2: # %exit
202 ; PIC-NEXT:    ld %s33, 168(, %s9) # 8-byte Folded Reload
203 ; PIC-NEXT:    ld %s32, 160(, %s9) # 8-byte Folded Reload
204 ; PIC-NEXT:    ld %s31, 152(, %s9) # 8-byte Folded Reload
205 ; PIC-NEXT:    ld %s30, 144(, %s9) # 8-byte Folded Reload
206 ; PIC-NEXT:    ld %s29, 136(, %s9) # 8-byte Folded Reload
207 ; PIC-NEXT:    ld %s28, 128(, %s9) # 8-byte Folded Reload
208 ; PIC-NEXT:    ld %s27, 120(, %s9) # 8-byte Folded Reload
209 ; PIC-NEXT:    ld %s26, 112(, %s9) # 8-byte Folded Reload
210 ; PIC-NEXT:    ld %s25, 104(, %s9) # 8-byte Folded Reload
211 ; PIC-NEXT:    ld %s24, 96(, %s9) # 8-byte Folded Reload
212 ; PIC-NEXT:    ld %s23, 88(, %s9) # 8-byte Folded Reload
213 ; PIC-NEXT:    ld %s22, 80(, %s9) # 8-byte Folded Reload
214 ; PIC-NEXT:    ld %s21, 72(, %s9) # 8-byte Folded Reload
215 ; PIC-NEXT:    ld %s20, 64(, %s9) # 8-byte Folded Reload
216 ; PIC-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload
217 ; PIC-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload
218 ; PIC-NEXT:    or %s11, 0, %s9
219 ; PIC-NEXT:    ld %s16, 32(, %s11)
220 ; PIC-NEXT:    ld %s15, 24(, %s11)
221 ; PIC-NEXT:    ld %s10, 8(, %s11)
222 ; PIC-NEXT:    ld %s9, (, %s11)
223 ; PIC-NEXT:    b.l.t (, %s10)
224 ; PIC-NEXT:  .LBB0_3:
225 ; PIC-NEXT:    ldl.zx %s0, -96(, %s9)
226 ; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)
227 ; PIC-NEXT:    and %s15, %s15, (32)0
228 ; PIC-NEXT:    sic %s16
229 ; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)
230 ; PIC-NEXT:    brgt.l 1, %s0, .LBB0_4
231 ; PIC-NEXT:  # %bb.5:
232 ; PIC-NEXT:    lea %s0, abort@plt_lo(-24)
233 ; PIC-NEXT:    and %s0, %s0, (32)0
234 ; PIC-NEXT:    sic %s16
235 ; PIC-NEXT:    lea.sl %s0, abort@plt_hi(%s16, %s0)
236 ; PIC-NEXT:    bsic %s10, (, %s0)
237 ; PIC-NEXT:  .LBB0_4:
238 ; PIC-NEXT:    lea %s1, .LJTI0_0@gotoff_lo
239 ; PIC-NEXT:    and %s1, %s1, (32)0
240 ; PIC-NEXT:    lea.sl %s1, .LJTI0_0@gotoff_hi(%s1, %s15)
241 ; PIC-NEXT:    sll %s0, %s0, 2
242 ; PIC-NEXT:    ldl.zx %s0, (%s0, %s1)
243 ; PIC-NEXT:    lea %s1, foo@gotoff_lo
244 ; PIC-NEXT:    and %s1, %s1, (32)0
245 ; PIC-NEXT:    lea.sl %s1, foo@gotoff_hi(%s1, %s15)
246 ; PIC-NEXT:    adds.l %s0, %s0, %s1
247 ; PIC-NEXT:    b.l.t (, %s0)
248 ; PIC-NEXT:  .LBB0_6: # %handle
249 ; PIC-NEXT:  .Ltmp2:
250 ; PIC-NEXT:    ld %s0, -88(, %s9)
251 ; PIC-NEXT:    ld %s0, -80(, %s9)
252 ; PIC-NEXT:    lea %s12, _Unwind_SjLj_Unregister@plt_lo(-24)
253 ; PIC-NEXT:    and %s12, %s12, (32)0
254 ; PIC-NEXT:    sic %s16
255 ; PIC-NEXT:    lea.sl %s12, _Unwind_SjLj_Unregister@plt_hi(%s16, %s12)
256 ; PIC-NEXT:    lea %s0, -104(, %s9)
257 ; PIC-NEXT:    bsic %s10, (, %s12)
258 ; PIC-NEXT:    or %s0, 1, (0)1
259 ; PIC-NEXT:    br.l.t .LBB0_2
260 entry:
261   invoke void @errorbar() to label %exit unwind label %handle
263 handle:
264   %error = landingpad { ptr, i32 } catch ptr @SomeGlobal
265   ret i32 1
267 exit:
268   ret i32 0
271 declare dso_local void @errorbar() local_unnamed_addr
273 declare dso_local i32 @__gxx_personality_sj0(...)