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