brintos

brintos / llvm-project-archived public Read only

0
0
Text · 99.8 KiB · 86c040c Raw
2408 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "\b(sp)\b" --filter "^\s*(ld[^r]|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.py3; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+outline-atomics -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+outline-atomics -O1 | FileCheck %s --check-prefixes=CHECK,-O15 6define dso_local i8 @cmpxchg_i8_aligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {7; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_monotonic:8; CHECK:    bl __aarch64_cas1_relax9    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 110    %r = extractvalue { i8, i1 } %pair, 011    ret i8 %r12}13 14define dso_local i8 @cmpxchg_i8_aligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {15; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_monotonic_weak:16; CHECK:    bl __aarch64_cas1_relax17    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 118    %r = extractvalue { i8, i1 } %pair, 019    ret i8 %r20}21 22define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {23; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_acquire:24; CHECK:    bl __aarch64_cas1_acq25    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 126    %r = extractvalue { i8, i1 } %pair, 027    ret i8 %r28}29 30define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {31; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_acquire_weak:32; CHECK:    bl __aarch64_cas1_acq33    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 134    %r = extractvalue { i8, i1 } %pair, 035    ret i8 %r36}37 38define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {39; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst:40; CHECK:    bl __aarch64_cas1_acq_rel41    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 142    %r = extractvalue { i8, i1 } %pair, 043    ret i8 %r44}45 46define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {47; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst_weak:48; CHECK:    bl __aarch64_cas1_acq_rel49    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 150    %r = extractvalue { i8, i1 } %pair, 051    ret i8 %r52}53 54define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {55; CHECK-LABEL: cmpxchg_i8_aligned_acquire_monotonic:56; CHECK:    bl __aarch64_cas1_acq57    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 158    %r = extractvalue { i8, i1 } %pair, 059    ret i8 %r60}61 62define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {63; CHECK-LABEL: cmpxchg_i8_aligned_acquire_monotonic_weak:64; CHECK:    bl __aarch64_cas1_acq65    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 166    %r = extractvalue { i8, i1 } %pair, 067    ret i8 %r68}69 70define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {71; CHECK-LABEL: cmpxchg_i8_aligned_acquire_acquire:72; CHECK:    bl __aarch64_cas1_acq73    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 174    %r = extractvalue { i8, i1 } %pair, 075    ret i8 %r76}77 78define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {79; CHECK-LABEL: cmpxchg_i8_aligned_acquire_acquire_weak:80; CHECK:    bl __aarch64_cas1_acq81    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 182    %r = extractvalue { i8, i1 } %pair, 083    ret i8 %r84}85 86define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {87; CHECK-LABEL: cmpxchg_i8_aligned_acquire_seq_cst:88; CHECK:    bl __aarch64_cas1_acq_rel89    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 190    %r = extractvalue { i8, i1 } %pair, 091    ret i8 %r92}93 94define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {95; CHECK-LABEL: cmpxchg_i8_aligned_acquire_seq_cst_weak:96; CHECK:    bl __aarch64_cas1_acq_rel97    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 198    %r = extractvalue { i8, i1 } %pair, 099    ret i8 %r100}101 102define dso_local i8 @cmpxchg_i8_aligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {103; CHECK-LABEL: cmpxchg_i8_aligned_release_monotonic:104; CHECK:    bl __aarch64_cas1_rel105    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 1106    %r = extractvalue { i8, i1 } %pair, 0107    ret i8 %r108}109 110define dso_local i8 @cmpxchg_i8_aligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {111; CHECK-LABEL: cmpxchg_i8_aligned_release_monotonic_weak:112; CHECK:    bl __aarch64_cas1_rel113    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 1114    %r = extractvalue { i8, i1 } %pair, 0115    ret i8 %r116}117 118define dso_local i8 @cmpxchg_i8_aligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {119; CHECK-LABEL: cmpxchg_i8_aligned_release_acquire:120; CHECK:    bl __aarch64_cas1_acq_rel121    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 1122    %r = extractvalue { i8, i1 } %pair, 0123    ret i8 %r124}125 126define dso_local i8 @cmpxchg_i8_aligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {127; CHECK-LABEL: cmpxchg_i8_aligned_release_acquire_weak:128; CHECK:    bl __aarch64_cas1_acq_rel129    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 1130    %r = extractvalue { i8, i1 } %pair, 0131    ret i8 %r132}133 134define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {135; CHECK-LABEL: cmpxchg_i8_aligned_release_seq_cst:136; CHECK:    bl __aarch64_cas1_acq_rel137    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1138    %r = extractvalue { i8, i1 } %pair, 0139    ret i8 %r140}141 142define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {143; CHECK-LABEL: cmpxchg_i8_aligned_release_seq_cst_weak:144; CHECK:    bl __aarch64_cas1_acq_rel145    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1146    %r = extractvalue { i8, i1 } %pair, 0147    ret i8 %r148}149 150define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {151; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic:152; CHECK:    bl __aarch64_cas1_acq_rel153    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1154    %r = extractvalue { i8, i1 } %pair, 0155    ret i8 %r156}157 158define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {159; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic_weak:160; CHECK:    bl __aarch64_cas1_acq_rel161    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1162    %r = extractvalue { i8, i1 } %pair, 0163    ret i8 %r164}165 166define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {167; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_acquire:168; CHECK:    bl __aarch64_cas1_acq_rel169    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1170    %r = extractvalue { i8, i1 } %pair, 0171    ret i8 %r172}173 174define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {175; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_acquire_weak:176; CHECK:    bl __aarch64_cas1_acq_rel177    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1178    %r = extractvalue { i8, i1 } %pair, 0179    ret i8 %r180}181 182define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {183; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst:184; CHECK:    bl __aarch64_cas1_acq_rel185    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1186    %r = extractvalue { i8, i1 } %pair, 0187    ret i8 %r188}189 190define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {191; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst_weak:192; CHECK:    bl __aarch64_cas1_acq_rel193    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1194    %r = extractvalue { i8, i1 } %pair, 0195    ret i8 %r196}197 198define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {199; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic:200; CHECK:    bl __aarch64_cas1_acq_rel201    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1202    %r = extractvalue { i8, i1 } %pair, 0203    ret i8 %r204}205 206define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {207; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic_weak:208; CHECK:    bl __aarch64_cas1_acq_rel209    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1210    %r = extractvalue { i8, i1 } %pair, 0211    ret i8 %r212}213 214define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {215; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_acquire:216; CHECK:    bl __aarch64_cas1_acq_rel217    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1218    %r = extractvalue { i8, i1 } %pair, 0219    ret i8 %r220}221 222define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {223; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_acquire_weak:224; CHECK:    bl __aarch64_cas1_acq_rel225    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1226    %r = extractvalue { i8, i1 } %pair, 0227    ret i8 %r228}229 230define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {231; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst:232; CHECK:    bl __aarch64_cas1_acq_rel233    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1234    %r = extractvalue { i8, i1 } %pair, 0235    ret i8 %r236}237 238define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {239; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst_weak:240; CHECK:    bl __aarch64_cas1_acq_rel241    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1242    %r = extractvalue { i8, i1 } %pair, 0243    ret i8 %r244}245 246define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {247; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_monotonic:248; CHECK:    bl __aarch64_cas2_relax249    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2250    %r = extractvalue { i16, i1 } %pair, 0251    ret i16 %r252}253 254define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {255; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_monotonic_weak:256; CHECK:    bl __aarch64_cas2_relax257    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2258    %r = extractvalue { i16, i1 } %pair, 0259    ret i16 %r260}261 262define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {263; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_acquire:264; CHECK:    bl __aarch64_cas2_acq265    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2266    %r = extractvalue { i16, i1 } %pair, 0267    ret i16 %r268}269 270define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {271; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_acquire_weak:272; CHECK:    bl __aarch64_cas2_acq273    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2274    %r = extractvalue { i16, i1 } %pair, 0275    ret i16 %r276}277 278define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {279; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst:280; CHECK:    bl __aarch64_cas2_acq_rel281    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2282    %r = extractvalue { i16, i1 } %pair, 0283    ret i16 %r284}285 286define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {287; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst_weak:288; CHECK:    bl __aarch64_cas2_acq_rel289    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2290    %r = extractvalue { i16, i1 } %pair, 0291    ret i16 %r292}293 294define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {295; CHECK-LABEL: cmpxchg_i16_aligned_acquire_monotonic:296; CHECK:    bl __aarch64_cas2_acq297    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2298    %r = extractvalue { i16, i1 } %pair, 0299    ret i16 %r300}301 302define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {303; CHECK-LABEL: cmpxchg_i16_aligned_acquire_monotonic_weak:304; CHECK:    bl __aarch64_cas2_acq305    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2306    %r = extractvalue { i16, i1 } %pair, 0307    ret i16 %r308}309 310define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {311; CHECK-LABEL: cmpxchg_i16_aligned_acquire_acquire:312; CHECK:    bl __aarch64_cas2_acq313    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2314    %r = extractvalue { i16, i1 } %pair, 0315    ret i16 %r316}317 318define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {319; CHECK-LABEL: cmpxchg_i16_aligned_acquire_acquire_weak:320; CHECK:    bl __aarch64_cas2_acq321    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2322    %r = extractvalue { i16, i1 } %pair, 0323    ret i16 %r324}325 326define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {327; CHECK-LABEL: cmpxchg_i16_aligned_acquire_seq_cst:328; CHECK:    bl __aarch64_cas2_acq_rel329    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2330    %r = extractvalue { i16, i1 } %pair, 0331    ret i16 %r332}333 334define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {335; CHECK-LABEL: cmpxchg_i16_aligned_acquire_seq_cst_weak:336; CHECK:    bl __aarch64_cas2_acq_rel337    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2338    %r = extractvalue { i16, i1 } %pair, 0339    ret i16 %r340}341 342define dso_local i16 @cmpxchg_i16_aligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {343; CHECK-LABEL: cmpxchg_i16_aligned_release_monotonic:344; CHECK:    bl __aarch64_cas2_rel345    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 2346    %r = extractvalue { i16, i1 } %pair, 0347    ret i16 %r348}349 350define dso_local i16 @cmpxchg_i16_aligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {351; CHECK-LABEL: cmpxchg_i16_aligned_release_monotonic_weak:352; CHECK:    bl __aarch64_cas2_rel353    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 2354    %r = extractvalue { i16, i1 } %pair, 0355    ret i16 %r356}357 358define dso_local i16 @cmpxchg_i16_aligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {359; CHECK-LABEL: cmpxchg_i16_aligned_release_acquire:360; CHECK:    bl __aarch64_cas2_acq_rel361    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 2362    %r = extractvalue { i16, i1 } %pair, 0363    ret i16 %r364}365 366define dso_local i16 @cmpxchg_i16_aligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {367; CHECK-LABEL: cmpxchg_i16_aligned_release_acquire_weak:368; CHECK:    bl __aarch64_cas2_acq_rel369    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 2370    %r = extractvalue { i16, i1 } %pair, 0371    ret i16 %r372}373 374define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {375; CHECK-LABEL: cmpxchg_i16_aligned_release_seq_cst:376; CHECK:    bl __aarch64_cas2_acq_rel377    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2378    %r = extractvalue { i16, i1 } %pair, 0379    ret i16 %r380}381 382define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {383; CHECK-LABEL: cmpxchg_i16_aligned_release_seq_cst_weak:384; CHECK:    bl __aarch64_cas2_acq_rel385    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2386    %r = extractvalue { i16, i1 } %pair, 0387    ret i16 %r388}389 390define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {391; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic:392; CHECK:    bl __aarch64_cas2_acq_rel393    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2394    %r = extractvalue { i16, i1 } %pair, 0395    ret i16 %r396}397 398define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {399; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic_weak:400; CHECK:    bl __aarch64_cas2_acq_rel401    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2402    %r = extractvalue { i16, i1 } %pair, 0403    ret i16 %r404}405 406define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {407; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_acquire:408; CHECK:    bl __aarch64_cas2_acq_rel409    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2410    %r = extractvalue { i16, i1 } %pair, 0411    ret i16 %r412}413 414define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {415; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_acquire_weak:416; CHECK:    bl __aarch64_cas2_acq_rel417    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2418    %r = extractvalue { i16, i1 } %pair, 0419    ret i16 %r420}421 422define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {423; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst:424; CHECK:    bl __aarch64_cas2_acq_rel425    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2426    %r = extractvalue { i16, i1 } %pair, 0427    ret i16 %r428}429 430define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {431; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst_weak:432; CHECK:    bl __aarch64_cas2_acq_rel433    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2434    %r = extractvalue { i16, i1 } %pair, 0435    ret i16 %r436}437 438define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {439; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic:440; CHECK:    bl __aarch64_cas2_acq_rel441    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2442    %r = extractvalue { i16, i1 } %pair, 0443    ret i16 %r444}445 446define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {447; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic_weak:448; CHECK:    bl __aarch64_cas2_acq_rel449    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2450    %r = extractvalue { i16, i1 } %pair, 0451    ret i16 %r452}453 454define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {455; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_acquire:456; CHECK:    bl __aarch64_cas2_acq_rel457    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2458    %r = extractvalue { i16, i1 } %pair, 0459    ret i16 %r460}461 462define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {463; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_acquire_weak:464; CHECK:    bl __aarch64_cas2_acq_rel465    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2466    %r = extractvalue { i16, i1 } %pair, 0467    ret i16 %r468}469 470define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {471; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst:472; CHECK:    bl __aarch64_cas2_acq_rel473    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2474    %r = extractvalue { i16, i1 } %pair, 0475    ret i16 %r476}477 478define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {479; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst_weak:480; CHECK:    bl __aarch64_cas2_acq_rel481    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2482    %r = extractvalue { i16, i1 } %pair, 0483    ret i16 %r484}485 486define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {487; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_monotonic:488; CHECK:    bl __aarch64_cas4_relax489    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4490    %r = extractvalue { i32, i1 } %pair, 0491    ret i32 %r492}493 494define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {495; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_monotonic_weak:496; CHECK:    bl __aarch64_cas4_relax497    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4498    %r = extractvalue { i32, i1 } %pair, 0499    ret i32 %r500}501 502define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {503; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_acquire:504; CHECK:    bl __aarch64_cas4_acq505    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4506    %r = extractvalue { i32, i1 } %pair, 0507    ret i32 %r508}509 510define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {511; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_acquire_weak:512; CHECK:    bl __aarch64_cas4_acq513    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4514    %r = extractvalue { i32, i1 } %pair, 0515    ret i32 %r516}517 518define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {519; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst:520; CHECK:    bl __aarch64_cas4_acq_rel521    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 4522    %r = extractvalue { i32, i1 } %pair, 0523    ret i32 %r524}525 526define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {527; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst_weak:528; CHECK:    bl __aarch64_cas4_acq_rel529    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 4530    %r = extractvalue { i32, i1 } %pair, 0531    ret i32 %r532}533 534define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {535; CHECK-LABEL: cmpxchg_i32_aligned_acquire_monotonic:536; CHECK:    bl __aarch64_cas4_acq537    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 4538    %r = extractvalue { i32, i1 } %pair, 0539    ret i32 %r540}541 542define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {543; CHECK-LABEL: cmpxchg_i32_aligned_acquire_monotonic_weak:544; CHECK:    bl __aarch64_cas4_acq545    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 4546    %r = extractvalue { i32, i1 } %pair, 0547    ret i32 %r548}549 550define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {551; CHECK-LABEL: cmpxchg_i32_aligned_acquire_acquire:552; CHECK:    bl __aarch64_cas4_acq553    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 4554    %r = extractvalue { i32, i1 } %pair, 0555    ret i32 %r556}557 558define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {559; CHECK-LABEL: cmpxchg_i32_aligned_acquire_acquire_weak:560; CHECK:    bl __aarch64_cas4_acq561    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 4562    %r = extractvalue { i32, i1 } %pair, 0563    ret i32 %r564}565 566define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {567; CHECK-LABEL: cmpxchg_i32_aligned_acquire_seq_cst:568; CHECK:    bl __aarch64_cas4_acq_rel569    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 4570    %r = extractvalue { i32, i1 } %pair, 0571    ret i32 %r572}573 574define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {575; CHECK-LABEL: cmpxchg_i32_aligned_acquire_seq_cst_weak:576; CHECK:    bl __aarch64_cas4_acq_rel577    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 4578    %r = extractvalue { i32, i1 } %pair, 0579    ret i32 %r580}581 582define dso_local i32 @cmpxchg_i32_aligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {583; CHECK-LABEL: cmpxchg_i32_aligned_release_monotonic:584; CHECK:    bl __aarch64_cas4_rel585    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 4586    %r = extractvalue { i32, i1 } %pair, 0587    ret i32 %r588}589 590define dso_local i32 @cmpxchg_i32_aligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {591; CHECK-LABEL: cmpxchg_i32_aligned_release_monotonic_weak:592; CHECK:    bl __aarch64_cas4_rel593    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 4594    %r = extractvalue { i32, i1 } %pair, 0595    ret i32 %r596}597 598define dso_local i32 @cmpxchg_i32_aligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {599; CHECK-LABEL: cmpxchg_i32_aligned_release_acquire:600; CHECK:    bl __aarch64_cas4_acq_rel601    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 4602    %r = extractvalue { i32, i1 } %pair, 0603    ret i32 %r604}605 606define dso_local i32 @cmpxchg_i32_aligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {607; CHECK-LABEL: cmpxchg_i32_aligned_release_acquire_weak:608; CHECK:    bl __aarch64_cas4_acq_rel609    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 4610    %r = extractvalue { i32, i1 } %pair, 0611    ret i32 %r612}613 614define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {615; CHECK-LABEL: cmpxchg_i32_aligned_release_seq_cst:616; CHECK:    bl __aarch64_cas4_acq_rel617    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 4618    %r = extractvalue { i32, i1 } %pair, 0619    ret i32 %r620}621 622define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {623; CHECK-LABEL: cmpxchg_i32_aligned_release_seq_cst_weak:624; CHECK:    bl __aarch64_cas4_acq_rel625    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 4626    %r = extractvalue { i32, i1 } %pair, 0627    ret i32 %r628}629 630define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {631; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic:632; CHECK:    bl __aarch64_cas4_acq_rel633    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 4634    %r = extractvalue { i32, i1 } %pair, 0635    ret i32 %r636}637 638define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {639; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic_weak:640; CHECK:    bl __aarch64_cas4_acq_rel641    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 4642    %r = extractvalue { i32, i1 } %pair, 0643    ret i32 %r644}645 646define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {647; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_acquire:648; CHECK:    bl __aarch64_cas4_acq_rel649    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 4650    %r = extractvalue { i32, i1 } %pair, 0651    ret i32 %r652}653 654define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {655; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_acquire_weak:656; CHECK:    bl __aarch64_cas4_acq_rel657    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 4658    %r = extractvalue { i32, i1 } %pair, 0659    ret i32 %r660}661 662define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {663; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst:664; CHECK:    bl __aarch64_cas4_acq_rel665    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 4666    %r = extractvalue { i32, i1 } %pair, 0667    ret i32 %r668}669 670define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {671; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst_weak:672; CHECK:    bl __aarch64_cas4_acq_rel673    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 4674    %r = extractvalue { i32, i1 } %pair, 0675    ret i32 %r676}677 678define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {679; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic:680; CHECK:    bl __aarch64_cas4_acq_rel681    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 4682    %r = extractvalue { i32, i1 } %pair, 0683    ret i32 %r684}685 686define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {687; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic_weak:688; CHECK:    bl __aarch64_cas4_acq_rel689    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 4690    %r = extractvalue { i32, i1 } %pair, 0691    ret i32 %r692}693 694define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {695; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_acquire:696; CHECK:    bl __aarch64_cas4_acq_rel697    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 4698    %r = extractvalue { i32, i1 } %pair, 0699    ret i32 %r700}701 702define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {703; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_acquire_weak:704; CHECK:    bl __aarch64_cas4_acq_rel705    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 4706    %r = extractvalue { i32, i1 } %pair, 0707    ret i32 %r708}709 710define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {711; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst:712; CHECK:    bl __aarch64_cas4_acq_rel713    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 4714    %r = extractvalue { i32, i1 } %pair, 0715    ret i32 %r716}717 718define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {719; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst_weak:720; CHECK:    bl __aarch64_cas4_acq_rel721    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 4722    %r = extractvalue { i32, i1 } %pair, 0723    ret i32 %r724}725 726define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {727; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_monotonic:728; CHECK:    bl __aarch64_cas8_relax729    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 8730    %r = extractvalue { i64, i1 } %pair, 0731    ret i64 %r732}733 734define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {735; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_monotonic_weak:736; CHECK:    bl __aarch64_cas8_relax737    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 8738    %r = extractvalue { i64, i1 } %pair, 0739    ret i64 %r740}741 742define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {743; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_acquire:744; CHECK:    bl __aarch64_cas8_acq745    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 8746    %r = extractvalue { i64, i1 } %pair, 0747    ret i64 %r748}749 750define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {751; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_acquire_weak:752; CHECK:    bl __aarch64_cas8_acq753    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 8754    %r = extractvalue { i64, i1 } %pair, 0755    ret i64 %r756}757 758define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {759; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst:760; CHECK:    bl __aarch64_cas8_acq_rel761    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 8762    %r = extractvalue { i64, i1 } %pair, 0763    ret i64 %r764}765 766define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {767; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst_weak:768; CHECK:    bl __aarch64_cas8_acq_rel769    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 8770    %r = extractvalue { i64, i1 } %pair, 0771    ret i64 %r772}773 774define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {775; CHECK-LABEL: cmpxchg_i64_aligned_acquire_monotonic:776; CHECK:    bl __aarch64_cas8_acq777    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 8778    %r = extractvalue { i64, i1 } %pair, 0779    ret i64 %r780}781 782define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {783; CHECK-LABEL: cmpxchg_i64_aligned_acquire_monotonic_weak:784; CHECK:    bl __aarch64_cas8_acq785    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 8786    %r = extractvalue { i64, i1 } %pair, 0787    ret i64 %r788}789 790define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {791; CHECK-LABEL: cmpxchg_i64_aligned_acquire_acquire:792; CHECK:    bl __aarch64_cas8_acq793    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 8794    %r = extractvalue { i64, i1 } %pair, 0795    ret i64 %r796}797 798define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {799; CHECK-LABEL: cmpxchg_i64_aligned_acquire_acquire_weak:800; CHECK:    bl __aarch64_cas8_acq801    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 8802    %r = extractvalue { i64, i1 } %pair, 0803    ret i64 %r804}805 806define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {807; CHECK-LABEL: cmpxchg_i64_aligned_acquire_seq_cst:808; CHECK:    bl __aarch64_cas8_acq_rel809    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 8810    %r = extractvalue { i64, i1 } %pair, 0811    ret i64 %r812}813 814define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {815; CHECK-LABEL: cmpxchg_i64_aligned_acquire_seq_cst_weak:816; CHECK:    bl __aarch64_cas8_acq_rel817    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 8818    %r = extractvalue { i64, i1 } %pair, 0819    ret i64 %r820}821 822define dso_local i64 @cmpxchg_i64_aligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {823; CHECK-LABEL: cmpxchg_i64_aligned_release_monotonic:824; CHECK:    bl __aarch64_cas8_rel825    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 8826    %r = extractvalue { i64, i1 } %pair, 0827    ret i64 %r828}829 830define dso_local i64 @cmpxchg_i64_aligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {831; CHECK-LABEL: cmpxchg_i64_aligned_release_monotonic_weak:832; CHECK:    bl __aarch64_cas8_rel833    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 8834    %r = extractvalue { i64, i1 } %pair, 0835    ret i64 %r836}837 838define dso_local i64 @cmpxchg_i64_aligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {839; CHECK-LABEL: cmpxchg_i64_aligned_release_acquire:840; CHECK:    bl __aarch64_cas8_acq_rel841    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 8842    %r = extractvalue { i64, i1 } %pair, 0843    ret i64 %r844}845 846define dso_local i64 @cmpxchg_i64_aligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {847; CHECK-LABEL: cmpxchg_i64_aligned_release_acquire_weak:848; CHECK:    bl __aarch64_cas8_acq_rel849    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 8850    %r = extractvalue { i64, i1 } %pair, 0851    ret i64 %r852}853 854define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {855; CHECK-LABEL: cmpxchg_i64_aligned_release_seq_cst:856; CHECK:    bl __aarch64_cas8_acq_rel857    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 8858    %r = extractvalue { i64, i1 } %pair, 0859    ret i64 %r860}861 862define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {863; CHECK-LABEL: cmpxchg_i64_aligned_release_seq_cst_weak:864; CHECK:    bl __aarch64_cas8_acq_rel865    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 8866    %r = extractvalue { i64, i1 } %pair, 0867    ret i64 %r868}869 870define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {871; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic:872; CHECK:    bl __aarch64_cas8_acq_rel873    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 8874    %r = extractvalue { i64, i1 } %pair, 0875    ret i64 %r876}877 878define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {879; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic_weak:880; CHECK:    bl __aarch64_cas8_acq_rel881    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 8882    %r = extractvalue { i64, i1 } %pair, 0883    ret i64 %r884}885 886define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {887; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_acquire:888; CHECK:    bl __aarch64_cas8_acq_rel889    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 8890    %r = extractvalue { i64, i1 } %pair, 0891    ret i64 %r892}893 894define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {895; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_acquire_weak:896; CHECK:    bl __aarch64_cas8_acq_rel897    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 8898    %r = extractvalue { i64, i1 } %pair, 0899    ret i64 %r900}901 902define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {903; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst:904; CHECK:    bl __aarch64_cas8_acq_rel905    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 8906    %r = extractvalue { i64, i1 } %pair, 0907    ret i64 %r908}909 910define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {911; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst_weak:912; CHECK:    bl __aarch64_cas8_acq_rel913    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 8914    %r = extractvalue { i64, i1 } %pair, 0915    ret i64 %r916}917 918define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {919; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic:920; CHECK:    bl __aarch64_cas8_acq_rel921    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 8922    %r = extractvalue { i64, i1 } %pair, 0923    ret i64 %r924}925 926define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {927; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic_weak:928; CHECK:    bl __aarch64_cas8_acq_rel929    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 8930    %r = extractvalue { i64, i1 } %pair, 0931    ret i64 %r932}933 934define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {935; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_acquire:936; CHECK:    bl __aarch64_cas8_acq_rel937    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 8938    %r = extractvalue { i64, i1 } %pair, 0939    ret i64 %r940}941 942define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {943; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_acquire_weak:944; CHECK:    bl __aarch64_cas8_acq_rel945    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 8946    %r = extractvalue { i64, i1 } %pair, 0947    ret i64 %r948}949 950define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {951; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst:952; CHECK:    bl __aarch64_cas8_acq_rel953    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 8954    %r = extractvalue { i64, i1 } %pair, 0955    ret i64 %r956}957 958define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {959; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst_weak:960; CHECK:    bl __aarch64_cas8_acq_rel961    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 8962    %r = extractvalue { i64, i1 } %pair, 0963    ret i64 %r964}965 966define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {967; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:968; CHECK:    bl __aarch64_cas16_relax969    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16970    %r = extractvalue { i128, i1 } %pair, 0971    ret i128 %r972}973 974define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {975; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:976; CHECK:    bl __aarch64_cas16_relax977    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16978    %r = extractvalue { i128, i1 } %pair, 0979    ret i128 %r980}981 982define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {983; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_acquire:984; CHECK:    bl __aarch64_cas16_acq985    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 16986    %r = extractvalue { i128, i1 } %pair, 0987    ret i128 %r988}989 990define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {991; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:992; CHECK:    bl __aarch64_cas16_acq993    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 16994    %r = extractvalue { i128, i1 } %pair, 0995    ret i128 %r996}997 998define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {999; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:1000; CHECK:    bl __aarch64_cas16_acq_rel1001    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161002    %r = extractvalue { i128, i1 } %pair, 01003    ret i128 %r1004}1005 1006define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1007; CHECK-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:1008; CHECK:    bl __aarch64_cas16_acq_rel1009    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161010    %r = extractvalue { i128, i1 } %pair, 01011    ret i128 %r1012}1013 1014define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {1015; CHECK-LABEL: cmpxchg_i128_aligned_acquire_monotonic:1016; CHECK:    bl __aarch64_cas16_acq1017    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161018    %r = extractvalue { i128, i1 } %pair, 01019    ret i128 %r1020}1021 1022define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1023; CHECK-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:1024; CHECK:    bl __aarch64_cas16_acq1025    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161026    %r = extractvalue { i128, i1 } %pair, 01027    ret i128 %r1028}1029 1030define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {1031; CHECK-LABEL: cmpxchg_i128_aligned_acquire_acquire:1032; CHECK:    bl __aarch64_cas16_acq1033    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 161034    %r = extractvalue { i128, i1 } %pair, 01035    ret i128 %r1036}1037 1038define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1039; CHECK-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:1040; CHECK:    bl __aarch64_cas16_acq1041    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 161042    %r = extractvalue { i128, i1 } %pair, 01043    ret i128 %r1044}1045 1046define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1047; CHECK-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:1048; CHECK:    bl __aarch64_cas16_acq_rel1049    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 161050    %r = extractvalue { i128, i1 } %pair, 01051    ret i128 %r1052}1053 1054define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1055; CHECK-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:1056; CHECK:    bl __aarch64_cas16_acq_rel1057    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 161058    %r = extractvalue { i128, i1 } %pair, 01059    ret i128 %r1060}1061 1062define dso_local i128 @cmpxchg_i128_aligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {1063; CHECK-LABEL: cmpxchg_i128_aligned_release_monotonic:1064; CHECK:    bl __aarch64_cas16_rel1065    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 161066    %r = extractvalue { i128, i1 } %pair, 01067    ret i128 %r1068}1069 1070define dso_local i128 @cmpxchg_i128_aligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1071; CHECK-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:1072; CHECK:    bl __aarch64_cas16_rel1073    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 161074    %r = extractvalue { i128, i1 } %pair, 01075    ret i128 %r1076}1077 1078define dso_local i128 @cmpxchg_i128_aligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {1079; CHECK-LABEL: cmpxchg_i128_aligned_release_acquire:1080; CHECK:    bl __aarch64_cas16_acq_rel1081    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 161082    %r = extractvalue { i128, i1 } %pair, 01083    ret i128 %r1084}1085 1086define dso_local i128 @cmpxchg_i128_aligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1087; CHECK-LABEL: cmpxchg_i128_aligned_release_acquire_weak:1088; CHECK:    bl __aarch64_cas16_acq_rel1089    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 161090    %r = extractvalue { i128, i1 } %pair, 01091    ret i128 %r1092}1093 1094define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1095; CHECK-LABEL: cmpxchg_i128_aligned_release_seq_cst:1096; CHECK:    bl __aarch64_cas16_acq_rel1097    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 161098    %r = extractvalue { i128, i1 } %pair, 01099    ret i128 %r1100}1101 1102define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1103; CHECK-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:1104; CHECK:    bl __aarch64_cas16_acq_rel1105    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 161106    %r = extractvalue { i128, i1 } %pair, 01107    ret i128 %r1108}1109 1110define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {1111; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:1112; CHECK:    bl __aarch64_cas16_acq_rel1113    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 161114    %r = extractvalue { i128, i1 } %pair, 01115    ret i128 %r1116}1117 1118define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1119; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:1120; CHECK:    bl __aarch64_cas16_acq_rel1121    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 161122    %r = extractvalue { i128, i1 } %pair, 01123    ret i128 %r1124}1125 1126define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {1127; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:1128; CHECK:    bl __aarch64_cas16_acq_rel1129    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 161130    %r = extractvalue { i128, i1 } %pair, 01131    ret i128 %r1132}1133 1134define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1135; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:1136; CHECK:    bl __aarch64_cas16_acq_rel1137    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 161138    %r = extractvalue { i128, i1 } %pair, 01139    ret i128 %r1140}1141 1142define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1143; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:1144; CHECK:    bl __aarch64_cas16_acq_rel1145    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 161146    %r = extractvalue { i128, i1 } %pair, 01147    ret i128 %r1148}1149 1150define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1151; CHECK-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:1152; CHECK:    bl __aarch64_cas16_acq_rel1153    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 161154    %r = extractvalue { i128, i1 } %pair, 01155    ret i128 %r1156}1157 1158define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {1159; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:1160; CHECK:    bl __aarch64_cas16_acq_rel1161    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 161162    %r = extractvalue { i128, i1 } %pair, 01163    ret i128 %r1164}1165 1166define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1167; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:1168; CHECK:    bl __aarch64_cas16_acq_rel1169    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 161170    %r = extractvalue { i128, i1 } %pair, 01171    ret i128 %r1172}1173 1174define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {1175; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:1176; CHECK:    bl __aarch64_cas16_acq_rel1177    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 161178    %r = extractvalue { i128, i1 } %pair, 01179    ret i128 %r1180}1181 1182define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1183; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:1184; CHECK:    bl __aarch64_cas16_acq_rel1185    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 161186    %r = extractvalue { i128, i1 } %pair, 01187    ret i128 %r1188}1189 1190define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1191; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:1192; CHECK:    bl __aarch64_cas16_acq_rel1193    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 161194    %r = extractvalue { i128, i1 } %pair, 01195    ret i128 %r1196}1197 1198define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1199; CHECK-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:1200; CHECK:    bl __aarch64_cas16_acq_rel1201    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 161202    %r = extractvalue { i128, i1 } %pair, 01203    ret i128 %r1204}1205 1206define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {1207; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic:1208; CHECK:    bl __aarch64_cas1_relax1209    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 11210    %r = extractvalue { i8, i1 } %pair, 01211    ret i8 %r1212}1213 1214define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1215; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic_weak:1216; CHECK:    bl __aarch64_cas1_relax1217    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 11218    %r = extractvalue { i8, i1 } %pair, 01219    ret i8 %r1220}1221 1222define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {1223; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire:1224; CHECK:    bl __aarch64_cas1_acq1225    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 11226    %r = extractvalue { i8, i1 } %pair, 01227    ret i8 %r1228}1229 1230define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1231; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire_weak:1232; CHECK:    bl __aarch64_cas1_acq1233    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 11234    %r = extractvalue { i8, i1 } %pair, 01235    ret i8 %r1236}1237 1238define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1239; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst:1240; CHECK:    bl __aarch64_cas1_acq_rel1241    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 11242    %r = extractvalue { i8, i1 } %pair, 01243    ret i8 %r1244}1245 1246define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1247; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst_weak:1248; CHECK:    bl __aarch64_cas1_acq_rel1249    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 11250    %r = extractvalue { i8, i1 } %pair, 01251    ret i8 %r1252}1253 1254define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {1255; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic:1256; CHECK:    bl __aarch64_cas1_acq1257    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 11258    %r = extractvalue { i8, i1 } %pair, 01259    ret i8 %r1260}1261 1262define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1263; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic_weak:1264; CHECK:    bl __aarch64_cas1_acq1265    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 11266    %r = extractvalue { i8, i1 } %pair, 01267    ret i8 %r1268}1269 1270define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {1271; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire:1272; CHECK:    bl __aarch64_cas1_acq1273    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 11274    %r = extractvalue { i8, i1 } %pair, 01275    ret i8 %r1276}1277 1278define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1279; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire_weak:1280; CHECK:    bl __aarch64_cas1_acq1281    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 11282    %r = extractvalue { i8, i1 } %pair, 01283    ret i8 %r1284}1285 1286define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1287; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst:1288; CHECK:    bl __aarch64_cas1_acq_rel1289    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 11290    %r = extractvalue { i8, i1 } %pair, 01291    ret i8 %r1292}1293 1294define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1295; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst_weak:1296; CHECK:    bl __aarch64_cas1_acq_rel1297    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 11298    %r = extractvalue { i8, i1 } %pair, 01299    ret i8 %r1300}1301 1302define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {1303; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic:1304; CHECK:    bl __aarch64_cas1_rel1305    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 11306    %r = extractvalue { i8, i1 } %pair, 01307    ret i8 %r1308}1309 1310define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1311; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic_weak:1312; CHECK:    bl __aarch64_cas1_rel1313    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 11314    %r = extractvalue { i8, i1 } %pair, 01315    ret i8 %r1316}1317 1318define dso_local i8 @cmpxchg_i8_unaligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {1319; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire:1320; CHECK:    bl __aarch64_cas1_acq_rel1321    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 11322    %r = extractvalue { i8, i1 } %pair, 01323    ret i8 %r1324}1325 1326define dso_local i8 @cmpxchg_i8_unaligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1327; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire_weak:1328; CHECK:    bl __aarch64_cas1_acq_rel1329    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 11330    %r = extractvalue { i8, i1 } %pair, 01331    ret i8 %r1332}1333 1334define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1335; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst:1336; CHECK:    bl __aarch64_cas1_acq_rel1337    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 11338    %r = extractvalue { i8, i1 } %pair, 01339    ret i8 %r1340}1341 1342define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1343; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst_weak:1344; CHECK:    bl __aarch64_cas1_acq_rel1345    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 11346    %r = extractvalue { i8, i1 } %pair, 01347    ret i8 %r1348}1349 1350define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {1351; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic:1352; CHECK:    bl __aarch64_cas1_acq_rel1353    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 11354    %r = extractvalue { i8, i1 } %pair, 01355    ret i8 %r1356}1357 1358define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1359; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic_weak:1360; CHECK:    bl __aarch64_cas1_acq_rel1361    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 11362    %r = extractvalue { i8, i1 } %pair, 01363    ret i8 %r1364}1365 1366define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {1367; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire:1368; CHECK:    bl __aarch64_cas1_acq_rel1369    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 11370    %r = extractvalue { i8, i1 } %pair, 01371    ret i8 %r1372}1373 1374define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1375; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire_weak:1376; CHECK:    bl __aarch64_cas1_acq_rel1377    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 11378    %r = extractvalue { i8, i1 } %pair, 01379    ret i8 %r1380}1381 1382define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1383; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst:1384; CHECK:    bl __aarch64_cas1_acq_rel1385    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 11386    %r = extractvalue { i8, i1 } %pair, 01387    ret i8 %r1388}1389 1390define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1391; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst_weak:1392; CHECK:    bl __aarch64_cas1_acq_rel1393    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 11394    %r = extractvalue { i8, i1 } %pair, 01395    ret i8 %r1396}1397 1398define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {1399; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic:1400; CHECK:    bl __aarch64_cas1_acq_rel1401    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 11402    %r = extractvalue { i8, i1 } %pair, 01403    ret i8 %r1404}1405 1406define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1407; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic_weak:1408; CHECK:    bl __aarch64_cas1_acq_rel1409    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 11410    %r = extractvalue { i8, i1 } %pair, 01411    ret i8 %r1412}1413 1414define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {1415; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire:1416; CHECK:    bl __aarch64_cas1_acq_rel1417    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 11418    %r = extractvalue { i8, i1 } %pair, 01419    ret i8 %r1420}1421 1422define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1423; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire_weak:1424; CHECK:    bl __aarch64_cas1_acq_rel1425    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 11426    %r = extractvalue { i8, i1 } %pair, 01427    ret i8 %r1428}1429 1430define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1431; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst:1432; CHECK:    bl __aarch64_cas1_acq_rel1433    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 11434    %r = extractvalue { i8, i1 } %pair, 01435    ret i8 %r1436}1437 1438define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1439; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst_weak:1440; CHECK:    bl __aarch64_cas1_acq_rel1441    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 11442    %r = extractvalue { i8, i1 } %pair, 01443    ret i8 %r1444}1445 1446define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {1447; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic:1448; CHECK:    bl __atomic_compare_exchange1449    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 11450    %r = extractvalue { i16, i1 } %pair, 01451    ret i16 %r1452}1453 1454define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1455; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic_weak:1456; CHECK:    bl __atomic_compare_exchange1457    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 11458    %r = extractvalue { i16, i1 } %pair, 01459    ret i16 %r1460}1461 1462define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {1463; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire:1464; CHECK:    bl __atomic_compare_exchange1465    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 11466    %r = extractvalue { i16, i1 } %pair, 01467    ret i16 %r1468}1469 1470define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1471; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire_weak:1472; CHECK:    bl __atomic_compare_exchange1473    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 11474    %r = extractvalue { i16, i1 } %pair, 01475    ret i16 %r1476}1477 1478define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1479; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst:1480; CHECK:    bl __atomic_compare_exchange1481    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 11482    %r = extractvalue { i16, i1 } %pair, 01483    ret i16 %r1484}1485 1486define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1487; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst_weak:1488; CHECK:    bl __atomic_compare_exchange1489    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 11490    %r = extractvalue { i16, i1 } %pair, 01491    ret i16 %r1492}1493 1494define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {1495; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic:1496; CHECK:    bl __atomic_compare_exchange1497    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 11498    %r = extractvalue { i16, i1 } %pair, 01499    ret i16 %r1500}1501 1502define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1503; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic_weak:1504; CHECK:    bl __atomic_compare_exchange1505    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 11506    %r = extractvalue { i16, i1 } %pair, 01507    ret i16 %r1508}1509 1510define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {1511; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire:1512; CHECK:    bl __atomic_compare_exchange1513    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 11514    %r = extractvalue { i16, i1 } %pair, 01515    ret i16 %r1516}1517 1518define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1519; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire_weak:1520; CHECK:    bl __atomic_compare_exchange1521    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 11522    %r = extractvalue { i16, i1 } %pair, 01523    ret i16 %r1524}1525 1526define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1527; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst:1528; CHECK:    bl __atomic_compare_exchange1529    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 11530    %r = extractvalue { i16, i1 } %pair, 01531    ret i16 %r1532}1533 1534define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1535; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst_weak:1536; CHECK:    bl __atomic_compare_exchange1537    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 11538    %r = extractvalue { i16, i1 } %pair, 01539    ret i16 %r1540}1541 1542define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {1543; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic:1544; CHECK:    bl __atomic_compare_exchange1545    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 11546    %r = extractvalue { i16, i1 } %pair, 01547    ret i16 %r1548}1549 1550define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1551; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic_weak:1552; CHECK:    bl __atomic_compare_exchange1553    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 11554    %r = extractvalue { i16, i1 } %pair, 01555    ret i16 %r1556}1557 1558define dso_local i16 @cmpxchg_i16_unaligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {1559; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire:1560; CHECK:    bl __atomic_compare_exchange1561    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 11562    %r = extractvalue { i16, i1 } %pair, 01563    ret i16 %r1564}1565 1566define dso_local i16 @cmpxchg_i16_unaligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1567; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire_weak:1568; CHECK:    bl __atomic_compare_exchange1569    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 11570    %r = extractvalue { i16, i1 } %pair, 01571    ret i16 %r1572}1573 1574define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1575; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst:1576; CHECK:    bl __atomic_compare_exchange1577    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 11578    %r = extractvalue { i16, i1 } %pair, 01579    ret i16 %r1580}1581 1582define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1583; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst_weak:1584; CHECK:    bl __atomic_compare_exchange1585    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 11586    %r = extractvalue { i16, i1 } %pair, 01587    ret i16 %r1588}1589 1590define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {1591; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic:1592; CHECK:    bl __atomic_compare_exchange1593    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 11594    %r = extractvalue { i16, i1 } %pair, 01595    ret i16 %r1596}1597 1598define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1599; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic_weak:1600; CHECK:    bl __atomic_compare_exchange1601    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 11602    %r = extractvalue { i16, i1 } %pair, 01603    ret i16 %r1604}1605 1606define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {1607; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire:1608; CHECK:    bl __atomic_compare_exchange1609    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 11610    %r = extractvalue { i16, i1 } %pair, 01611    ret i16 %r1612}1613 1614define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1615; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire_weak:1616; CHECK:    bl __atomic_compare_exchange1617    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 11618    %r = extractvalue { i16, i1 } %pair, 01619    ret i16 %r1620}1621 1622define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1623; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst:1624; CHECK:    bl __atomic_compare_exchange1625    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 11626    %r = extractvalue { i16, i1 } %pair, 01627    ret i16 %r1628}1629 1630define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1631; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst_weak:1632; CHECK:    bl __atomic_compare_exchange1633    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 11634    %r = extractvalue { i16, i1 } %pair, 01635    ret i16 %r1636}1637 1638define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {1639; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic:1640; CHECK:    bl __atomic_compare_exchange1641    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 11642    %r = extractvalue { i16, i1 } %pair, 01643    ret i16 %r1644}1645 1646define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1647; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic_weak:1648; CHECK:    bl __atomic_compare_exchange1649    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 11650    %r = extractvalue { i16, i1 } %pair, 01651    ret i16 %r1652}1653 1654define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {1655; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire:1656; CHECK:    bl __atomic_compare_exchange1657    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 11658    %r = extractvalue { i16, i1 } %pair, 01659    ret i16 %r1660}1661 1662define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1663; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire_weak:1664; CHECK:    bl __atomic_compare_exchange1665    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 11666    %r = extractvalue { i16, i1 } %pair, 01667    ret i16 %r1668}1669 1670define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1671; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst:1672; CHECK:    bl __atomic_compare_exchange1673    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 11674    %r = extractvalue { i16, i1 } %pair, 01675    ret i16 %r1676}1677 1678define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1679; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst_weak:1680; CHECK:    bl __atomic_compare_exchange1681    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 11682    %r = extractvalue { i16, i1 } %pair, 01683    ret i16 %r1684}1685 1686define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {1687; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic:1688; CHECK:    bl __atomic_compare_exchange1689    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 11690    %r = extractvalue { i32, i1 } %pair, 01691    ret i32 %r1692}1693 1694define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1695; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic_weak:1696; CHECK:    bl __atomic_compare_exchange1697    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 11698    %r = extractvalue { i32, i1 } %pair, 01699    ret i32 %r1700}1701 1702define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {1703; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire:1704; CHECK:    bl __atomic_compare_exchange1705    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 11706    %r = extractvalue { i32, i1 } %pair, 01707    ret i32 %r1708}1709 1710define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1711; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire_weak:1712; CHECK:    bl __atomic_compare_exchange1713    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 11714    %r = extractvalue { i32, i1 } %pair, 01715    ret i32 %r1716}1717 1718define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1719; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst:1720; CHECK:    bl __atomic_compare_exchange1721    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 11722    %r = extractvalue { i32, i1 } %pair, 01723    ret i32 %r1724}1725 1726define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1727; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst_weak:1728; CHECK:    bl __atomic_compare_exchange1729    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 11730    %r = extractvalue { i32, i1 } %pair, 01731    ret i32 %r1732}1733 1734define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {1735; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic:1736; CHECK:    bl __atomic_compare_exchange1737    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 11738    %r = extractvalue { i32, i1 } %pair, 01739    ret i32 %r1740}1741 1742define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1743; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic_weak:1744; CHECK:    bl __atomic_compare_exchange1745    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 11746    %r = extractvalue { i32, i1 } %pair, 01747    ret i32 %r1748}1749 1750define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {1751; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire:1752; CHECK:    bl __atomic_compare_exchange1753    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 11754    %r = extractvalue { i32, i1 } %pair, 01755    ret i32 %r1756}1757 1758define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1759; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire_weak:1760; CHECK:    bl __atomic_compare_exchange1761    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 11762    %r = extractvalue { i32, i1 } %pair, 01763    ret i32 %r1764}1765 1766define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1767; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst:1768; CHECK:    bl __atomic_compare_exchange1769    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 11770    %r = extractvalue { i32, i1 } %pair, 01771    ret i32 %r1772}1773 1774define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1775; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst_weak:1776; CHECK:    bl __atomic_compare_exchange1777    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 11778    %r = extractvalue { i32, i1 } %pair, 01779    ret i32 %r1780}1781 1782define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {1783; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic:1784; CHECK:    bl __atomic_compare_exchange1785    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 11786    %r = extractvalue { i32, i1 } %pair, 01787    ret i32 %r1788}1789 1790define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1791; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic_weak:1792; CHECK:    bl __atomic_compare_exchange1793    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 11794    %r = extractvalue { i32, i1 } %pair, 01795    ret i32 %r1796}1797 1798define dso_local i32 @cmpxchg_i32_unaligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {1799; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire:1800; CHECK:    bl __atomic_compare_exchange1801    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 11802    %r = extractvalue { i32, i1 } %pair, 01803    ret i32 %r1804}1805 1806define dso_local i32 @cmpxchg_i32_unaligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1807; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire_weak:1808; CHECK:    bl __atomic_compare_exchange1809    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 11810    %r = extractvalue { i32, i1 } %pair, 01811    ret i32 %r1812}1813 1814define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1815; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst:1816; CHECK:    bl __atomic_compare_exchange1817    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 11818    %r = extractvalue { i32, i1 } %pair, 01819    ret i32 %r1820}1821 1822define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1823; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst_weak:1824; CHECK:    bl __atomic_compare_exchange1825    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 11826    %r = extractvalue { i32, i1 } %pair, 01827    ret i32 %r1828}1829 1830define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {1831; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic:1832; CHECK:    bl __atomic_compare_exchange1833    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 11834    %r = extractvalue { i32, i1 } %pair, 01835    ret i32 %r1836}1837 1838define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1839; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic_weak:1840; CHECK:    bl __atomic_compare_exchange1841    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 11842    %r = extractvalue { i32, i1 } %pair, 01843    ret i32 %r1844}1845 1846define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {1847; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire:1848; CHECK:    bl __atomic_compare_exchange1849    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 11850    %r = extractvalue { i32, i1 } %pair, 01851    ret i32 %r1852}1853 1854define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1855; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire_weak:1856; CHECK:    bl __atomic_compare_exchange1857    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 11858    %r = extractvalue { i32, i1 } %pair, 01859    ret i32 %r1860}1861 1862define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1863; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst:1864; CHECK:    bl __atomic_compare_exchange1865    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 11866    %r = extractvalue { i32, i1 } %pair, 01867    ret i32 %r1868}1869 1870define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1871; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst_weak:1872; CHECK:    bl __atomic_compare_exchange1873    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 11874    %r = extractvalue { i32, i1 } %pair, 01875    ret i32 %r1876}1877 1878define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {1879; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic:1880; CHECK:    bl __atomic_compare_exchange1881    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 11882    %r = extractvalue { i32, i1 } %pair, 01883    ret i32 %r1884}1885 1886define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1887; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic_weak:1888; CHECK:    bl __atomic_compare_exchange1889    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 11890    %r = extractvalue { i32, i1 } %pair, 01891    ret i32 %r1892}1893 1894define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {1895; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire:1896; CHECK:    bl __atomic_compare_exchange1897    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 11898    %r = extractvalue { i32, i1 } %pair, 01899    ret i32 %r1900}1901 1902define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1903; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire_weak:1904; CHECK:    bl __atomic_compare_exchange1905    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 11906    %r = extractvalue { i32, i1 } %pair, 01907    ret i32 %r1908}1909 1910define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1911; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst:1912; CHECK:    bl __atomic_compare_exchange1913    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 11914    %r = extractvalue { i32, i1 } %pair, 01915    ret i32 %r1916}1917 1918define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1919; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst_weak:1920; CHECK:    bl __atomic_compare_exchange1921    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 11922    %r = extractvalue { i32, i1 } %pair, 01923    ret i32 %r1924}1925 1926define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {1927; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic:1928; CHECK:    bl __atomic_compare_exchange1929    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 11930    %r = extractvalue { i64, i1 } %pair, 01931    ret i64 %r1932}1933 1934define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1935; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic_weak:1936; CHECK:    bl __atomic_compare_exchange1937    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 11938    %r = extractvalue { i64, i1 } %pair, 01939    ret i64 %r1940}1941 1942define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {1943; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire:1944; CHECK:    bl __atomic_compare_exchange1945    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 11946    %r = extractvalue { i64, i1 } %pair, 01947    ret i64 %r1948}1949 1950define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1951; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire_weak:1952; CHECK:    bl __atomic_compare_exchange1953    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 11954    %r = extractvalue { i64, i1 } %pair, 01955    ret i64 %r1956}1957 1958define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1959; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst:1960; CHECK:    bl __atomic_compare_exchange1961    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 11962    %r = extractvalue { i64, i1 } %pair, 01963    ret i64 %r1964}1965 1966define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1967; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst_weak:1968; CHECK:    bl __atomic_compare_exchange1969    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 11970    %r = extractvalue { i64, i1 } %pair, 01971    ret i64 %r1972}1973 1974define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {1975; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic:1976; CHECK:    bl __atomic_compare_exchange1977    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 11978    %r = extractvalue { i64, i1 } %pair, 01979    ret i64 %r1980}1981 1982define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1983; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic_weak:1984; CHECK:    bl __atomic_compare_exchange1985    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 11986    %r = extractvalue { i64, i1 } %pair, 01987    ret i64 %r1988}1989 1990define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {1991; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire:1992; CHECK:    bl __atomic_compare_exchange1993    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 11994    %r = extractvalue { i64, i1 } %pair, 01995    ret i64 %r1996}1997 1998define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1999; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire_weak:2000; CHECK:    bl __atomic_compare_exchange2001    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 12002    %r = extractvalue { i64, i1 } %pair, 02003    ret i64 %r2004}2005 2006define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2007; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst:2008; CHECK:    bl __atomic_compare_exchange2009    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 12010    %r = extractvalue { i64, i1 } %pair, 02011    ret i64 %r2012}2013 2014define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2015; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst_weak:2016; CHECK:    bl __atomic_compare_exchange2017    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 12018    %r = extractvalue { i64, i1 } %pair, 02019    ret i64 %r2020}2021 2022define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {2023; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic:2024; CHECK:    bl __atomic_compare_exchange2025    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 12026    %r = extractvalue { i64, i1 } %pair, 02027    ret i64 %r2028}2029 2030define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2031; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic_weak:2032; CHECK:    bl __atomic_compare_exchange2033    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 12034    %r = extractvalue { i64, i1 } %pair, 02035    ret i64 %r2036}2037 2038define dso_local i64 @cmpxchg_i64_unaligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {2039; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire:2040; CHECK:    bl __atomic_compare_exchange2041    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 12042    %r = extractvalue { i64, i1 } %pair, 02043    ret i64 %r2044}2045 2046define dso_local i64 @cmpxchg_i64_unaligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2047; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire_weak:2048; CHECK:    bl __atomic_compare_exchange2049    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 12050    %r = extractvalue { i64, i1 } %pair, 02051    ret i64 %r2052}2053 2054define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2055; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst:2056; CHECK:    bl __atomic_compare_exchange2057    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 12058    %r = extractvalue { i64, i1 } %pair, 02059    ret i64 %r2060}2061 2062define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2063; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst_weak:2064; CHECK:    bl __atomic_compare_exchange2065    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 12066    %r = extractvalue { i64, i1 } %pair, 02067    ret i64 %r2068}2069 2070define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {2071; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic:2072; CHECK:    bl __atomic_compare_exchange2073    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 12074    %r = extractvalue { i64, i1 } %pair, 02075    ret i64 %r2076}2077 2078define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2079; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic_weak:2080; CHECK:    bl __atomic_compare_exchange2081    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 12082    %r = extractvalue { i64, i1 } %pair, 02083    ret i64 %r2084}2085 2086define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {2087; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire:2088; CHECK:    bl __atomic_compare_exchange2089    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 12090    %r = extractvalue { i64, i1 } %pair, 02091    ret i64 %r2092}2093 2094define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2095; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire_weak:2096; CHECK:    bl __atomic_compare_exchange2097    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 12098    %r = extractvalue { i64, i1 } %pair, 02099    ret i64 %r2100}2101 2102define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2103; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst:2104; CHECK:    bl __atomic_compare_exchange2105    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 12106    %r = extractvalue { i64, i1 } %pair, 02107    ret i64 %r2108}2109 2110define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2111; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst_weak:2112; CHECK:    bl __atomic_compare_exchange2113    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 12114    %r = extractvalue { i64, i1 } %pair, 02115    ret i64 %r2116}2117 2118define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {2119; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic:2120; CHECK:    bl __atomic_compare_exchange2121    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 12122    %r = extractvalue { i64, i1 } %pair, 02123    ret i64 %r2124}2125 2126define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2127; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic_weak:2128; CHECK:    bl __atomic_compare_exchange2129    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 12130    %r = extractvalue { i64, i1 } %pair, 02131    ret i64 %r2132}2133 2134define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {2135; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire:2136; CHECK:    bl __atomic_compare_exchange2137    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 12138    %r = extractvalue { i64, i1 } %pair, 02139    ret i64 %r2140}2141 2142define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2143; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire_weak:2144; CHECK:    bl __atomic_compare_exchange2145    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 12146    %r = extractvalue { i64, i1 } %pair, 02147    ret i64 %r2148}2149 2150define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2151; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst:2152; CHECK:    bl __atomic_compare_exchange2153    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 12154    %r = extractvalue { i64, i1 } %pair, 02155    ret i64 %r2156}2157 2158define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2159; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst_weak:2160; CHECK:    bl __atomic_compare_exchange2161    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 12162    %r = extractvalue { i64, i1 } %pair, 02163    ret i64 %r2164}2165 2166define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {2167; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic:2168; CHECK:    bl __atomic_compare_exchange2169    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 12170    %r = extractvalue { i128, i1 } %pair, 02171    ret i128 %r2172}2173 2174define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2175; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic_weak:2176; CHECK:    bl __atomic_compare_exchange2177    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 12178    %r = extractvalue { i128, i1 } %pair, 02179    ret i128 %r2180}2181 2182define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {2183; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire:2184; CHECK:    bl __atomic_compare_exchange2185    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 12186    %r = extractvalue { i128, i1 } %pair, 02187    ret i128 %r2188}2189 2190define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2191; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire_weak:2192; CHECK:    bl __atomic_compare_exchange2193    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 12194    %r = extractvalue { i128, i1 } %pair, 02195    ret i128 %r2196}2197 2198define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2199; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst:2200; CHECK:    bl __atomic_compare_exchange2201    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 12202    %r = extractvalue { i128, i1 } %pair, 02203    ret i128 %r2204}2205 2206define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2207; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst_weak:2208; CHECK:    bl __atomic_compare_exchange2209    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 12210    %r = extractvalue { i128, i1 } %pair, 02211    ret i128 %r2212}2213 2214define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {2215; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic:2216; CHECK:    bl __atomic_compare_exchange2217    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 12218    %r = extractvalue { i128, i1 } %pair, 02219    ret i128 %r2220}2221 2222define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2223; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic_weak:2224; CHECK:    bl __atomic_compare_exchange2225    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 12226    %r = extractvalue { i128, i1 } %pair, 02227    ret i128 %r2228}2229 2230define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {2231; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire:2232; CHECK:    bl __atomic_compare_exchange2233    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 12234    %r = extractvalue { i128, i1 } %pair, 02235    ret i128 %r2236}2237 2238define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2239; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire_weak:2240; CHECK:    bl __atomic_compare_exchange2241    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 12242    %r = extractvalue { i128, i1 } %pair, 02243    ret i128 %r2244}2245 2246define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2247; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst:2248; CHECK:    bl __atomic_compare_exchange2249    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 12250    %r = extractvalue { i128, i1 } %pair, 02251    ret i128 %r2252}2253 2254define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2255; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst_weak:2256; CHECK:    bl __atomic_compare_exchange2257    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 12258    %r = extractvalue { i128, i1 } %pair, 02259    ret i128 %r2260}2261 2262define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {2263; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic:2264; CHECK:    bl __atomic_compare_exchange2265    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 12266    %r = extractvalue { i128, i1 } %pair, 02267    ret i128 %r2268}2269 2270define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2271; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic_weak:2272; CHECK:    bl __atomic_compare_exchange2273    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 12274    %r = extractvalue { i128, i1 } %pair, 02275    ret i128 %r2276}2277 2278define dso_local i128 @cmpxchg_i128_unaligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {2279; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire:2280; CHECK:    bl __atomic_compare_exchange2281    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 12282    %r = extractvalue { i128, i1 } %pair, 02283    ret i128 %r2284}2285 2286define dso_local i128 @cmpxchg_i128_unaligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2287; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire_weak:2288; CHECK:    bl __atomic_compare_exchange2289    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 12290    %r = extractvalue { i128, i1 } %pair, 02291    ret i128 %r2292}2293 2294define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2295; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst:2296; CHECK:    bl __atomic_compare_exchange2297    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 12298    %r = extractvalue { i128, i1 } %pair, 02299    ret i128 %r2300}2301 2302define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2303; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst_weak:2304; CHECK:    bl __atomic_compare_exchange2305    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 12306    %r = extractvalue { i128, i1 } %pair, 02307    ret i128 %r2308}2309 2310define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {2311; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic:2312; CHECK:    bl __atomic_compare_exchange2313    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 12314    %r = extractvalue { i128, i1 } %pair, 02315    ret i128 %r2316}2317 2318define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2319; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic_weak:2320; CHECK:    bl __atomic_compare_exchange2321    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 12322    %r = extractvalue { i128, i1 } %pair, 02323    ret i128 %r2324}2325 2326define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {2327; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire:2328; CHECK:    bl __atomic_compare_exchange2329    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 12330    %r = extractvalue { i128, i1 } %pair, 02331    ret i128 %r2332}2333 2334define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2335; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire_weak:2336; CHECK:    bl __atomic_compare_exchange2337    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 12338    %r = extractvalue { i128, i1 } %pair, 02339    ret i128 %r2340}2341 2342define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2343; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst:2344; CHECK:    bl __atomic_compare_exchange2345    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 12346    %r = extractvalue { i128, i1 } %pair, 02347    ret i128 %r2348}2349 2350define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2351; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst_weak:2352; CHECK:    bl __atomic_compare_exchange2353    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 12354    %r = extractvalue { i128, i1 } %pair, 02355    ret i128 %r2356}2357 2358define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {2359; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic:2360; CHECK:    bl __atomic_compare_exchange2361    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 12362    %r = extractvalue { i128, i1 } %pair, 02363    ret i128 %r2364}2365 2366define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2367; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic_weak:2368; CHECK:    bl __atomic_compare_exchange2369    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 12370    %r = extractvalue { i128, i1 } %pair, 02371    ret i128 %r2372}2373 2374define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {2375; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire:2376; CHECK:    bl __atomic_compare_exchange2377    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 12378    %r = extractvalue { i128, i1 } %pair, 02379    ret i128 %r2380}2381 2382define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2383; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire_weak:2384; CHECK:    bl __atomic_compare_exchange2385    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 12386    %r = extractvalue { i128, i1 } %pair, 02387    ret i128 %r2388}2389 2390define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2391; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst:2392; CHECK:    bl __atomic_compare_exchange2393    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 12394    %r = extractvalue { i128, i1 } %pair, 02395    ret i128 %r2396}2397 2398define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2399; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst_weak:2400; CHECK:    bl __atomic_compare_exchange2401    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 12402    %r = extractvalue { i128, i1 } %pair, 02403    ret i128 %r2404}2405;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:2406; -O0: {{.*}}2407; -O1: {{.*}}2408