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