brintos

brintos / llvm-project-archived public Read only

0
0
Text · 101.5 KiB · 8d303f7 Raw
2495 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=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -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:    casb w0, w1, [x2]9    %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:    casb w0, w1, [x2]17    %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:    casab w0, w1, [x2]25    %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:    casab w0, w1, [x2]33    %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:    casalb w0, w1, [x2]41    %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:    casalb w0, w1, [x2]49    %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:    casab w0, w1, [x2]57    %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:    casab w0, w1, [x2]65    %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:    casab w0, w1, [x2]73    %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:    casab w0, w1, [x2]81    %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:    casalb w0, w1, [x2]89    %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:    casalb w0, w1, [x2]97    %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:    caslb w0, w1, [x2]105    %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:    caslb w0, w1, [x2]113    %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:    casalb w0, w1, [x2]121    %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:    casalb w0, w1, [x2]129    %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:    casalb w0, w1, [x2]137    %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:    casalb w0, w1, [x2]145    %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:    casalb w0, w1, [x2]153    %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:    casalb w0, w1, [x2]161    %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:    casalb w0, w1, [x2]169    %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:    casalb w0, w1, [x2]177    %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:    casalb w0, w1, [x2]185    %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:    casalb w0, w1, [x2]193    %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:    casalb w0, w1, [x2]201    %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:    casalb w0, w1, [x2]209    %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:    casalb w0, w1, [x2]217    %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:    casalb w0, w1, [x2]225    %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:    casalb w0, w1, [x2]233    %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:    casalb w0, w1, [x2]241    %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:    cash w0, w1, [x2]249    %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:    cash w0, w1, [x2]257    %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:    casah w0, w1, [x2]265    %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:    casah w0, w1, [x2]273    %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:    casalh w0, w1, [x2]281    %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:    casalh w0, w1, [x2]289    %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:    casah w0, w1, [x2]297    %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:    casah w0, w1, [x2]305    %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:    casah w0, w1, [x2]313    %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:    casah w0, w1, [x2]321    %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:    casalh w0, w1, [x2]329    %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:    casalh w0, w1, [x2]337    %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:    caslh w0, w1, [x2]345    %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:    caslh w0, w1, [x2]353    %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:    casalh w0, w1, [x2]361    %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:    casalh w0, w1, [x2]369    %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:    casalh w0, w1, [x2]377    %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:    casalh w0, w1, [x2]385    %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:    casalh w0, w1, [x2]393    %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:    casalh w0, w1, [x2]401    %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:    casalh w0, w1, [x2]409    %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:    casalh w0, w1, [x2]417    %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:    casalh w0, w1, [x2]425    %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:    casalh w0, w1, [x2]433    %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:    casalh w0, w1, [x2]441    %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:    casalh w0, w1, [x2]449    %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:    casalh w0, w1, [x2]457    %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:    casalh w0, w1, [x2]465    %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:    casalh w0, w1, [x2]473    %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:    casalh w0, w1, [x2]481    %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:    cas w0, w1, [x2]489    %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:    cas w0, w1, [x2]497    %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:    casa w0, w1, [x2]505    %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:    casa w0, w1, [x2]513    %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:    casal w0, w1, [x2]521    %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:    casal w0, w1, [x2]529    %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:    casa w0, w1, [x2]537    %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:    casa w0, w1, [x2]545    %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:    casa w0, w1, [x2]553    %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:    casa w0, w1, [x2]561    %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:    casal w0, w1, [x2]569    %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:    casal w0, w1, [x2]577    %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:    casl w0, w1, [x2]585    %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:    casl w0, w1, [x2]593    %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:    casal w0, w1, [x2]601    %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:    casal w0, w1, [x2]609    %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:    casal w0, w1, [x2]617    %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:    casal w0, w1, [x2]625    %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:    casal w0, w1, [x2]633    %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:    casal w0, w1, [x2]641    %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:    casal w0, w1, [x2]649    %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:    casal w0, w1, [x2]657    %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:    casal w0, w1, [x2]665    %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:    casal w0, w1, [x2]673    %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:    casal w0, w1, [x2]681    %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:    casal w0, w1, [x2]689    %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:    casal w0, w1, [x2]697    %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:    casal w0, w1, [x2]705    %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:    casal w0, w1, [x2]713    %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:    casal w0, w1, [x2]721    %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:    cas x0, x1, [x2]729    %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:    cas x0, x1, [x2]737    %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:    casa x0, x1, [x2]745    %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:    casa x0, x1, [x2]753    %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:    casal x0, x1, [x2]761    %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:    casal x0, x1, [x2]769    %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:    casa x0, x1, [x2]777    %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:    casa x0, x1, [x2]785    %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:    casa x0, x1, [x2]793    %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:    casa x0, x1, [x2]801    %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:    casal x0, x1, [x2]809    %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:    casal x0, x1, [x2]817    %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:    casl x0, x1, [x2]825    %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:    casl x0, x1, [x2]833    %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:    casal x0, x1, [x2]841    %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:    casal x0, x1, [x2]849    %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:    casal x0, x1, [x2]857    %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:    casal x0, x1, [x2]865    %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:    casal x0, x1, [x2]873    %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:    casal x0, x1, [x2]881    %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:    casal x0, x1, [x2]889    %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:    casal x0, x1, [x2]897    %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:    casal x0, x1, [x2]905    %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:    casal x0, x1, [x2]913    %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:    casal x0, x1, [x2]921    %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:    casal x0, x1, [x2]929    %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:    casal x0, x1, [x2]937    %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:    casal x0, x1, [x2]945    %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:    casal x0, x1, [x2]953    %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:    casal x0, x1, [x2]961    %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; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:968; -O0:    casp x2, x3, x0, x1, [x4]969;970; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:971; -O1:    casp x0, x1, x2, x3, [x4]972    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16973    %r = extractvalue { i128, i1 } %pair, 0974    ret i128 %r975}976 977define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {978; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:979; -O0:    casp x2, x3, x0, x1, [x4]980;981; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:982; -O1:    casp x0, x1, x2, x3, [x4]983    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16984    %r = extractvalue { i128, i1 } %pair, 0985    ret i128 %r986}987 988define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {989; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire:990; -O0:    caspa x2, x3, x0, x1, [x4]991;992; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire:993; -O1:    caspa x0, x1, x2, x3, [x4]994    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 16995    %r = extractvalue { i128, i1 } %pair, 0996    ret i128 %r997}998 999define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1000; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:1001; -O0:    caspa x2, x3, x0, x1, [x4]1002;1003; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:1004; -O1:    caspa x0, x1, x2, x3, [x4]1005    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 161006    %r = extractvalue { i128, i1 } %pair, 01007    ret i128 %r1008}1009 1010define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1011; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:1012; -O0:    caspal x2, x3, x0, x1, [x4]1013;1014; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:1015; -O1:    caspal x0, x1, x2, x3, [x4]1016    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161017    %r = extractvalue { i128, i1 } %pair, 01018    ret i128 %r1019}1020 1021define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1022; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:1023; -O0:    caspal x2, x3, x0, x1, [x4]1024;1025; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:1026; -O1:    caspal x0, x1, x2, x3, [x4]1027    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161028    %r = extractvalue { i128, i1 } %pair, 01029    ret i128 %r1030}1031 1032define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {1033; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic:1034; -O0:    caspa x2, x3, x0, x1, [x4]1035;1036; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic:1037; -O1:    caspa x0, x1, x2, x3, [x4]1038    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161039    %r = extractvalue { i128, i1 } %pair, 01040    ret i128 %r1041}1042 1043define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1044; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:1045; -O0:    caspa x2, x3, x0, x1, [x4]1046;1047; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:1048; -O1:    caspa x0, x1, x2, x3, [x4]1049    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161050    %r = extractvalue { i128, i1 } %pair, 01051    ret i128 %r1052}1053 1054define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {1055; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire:1056; -O0:    caspa x2, x3, x0, x1, [x4]1057;1058; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire:1059; -O1:    caspa x0, x1, x2, x3, [x4]1060    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 161061    %r = extractvalue { i128, i1 } %pair, 01062    ret i128 %r1063}1064 1065define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1066; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:1067; -O0:    caspa x2, x3, x0, x1, [x4]1068;1069; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:1070; -O1:    caspa x0, x1, x2, x3, [x4]1071    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 161072    %r = extractvalue { i128, i1 } %pair, 01073    ret i128 %r1074}1075 1076define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1077; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:1078; -O0:    caspal x2, x3, x0, x1, [x4]1079;1080; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:1081; -O1:    caspal x0, x1, x2, x3, [x4]1082    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 161083    %r = extractvalue { i128, i1 } %pair, 01084    ret i128 %r1085}1086 1087define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1088; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:1089; -O0:    caspal x2, x3, x0, x1, [x4]1090;1091; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:1092; -O1:    caspal x0, x1, x2, x3, [x4]1093    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 161094    %r = extractvalue { i128, i1 } %pair, 01095    ret i128 %r1096}1097 1098define dso_local i128 @cmpxchg_i128_aligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {1099; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic:1100; -O0:    caspl x2, x3, x0, x1, [x4]1101;1102; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic:1103; -O1:    caspl x0, x1, x2, x3, [x4]1104    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 161105    %r = extractvalue { i128, i1 } %pair, 01106    ret i128 %r1107}1108 1109define dso_local i128 @cmpxchg_i128_aligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1110; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:1111; -O0:    caspl x2, x3, x0, x1, [x4]1112;1113; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:1114; -O1:    caspl x0, x1, x2, x3, [x4]1115    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 161116    %r = extractvalue { i128, i1 } %pair, 01117    ret i128 %r1118}1119 1120define dso_local i128 @cmpxchg_i128_aligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {1121; -O0-LABEL: cmpxchg_i128_aligned_release_acquire:1122; -O0:    caspal x2, x3, x0, x1, [x4]1123;1124; -O1-LABEL: cmpxchg_i128_aligned_release_acquire:1125; -O1:    caspal x0, x1, x2, x3, [x4]1126    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 161127    %r = extractvalue { i128, i1 } %pair, 01128    ret i128 %r1129}1130 1131define dso_local i128 @cmpxchg_i128_aligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1132; -O0-LABEL: cmpxchg_i128_aligned_release_acquire_weak:1133; -O0:    caspal x2, x3, x0, x1, [x4]1134;1135; -O1-LABEL: cmpxchg_i128_aligned_release_acquire_weak:1136; -O1:    caspal x0, x1, x2, x3, [x4]1137    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 161138    %r = extractvalue { i128, i1 } %pair, 01139    ret i128 %r1140}1141 1142define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1143; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst:1144; -O0:    caspal x2, x3, x0, x1, [x4]1145;1146; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst:1147; -O1:    caspal x0, x1, x2, x3, [x4]1148    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 161149    %r = extractvalue { i128, i1 } %pair, 01150    ret i128 %r1151}1152 1153define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1154; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:1155; -O0:    caspal x2, x3, x0, x1, [x4]1156;1157; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:1158; -O1:    caspal x0, x1, x2, x3, [x4]1159    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 161160    %r = extractvalue { i128, i1 } %pair, 01161    ret i128 %r1162}1163 1164define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {1165; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:1166; -O0:    caspal x2, x3, x0, x1, [x4]1167;1168; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:1169; -O1:    caspal x0, x1, x2, x3, [x4]1170    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 161171    %r = extractvalue { i128, i1 } %pair, 01172    ret i128 %r1173}1174 1175define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1176; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:1177; -O0:    caspal x2, x3, x0, x1, [x4]1178;1179; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:1180; -O1:    caspal x0, x1, x2, x3, [x4]1181    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 161182    %r = extractvalue { i128, i1 } %pair, 01183    ret i128 %r1184}1185 1186define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {1187; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:1188; -O0:    caspal x2, x3, x0, x1, [x4]1189;1190; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:1191; -O1:    caspal x0, x1, x2, x3, [x4]1192    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 161193    %r = extractvalue { i128, i1 } %pair, 01194    ret i128 %r1195}1196 1197define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1198; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:1199; -O0:    caspal x2, x3, x0, x1, [x4]1200;1201; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:1202; -O1:    caspal x0, x1, x2, x3, [x4]1203    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 161204    %r = extractvalue { i128, i1 } %pair, 01205    ret i128 %r1206}1207 1208define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1209; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:1210; -O0:    caspal x2, x3, x0, x1, [x4]1211;1212; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:1213; -O1:    caspal x0, x1, x2, x3, [x4]1214    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 161215    %r = extractvalue { i128, i1 } %pair, 01216    ret i128 %r1217}1218 1219define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1220; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:1221; -O0:    caspal x2, x3, x0, x1, [x4]1222;1223; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:1224; -O1:    caspal x0, x1, x2, x3, [x4]1225    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 161226    %r = extractvalue { i128, i1 } %pair, 01227    ret i128 %r1228}1229 1230define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {1231; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:1232; -O0:    caspal x2, x3, x0, x1, [x4]1233;1234; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:1235; -O1:    caspal x0, x1, x2, x3, [x4]1236    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 161237    %r = extractvalue { i128, i1 } %pair, 01238    ret i128 %r1239}1240 1241define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1242; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:1243; -O0:    caspal x2, x3, x0, x1, [x4]1244;1245; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:1246; -O1:    caspal x0, x1, x2, x3, [x4]1247    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 161248    %r = extractvalue { i128, i1 } %pair, 01249    ret i128 %r1250}1251 1252define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {1253; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:1254; -O0:    caspal x2, x3, x0, x1, [x4]1255;1256; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:1257; -O1:    caspal x0, x1, x2, x3, [x4]1258    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 161259    %r = extractvalue { i128, i1 } %pair, 01260    ret i128 %r1261}1262 1263define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1264; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:1265; -O0:    caspal x2, x3, x0, x1, [x4]1266;1267; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:1268; -O1:    caspal x0, x1, x2, x3, [x4]1269    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 161270    %r = extractvalue { i128, i1 } %pair, 01271    ret i128 %r1272}1273 1274define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1275; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:1276; -O0:    caspal x2, x3, x0, x1, [x4]1277;1278; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:1279; -O1:    caspal x0, x1, x2, x3, [x4]1280    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 161281    %r = extractvalue { i128, i1 } %pair, 01282    ret i128 %r1283}1284 1285define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1286; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:1287; -O0:    caspal x2, x3, x0, x1, [x4]1288;1289; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:1290; -O1:    caspal x0, x1, x2, x3, [x4]1291    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 161292    %r = extractvalue { i128, i1 } %pair, 01293    ret i128 %r1294}1295 1296define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {1297; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic:1298; CHECK:    casb w0, w1, [x2]1299    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 11300    %r = extractvalue { i8, i1 } %pair, 01301    ret i8 %r1302}1303 1304define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1305; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic_weak:1306; CHECK:    casb w0, w1, [x2]1307    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 11308    %r = extractvalue { i8, i1 } %pair, 01309    ret i8 %r1310}1311 1312define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {1313; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire:1314; CHECK:    casab w0, w1, [x2]1315    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 11316    %r = extractvalue { i8, i1 } %pair, 01317    ret i8 %r1318}1319 1320define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1321; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire_weak:1322; CHECK:    casab w0, w1, [x2]1323    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 11324    %r = extractvalue { i8, i1 } %pair, 01325    ret i8 %r1326}1327 1328define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1329; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst:1330; CHECK:    casalb w0, w1, [x2]1331    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 11332    %r = extractvalue { i8, i1 } %pair, 01333    ret i8 %r1334}1335 1336define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1337; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst_weak:1338; CHECK:    casalb w0, w1, [x2]1339    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 11340    %r = extractvalue { i8, i1 } %pair, 01341    ret i8 %r1342}1343 1344define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {1345; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic:1346; CHECK:    casab w0, w1, [x2]1347    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 11348    %r = extractvalue { i8, i1 } %pair, 01349    ret i8 %r1350}1351 1352define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1353; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic_weak:1354; CHECK:    casab w0, w1, [x2]1355    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 11356    %r = extractvalue { i8, i1 } %pair, 01357    ret i8 %r1358}1359 1360define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {1361; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire:1362; CHECK:    casab w0, w1, [x2]1363    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 11364    %r = extractvalue { i8, i1 } %pair, 01365    ret i8 %r1366}1367 1368define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1369; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire_weak:1370; CHECK:    casab w0, w1, [x2]1371    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 11372    %r = extractvalue { i8, i1 } %pair, 01373    ret i8 %r1374}1375 1376define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1377; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst:1378; CHECK:    casalb w0, w1, [x2]1379    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 11380    %r = extractvalue { i8, i1 } %pair, 01381    ret i8 %r1382}1383 1384define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1385; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst_weak:1386; CHECK:    casalb w0, w1, [x2]1387    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 11388    %r = extractvalue { i8, i1 } %pair, 01389    ret i8 %r1390}1391 1392define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {1393; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic:1394; CHECK:    caslb w0, w1, [x2]1395    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 11396    %r = extractvalue { i8, i1 } %pair, 01397    ret i8 %r1398}1399 1400define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1401; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic_weak:1402; CHECK:    caslb w0, w1, [x2]1403    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 11404    %r = extractvalue { i8, i1 } %pair, 01405    ret i8 %r1406}1407 1408define dso_local i8 @cmpxchg_i8_unaligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {1409; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire:1410; CHECK:    casalb w0, w1, [x2]1411    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 11412    %r = extractvalue { i8, i1 } %pair, 01413    ret i8 %r1414}1415 1416define dso_local i8 @cmpxchg_i8_unaligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1417; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire_weak:1418; CHECK:    casalb w0, w1, [x2]1419    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 11420    %r = extractvalue { i8, i1 } %pair, 01421    ret i8 %r1422}1423 1424define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1425; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst:1426; CHECK:    casalb w0, w1, [x2]1427    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 11428    %r = extractvalue { i8, i1 } %pair, 01429    ret i8 %r1430}1431 1432define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1433; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst_weak:1434; CHECK:    casalb w0, w1, [x2]1435    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 11436    %r = extractvalue { i8, i1 } %pair, 01437    ret i8 %r1438}1439 1440define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {1441; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic:1442; CHECK:    casalb w0, w1, [x2]1443    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 11444    %r = extractvalue { i8, i1 } %pair, 01445    ret i8 %r1446}1447 1448define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1449; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic_weak:1450; CHECK:    casalb w0, w1, [x2]1451    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 11452    %r = extractvalue { i8, i1 } %pair, 01453    ret i8 %r1454}1455 1456define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {1457; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire:1458; CHECK:    casalb w0, w1, [x2]1459    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 11460    %r = extractvalue { i8, i1 } %pair, 01461    ret i8 %r1462}1463 1464define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1465; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire_weak:1466; CHECK:    casalb w0, w1, [x2]1467    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 11468    %r = extractvalue { i8, i1 } %pair, 01469    ret i8 %r1470}1471 1472define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1473; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst:1474; CHECK:    casalb w0, w1, [x2]1475    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 11476    %r = extractvalue { i8, i1 } %pair, 01477    ret i8 %r1478}1479 1480define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1481; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst_weak:1482; CHECK:    casalb w0, w1, [x2]1483    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 11484    %r = extractvalue { i8, i1 } %pair, 01485    ret i8 %r1486}1487 1488define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {1489; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic:1490; CHECK:    casalb w0, w1, [x2]1491    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 11492    %r = extractvalue { i8, i1 } %pair, 01493    ret i8 %r1494}1495 1496define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {1497; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic_weak:1498; CHECK:    casalb w0, w1, [x2]1499    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 11500    %r = extractvalue { i8, i1 } %pair, 01501    ret i8 %r1502}1503 1504define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {1505; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire:1506; CHECK:    casalb w0, w1, [x2]1507    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 11508    %r = extractvalue { i8, i1 } %pair, 01509    ret i8 %r1510}1511 1512define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {1513; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire_weak:1514; CHECK:    casalb w0, w1, [x2]1515    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 11516    %r = extractvalue { i8, i1 } %pair, 01517    ret i8 %r1518}1519 1520define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {1521; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst:1522; CHECK:    casalb w0, w1, [x2]1523    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 11524    %r = extractvalue { i8, i1 } %pair, 01525    ret i8 %r1526}1527 1528define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {1529; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst_weak:1530; CHECK:    casalb w0, w1, [x2]1531    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 11532    %r = extractvalue { i8, i1 } %pair, 01533    ret i8 %r1534}1535 1536define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {1537; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic:1538; CHECK:    bl __atomic_compare_exchange1539    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 11540    %r = extractvalue { i16, i1 } %pair, 01541    ret i16 %r1542}1543 1544define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1545; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic_weak:1546; CHECK:    bl __atomic_compare_exchange1547    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 11548    %r = extractvalue { i16, i1 } %pair, 01549    ret i16 %r1550}1551 1552define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {1553; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire:1554; CHECK:    bl __atomic_compare_exchange1555    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 11556    %r = extractvalue { i16, i1 } %pair, 01557    ret i16 %r1558}1559 1560define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1561; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire_weak:1562; CHECK:    bl __atomic_compare_exchange1563    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 11564    %r = extractvalue { i16, i1 } %pair, 01565    ret i16 %r1566}1567 1568define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1569; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst:1570; CHECK:    bl __atomic_compare_exchange1571    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 11572    %r = extractvalue { i16, i1 } %pair, 01573    ret i16 %r1574}1575 1576define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1577; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst_weak:1578; CHECK:    bl __atomic_compare_exchange1579    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 11580    %r = extractvalue { i16, i1 } %pair, 01581    ret i16 %r1582}1583 1584define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {1585; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic:1586; CHECK:    bl __atomic_compare_exchange1587    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 11588    %r = extractvalue { i16, i1 } %pair, 01589    ret i16 %r1590}1591 1592define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1593; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic_weak:1594; CHECK:    bl __atomic_compare_exchange1595    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 11596    %r = extractvalue { i16, i1 } %pair, 01597    ret i16 %r1598}1599 1600define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {1601; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire:1602; CHECK:    bl __atomic_compare_exchange1603    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 11604    %r = extractvalue { i16, i1 } %pair, 01605    ret i16 %r1606}1607 1608define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1609; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire_weak:1610; CHECK:    bl __atomic_compare_exchange1611    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 11612    %r = extractvalue { i16, i1 } %pair, 01613    ret i16 %r1614}1615 1616define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1617; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst:1618; CHECK:    bl __atomic_compare_exchange1619    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 11620    %r = extractvalue { i16, i1 } %pair, 01621    ret i16 %r1622}1623 1624define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1625; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst_weak:1626; CHECK:    bl __atomic_compare_exchange1627    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 11628    %r = extractvalue { i16, i1 } %pair, 01629    ret i16 %r1630}1631 1632define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {1633; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic:1634; CHECK:    bl __atomic_compare_exchange1635    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 11636    %r = extractvalue { i16, i1 } %pair, 01637    ret i16 %r1638}1639 1640define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1641; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic_weak:1642; CHECK:    bl __atomic_compare_exchange1643    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 11644    %r = extractvalue { i16, i1 } %pair, 01645    ret i16 %r1646}1647 1648define dso_local i16 @cmpxchg_i16_unaligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {1649; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire:1650; CHECK:    bl __atomic_compare_exchange1651    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 11652    %r = extractvalue { i16, i1 } %pair, 01653    ret i16 %r1654}1655 1656define dso_local i16 @cmpxchg_i16_unaligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1657; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire_weak:1658; CHECK:    bl __atomic_compare_exchange1659    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 11660    %r = extractvalue { i16, i1 } %pair, 01661    ret i16 %r1662}1663 1664define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1665; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst:1666; CHECK:    bl __atomic_compare_exchange1667    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 11668    %r = extractvalue { i16, i1 } %pair, 01669    ret i16 %r1670}1671 1672define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1673; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst_weak:1674; CHECK:    bl __atomic_compare_exchange1675    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 11676    %r = extractvalue { i16, i1 } %pair, 01677    ret i16 %r1678}1679 1680define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {1681; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic:1682; CHECK:    bl __atomic_compare_exchange1683    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 11684    %r = extractvalue { i16, i1 } %pair, 01685    ret i16 %r1686}1687 1688define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1689; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic_weak:1690; CHECK:    bl __atomic_compare_exchange1691    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 11692    %r = extractvalue { i16, i1 } %pair, 01693    ret i16 %r1694}1695 1696define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {1697; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire:1698; CHECK:    bl __atomic_compare_exchange1699    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 11700    %r = extractvalue { i16, i1 } %pair, 01701    ret i16 %r1702}1703 1704define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1705; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire_weak:1706; CHECK:    bl __atomic_compare_exchange1707    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 11708    %r = extractvalue { i16, i1 } %pair, 01709    ret i16 %r1710}1711 1712define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1713; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst:1714; CHECK:    bl __atomic_compare_exchange1715    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 11716    %r = extractvalue { i16, i1 } %pair, 01717    ret i16 %r1718}1719 1720define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1721; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst_weak:1722; CHECK:    bl __atomic_compare_exchange1723    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 11724    %r = extractvalue { i16, i1 } %pair, 01725    ret i16 %r1726}1727 1728define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {1729; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic:1730; CHECK:    bl __atomic_compare_exchange1731    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 11732    %r = extractvalue { i16, i1 } %pair, 01733    ret i16 %r1734}1735 1736define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {1737; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic_weak:1738; CHECK:    bl __atomic_compare_exchange1739    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 11740    %r = extractvalue { i16, i1 } %pair, 01741    ret i16 %r1742}1743 1744define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {1745; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire:1746; CHECK:    bl __atomic_compare_exchange1747    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 11748    %r = extractvalue { i16, i1 } %pair, 01749    ret i16 %r1750}1751 1752define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {1753; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire_weak:1754; CHECK:    bl __atomic_compare_exchange1755    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 11756    %r = extractvalue { i16, i1 } %pair, 01757    ret i16 %r1758}1759 1760define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {1761; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst:1762; CHECK:    bl __atomic_compare_exchange1763    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 11764    %r = extractvalue { i16, i1 } %pair, 01765    ret i16 %r1766}1767 1768define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {1769; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst_weak:1770; CHECK:    bl __atomic_compare_exchange1771    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 11772    %r = extractvalue { i16, i1 } %pair, 01773    ret i16 %r1774}1775 1776define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {1777; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic:1778; CHECK:    bl __atomic_compare_exchange1779    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 11780    %r = extractvalue { i32, i1 } %pair, 01781    ret i32 %r1782}1783 1784define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1785; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic_weak:1786; CHECK:    bl __atomic_compare_exchange1787    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 11788    %r = extractvalue { i32, i1 } %pair, 01789    ret i32 %r1790}1791 1792define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {1793; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire:1794; CHECK:    bl __atomic_compare_exchange1795    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 11796    %r = extractvalue { i32, i1 } %pair, 01797    ret i32 %r1798}1799 1800define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1801; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire_weak:1802; CHECK:    bl __atomic_compare_exchange1803    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 11804    %r = extractvalue { i32, i1 } %pair, 01805    ret i32 %r1806}1807 1808define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1809; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst:1810; CHECK:    bl __atomic_compare_exchange1811    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 11812    %r = extractvalue { i32, i1 } %pair, 01813    ret i32 %r1814}1815 1816define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1817; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst_weak:1818; CHECK:    bl __atomic_compare_exchange1819    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 11820    %r = extractvalue { i32, i1 } %pair, 01821    ret i32 %r1822}1823 1824define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {1825; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic:1826; CHECK:    bl __atomic_compare_exchange1827    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 11828    %r = extractvalue { i32, i1 } %pair, 01829    ret i32 %r1830}1831 1832define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1833; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic_weak:1834; CHECK:    bl __atomic_compare_exchange1835    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 11836    %r = extractvalue { i32, i1 } %pair, 01837    ret i32 %r1838}1839 1840define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {1841; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire:1842; CHECK:    bl __atomic_compare_exchange1843    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 11844    %r = extractvalue { i32, i1 } %pair, 01845    ret i32 %r1846}1847 1848define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1849; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire_weak:1850; CHECK:    bl __atomic_compare_exchange1851    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 11852    %r = extractvalue { i32, i1 } %pair, 01853    ret i32 %r1854}1855 1856define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1857; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst:1858; CHECK:    bl __atomic_compare_exchange1859    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 11860    %r = extractvalue { i32, i1 } %pair, 01861    ret i32 %r1862}1863 1864define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1865; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst_weak:1866; CHECK:    bl __atomic_compare_exchange1867    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 11868    %r = extractvalue { i32, i1 } %pair, 01869    ret i32 %r1870}1871 1872define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {1873; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic:1874; CHECK:    bl __atomic_compare_exchange1875    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 11876    %r = extractvalue { i32, i1 } %pair, 01877    ret i32 %r1878}1879 1880define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1881; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic_weak:1882; CHECK:    bl __atomic_compare_exchange1883    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 11884    %r = extractvalue { i32, i1 } %pair, 01885    ret i32 %r1886}1887 1888define dso_local i32 @cmpxchg_i32_unaligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {1889; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire:1890; CHECK:    bl __atomic_compare_exchange1891    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 11892    %r = extractvalue { i32, i1 } %pair, 01893    ret i32 %r1894}1895 1896define dso_local i32 @cmpxchg_i32_unaligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1897; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire_weak:1898; CHECK:    bl __atomic_compare_exchange1899    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 11900    %r = extractvalue { i32, i1 } %pair, 01901    ret i32 %r1902}1903 1904define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1905; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst:1906; CHECK:    bl __atomic_compare_exchange1907    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 11908    %r = extractvalue { i32, i1 } %pair, 01909    ret i32 %r1910}1911 1912define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1913; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst_weak:1914; CHECK:    bl __atomic_compare_exchange1915    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 11916    %r = extractvalue { i32, i1 } %pair, 01917    ret i32 %r1918}1919 1920define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {1921; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic:1922; CHECK:    bl __atomic_compare_exchange1923    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 11924    %r = extractvalue { i32, i1 } %pair, 01925    ret i32 %r1926}1927 1928define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1929; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic_weak:1930; CHECK:    bl __atomic_compare_exchange1931    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 11932    %r = extractvalue { i32, i1 } %pair, 01933    ret i32 %r1934}1935 1936define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {1937; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire:1938; CHECK:    bl __atomic_compare_exchange1939    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 11940    %r = extractvalue { i32, i1 } %pair, 01941    ret i32 %r1942}1943 1944define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1945; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire_weak:1946; CHECK:    bl __atomic_compare_exchange1947    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 11948    %r = extractvalue { i32, i1 } %pair, 01949    ret i32 %r1950}1951 1952define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1953; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst:1954; CHECK:    bl __atomic_compare_exchange1955    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 11956    %r = extractvalue { i32, i1 } %pair, 01957    ret i32 %r1958}1959 1960define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1961; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst_weak:1962; CHECK:    bl __atomic_compare_exchange1963    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 11964    %r = extractvalue { i32, i1 } %pair, 01965    ret i32 %r1966}1967 1968define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {1969; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic:1970; CHECK:    bl __atomic_compare_exchange1971    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 11972    %r = extractvalue { i32, i1 } %pair, 01973    ret i32 %r1974}1975 1976define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1977; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic_weak:1978; CHECK:    bl __atomic_compare_exchange1979    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 11980    %r = extractvalue { i32, i1 } %pair, 01981    ret i32 %r1982}1983 1984define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {1985; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire:1986; CHECK:    bl __atomic_compare_exchange1987    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 11988    %r = extractvalue { i32, i1 } %pair, 01989    ret i32 %r1990}1991 1992define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1993; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire_weak:1994; CHECK:    bl __atomic_compare_exchange1995    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 11996    %r = extractvalue { i32, i1 } %pair, 01997    ret i32 %r1998}1999 2000define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {2001; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst:2002; CHECK:    bl __atomic_compare_exchange2003    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 12004    %r = extractvalue { i32, i1 } %pair, 02005    ret i32 %r2006}2007 2008define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {2009; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst_weak:2010; CHECK:    bl __atomic_compare_exchange2011    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 12012    %r = extractvalue { i32, i1 } %pair, 02013    ret i32 %r2014}2015 2016define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {2017; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic:2018; CHECK:    bl __atomic_compare_exchange2019    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 12020    %r = extractvalue { i64, i1 } %pair, 02021    ret i64 %r2022}2023 2024define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2025; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic_weak:2026; CHECK:    bl __atomic_compare_exchange2027    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 12028    %r = extractvalue { i64, i1 } %pair, 02029    ret i64 %r2030}2031 2032define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {2033; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire:2034; CHECK:    bl __atomic_compare_exchange2035    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 12036    %r = extractvalue { i64, i1 } %pair, 02037    ret i64 %r2038}2039 2040define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2041; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire_weak:2042; CHECK:    bl __atomic_compare_exchange2043    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 12044    %r = extractvalue { i64, i1 } %pair, 02045    ret i64 %r2046}2047 2048define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2049; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst:2050; CHECK:    bl __atomic_compare_exchange2051    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 12052    %r = extractvalue { i64, i1 } %pair, 02053    ret i64 %r2054}2055 2056define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2057; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst_weak:2058; CHECK:    bl __atomic_compare_exchange2059    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 12060    %r = extractvalue { i64, i1 } %pair, 02061    ret i64 %r2062}2063 2064define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {2065; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic:2066; CHECK:    bl __atomic_compare_exchange2067    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 12068    %r = extractvalue { i64, i1 } %pair, 02069    ret i64 %r2070}2071 2072define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2073; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic_weak:2074; CHECK:    bl __atomic_compare_exchange2075    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 12076    %r = extractvalue { i64, i1 } %pair, 02077    ret i64 %r2078}2079 2080define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {2081; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire:2082; CHECK:    bl __atomic_compare_exchange2083    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 12084    %r = extractvalue { i64, i1 } %pair, 02085    ret i64 %r2086}2087 2088define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2089; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire_weak:2090; CHECK:    bl __atomic_compare_exchange2091    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 12092    %r = extractvalue { i64, i1 } %pair, 02093    ret i64 %r2094}2095 2096define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2097; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst:2098; CHECK:    bl __atomic_compare_exchange2099    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 12100    %r = extractvalue { i64, i1 } %pair, 02101    ret i64 %r2102}2103 2104define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2105; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst_weak:2106; CHECK:    bl __atomic_compare_exchange2107    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 12108    %r = extractvalue { i64, i1 } %pair, 02109    ret i64 %r2110}2111 2112define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {2113; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic:2114; CHECK:    bl __atomic_compare_exchange2115    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 12116    %r = extractvalue { i64, i1 } %pair, 02117    ret i64 %r2118}2119 2120define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2121; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic_weak:2122; CHECK:    bl __atomic_compare_exchange2123    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 12124    %r = extractvalue { i64, i1 } %pair, 02125    ret i64 %r2126}2127 2128define dso_local i64 @cmpxchg_i64_unaligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {2129; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire:2130; CHECK:    bl __atomic_compare_exchange2131    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 12132    %r = extractvalue { i64, i1 } %pair, 02133    ret i64 %r2134}2135 2136define dso_local i64 @cmpxchg_i64_unaligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2137; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire_weak:2138; CHECK:    bl __atomic_compare_exchange2139    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 12140    %r = extractvalue { i64, i1 } %pair, 02141    ret i64 %r2142}2143 2144define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2145; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst:2146; CHECK:    bl __atomic_compare_exchange2147    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 12148    %r = extractvalue { i64, i1 } %pair, 02149    ret i64 %r2150}2151 2152define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2153; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst_weak:2154; CHECK:    bl __atomic_compare_exchange2155    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 12156    %r = extractvalue { i64, i1 } %pair, 02157    ret i64 %r2158}2159 2160define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {2161; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic:2162; CHECK:    bl __atomic_compare_exchange2163    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 12164    %r = extractvalue { i64, i1 } %pair, 02165    ret i64 %r2166}2167 2168define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2169; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic_weak:2170; CHECK:    bl __atomic_compare_exchange2171    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 12172    %r = extractvalue { i64, i1 } %pair, 02173    ret i64 %r2174}2175 2176define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {2177; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire:2178; CHECK:    bl __atomic_compare_exchange2179    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 12180    %r = extractvalue { i64, i1 } %pair, 02181    ret i64 %r2182}2183 2184define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2185; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire_weak:2186; CHECK:    bl __atomic_compare_exchange2187    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 12188    %r = extractvalue { i64, i1 } %pair, 02189    ret i64 %r2190}2191 2192define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2193; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst:2194; CHECK:    bl __atomic_compare_exchange2195    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 12196    %r = extractvalue { i64, i1 } %pair, 02197    ret i64 %r2198}2199 2200define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2201; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst_weak:2202; CHECK:    bl __atomic_compare_exchange2203    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 12204    %r = extractvalue { i64, i1 } %pair, 02205    ret i64 %r2206}2207 2208define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {2209; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic:2210; CHECK:    bl __atomic_compare_exchange2211    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 12212    %r = extractvalue { i64, i1 } %pair, 02213    ret i64 %r2214}2215 2216define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {2217; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic_weak:2218; CHECK:    bl __atomic_compare_exchange2219    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 12220    %r = extractvalue { i64, i1 } %pair, 02221    ret i64 %r2222}2223 2224define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {2225; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire:2226; CHECK:    bl __atomic_compare_exchange2227    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 12228    %r = extractvalue { i64, i1 } %pair, 02229    ret i64 %r2230}2231 2232define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {2233; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire_weak:2234; CHECK:    bl __atomic_compare_exchange2235    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 12236    %r = extractvalue { i64, i1 } %pair, 02237    ret i64 %r2238}2239 2240define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {2241; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst:2242; CHECK:    bl __atomic_compare_exchange2243    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 12244    %r = extractvalue { i64, i1 } %pair, 02245    ret i64 %r2246}2247 2248define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {2249; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst_weak:2250; CHECK:    bl __atomic_compare_exchange2251    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 12252    %r = extractvalue { i64, i1 } %pair, 02253    ret i64 %r2254}2255 2256define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {2257; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic:2258; CHECK:    bl __atomic_compare_exchange2259    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 12260    %r = extractvalue { i128, i1 } %pair, 02261    ret i128 %r2262}2263 2264define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2265; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic_weak:2266; CHECK:    bl __atomic_compare_exchange2267    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 12268    %r = extractvalue { i128, i1 } %pair, 02269    ret i128 %r2270}2271 2272define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {2273; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire:2274; CHECK:    bl __atomic_compare_exchange2275    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 12276    %r = extractvalue { i128, i1 } %pair, 02277    ret i128 %r2278}2279 2280define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2281; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire_weak:2282; CHECK:    bl __atomic_compare_exchange2283    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 12284    %r = extractvalue { i128, i1 } %pair, 02285    ret i128 %r2286}2287 2288define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2289; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst:2290; CHECK:    bl __atomic_compare_exchange2291    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 12292    %r = extractvalue { i128, i1 } %pair, 02293    ret i128 %r2294}2295 2296define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2297; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst_weak:2298; CHECK:    bl __atomic_compare_exchange2299    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 12300    %r = extractvalue { i128, i1 } %pair, 02301    ret i128 %r2302}2303 2304define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {2305; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic:2306; CHECK:    bl __atomic_compare_exchange2307    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 12308    %r = extractvalue { i128, i1 } %pair, 02309    ret i128 %r2310}2311 2312define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2313; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic_weak:2314; CHECK:    bl __atomic_compare_exchange2315    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 12316    %r = extractvalue { i128, i1 } %pair, 02317    ret i128 %r2318}2319 2320define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {2321; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire:2322; CHECK:    bl __atomic_compare_exchange2323    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 12324    %r = extractvalue { i128, i1 } %pair, 02325    ret i128 %r2326}2327 2328define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2329; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire_weak:2330; CHECK:    bl __atomic_compare_exchange2331    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 12332    %r = extractvalue { i128, i1 } %pair, 02333    ret i128 %r2334}2335 2336define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2337; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst:2338; CHECK:    bl __atomic_compare_exchange2339    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 12340    %r = extractvalue { i128, i1 } %pair, 02341    ret i128 %r2342}2343 2344define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2345; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst_weak:2346; CHECK:    bl __atomic_compare_exchange2347    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 12348    %r = extractvalue { i128, i1 } %pair, 02349    ret i128 %r2350}2351 2352define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {2353; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic:2354; CHECK:    bl __atomic_compare_exchange2355    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 12356    %r = extractvalue { i128, i1 } %pair, 02357    ret i128 %r2358}2359 2360define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2361; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic_weak:2362; CHECK:    bl __atomic_compare_exchange2363    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 12364    %r = extractvalue { i128, i1 } %pair, 02365    ret i128 %r2366}2367 2368define dso_local i128 @cmpxchg_i128_unaligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {2369; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire:2370; CHECK:    bl __atomic_compare_exchange2371    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 12372    %r = extractvalue { i128, i1 } %pair, 02373    ret i128 %r2374}2375 2376define dso_local i128 @cmpxchg_i128_unaligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2377; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire_weak:2378; CHECK:    bl __atomic_compare_exchange2379    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 12380    %r = extractvalue { i128, i1 } %pair, 02381    ret i128 %r2382}2383 2384define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2385; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst:2386; CHECK:    bl __atomic_compare_exchange2387    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 12388    %r = extractvalue { i128, i1 } %pair, 02389    ret i128 %r2390}2391 2392define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2393; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst_weak:2394; CHECK:    bl __atomic_compare_exchange2395    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 12396    %r = extractvalue { i128, i1 } %pair, 02397    ret i128 %r2398}2399 2400define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {2401; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic:2402; CHECK:    bl __atomic_compare_exchange2403    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 12404    %r = extractvalue { i128, i1 } %pair, 02405    ret i128 %r2406}2407 2408define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2409; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic_weak:2410; CHECK:    bl __atomic_compare_exchange2411    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 12412    %r = extractvalue { i128, i1 } %pair, 02413    ret i128 %r2414}2415 2416define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {2417; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire:2418; CHECK:    bl __atomic_compare_exchange2419    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 12420    %r = extractvalue { i128, i1 } %pair, 02421    ret i128 %r2422}2423 2424define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2425; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire_weak:2426; CHECK:    bl __atomic_compare_exchange2427    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 12428    %r = extractvalue { i128, i1 } %pair, 02429    ret i128 %r2430}2431 2432define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2433; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst:2434; CHECK:    bl __atomic_compare_exchange2435    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 12436    %r = extractvalue { i128, i1 } %pair, 02437    ret i128 %r2438}2439 2440define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2441; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst_weak:2442; CHECK:    bl __atomic_compare_exchange2443    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 12444    %r = extractvalue { i128, i1 } %pair, 02445    ret i128 %r2446}2447 2448define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {2449; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic:2450; CHECK:    bl __atomic_compare_exchange2451    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 12452    %r = extractvalue { i128, i1 } %pair, 02453    ret i128 %r2454}2455 2456define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2457; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic_weak:2458; CHECK:    bl __atomic_compare_exchange2459    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 12460    %r = extractvalue { i128, i1 } %pair, 02461    ret i128 %r2462}2463 2464define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {2465; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire:2466; CHECK:    bl __atomic_compare_exchange2467    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 12468    %r = extractvalue { i128, i1 } %pair, 02469    ret i128 %r2470}2471 2472define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2473; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire_weak:2474; CHECK:    bl __atomic_compare_exchange2475    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 12476    %r = extractvalue { i128, i1 } %pair, 02477    ret i128 %r2478}2479 2480define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2481; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst:2482; CHECK:    bl __atomic_compare_exchange2483    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 12484    %r = extractvalue { i128, i1 } %pair, 02485    ret i128 %r2486}2487 2488define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2489; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst_weak:2490; CHECK:    bl __atomic_compare_exchange2491    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 12492    %r = extractvalue { i128, i1 } %pair, 02493    ret i128 %r2494}2495