1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "\b(sp)\b" --filter "^\s*(ld|st[^r]|swp|cas|bl|add|and|eor|orn|orr|sub|mvn|sxt|cmp|ccmp|csel|dmb)"
2 ; The base test file was generated by ./llvm/test/CodeGen/AArch64/Atomics/generate-tests.py
3 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+v8.1a -O1 | FileCheck %s --check-prefixes=CHECK,-O1
6 define dso_local i8 @load_atomic_i8_aligned_unordered(ptr %ptr) {
7 ; CHECK-LABEL: load_atomic_i8_aligned_unordered:
9 %r = load atomic i8, ptr %ptr unordered, align 1
13 define dso_local i8 @load_atomic_i8_aligned_unordered_const(ptr readonly %ptr) {
14 ; CHECK-LABEL: load_atomic_i8_aligned_unordered_const:
15 ; CHECK: ldrb w0, [x0]
16 %r = load atomic i8, ptr %ptr unordered, align 1
20 define dso_local i8 @load_atomic_i8_aligned_monotonic(ptr %ptr) {
21 ; CHECK-LABEL: load_atomic_i8_aligned_monotonic:
22 ; CHECK: ldrb w0, [x0]
23 %r = load atomic i8, ptr %ptr monotonic, align 1
27 define dso_local i8 @load_atomic_i8_aligned_monotonic_const(ptr readonly %ptr) {
28 ; CHECK-LABEL: load_atomic_i8_aligned_monotonic_const:
29 ; CHECK: ldrb w0, [x0]
30 %r = load atomic i8, ptr %ptr monotonic, align 1
34 define dso_local i8 @load_atomic_i8_aligned_acquire(ptr %ptr) {
35 ; CHECK-LABEL: load_atomic_i8_aligned_acquire:
36 ; CHECK: ldarb w0, [x0]
37 %r = load atomic i8, ptr %ptr acquire, align 1
41 define dso_local i8 @load_atomic_i8_aligned_acquire_const(ptr readonly %ptr) {
42 ; CHECK-LABEL: load_atomic_i8_aligned_acquire_const:
43 ; CHECK: ldarb w0, [x0]
44 %r = load atomic i8, ptr %ptr acquire, align 1
48 define dso_local i8 @load_atomic_i8_aligned_seq_cst(ptr %ptr) {
49 ; CHECK-LABEL: load_atomic_i8_aligned_seq_cst:
50 ; CHECK: ldarb w0, [x0]
51 %r = load atomic i8, ptr %ptr seq_cst, align 1
55 define dso_local i8 @load_atomic_i8_aligned_seq_cst_const(ptr readonly %ptr) {
56 ; CHECK-LABEL: load_atomic_i8_aligned_seq_cst_const:
57 ; CHECK: ldarb w0, [x0]
58 %r = load atomic i8, ptr %ptr seq_cst, align 1
62 define dso_local i16 @load_atomic_i16_aligned_unordered(ptr %ptr) {
63 ; CHECK-LABEL: load_atomic_i16_aligned_unordered:
64 ; CHECK: ldrh w0, [x0]
65 %r = load atomic i16, ptr %ptr unordered, align 2
69 define dso_local i16 @load_atomic_i16_aligned_unordered_const(ptr readonly %ptr) {
70 ; CHECK-LABEL: load_atomic_i16_aligned_unordered_const:
71 ; CHECK: ldrh w0, [x0]
72 %r = load atomic i16, ptr %ptr unordered, align 2
76 define dso_local i16 @load_atomic_i16_aligned_monotonic(ptr %ptr) {
77 ; CHECK-LABEL: load_atomic_i16_aligned_monotonic:
78 ; CHECK: ldrh w0, [x0]
79 %r = load atomic i16, ptr %ptr monotonic, align 2
83 define dso_local i16 @load_atomic_i16_aligned_monotonic_const(ptr readonly %ptr) {
84 ; CHECK-LABEL: load_atomic_i16_aligned_monotonic_const:
85 ; CHECK: ldrh w0, [x0]
86 %r = load atomic i16, ptr %ptr monotonic, align 2
90 define dso_local i16 @load_atomic_i16_aligned_acquire(ptr %ptr) {
91 ; CHECK-LABEL: load_atomic_i16_aligned_acquire:
92 ; CHECK: ldarh w0, [x0]
93 %r = load atomic i16, ptr %ptr acquire, align 2
97 define dso_local i16 @load_atomic_i16_aligned_acquire_const(ptr readonly %ptr) {
98 ; CHECK-LABEL: load_atomic_i16_aligned_acquire_const:
99 ; CHECK: ldarh w0, [x0]
100 %r = load atomic i16, ptr %ptr acquire, align 2
104 define dso_local i16 @load_atomic_i16_aligned_seq_cst(ptr %ptr) {
105 ; CHECK-LABEL: load_atomic_i16_aligned_seq_cst:
106 ; CHECK: ldarh w0, [x0]
107 %r = load atomic i16, ptr %ptr seq_cst, align 2
111 define dso_local i16 @load_atomic_i16_aligned_seq_cst_const(ptr readonly %ptr) {
112 ; CHECK-LABEL: load_atomic_i16_aligned_seq_cst_const:
113 ; CHECK: ldarh w0, [x0]
114 %r = load atomic i16, ptr %ptr seq_cst, align 2
118 define dso_local i32 @load_atomic_i32_aligned_unordered(ptr %ptr) {
119 ; CHECK-LABEL: load_atomic_i32_aligned_unordered:
120 ; CHECK: ldr w0, [x0]
121 %r = load atomic i32, ptr %ptr unordered, align 4
125 define dso_local i32 @load_atomic_i32_aligned_unordered_const(ptr readonly %ptr) {
126 ; CHECK-LABEL: load_atomic_i32_aligned_unordered_const:
127 ; CHECK: ldr w0, [x0]
128 %r = load atomic i32, ptr %ptr unordered, align 4
132 define dso_local i32 @load_atomic_i32_aligned_monotonic(ptr %ptr) {
133 ; CHECK-LABEL: load_atomic_i32_aligned_monotonic:
134 ; CHECK: ldr w0, [x0]
135 %r = load atomic i32, ptr %ptr monotonic, align 4
139 define dso_local i32 @load_atomic_i32_aligned_monotonic_const(ptr readonly %ptr) {
140 ; CHECK-LABEL: load_atomic_i32_aligned_monotonic_const:
141 ; CHECK: ldr w0, [x0]
142 %r = load atomic i32, ptr %ptr monotonic, align 4
146 define dso_local i32 @load_atomic_i32_aligned_acquire(ptr %ptr) {
147 ; CHECK-LABEL: load_atomic_i32_aligned_acquire:
148 ; CHECK: ldar w0, [x0]
149 %r = load atomic i32, ptr %ptr acquire, align 4
153 define dso_local i32 @load_atomic_i32_aligned_acquire_const(ptr readonly %ptr) {
154 ; CHECK-LABEL: load_atomic_i32_aligned_acquire_const:
155 ; CHECK: ldar w0, [x0]
156 %r = load atomic i32, ptr %ptr acquire, align 4
160 define dso_local i32 @load_atomic_i32_aligned_seq_cst(ptr %ptr) {
161 ; CHECK-LABEL: load_atomic_i32_aligned_seq_cst:
162 ; CHECK: ldar w0, [x0]
163 %r = load atomic i32, ptr %ptr seq_cst, align 4
167 define dso_local i32 @load_atomic_i32_aligned_seq_cst_const(ptr readonly %ptr) {
168 ; CHECK-LABEL: load_atomic_i32_aligned_seq_cst_const:
169 ; CHECK: ldar w0, [x0]
170 %r = load atomic i32, ptr %ptr seq_cst, align 4
174 define dso_local i64 @load_atomic_i64_aligned_unordered(ptr %ptr) {
175 ; CHECK-LABEL: load_atomic_i64_aligned_unordered:
176 ; CHECK: ldr x0, [x0]
177 %r = load atomic i64, ptr %ptr unordered, align 8
181 define dso_local i64 @load_atomic_i64_aligned_unordered_const(ptr readonly %ptr) {
182 ; CHECK-LABEL: load_atomic_i64_aligned_unordered_const:
183 ; CHECK: ldr x0, [x0]
184 %r = load atomic i64, ptr %ptr unordered, align 8
188 define dso_local i64 @load_atomic_i64_aligned_monotonic(ptr %ptr) {
189 ; CHECK-LABEL: load_atomic_i64_aligned_monotonic:
190 ; CHECK: ldr x0, [x0]
191 %r = load atomic i64, ptr %ptr monotonic, align 8
195 define dso_local i64 @load_atomic_i64_aligned_monotonic_const(ptr readonly %ptr) {
196 ; CHECK-LABEL: load_atomic_i64_aligned_monotonic_const:
197 ; CHECK: ldr x0, [x0]
198 %r = load atomic i64, ptr %ptr monotonic, align 8
202 define dso_local i64 @load_atomic_i64_aligned_acquire(ptr %ptr) {
203 ; CHECK-LABEL: load_atomic_i64_aligned_acquire:
204 ; CHECK: ldar x0, [x0]
205 %r = load atomic i64, ptr %ptr acquire, align 8
209 define dso_local i64 @load_atomic_i64_aligned_acquire_const(ptr readonly %ptr) {
210 ; CHECK-LABEL: load_atomic_i64_aligned_acquire_const:
211 ; CHECK: ldar x0, [x0]
212 %r = load atomic i64, ptr %ptr acquire, align 8
216 define dso_local i64 @load_atomic_i64_aligned_seq_cst(ptr %ptr) {
217 ; CHECK-LABEL: load_atomic_i64_aligned_seq_cst:
218 ; CHECK: ldar x0, [x0]
219 %r = load atomic i64, ptr %ptr seq_cst, align 8
223 define dso_local i64 @load_atomic_i64_aligned_seq_cst_const(ptr readonly %ptr) {
224 ; CHECK-LABEL: load_atomic_i64_aligned_seq_cst_const:
225 ; CHECK: ldar x0, [x0]
226 %r = load atomic i64, ptr %ptr seq_cst, align 8
230 define dso_local i128 @load_atomic_i128_aligned_unordered(ptr %ptr) {
231 ; CHECK-LABEL: load_atomic_i128_aligned_unordered:
232 ; CHECK: casp x2, x3, x2, x3, [x0]
233 %r = load atomic i128, ptr %ptr unordered, align 16
237 define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
238 ; CHECK-LABEL: load_atomic_i128_aligned_unordered_const:
239 ; CHECK: casp x2, x3, x2, x3, [x0]
240 %r = load atomic i128, ptr %ptr unordered, align 16
244 define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
245 ; CHECK-LABEL: load_atomic_i128_aligned_monotonic:
246 ; CHECK: casp x2, x3, x2, x3, [x0]
247 %r = load atomic i128, ptr %ptr monotonic, align 16
251 define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
252 ; CHECK-LABEL: load_atomic_i128_aligned_monotonic_const:
253 ; CHECK: casp x2, x3, x2, x3, [x0]
254 %r = load atomic i128, ptr %ptr monotonic, align 16
258 define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
259 ; CHECK-LABEL: load_atomic_i128_aligned_acquire:
260 ; CHECK: caspa x2, x3, x2, x3, [x0]
261 %r = load atomic i128, ptr %ptr acquire, align 16
265 define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
266 ; CHECK-LABEL: load_atomic_i128_aligned_acquire_const:
267 ; CHECK: caspa x2, x3, x2, x3, [x0]
268 %r = load atomic i128, ptr %ptr acquire, align 16
272 define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
273 ; CHECK-LABEL: load_atomic_i128_aligned_seq_cst:
274 ; CHECK: caspal x2, x3, x2, x3, [x0]
275 %r = load atomic i128, ptr %ptr seq_cst, align 16
279 define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
280 ; CHECK-LABEL: load_atomic_i128_aligned_seq_cst_const:
281 ; CHECK: caspal x2, x3, x2, x3, [x0]
282 %r = load atomic i128, ptr %ptr seq_cst, align 16
286 define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
287 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
288 ; CHECK: ldrb w0, [x0]
289 %r = load atomic i8, ptr %ptr unordered, align 1
293 define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
294 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
295 ; CHECK: ldrb w0, [x0]
296 %r = load atomic i8, ptr %ptr unordered, align 1
300 define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
301 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
302 ; CHECK: ldrb w0, [x0]
303 %r = load atomic i8, ptr %ptr monotonic, align 1
307 define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
308 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
309 ; CHECK: ldrb w0, [x0]
310 %r = load atomic i8, ptr %ptr monotonic, align 1
314 define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
315 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
316 ; CHECK: ldarb w0, [x0]
317 %r = load atomic i8, ptr %ptr acquire, align 1
321 define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
322 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
323 ; CHECK: ldarb w0, [x0]
324 %r = load atomic i8, ptr %ptr acquire, align 1
328 define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
329 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
330 ; CHECK: ldarb w0, [x0]
331 %r = load atomic i8, ptr %ptr seq_cst, align 1
335 define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
336 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
337 ; CHECK: ldarb w0, [x0]
338 %r = load atomic i8, ptr %ptr seq_cst, align 1
342 define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
343 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
344 ; CHECK: bl __atomic_load
345 %r = load atomic i16, ptr %ptr unordered, align 1
349 define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
350 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
351 ; CHECK: bl __atomic_load
352 %r = load atomic i16, ptr %ptr unordered, align 1
356 define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
357 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
358 ; CHECK: bl __atomic_load
359 %r = load atomic i16, ptr %ptr monotonic, align 1
363 define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
364 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
365 ; CHECK: bl __atomic_load
366 %r = load atomic i16, ptr %ptr monotonic, align 1
370 define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
371 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
372 ; CHECK: bl __atomic_load
373 %r = load atomic i16, ptr %ptr acquire, align 1
377 define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
378 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
379 ; CHECK: bl __atomic_load
380 %r = load atomic i16, ptr %ptr acquire, align 1
384 define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
385 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
386 ; CHECK: bl __atomic_load
387 %r = load atomic i16, ptr %ptr seq_cst, align 1
391 define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
392 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
393 ; CHECK: bl __atomic_load
394 %r = load atomic i16, ptr %ptr seq_cst, align 1
398 define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
399 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
400 ; CHECK: bl __atomic_load
401 %r = load atomic i32, ptr %ptr unordered, align 1
405 define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
406 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
407 ; CHECK: bl __atomic_load
408 %r = load atomic i32, ptr %ptr unordered, align 1
412 define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
413 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
414 ; CHECK: bl __atomic_load
415 %r = load atomic i32, ptr %ptr monotonic, align 1
419 define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
420 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
421 ; CHECK: bl __atomic_load
422 %r = load atomic i32, ptr %ptr monotonic, align 1
426 define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
427 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
428 ; CHECK: bl __atomic_load
429 %r = load atomic i32, ptr %ptr acquire, align 1
433 define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
434 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
435 ; CHECK: bl __atomic_load
436 %r = load atomic i32, ptr %ptr acquire, align 1
440 define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
441 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
442 ; CHECK: bl __atomic_load
443 %r = load atomic i32, ptr %ptr seq_cst, align 1
447 define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
448 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
449 ; CHECK: bl __atomic_load
450 %r = load atomic i32, ptr %ptr seq_cst, align 1
454 define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
455 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
456 ; CHECK: bl __atomic_load
457 %r = load atomic i64, ptr %ptr unordered, align 1
461 define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
462 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
463 ; CHECK: bl __atomic_load
464 %r = load atomic i64, ptr %ptr unordered, align 1
468 define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
469 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
470 ; CHECK: bl __atomic_load
471 %r = load atomic i64, ptr %ptr monotonic, align 1
475 define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
476 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
477 ; CHECK: bl __atomic_load
478 %r = load atomic i64, ptr %ptr monotonic, align 1
482 define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
483 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
484 ; CHECK: bl __atomic_load
485 %r = load atomic i64, ptr %ptr acquire, align 1
489 define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
490 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
491 ; CHECK: bl __atomic_load
492 %r = load atomic i64, ptr %ptr acquire, align 1
496 define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
497 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
498 ; CHECK: bl __atomic_load
499 %r = load atomic i64, ptr %ptr seq_cst, align 1
503 define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
504 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
505 ; CHECK: bl __atomic_load
506 %r = load atomic i64, ptr %ptr seq_cst, align 1
510 define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
511 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
512 ; CHECK: bl __atomic_load
513 %r = load atomic i128, ptr %ptr unordered, align 1
517 define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
518 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
519 ; CHECK: bl __atomic_load
520 %r = load atomic i128, ptr %ptr unordered, align 1
524 define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
525 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
526 ; CHECK: bl __atomic_load
527 %r = load atomic i128, ptr %ptr monotonic, align 1
531 define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
532 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
533 ; CHECK: bl __atomic_load
534 %r = load atomic i128, ptr %ptr monotonic, align 1
538 define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
539 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
540 ; CHECK: bl __atomic_load
541 %r = load atomic i128, ptr %ptr acquire, align 1
545 define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
546 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
547 ; CHECK: bl __atomic_load
548 %r = load atomic i128, ptr %ptr acquire, align 1
552 define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
553 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
554 ; CHECK: bl __atomic_load
555 %r = load atomic i128, ptr %ptr seq_cst, align 1
559 define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
560 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
561 ; CHECK: bl __atomic_load
562 %r = load atomic i128, ptr %ptr seq_cst, align 1
565 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: