brintos

brintos / llvm-project-archived public Read only

0
0
Text · 135.1 KiB · a2b9950 Raw
3830 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=+lse2,+rcpc3 -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+lse2,+rcpc3 -O1 | FileCheck %s --check-prefixes=CHECK,-O15 6define dso_local i8 @cmpxchg_i8_aligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {7; -O0-LABEL: cmpxchg_i8_aligned_monotonic_monotonic:8; -O0:    ldaxrb w0, [x2]9; -O0:    cmp w0, w9, uxtb10; -O0:    stlxrb w8, w1, [x2]11;12; -O1-LABEL: cmpxchg_i8_aligned_monotonic_monotonic:13; -O1:    and w8, w0, #0xff14; -O1:    ldxrb w0, [x2]15; -O1:    cmp w0, w816; -O1:    stxrb w9, w1, [x2]17    %pair = cmpxchg 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_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {23; -O0-LABEL: cmpxchg_i8_aligned_monotonic_monotonic_weak:24; -O0:    ldaxrb w0, [x2]25; -O0:    cmp w0, w9, uxtb26; -O0:    stlxrb w8, w1, [x2]27;28; -O1-LABEL: cmpxchg_i8_aligned_monotonic_monotonic_weak:29; -O1:    ldxrb w8, [x2]30; -O1:    cmp w8, w0, uxtb31; -O1:    stxrb wzr, w1, [x2]32    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 133    %r = extractvalue { i8, i1 } %pair, 034    ret i8 %r35}36 37define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {38; -O0-LABEL: cmpxchg_i8_aligned_monotonic_acquire:39; -O0:    ldaxrb w0, [x2]40; -O0:    cmp w0, w9, uxtb41; -O0:    stlxrb w8, w1, [x2]42;43; -O1-LABEL: cmpxchg_i8_aligned_monotonic_acquire:44; -O1:    and w8, w0, #0xff45; -O1:    ldaxrb w0, [x2]46; -O1:    cmp w0, w847; -O1:    stxrb w9, w1, [x2]48    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 149    %r = extractvalue { i8, i1 } %pair, 050    ret i8 %r51}52 53define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {54; -O0-LABEL: cmpxchg_i8_aligned_monotonic_acquire_weak:55; -O0:    ldaxrb w0, [x2]56; -O0:    cmp w0, w9, uxtb57; -O0:    stlxrb w8, w1, [x2]58;59; -O1-LABEL: cmpxchg_i8_aligned_monotonic_acquire_weak:60; -O1:    ldaxrb w8, [x2]61; -O1:    cmp w8, w0, uxtb62; -O1:    stxrb wzr, w1, [x2]63    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 164    %r = extractvalue { i8, i1 } %pair, 065    ret i8 %r66}67 68define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {69; -O0-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst:70; -O0:    ldaxrb w0, [x2]71; -O0:    cmp w0, w9, uxtb72; -O0:    stlxrb w8, w1, [x2]73;74; -O1-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst:75; -O1:    and w8, w0, #0xff76; -O1:    ldaxrb w0, [x2]77; -O1:    cmp w0, w878; -O1:    stlxrb w9, w1, [x2]79    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 180    %r = extractvalue { i8, i1 } %pair, 081    ret i8 %r82}83 84define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {85; -O0-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst_weak:86; -O0:    ldaxrb w0, [x2]87; -O0:    cmp w0, w9, uxtb88; -O0:    stlxrb w8, w1, [x2]89;90; -O1-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst_weak:91; -O1:    ldaxrb w8, [x2]92; -O1:    cmp w8, w0, uxtb93; -O1:    stlxrb wzr, w1, [x2]94    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 195    %r = extractvalue { i8, i1 } %pair, 096    ret i8 %r97}98 99define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {100; -O0-LABEL: cmpxchg_i8_aligned_acquire_monotonic:101; -O0:    ldaxrb w0, [x2]102; -O0:    cmp w0, w9, uxtb103; -O0:    stlxrb w8, w1, [x2]104;105; -O1-LABEL: cmpxchg_i8_aligned_acquire_monotonic:106; -O1:    and w8, w0, #0xff107; -O1:    ldaxrb w0, [x2]108; -O1:    cmp w0, w8109; -O1:    stxrb w9, w1, [x2]110    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1111    %r = extractvalue { i8, i1 } %pair, 0112    ret i8 %r113}114 115define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {116; -O0-LABEL: cmpxchg_i8_aligned_acquire_monotonic_weak:117; -O0:    ldaxrb w0, [x2]118; -O0:    cmp w0, w9, uxtb119; -O0:    stlxrb w8, w1, [x2]120;121; -O1-LABEL: cmpxchg_i8_aligned_acquire_monotonic_weak:122; -O1:    ldaxrb w8, [x2]123; -O1:    cmp w8, w0, uxtb124; -O1:    stxrb wzr, w1, [x2]125    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1126    %r = extractvalue { i8, i1 } %pair, 0127    ret i8 %r128}129 130define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {131; -O0-LABEL: cmpxchg_i8_aligned_acquire_acquire:132; -O0:    ldaxrb w0, [x2]133; -O0:    cmp w0, w9, uxtb134; -O0:    stlxrb w8, w1, [x2]135;136; -O1-LABEL: cmpxchg_i8_aligned_acquire_acquire:137; -O1:    and w8, w0, #0xff138; -O1:    ldaxrb w0, [x2]139; -O1:    cmp w0, w8140; -O1:    stxrb w9, w1, [x2]141    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1142    %r = extractvalue { i8, i1 } %pair, 0143    ret i8 %r144}145 146define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {147; -O0-LABEL: cmpxchg_i8_aligned_acquire_acquire_weak:148; -O0:    ldaxrb w0, [x2]149; -O0:    cmp w0, w9, uxtb150; -O0:    stlxrb w8, w1, [x2]151;152; -O1-LABEL: cmpxchg_i8_aligned_acquire_acquire_weak:153; -O1:    ldaxrb w8, [x2]154; -O1:    cmp w8, w0, uxtb155; -O1:    stxrb wzr, w1, [x2]156    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1157    %r = extractvalue { i8, i1 } %pair, 0158    ret i8 %r159}160 161define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {162; -O0-LABEL: cmpxchg_i8_aligned_acquire_seq_cst:163; -O0:    ldaxrb w0, [x2]164; -O0:    cmp w0, w9, uxtb165; -O0:    stlxrb w8, w1, [x2]166;167; -O1-LABEL: cmpxchg_i8_aligned_acquire_seq_cst:168; -O1:    and w8, w0, #0xff169; -O1:    ldaxrb w0, [x2]170; -O1:    cmp w0, w8171; -O1:    stlxrb w9, w1, [x2]172    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1173    %r = extractvalue { i8, i1 } %pair, 0174    ret i8 %r175}176 177define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {178; -O0-LABEL: cmpxchg_i8_aligned_acquire_seq_cst_weak:179; -O0:    ldaxrb w0, [x2]180; -O0:    cmp w0, w9, uxtb181; -O0:    stlxrb w8, w1, [x2]182;183; -O1-LABEL: cmpxchg_i8_aligned_acquire_seq_cst_weak:184; -O1:    ldaxrb w8, [x2]185; -O1:    cmp w8, w0, uxtb186; -O1:    stlxrb wzr, w1, [x2]187    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1188    %r = extractvalue { i8, i1 } %pair, 0189    ret i8 %r190}191 192define dso_local i8 @cmpxchg_i8_aligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {193; -O0-LABEL: cmpxchg_i8_aligned_release_monotonic:194; -O0:    ldaxrb w0, [x2]195; -O0:    cmp w0, w9, uxtb196; -O0:    stlxrb w8, w1, [x2]197;198; -O1-LABEL: cmpxchg_i8_aligned_release_monotonic:199; -O1:    and w8, w0, #0xff200; -O1:    ldxrb w0, [x2]201; -O1:    cmp w0, w8202; -O1:    stlxrb w9, w1, [x2]203    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 1204    %r = extractvalue { i8, i1 } %pair, 0205    ret i8 %r206}207 208define dso_local i8 @cmpxchg_i8_aligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {209; -O0-LABEL: cmpxchg_i8_aligned_release_monotonic_weak:210; -O0:    ldaxrb w0, [x2]211; -O0:    cmp w0, w9, uxtb212; -O0:    stlxrb w8, w1, [x2]213;214; -O1-LABEL: cmpxchg_i8_aligned_release_monotonic_weak:215; -O1:    ldxrb w8, [x2]216; -O1:    cmp w8, w0, uxtb217; -O1:    stlxrb wzr, w1, [x2]218    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 1219    %r = extractvalue { i8, i1 } %pair, 0220    ret i8 %r221}222 223define dso_local i8 @cmpxchg_i8_aligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {224; -O0-LABEL: cmpxchg_i8_aligned_release_acquire:225; -O0:    ldaxrb w0, [x2]226; -O0:    cmp w0, w9, uxtb227; -O0:    stlxrb w8, w1, [x2]228;229; -O1-LABEL: cmpxchg_i8_aligned_release_acquire:230; -O1:    and w8, w0, #0xff231; -O1:    ldaxrb w0, [x2]232; -O1:    cmp w0, w8233; -O1:    stlxrb w9, w1, [x2]234    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 1235    %r = extractvalue { i8, i1 } %pair, 0236    ret i8 %r237}238 239define dso_local i8 @cmpxchg_i8_aligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {240; -O0-LABEL: cmpxchg_i8_aligned_release_acquire_weak:241; -O0:    ldaxrb w0, [x2]242; -O0:    cmp w0, w9, uxtb243; -O0:    stlxrb w8, w1, [x2]244;245; -O1-LABEL: cmpxchg_i8_aligned_release_acquire_weak:246; -O1:    ldaxrb w8, [x2]247; -O1:    cmp w8, w0, uxtb248; -O1:    stlxrb wzr, w1, [x2]249    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 1250    %r = extractvalue { i8, i1 } %pair, 0251    ret i8 %r252}253 254define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {255; -O0-LABEL: cmpxchg_i8_aligned_release_seq_cst:256; -O0:    ldaxrb w0, [x2]257; -O0:    cmp w0, w9, uxtb258; -O0:    stlxrb w8, w1, [x2]259;260; -O1-LABEL: cmpxchg_i8_aligned_release_seq_cst:261; -O1:    and w8, w0, #0xff262; -O1:    ldaxrb w0, [x2]263; -O1:    cmp w0, w8264; -O1:    stlxrb w9, w1, [x2]265    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1266    %r = extractvalue { i8, i1 } %pair, 0267    ret i8 %r268}269 270define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {271; -O0-LABEL: cmpxchg_i8_aligned_release_seq_cst_weak:272; -O0:    ldaxrb w0, [x2]273; -O0:    cmp w0, w9, uxtb274; -O0:    stlxrb w8, w1, [x2]275;276; -O1-LABEL: cmpxchg_i8_aligned_release_seq_cst_weak:277; -O1:    ldaxrb w8, [x2]278; -O1:    cmp w8, w0, uxtb279; -O1:    stlxrb wzr, w1, [x2]280    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1281    %r = extractvalue { i8, i1 } %pair, 0282    ret i8 %r283}284 285define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {286; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic:287; -O0:    ldaxrb w0, [x2]288; -O0:    cmp w0, w9, uxtb289; -O0:    stlxrb w8, w1, [x2]290;291; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic:292; -O1:    and w8, w0, #0xff293; -O1:    ldaxrb w0, [x2]294; -O1:    cmp w0, w8295; -O1:    stlxrb w9, w1, [x2]296    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1297    %r = extractvalue { i8, i1 } %pair, 0298    ret i8 %r299}300 301define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {302; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic_weak:303; -O0:    ldaxrb w0, [x2]304; -O0:    cmp w0, w9, uxtb305; -O0:    stlxrb w8, w1, [x2]306;307; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic_weak:308; -O1:    ldaxrb w8, [x2]309; -O1:    cmp w8, w0, uxtb310; -O1:    stlxrb wzr, w1, [x2]311    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1312    %r = extractvalue { i8, i1 } %pair, 0313    ret i8 %r314}315 316define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {317; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_acquire:318; -O0:    ldaxrb w0, [x2]319; -O0:    cmp w0, w9, uxtb320; -O0:    stlxrb w8, w1, [x2]321;322; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_acquire:323; -O1:    and w8, w0, #0xff324; -O1:    ldaxrb w0, [x2]325; -O1:    cmp w0, w8326; -O1:    stlxrb w9, w1, [x2]327    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1328    %r = extractvalue { i8, i1 } %pair, 0329    ret i8 %r330}331 332define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {333; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_acquire_weak:334; -O0:    ldaxrb w0, [x2]335; -O0:    cmp w0, w9, uxtb336; -O0:    stlxrb w8, w1, [x2]337;338; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_acquire_weak:339; -O1:    ldaxrb w8, [x2]340; -O1:    cmp w8, w0, uxtb341; -O1:    stlxrb wzr, w1, [x2]342    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1343    %r = extractvalue { i8, i1 } %pair, 0344    ret i8 %r345}346 347define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {348; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst:349; -O0:    ldaxrb w0, [x2]350; -O0:    cmp w0, w9, uxtb351; -O0:    stlxrb w8, w1, [x2]352;353; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst:354; -O1:    and w8, w0, #0xff355; -O1:    ldaxrb w0, [x2]356; -O1:    cmp w0, w8357; -O1:    stlxrb w9, w1, [x2]358    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1359    %r = extractvalue { i8, i1 } %pair, 0360    ret i8 %r361}362 363define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {364; -O0-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst_weak:365; -O0:    ldaxrb w0, [x2]366; -O0:    cmp w0, w9, uxtb367; -O0:    stlxrb w8, w1, [x2]368;369; -O1-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst_weak:370; -O1:    ldaxrb w8, [x2]371; -O1:    cmp w8, w0, uxtb372; -O1:    stlxrb wzr, w1, [x2]373    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1374    %r = extractvalue { i8, i1 } %pair, 0375    ret i8 %r376}377 378define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {379; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic:380; -O0:    ldaxrb w0, [x2]381; -O0:    cmp w0, w9, uxtb382; -O0:    stlxrb w8, w1, [x2]383;384; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic:385; -O1:    and w8, w0, #0xff386; -O1:    ldaxrb w0, [x2]387; -O1:    cmp w0, w8388; -O1:    stlxrb w9, w1, [x2]389    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1390    %r = extractvalue { i8, i1 } %pair, 0391    ret i8 %r392}393 394define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {395; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic_weak:396; -O0:    ldaxrb w0, [x2]397; -O0:    cmp w0, w9, uxtb398; -O0:    stlxrb w8, w1, [x2]399;400; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic_weak:401; -O1:    ldaxrb w8, [x2]402; -O1:    cmp w8, w0, uxtb403; -O1:    stlxrb wzr, w1, [x2]404    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1405    %r = extractvalue { i8, i1 } %pair, 0406    ret i8 %r407}408 409define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {410; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_acquire:411; -O0:    ldaxrb w0, [x2]412; -O0:    cmp w0, w9, uxtb413; -O0:    stlxrb w8, w1, [x2]414;415; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_acquire:416; -O1:    and w8, w0, #0xff417; -O1:    ldaxrb w0, [x2]418; -O1:    cmp w0, w8419; -O1:    stlxrb w9, w1, [x2]420    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1421    %r = extractvalue { i8, i1 } %pair, 0422    ret i8 %r423}424 425define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {426; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_acquire_weak:427; -O0:    ldaxrb w0, [x2]428; -O0:    cmp w0, w9, uxtb429; -O0:    stlxrb w8, w1, [x2]430;431; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_acquire_weak:432; -O1:    ldaxrb w8, [x2]433; -O1:    cmp w8, w0, uxtb434; -O1:    stlxrb wzr, w1, [x2]435    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1436    %r = extractvalue { i8, i1 } %pair, 0437    ret i8 %r438}439 440define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {441; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst:442; -O0:    ldaxrb w0, [x2]443; -O0:    cmp w0, w9, uxtb444; -O0:    stlxrb w8, w1, [x2]445;446; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst:447; -O1:    and w8, w0, #0xff448; -O1:    ldaxrb w0, [x2]449; -O1:    cmp w0, w8450; -O1:    stlxrb w9, w1, [x2]451    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1452    %r = extractvalue { i8, i1 } %pair, 0453    ret i8 %r454}455 456define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {457; -O0-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst_weak:458; -O0:    ldaxrb w0, [x2]459; -O0:    cmp w0, w9, uxtb460; -O0:    stlxrb w8, w1, [x2]461;462; -O1-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst_weak:463; -O1:    ldaxrb w8, [x2]464; -O1:    cmp w8, w0, uxtb465; -O1:    stlxrb wzr, w1, [x2]466    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1467    %r = extractvalue { i8, i1 } %pair, 0468    ret i8 %r469}470 471define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {472; -O0-LABEL: cmpxchg_i16_aligned_monotonic_monotonic:473; -O0:    ldaxrh w0, [x2]474; -O0:    cmp w0, w9, uxth475; -O0:    stlxrh w8, w1, [x2]476;477; -O1-LABEL: cmpxchg_i16_aligned_monotonic_monotonic:478; -O1:    and w8, w0, #0xffff479; -O1:    ldxrh w0, [x2]480; -O1:    cmp w0, w8481; -O1:    stxrh w9, w1, [x2]482    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2483    %r = extractvalue { i16, i1 } %pair, 0484    ret i16 %r485}486 487define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {488; -O0-LABEL: cmpxchg_i16_aligned_monotonic_monotonic_weak:489; -O0:    ldaxrh w0, [x2]490; -O0:    cmp w0, w9, uxth491; -O0:    stlxrh w8, w1, [x2]492;493; -O1-LABEL: cmpxchg_i16_aligned_monotonic_monotonic_weak:494; -O1:    ldxrh w8, [x2]495; -O1:    cmp w8, w0, uxth496; -O1:    stxrh wzr, w1, [x2]497    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2498    %r = extractvalue { i16, i1 } %pair, 0499    ret i16 %r500}501 502define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {503; -O0-LABEL: cmpxchg_i16_aligned_monotonic_acquire:504; -O0:    ldaxrh w0, [x2]505; -O0:    cmp w0, w9, uxth506; -O0:    stlxrh w8, w1, [x2]507;508; -O1-LABEL: cmpxchg_i16_aligned_monotonic_acquire:509; -O1:    and w8, w0, #0xffff510; -O1:    ldaxrh w0, [x2]511; -O1:    cmp w0, w8512; -O1:    stxrh w9, w1, [x2]513    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2514    %r = extractvalue { i16, i1 } %pair, 0515    ret i16 %r516}517 518define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {519; -O0-LABEL: cmpxchg_i16_aligned_monotonic_acquire_weak:520; -O0:    ldaxrh w0, [x2]521; -O0:    cmp w0, w9, uxth522; -O0:    stlxrh w8, w1, [x2]523;524; -O1-LABEL: cmpxchg_i16_aligned_monotonic_acquire_weak:525; -O1:    ldaxrh w8, [x2]526; -O1:    cmp w8, w0, uxth527; -O1:    stxrh wzr, w1, [x2]528    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2529    %r = extractvalue { i16, i1 } %pair, 0530    ret i16 %r531}532 533define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {534; -O0-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst:535; -O0:    ldaxrh w0, [x2]536; -O0:    cmp w0, w9, uxth537; -O0:    stlxrh w8, w1, [x2]538;539; -O1-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst:540; -O1:    and w8, w0, #0xffff541; -O1:    ldaxrh w0, [x2]542; -O1:    cmp w0, w8543; -O1:    stlxrh w9, w1, [x2]544    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2545    %r = extractvalue { i16, i1 } %pair, 0546    ret i16 %r547}548 549define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {550; -O0-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst_weak:551; -O0:    ldaxrh w0, [x2]552; -O0:    cmp w0, w9, uxth553; -O0:    stlxrh w8, w1, [x2]554;555; -O1-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst_weak:556; -O1:    ldaxrh w8, [x2]557; -O1:    cmp w8, w0, uxth558; -O1:    stlxrh wzr, w1, [x2]559    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2560    %r = extractvalue { i16, i1 } %pair, 0561    ret i16 %r562}563 564define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {565; -O0-LABEL: cmpxchg_i16_aligned_acquire_monotonic:566; -O0:    ldaxrh w0, [x2]567; -O0:    cmp w0, w9, uxth568; -O0:    stlxrh w8, w1, [x2]569;570; -O1-LABEL: cmpxchg_i16_aligned_acquire_monotonic:571; -O1:    and w8, w0, #0xffff572; -O1:    ldaxrh w0, [x2]573; -O1:    cmp w0, w8574; -O1:    stxrh w9, w1, [x2]575    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2576    %r = extractvalue { i16, i1 } %pair, 0577    ret i16 %r578}579 580define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {581; -O0-LABEL: cmpxchg_i16_aligned_acquire_monotonic_weak:582; -O0:    ldaxrh w0, [x2]583; -O0:    cmp w0, w9, uxth584; -O0:    stlxrh w8, w1, [x2]585;586; -O1-LABEL: cmpxchg_i16_aligned_acquire_monotonic_weak:587; -O1:    ldaxrh w8, [x2]588; -O1:    cmp w8, w0, uxth589; -O1:    stxrh wzr, w1, [x2]590    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2591    %r = extractvalue { i16, i1 } %pair, 0592    ret i16 %r593}594 595define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {596; -O0-LABEL: cmpxchg_i16_aligned_acquire_acquire:597; -O0:    ldaxrh w0, [x2]598; -O0:    cmp w0, w9, uxth599; -O0:    stlxrh w8, w1, [x2]600;601; -O1-LABEL: cmpxchg_i16_aligned_acquire_acquire:602; -O1:    and w8, w0, #0xffff603; -O1:    ldaxrh w0, [x2]604; -O1:    cmp w0, w8605; -O1:    stxrh w9, w1, [x2]606    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2607    %r = extractvalue { i16, i1 } %pair, 0608    ret i16 %r609}610 611define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {612; -O0-LABEL: cmpxchg_i16_aligned_acquire_acquire_weak:613; -O0:    ldaxrh w0, [x2]614; -O0:    cmp w0, w9, uxth615; -O0:    stlxrh w8, w1, [x2]616;617; -O1-LABEL: cmpxchg_i16_aligned_acquire_acquire_weak:618; -O1:    ldaxrh w8, [x2]619; -O1:    cmp w8, w0, uxth620; -O1:    stxrh wzr, w1, [x2]621    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2622    %r = extractvalue { i16, i1 } %pair, 0623    ret i16 %r624}625 626define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {627; -O0-LABEL: cmpxchg_i16_aligned_acquire_seq_cst:628; -O0:    ldaxrh w0, [x2]629; -O0:    cmp w0, w9, uxth630; -O0:    stlxrh w8, w1, [x2]631;632; -O1-LABEL: cmpxchg_i16_aligned_acquire_seq_cst:633; -O1:    and w8, w0, #0xffff634; -O1:    ldaxrh w0, [x2]635; -O1:    cmp w0, w8636; -O1:    stlxrh w9, w1, [x2]637    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2638    %r = extractvalue { i16, i1 } %pair, 0639    ret i16 %r640}641 642define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {643; -O0-LABEL: cmpxchg_i16_aligned_acquire_seq_cst_weak:644; -O0:    ldaxrh w0, [x2]645; -O0:    cmp w0, w9, uxth646; -O0:    stlxrh w8, w1, [x2]647;648; -O1-LABEL: cmpxchg_i16_aligned_acquire_seq_cst_weak:649; -O1:    ldaxrh w8, [x2]650; -O1:    cmp w8, w0, uxth651; -O1:    stlxrh wzr, w1, [x2]652    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2653    %r = extractvalue { i16, i1 } %pair, 0654    ret i16 %r655}656 657define dso_local i16 @cmpxchg_i16_aligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {658; -O0-LABEL: cmpxchg_i16_aligned_release_monotonic:659; -O0:    ldaxrh w0, [x2]660; -O0:    cmp w0, w9, uxth661; -O0:    stlxrh w8, w1, [x2]662;663; -O1-LABEL: cmpxchg_i16_aligned_release_monotonic:664; -O1:    and w8, w0, #0xffff665; -O1:    ldxrh w0, [x2]666; -O1:    cmp w0, w8667; -O1:    stlxrh w9, w1, [x2]668    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 2669    %r = extractvalue { i16, i1 } %pair, 0670    ret i16 %r671}672 673define dso_local i16 @cmpxchg_i16_aligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {674; -O0-LABEL: cmpxchg_i16_aligned_release_monotonic_weak:675; -O0:    ldaxrh w0, [x2]676; -O0:    cmp w0, w9, uxth677; -O0:    stlxrh w8, w1, [x2]678;679; -O1-LABEL: cmpxchg_i16_aligned_release_monotonic_weak:680; -O1:    ldxrh w8, [x2]681; -O1:    cmp w8, w0, uxth682; -O1:    stlxrh wzr, w1, [x2]683    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 2684    %r = extractvalue { i16, i1 } %pair, 0685    ret i16 %r686}687 688define dso_local i16 @cmpxchg_i16_aligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {689; -O0-LABEL: cmpxchg_i16_aligned_release_acquire:690; -O0:    ldaxrh w0, [x2]691; -O0:    cmp w0, w9, uxth692; -O0:    stlxrh w8, w1, [x2]693;694; -O1-LABEL: cmpxchg_i16_aligned_release_acquire:695; -O1:    and w8, w0, #0xffff696; -O1:    ldaxrh w0, [x2]697; -O1:    cmp w0, w8698; -O1:    stlxrh w9, w1, [x2]699    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 2700    %r = extractvalue { i16, i1 } %pair, 0701    ret i16 %r702}703 704define dso_local i16 @cmpxchg_i16_aligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {705; -O0-LABEL: cmpxchg_i16_aligned_release_acquire_weak:706; -O0:    ldaxrh w0, [x2]707; -O0:    cmp w0, w9, uxth708; -O0:    stlxrh w8, w1, [x2]709;710; -O1-LABEL: cmpxchg_i16_aligned_release_acquire_weak:711; -O1:    ldaxrh w8, [x2]712; -O1:    cmp w8, w0, uxth713; -O1:    stlxrh wzr, w1, [x2]714    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 2715    %r = extractvalue { i16, i1 } %pair, 0716    ret i16 %r717}718 719define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {720; -O0-LABEL: cmpxchg_i16_aligned_release_seq_cst:721; -O0:    ldaxrh w0, [x2]722; -O0:    cmp w0, w9, uxth723; -O0:    stlxrh w8, w1, [x2]724;725; -O1-LABEL: cmpxchg_i16_aligned_release_seq_cst:726; -O1:    and w8, w0, #0xffff727; -O1:    ldaxrh w0, [x2]728; -O1:    cmp w0, w8729; -O1:    stlxrh w9, w1, [x2]730    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2731    %r = extractvalue { i16, i1 } %pair, 0732    ret i16 %r733}734 735define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {736; -O0-LABEL: cmpxchg_i16_aligned_release_seq_cst_weak:737; -O0:    ldaxrh w0, [x2]738; -O0:    cmp w0, w9, uxth739; -O0:    stlxrh w8, w1, [x2]740;741; -O1-LABEL: cmpxchg_i16_aligned_release_seq_cst_weak:742; -O1:    ldaxrh w8, [x2]743; -O1:    cmp w8, w0, uxth744; -O1:    stlxrh wzr, w1, [x2]745    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2746    %r = extractvalue { i16, i1 } %pair, 0747    ret i16 %r748}749 750define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {751; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic:752; -O0:    ldaxrh w0, [x2]753; -O0:    cmp w0, w9, uxth754; -O0:    stlxrh w8, w1, [x2]755;756; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic:757; -O1:    and w8, w0, #0xffff758; -O1:    ldaxrh w0, [x2]759; -O1:    cmp w0, w8760; -O1:    stlxrh w9, w1, [x2]761    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2762    %r = extractvalue { i16, i1 } %pair, 0763    ret i16 %r764}765 766define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {767; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic_weak:768; -O0:    ldaxrh w0, [x2]769; -O0:    cmp w0, w9, uxth770; -O0:    stlxrh w8, w1, [x2]771;772; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic_weak:773; -O1:    ldaxrh w8, [x2]774; -O1:    cmp w8, w0, uxth775; -O1:    stlxrh wzr, w1, [x2]776    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2777    %r = extractvalue { i16, i1 } %pair, 0778    ret i16 %r779}780 781define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {782; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_acquire:783; -O0:    ldaxrh w0, [x2]784; -O0:    cmp w0, w9, uxth785; -O0:    stlxrh w8, w1, [x2]786;787; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_acquire:788; -O1:    and w8, w0, #0xffff789; -O1:    ldaxrh w0, [x2]790; -O1:    cmp w0, w8791; -O1:    stlxrh w9, w1, [x2]792    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2793    %r = extractvalue { i16, i1 } %pair, 0794    ret i16 %r795}796 797define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {798; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_acquire_weak:799; -O0:    ldaxrh w0, [x2]800; -O0:    cmp w0, w9, uxth801; -O0:    stlxrh w8, w1, [x2]802;803; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_acquire_weak:804; -O1:    ldaxrh w8, [x2]805; -O1:    cmp w8, w0, uxth806; -O1:    stlxrh wzr, w1, [x2]807    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2808    %r = extractvalue { i16, i1 } %pair, 0809    ret i16 %r810}811 812define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {813; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst:814; -O0:    ldaxrh w0, [x2]815; -O0:    cmp w0, w9, uxth816; -O0:    stlxrh w8, w1, [x2]817;818; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst:819; -O1:    and w8, w0, #0xffff820; -O1:    ldaxrh w0, [x2]821; -O1:    cmp w0, w8822; -O1:    stlxrh w9, w1, [x2]823    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2824    %r = extractvalue { i16, i1 } %pair, 0825    ret i16 %r826}827 828define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {829; -O0-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst_weak:830; -O0:    ldaxrh w0, [x2]831; -O0:    cmp w0, w9, uxth832; -O0:    stlxrh w8, w1, [x2]833;834; -O1-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst_weak:835; -O1:    ldaxrh w8, [x2]836; -O1:    cmp w8, w0, uxth837; -O1:    stlxrh wzr, w1, [x2]838    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2839    %r = extractvalue { i16, i1 } %pair, 0840    ret i16 %r841}842 843define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {844; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic:845; -O0:    ldaxrh w0, [x2]846; -O0:    cmp w0, w9, uxth847; -O0:    stlxrh w8, w1, [x2]848;849; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic:850; -O1:    and w8, w0, #0xffff851; -O1:    ldaxrh w0, [x2]852; -O1:    cmp w0, w8853; -O1:    stlxrh w9, w1, [x2]854    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2855    %r = extractvalue { i16, i1 } %pair, 0856    ret i16 %r857}858 859define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {860; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic_weak:861; -O0:    ldaxrh w0, [x2]862; -O0:    cmp w0, w9, uxth863; -O0:    stlxrh w8, w1, [x2]864;865; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic_weak:866; -O1:    ldaxrh w8, [x2]867; -O1:    cmp w8, w0, uxth868; -O1:    stlxrh wzr, w1, [x2]869    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2870    %r = extractvalue { i16, i1 } %pair, 0871    ret i16 %r872}873 874define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {875; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_acquire:876; -O0:    ldaxrh w0, [x2]877; -O0:    cmp w0, w9, uxth878; -O0:    stlxrh w8, w1, [x2]879;880; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_acquire:881; -O1:    and w8, w0, #0xffff882; -O1:    ldaxrh w0, [x2]883; -O1:    cmp w0, w8884; -O1:    stlxrh w9, w1, [x2]885    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2886    %r = extractvalue { i16, i1 } %pair, 0887    ret i16 %r888}889 890define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {891; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_acquire_weak:892; -O0:    ldaxrh w0, [x2]893; -O0:    cmp w0, w9, uxth894; -O0:    stlxrh w8, w1, [x2]895;896; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_acquire_weak:897; -O1:    ldaxrh w8, [x2]898; -O1:    cmp w8, w0, uxth899; -O1:    stlxrh wzr, w1, [x2]900    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2901    %r = extractvalue { i16, i1 } %pair, 0902    ret i16 %r903}904 905define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {906; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst:907; -O0:    ldaxrh w0, [x2]908; -O0:    cmp w0, w9, uxth909; -O0:    stlxrh w8, w1, [x2]910;911; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst:912; -O1:    and w8, w0, #0xffff913; -O1:    ldaxrh w0, [x2]914; -O1:    cmp w0, w8915; -O1:    stlxrh w9, w1, [x2]916    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2917    %r = extractvalue { i16, i1 } %pair, 0918    ret i16 %r919}920 921define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {922; -O0-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst_weak:923; -O0:    ldaxrh w0, [x2]924; -O0:    cmp w0, w9, uxth925; -O0:    stlxrh w8, w1, [x2]926;927; -O1-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst_weak:928; -O1:    ldaxrh w8, [x2]929; -O1:    cmp w8, w0, uxth930; -O1:    stlxrh wzr, w1, [x2]931    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2932    %r = extractvalue { i16, i1 } %pair, 0933    ret i16 %r934}935 936define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {937; -O0-LABEL: cmpxchg_i32_aligned_monotonic_monotonic:938; -O0:    ldaxr w0, [x2]939; -O0:    cmp w0, w9940; -O0:    stlxr w8, w1, [x2]941;942; -O1-LABEL: cmpxchg_i32_aligned_monotonic_monotonic:943; -O1:    ldxr w0, [x2]944; -O1:    cmp w0, w8945; -O1:    stxr w9, w1, [x2]946    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4947    %r = extractvalue { i32, i1 } %pair, 0948    ret i32 %r949}950 951define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {952; -O0-LABEL: cmpxchg_i32_aligned_monotonic_monotonic_weak:953; -O0:    ldaxr w0, [x2]954; -O0:    cmp w0, w9955; -O0:    stlxr w8, w1, [x2]956;957; -O1-LABEL: cmpxchg_i32_aligned_monotonic_monotonic_weak:958; -O1:    ldxr w8, [x2]959; -O1:    cmp w8, w0960; -O1:    stxr wzr, w1, [x2]961    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4962    %r = extractvalue { i32, i1 } %pair, 0963    ret i32 %r964}965 966define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {967; -O0-LABEL: cmpxchg_i32_aligned_monotonic_acquire:968; -O0:    ldaxr w0, [x2]969; -O0:    cmp w0, w9970; -O0:    stlxr w8, w1, [x2]971;972; -O1-LABEL: cmpxchg_i32_aligned_monotonic_acquire:973; -O1:    ldaxr w0, [x2]974; -O1:    cmp w0, w8975; -O1:    stxr w9, w1, [x2]976    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4977    %r = extractvalue { i32, i1 } %pair, 0978    ret i32 %r979}980 981define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {982; -O0-LABEL: cmpxchg_i32_aligned_monotonic_acquire_weak:983; -O0:    ldaxr w0, [x2]984; -O0:    cmp w0, w9985; -O0:    stlxr w8, w1, [x2]986;987; -O1-LABEL: cmpxchg_i32_aligned_monotonic_acquire_weak:988; -O1:    ldaxr w8, [x2]989; -O1:    cmp w8, w0990; -O1:    stxr wzr, w1, [x2]991    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4992    %r = extractvalue { i32, i1 } %pair, 0993    ret i32 %r994}995 996define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {997; -O0-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst:998; -O0:    ldaxr w0, [x2]999; -O0:    cmp w0, w91000; -O0:    stlxr w8, w1, [x2]1001;1002; -O1-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst:1003; -O1:    ldaxr w0, [x2]1004; -O1:    cmp w0, w81005; -O1:    stlxr w9, w1, [x2]1006    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 41007    %r = extractvalue { i32, i1 } %pair, 01008    ret i32 %r1009}1010 1011define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1012; -O0-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst_weak:1013; -O0:    ldaxr w0, [x2]1014; -O0:    cmp w0, w91015; -O0:    stlxr w8, w1, [x2]1016;1017; -O1-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst_weak:1018; -O1:    ldaxr w8, [x2]1019; -O1:    cmp w8, w01020; -O1:    stlxr wzr, w1, [x2]1021    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 41022    %r = extractvalue { i32, i1 } %pair, 01023    ret i32 %r1024}1025 1026define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {1027; -O0-LABEL: cmpxchg_i32_aligned_acquire_monotonic:1028; -O0:    ldaxr w0, [x2]1029; -O0:    cmp w0, w91030; -O0:    stlxr w8, w1, [x2]1031;1032; -O1-LABEL: cmpxchg_i32_aligned_acquire_monotonic:1033; -O1:    ldaxr w0, [x2]1034; -O1:    cmp w0, w81035; -O1:    stxr w9, w1, [x2]1036    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 41037    %r = extractvalue { i32, i1 } %pair, 01038    ret i32 %r1039}1040 1041define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1042; -O0-LABEL: cmpxchg_i32_aligned_acquire_monotonic_weak:1043; -O0:    ldaxr w0, [x2]1044; -O0:    cmp w0, w91045; -O0:    stlxr w8, w1, [x2]1046;1047; -O1-LABEL: cmpxchg_i32_aligned_acquire_monotonic_weak:1048; -O1:    ldaxr w8, [x2]1049; -O1:    cmp w8, w01050; -O1:    stxr wzr, w1, [x2]1051    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 41052    %r = extractvalue { i32, i1 } %pair, 01053    ret i32 %r1054}1055 1056define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {1057; -O0-LABEL: cmpxchg_i32_aligned_acquire_acquire:1058; -O0:    ldaxr w0, [x2]1059; -O0:    cmp w0, w91060; -O0:    stlxr w8, w1, [x2]1061;1062; -O1-LABEL: cmpxchg_i32_aligned_acquire_acquire:1063; -O1:    ldaxr w0, [x2]1064; -O1:    cmp w0, w81065; -O1:    stxr w9, w1, [x2]1066    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 41067    %r = extractvalue { i32, i1 } %pair, 01068    ret i32 %r1069}1070 1071define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1072; -O0-LABEL: cmpxchg_i32_aligned_acquire_acquire_weak:1073; -O0:    ldaxr w0, [x2]1074; -O0:    cmp w0, w91075; -O0:    stlxr w8, w1, [x2]1076;1077; -O1-LABEL: cmpxchg_i32_aligned_acquire_acquire_weak:1078; -O1:    ldaxr w8, [x2]1079; -O1:    cmp w8, w01080; -O1:    stxr wzr, w1, [x2]1081    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 41082    %r = extractvalue { i32, i1 } %pair, 01083    ret i32 %r1084}1085 1086define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1087; -O0-LABEL: cmpxchg_i32_aligned_acquire_seq_cst:1088; -O0:    ldaxr w0, [x2]1089; -O0:    cmp w0, w91090; -O0:    stlxr w8, w1, [x2]1091;1092; -O1-LABEL: cmpxchg_i32_aligned_acquire_seq_cst:1093; -O1:    ldaxr w0, [x2]1094; -O1:    cmp w0, w81095; -O1:    stlxr w9, w1, [x2]1096    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 41097    %r = extractvalue { i32, i1 } %pair, 01098    ret i32 %r1099}1100 1101define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1102; -O0-LABEL: cmpxchg_i32_aligned_acquire_seq_cst_weak:1103; -O0:    ldaxr w0, [x2]1104; -O0:    cmp w0, w91105; -O0:    stlxr w8, w1, [x2]1106;1107; -O1-LABEL: cmpxchg_i32_aligned_acquire_seq_cst_weak:1108; -O1:    ldaxr w8, [x2]1109; -O1:    cmp w8, w01110; -O1:    stlxr wzr, w1, [x2]1111    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 41112    %r = extractvalue { i32, i1 } %pair, 01113    ret i32 %r1114}1115 1116define dso_local i32 @cmpxchg_i32_aligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {1117; -O0-LABEL: cmpxchg_i32_aligned_release_monotonic:1118; -O0:    ldaxr w0, [x2]1119; -O0:    cmp w0, w91120; -O0:    stlxr w8, w1, [x2]1121;1122; -O1-LABEL: cmpxchg_i32_aligned_release_monotonic:1123; -O1:    ldxr w0, [x2]1124; -O1:    cmp w0, w81125; -O1:    stlxr w9, w1, [x2]1126    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 41127    %r = extractvalue { i32, i1 } %pair, 01128    ret i32 %r1129}1130 1131define dso_local i32 @cmpxchg_i32_aligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1132; -O0-LABEL: cmpxchg_i32_aligned_release_monotonic_weak:1133; -O0:    ldaxr w0, [x2]1134; -O0:    cmp w0, w91135; -O0:    stlxr w8, w1, [x2]1136;1137; -O1-LABEL: cmpxchg_i32_aligned_release_monotonic_weak:1138; -O1:    ldxr w8, [x2]1139; -O1:    cmp w8, w01140; -O1:    stlxr wzr, w1, [x2]1141    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 41142    %r = extractvalue { i32, i1 } %pair, 01143    ret i32 %r1144}1145 1146define dso_local i32 @cmpxchg_i32_aligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {1147; -O0-LABEL: cmpxchg_i32_aligned_release_acquire:1148; -O0:    ldaxr w0, [x2]1149; -O0:    cmp w0, w91150; -O0:    stlxr w8, w1, [x2]1151;1152; -O1-LABEL: cmpxchg_i32_aligned_release_acquire:1153; -O1:    ldaxr w0, [x2]1154; -O1:    cmp w0, w81155; -O1:    stlxr w9, w1, [x2]1156    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 41157    %r = extractvalue { i32, i1 } %pair, 01158    ret i32 %r1159}1160 1161define dso_local i32 @cmpxchg_i32_aligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1162; -O0-LABEL: cmpxchg_i32_aligned_release_acquire_weak:1163; -O0:    ldaxr w0, [x2]1164; -O0:    cmp w0, w91165; -O0:    stlxr w8, w1, [x2]1166;1167; -O1-LABEL: cmpxchg_i32_aligned_release_acquire_weak:1168; -O1:    ldaxr w8, [x2]1169; -O1:    cmp w8, w01170; -O1:    stlxr wzr, w1, [x2]1171    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 41172    %r = extractvalue { i32, i1 } %pair, 01173    ret i32 %r1174}1175 1176define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1177; -O0-LABEL: cmpxchg_i32_aligned_release_seq_cst:1178; -O0:    ldaxr w0, [x2]1179; -O0:    cmp w0, w91180; -O0:    stlxr w8, w1, [x2]1181;1182; -O1-LABEL: cmpxchg_i32_aligned_release_seq_cst:1183; -O1:    ldaxr w0, [x2]1184; -O1:    cmp w0, w81185; -O1:    stlxr w9, w1, [x2]1186    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 41187    %r = extractvalue { i32, i1 } %pair, 01188    ret i32 %r1189}1190 1191define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1192; -O0-LABEL: cmpxchg_i32_aligned_release_seq_cst_weak:1193; -O0:    ldaxr w0, [x2]1194; -O0:    cmp w0, w91195; -O0:    stlxr w8, w1, [x2]1196;1197; -O1-LABEL: cmpxchg_i32_aligned_release_seq_cst_weak:1198; -O1:    ldaxr w8, [x2]1199; -O1:    cmp w8, w01200; -O1:    stlxr wzr, w1, [x2]1201    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 41202    %r = extractvalue { i32, i1 } %pair, 01203    ret i32 %r1204}1205 1206define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {1207; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic:1208; -O0:    ldaxr w0, [x2]1209; -O0:    cmp w0, w91210; -O0:    stlxr w8, w1, [x2]1211;1212; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic:1213; -O1:    ldaxr w0, [x2]1214; -O1:    cmp w0, w81215; -O1:    stlxr w9, w1, [x2]1216    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 41217    %r = extractvalue { i32, i1 } %pair, 01218    ret i32 %r1219}1220 1221define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1222; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic_weak:1223; -O0:    ldaxr w0, [x2]1224; -O0:    cmp w0, w91225; -O0:    stlxr w8, w1, [x2]1226;1227; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic_weak:1228; -O1:    ldaxr w8, [x2]1229; -O1:    cmp w8, w01230; -O1:    stlxr wzr, w1, [x2]1231    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 41232    %r = extractvalue { i32, i1 } %pair, 01233    ret i32 %r1234}1235 1236define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {1237; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_acquire:1238; -O0:    ldaxr w0, [x2]1239; -O0:    cmp w0, w91240; -O0:    stlxr w8, w1, [x2]1241;1242; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_acquire:1243; -O1:    ldaxr w0, [x2]1244; -O1:    cmp w0, w81245; -O1:    stlxr w9, w1, [x2]1246    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 41247    %r = extractvalue { i32, i1 } %pair, 01248    ret i32 %r1249}1250 1251define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1252; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_acquire_weak:1253; -O0:    ldaxr w0, [x2]1254; -O0:    cmp w0, w91255; -O0:    stlxr w8, w1, [x2]1256;1257; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_acquire_weak:1258; -O1:    ldaxr w8, [x2]1259; -O1:    cmp w8, w01260; -O1:    stlxr wzr, w1, [x2]1261    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 41262    %r = extractvalue { i32, i1 } %pair, 01263    ret i32 %r1264}1265 1266define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1267; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst:1268; -O0:    ldaxr w0, [x2]1269; -O0:    cmp w0, w91270; -O0:    stlxr w8, w1, [x2]1271;1272; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst:1273; -O1:    ldaxr w0, [x2]1274; -O1:    cmp w0, w81275; -O1:    stlxr w9, w1, [x2]1276    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 41277    %r = extractvalue { i32, i1 } %pair, 01278    ret i32 %r1279}1280 1281define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1282; -O0-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst_weak:1283; -O0:    ldaxr w0, [x2]1284; -O0:    cmp w0, w91285; -O0:    stlxr w8, w1, [x2]1286;1287; -O1-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst_weak:1288; -O1:    ldaxr w8, [x2]1289; -O1:    cmp w8, w01290; -O1:    stlxr wzr, w1, [x2]1291    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 41292    %r = extractvalue { i32, i1 } %pair, 01293    ret i32 %r1294}1295 1296define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {1297; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic:1298; -O0:    ldaxr w0, [x2]1299; -O0:    cmp w0, w91300; -O0:    stlxr w8, w1, [x2]1301;1302; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic:1303; -O1:    ldaxr w0, [x2]1304; -O1:    cmp w0, w81305; -O1:    stlxr w9, w1, [x2]1306    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 41307    %r = extractvalue { i32, i1 } %pair, 01308    ret i32 %r1309}1310 1311define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {1312; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic_weak:1313; -O0:    ldaxr w0, [x2]1314; -O0:    cmp w0, w91315; -O0:    stlxr w8, w1, [x2]1316;1317; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic_weak:1318; -O1:    ldaxr w8, [x2]1319; -O1:    cmp w8, w01320; -O1:    stlxr wzr, w1, [x2]1321    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 41322    %r = extractvalue { i32, i1 } %pair, 01323    ret i32 %r1324}1325 1326define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {1327; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_acquire:1328; -O0:    ldaxr w0, [x2]1329; -O0:    cmp w0, w91330; -O0:    stlxr w8, w1, [x2]1331;1332; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_acquire:1333; -O1:    ldaxr w0, [x2]1334; -O1:    cmp w0, w81335; -O1:    stlxr w9, w1, [x2]1336    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 41337    %r = extractvalue { i32, i1 } %pair, 01338    ret i32 %r1339}1340 1341define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {1342; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_acquire_weak:1343; -O0:    ldaxr w0, [x2]1344; -O0:    cmp w0, w91345; -O0:    stlxr w8, w1, [x2]1346;1347; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_acquire_weak:1348; -O1:    ldaxr w8, [x2]1349; -O1:    cmp w8, w01350; -O1:    stlxr wzr, w1, [x2]1351    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 41352    %r = extractvalue { i32, i1 } %pair, 01353    ret i32 %r1354}1355 1356define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {1357; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst:1358; -O0:    ldaxr w0, [x2]1359; -O0:    cmp w0, w91360; -O0:    stlxr w8, w1, [x2]1361;1362; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst:1363; -O1:    ldaxr w0, [x2]1364; -O1:    cmp w0, w81365; -O1:    stlxr w9, w1, [x2]1366    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 41367    %r = extractvalue { i32, i1 } %pair, 01368    ret i32 %r1369}1370 1371define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {1372; -O0-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst_weak:1373; -O0:    ldaxr w0, [x2]1374; -O0:    cmp w0, w91375; -O0:    stlxr w8, w1, [x2]1376;1377; -O1-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst_weak:1378; -O1:    ldaxr w8, [x2]1379; -O1:    cmp w8, w01380; -O1:    stlxr wzr, w1, [x2]1381    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 41382    %r = extractvalue { i32, i1 } %pair, 01383    ret i32 %r1384}1385 1386define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {1387; -O0-LABEL: cmpxchg_i64_aligned_monotonic_monotonic:1388; -O0:    ldaxr x0, [x2]1389; -O0:    cmp x0, x91390; -O0:    stlxr w8, x1, [x2]1391;1392; -O1-LABEL: cmpxchg_i64_aligned_monotonic_monotonic:1393; -O1:    ldxr x0, [x2]1394; -O1:    cmp x0, x81395; -O1:    stxr w9, x1, [x2]1396    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 81397    %r = extractvalue { i64, i1 } %pair, 01398    ret i64 %r1399}1400 1401define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1402; -O0-LABEL: cmpxchg_i64_aligned_monotonic_monotonic_weak:1403; -O0:    ldaxr x0, [x2]1404; -O0:    cmp x0, x91405; -O0:    stlxr w8, x1, [x2]1406;1407; -O1-LABEL: cmpxchg_i64_aligned_monotonic_monotonic_weak:1408; -O1:    ldxr x8, [x2]1409; -O1:    cmp x8, x01410; -O1:    stxr wzr, x1, [x2]1411    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 81412    %r = extractvalue { i64, i1 } %pair, 01413    ret i64 %r1414}1415 1416define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {1417; -O0-LABEL: cmpxchg_i64_aligned_monotonic_acquire:1418; -O0:    ldaxr x0, [x2]1419; -O0:    cmp x0, x91420; -O0:    stlxr w8, x1, [x2]1421;1422; -O1-LABEL: cmpxchg_i64_aligned_monotonic_acquire:1423; -O1:    ldaxr x0, [x2]1424; -O1:    cmp x0, x81425; -O1:    stxr w9, x1, [x2]1426    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 81427    %r = extractvalue { i64, i1 } %pair, 01428    ret i64 %r1429}1430 1431define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1432; -O0-LABEL: cmpxchg_i64_aligned_monotonic_acquire_weak:1433; -O0:    ldaxr x0, [x2]1434; -O0:    cmp x0, x91435; -O0:    stlxr w8, x1, [x2]1436;1437; -O1-LABEL: cmpxchg_i64_aligned_monotonic_acquire_weak:1438; -O1:    ldaxr x8, [x2]1439; -O1:    cmp x8, x01440; -O1:    stxr wzr, x1, [x2]1441    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 81442    %r = extractvalue { i64, i1 } %pair, 01443    ret i64 %r1444}1445 1446define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1447; -O0-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst:1448; -O0:    ldaxr x0, [x2]1449; -O0:    cmp x0, x91450; -O0:    stlxr w8, x1, [x2]1451;1452; -O1-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst:1453; -O1:    ldaxr x0, [x2]1454; -O1:    cmp x0, x81455; -O1:    stlxr w9, x1, [x2]1456    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 81457    %r = extractvalue { i64, i1 } %pair, 01458    ret i64 %r1459}1460 1461define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1462; -O0-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst_weak:1463; -O0:    ldaxr x0, [x2]1464; -O0:    cmp x0, x91465; -O0:    stlxr w8, x1, [x2]1466;1467; -O1-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst_weak:1468; -O1:    ldaxr x8, [x2]1469; -O1:    cmp x8, x01470; -O1:    stlxr wzr, x1, [x2]1471    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 81472    %r = extractvalue { i64, i1 } %pair, 01473    ret i64 %r1474}1475 1476define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {1477; -O0-LABEL: cmpxchg_i64_aligned_acquire_monotonic:1478; -O0:    ldaxr x0, [x2]1479; -O0:    cmp x0, x91480; -O0:    stlxr w8, x1, [x2]1481;1482; -O1-LABEL: cmpxchg_i64_aligned_acquire_monotonic:1483; -O1:    ldaxr x0, [x2]1484; -O1:    cmp x0, x81485; -O1:    stxr w9, x1, [x2]1486    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 81487    %r = extractvalue { i64, i1 } %pair, 01488    ret i64 %r1489}1490 1491define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1492; -O0-LABEL: cmpxchg_i64_aligned_acquire_monotonic_weak:1493; -O0:    ldaxr x0, [x2]1494; -O0:    cmp x0, x91495; -O0:    stlxr w8, x1, [x2]1496;1497; -O1-LABEL: cmpxchg_i64_aligned_acquire_monotonic_weak:1498; -O1:    ldaxr x8, [x2]1499; -O1:    cmp x8, x01500; -O1:    stxr wzr, x1, [x2]1501    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 81502    %r = extractvalue { i64, i1 } %pair, 01503    ret i64 %r1504}1505 1506define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {1507; -O0-LABEL: cmpxchg_i64_aligned_acquire_acquire:1508; -O0:    ldaxr x0, [x2]1509; -O0:    cmp x0, x91510; -O0:    stlxr w8, x1, [x2]1511;1512; -O1-LABEL: cmpxchg_i64_aligned_acquire_acquire:1513; -O1:    ldaxr x0, [x2]1514; -O1:    cmp x0, x81515; -O1:    stxr w9, x1, [x2]1516    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 81517    %r = extractvalue { i64, i1 } %pair, 01518    ret i64 %r1519}1520 1521define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1522; -O0-LABEL: cmpxchg_i64_aligned_acquire_acquire_weak:1523; -O0:    ldaxr x0, [x2]1524; -O0:    cmp x0, x91525; -O0:    stlxr w8, x1, [x2]1526;1527; -O1-LABEL: cmpxchg_i64_aligned_acquire_acquire_weak:1528; -O1:    ldaxr x8, [x2]1529; -O1:    cmp x8, x01530; -O1:    stxr wzr, x1, [x2]1531    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 81532    %r = extractvalue { i64, i1 } %pair, 01533    ret i64 %r1534}1535 1536define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1537; -O0-LABEL: cmpxchg_i64_aligned_acquire_seq_cst:1538; -O0:    ldaxr x0, [x2]1539; -O0:    cmp x0, x91540; -O0:    stlxr w8, x1, [x2]1541;1542; -O1-LABEL: cmpxchg_i64_aligned_acquire_seq_cst:1543; -O1:    ldaxr x0, [x2]1544; -O1:    cmp x0, x81545; -O1:    stlxr w9, x1, [x2]1546    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 81547    %r = extractvalue { i64, i1 } %pair, 01548    ret i64 %r1549}1550 1551define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1552; -O0-LABEL: cmpxchg_i64_aligned_acquire_seq_cst_weak:1553; -O0:    ldaxr x0, [x2]1554; -O0:    cmp x0, x91555; -O0:    stlxr w8, x1, [x2]1556;1557; -O1-LABEL: cmpxchg_i64_aligned_acquire_seq_cst_weak:1558; -O1:    ldaxr x8, [x2]1559; -O1:    cmp x8, x01560; -O1:    stlxr wzr, x1, [x2]1561    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 81562    %r = extractvalue { i64, i1 } %pair, 01563    ret i64 %r1564}1565 1566define dso_local i64 @cmpxchg_i64_aligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {1567; -O0-LABEL: cmpxchg_i64_aligned_release_monotonic:1568; -O0:    ldaxr x0, [x2]1569; -O0:    cmp x0, x91570; -O0:    stlxr w8, x1, [x2]1571;1572; -O1-LABEL: cmpxchg_i64_aligned_release_monotonic:1573; -O1:    ldxr x0, [x2]1574; -O1:    cmp x0, x81575; -O1:    stlxr w9, x1, [x2]1576    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 81577    %r = extractvalue { i64, i1 } %pair, 01578    ret i64 %r1579}1580 1581define dso_local i64 @cmpxchg_i64_aligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1582; -O0-LABEL: cmpxchg_i64_aligned_release_monotonic_weak:1583; -O0:    ldaxr x0, [x2]1584; -O0:    cmp x0, x91585; -O0:    stlxr w8, x1, [x2]1586;1587; -O1-LABEL: cmpxchg_i64_aligned_release_monotonic_weak:1588; -O1:    ldxr x8, [x2]1589; -O1:    cmp x8, x01590; -O1:    stlxr wzr, x1, [x2]1591    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 81592    %r = extractvalue { i64, i1 } %pair, 01593    ret i64 %r1594}1595 1596define dso_local i64 @cmpxchg_i64_aligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {1597; -O0-LABEL: cmpxchg_i64_aligned_release_acquire:1598; -O0:    ldaxr x0, [x2]1599; -O0:    cmp x0, x91600; -O0:    stlxr w8, x1, [x2]1601;1602; -O1-LABEL: cmpxchg_i64_aligned_release_acquire:1603; -O1:    ldaxr x0, [x2]1604; -O1:    cmp x0, x81605; -O1:    stlxr w9, x1, [x2]1606    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 81607    %r = extractvalue { i64, i1 } %pair, 01608    ret i64 %r1609}1610 1611define dso_local i64 @cmpxchg_i64_aligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1612; -O0-LABEL: cmpxchg_i64_aligned_release_acquire_weak:1613; -O0:    ldaxr x0, [x2]1614; -O0:    cmp x0, x91615; -O0:    stlxr w8, x1, [x2]1616;1617; -O1-LABEL: cmpxchg_i64_aligned_release_acquire_weak:1618; -O1:    ldaxr x8, [x2]1619; -O1:    cmp x8, x01620; -O1:    stlxr wzr, x1, [x2]1621    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 81622    %r = extractvalue { i64, i1 } %pair, 01623    ret i64 %r1624}1625 1626define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1627; -O0-LABEL: cmpxchg_i64_aligned_release_seq_cst:1628; -O0:    ldaxr x0, [x2]1629; -O0:    cmp x0, x91630; -O0:    stlxr w8, x1, [x2]1631;1632; -O1-LABEL: cmpxchg_i64_aligned_release_seq_cst:1633; -O1:    ldaxr x0, [x2]1634; -O1:    cmp x0, x81635; -O1:    stlxr w9, x1, [x2]1636    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 81637    %r = extractvalue { i64, i1 } %pair, 01638    ret i64 %r1639}1640 1641define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1642; -O0-LABEL: cmpxchg_i64_aligned_release_seq_cst_weak:1643; -O0:    ldaxr x0, [x2]1644; -O0:    cmp x0, x91645; -O0:    stlxr w8, x1, [x2]1646;1647; -O1-LABEL: cmpxchg_i64_aligned_release_seq_cst_weak:1648; -O1:    ldaxr x8, [x2]1649; -O1:    cmp x8, x01650; -O1:    stlxr wzr, x1, [x2]1651    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 81652    %r = extractvalue { i64, i1 } %pair, 01653    ret i64 %r1654}1655 1656define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {1657; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic:1658; -O0:    ldaxr x0, [x2]1659; -O0:    cmp x0, x91660; -O0:    stlxr w8, x1, [x2]1661;1662; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic:1663; -O1:    ldaxr x0, [x2]1664; -O1:    cmp x0, x81665; -O1:    stlxr w9, x1, [x2]1666    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 81667    %r = extractvalue { i64, i1 } %pair, 01668    ret i64 %r1669}1670 1671define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1672; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic_weak:1673; -O0:    ldaxr x0, [x2]1674; -O0:    cmp x0, x91675; -O0:    stlxr w8, x1, [x2]1676;1677; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic_weak:1678; -O1:    ldaxr x8, [x2]1679; -O1:    cmp x8, x01680; -O1:    stlxr wzr, x1, [x2]1681    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 81682    %r = extractvalue { i64, i1 } %pair, 01683    ret i64 %r1684}1685 1686define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {1687; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_acquire:1688; -O0:    ldaxr x0, [x2]1689; -O0:    cmp x0, x91690; -O0:    stlxr w8, x1, [x2]1691;1692; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_acquire:1693; -O1:    ldaxr x0, [x2]1694; -O1:    cmp x0, x81695; -O1:    stlxr w9, x1, [x2]1696    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 81697    %r = extractvalue { i64, i1 } %pair, 01698    ret i64 %r1699}1700 1701define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1702; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_acquire_weak:1703; -O0:    ldaxr x0, [x2]1704; -O0:    cmp x0, x91705; -O0:    stlxr w8, x1, [x2]1706;1707; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_acquire_weak:1708; -O1:    ldaxr x8, [x2]1709; -O1:    cmp x8, x01710; -O1:    stlxr wzr, x1, [x2]1711    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 81712    %r = extractvalue { i64, i1 } %pair, 01713    ret i64 %r1714}1715 1716define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1717; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst:1718; -O0:    ldaxr x0, [x2]1719; -O0:    cmp x0, x91720; -O0:    stlxr w8, x1, [x2]1721;1722; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst:1723; -O1:    ldaxr x0, [x2]1724; -O1:    cmp x0, x81725; -O1:    stlxr w9, x1, [x2]1726    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 81727    %r = extractvalue { i64, i1 } %pair, 01728    ret i64 %r1729}1730 1731define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1732; -O0-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst_weak:1733; -O0:    ldaxr x0, [x2]1734; -O0:    cmp x0, x91735; -O0:    stlxr w8, x1, [x2]1736;1737; -O1-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst_weak:1738; -O1:    ldaxr x8, [x2]1739; -O1:    cmp x8, x01740; -O1:    stlxr wzr, x1, [x2]1741    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 81742    %r = extractvalue { i64, i1 } %pair, 01743    ret i64 %r1744}1745 1746define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {1747; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic:1748; -O0:    ldaxr x0, [x2]1749; -O0:    cmp x0, x91750; -O0:    stlxr w8, x1, [x2]1751;1752; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic:1753; -O1:    ldaxr x0, [x2]1754; -O1:    cmp x0, x81755; -O1:    stlxr w9, x1, [x2]1756    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 81757    %r = extractvalue { i64, i1 } %pair, 01758    ret i64 %r1759}1760 1761define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {1762; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic_weak:1763; -O0:    ldaxr x0, [x2]1764; -O0:    cmp x0, x91765; -O0:    stlxr w8, x1, [x2]1766;1767; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic_weak:1768; -O1:    ldaxr x8, [x2]1769; -O1:    cmp x8, x01770; -O1:    stlxr wzr, x1, [x2]1771    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 81772    %r = extractvalue { i64, i1 } %pair, 01773    ret i64 %r1774}1775 1776define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {1777; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_acquire:1778; -O0:    ldaxr x0, [x2]1779; -O0:    cmp x0, x91780; -O0:    stlxr w8, x1, [x2]1781;1782; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_acquire:1783; -O1:    ldaxr x0, [x2]1784; -O1:    cmp x0, x81785; -O1:    stlxr w9, x1, [x2]1786    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 81787    %r = extractvalue { i64, i1 } %pair, 01788    ret i64 %r1789}1790 1791define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {1792; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_acquire_weak:1793; -O0:    ldaxr x0, [x2]1794; -O0:    cmp x0, x91795; -O0:    stlxr w8, x1, [x2]1796;1797; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_acquire_weak:1798; -O1:    ldaxr x8, [x2]1799; -O1:    cmp x8, x01800; -O1:    stlxr wzr, x1, [x2]1801    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 81802    %r = extractvalue { i64, i1 } %pair, 01803    ret i64 %r1804}1805 1806define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {1807; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst:1808; -O0:    ldaxr x0, [x2]1809; -O0:    cmp x0, x91810; -O0:    stlxr w8, x1, [x2]1811;1812; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst:1813; -O1:    ldaxr x0, [x2]1814; -O1:    cmp x0, x81815; -O1:    stlxr w9, x1, [x2]1816    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 81817    %r = extractvalue { i64, i1 } %pair, 01818    ret i64 %r1819}1820 1821define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {1822; -O0-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst_weak:1823; -O0:    ldaxr x0, [x2]1824; -O0:    cmp x0, x91825; -O0:    stlxr w8, x1, [x2]1826;1827; -O1-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst_weak:1828; -O1:    ldaxr x8, [x2]1829; -O1:    cmp x8, x01830; -O1:    stlxr wzr, x1, [x2]1831    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 81832    %r = extractvalue { i64, i1 } %pair, 01833    ret i64 %r1834}1835 1836define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {1837; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:1838; -O0:    ldxp x0, x1, [x4]1839; -O0:    cmp x0, x91840; -O0:    cmp x1, x101841; -O0:    stxp w8, x2, x3, [x4]1842; -O0:    stxp w8, x0, x1, [x4]1843;1844; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:1845; -O1:    ldxp x8, x9, [x4]1846; -O1:    cmp x8, x01847; -O1:    cmp x9, x11848; -O1:    stxp w10, x8, x9, [x4]1849; -O1:    stxp w10, x2, x3, [x4]1850    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 161851    %r = extractvalue { i128, i1 } %pair, 01852    ret i128 %r1853}1854 1855define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1856; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:1857; -O0:    ldxp x0, x1, [x4]1858; -O0:    cmp x0, x91859; -O0:    cmp x1, x101860; -O0:    stxp w8, x2, x3, [x4]1861; -O0:    stxp w8, x0, x1, [x4]1862;1863; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:1864; -O1:    ldxp x8, x9, [x4]1865; -O1:    cmp x8, x01866; -O1:    cmp x9, x11867; -O1:    stxp w10, x8, x9, [x4]1868; -O1:    stxp w10, x2, x3, [x4]1869    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 161870    %r = extractvalue { i128, i1 } %pair, 01871    ret i128 %r1872}1873 1874define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {1875; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire:1876; -O0:    ldaxp x0, x1, [x4]1877; -O0:    cmp x0, x91878; -O0:    cmp x1, x101879; -O0:    stxp w8, x2, x3, [x4]1880; -O0:    stxp w8, x0, x1, [x4]1881;1882; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire:1883; -O1:    ldaxp x8, x9, [x4]1884; -O1:    cmp x8, x01885; -O1:    cmp x9, x11886; -O1:    stxp w10, x8, x9, [x4]1887; -O1:    stxp w10, x2, x3, [x4]1888    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 161889    %r = extractvalue { i128, i1 } %pair, 01890    ret i128 %r1891}1892 1893define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {1894; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:1895; -O0:    ldaxp x0, x1, [x4]1896; -O0:    cmp x0, x91897; -O0:    cmp x1, x101898; -O0:    stxp w8, x2, x3, [x4]1899; -O0:    stxp w8, x0, x1, [x4]1900;1901; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:1902; -O1:    ldaxp x8, x9, [x4]1903; -O1:    cmp x8, x01904; -O1:    cmp x9, x11905; -O1:    stxp w10, x8, x9, [x4]1906; -O1:    stxp w10, x2, x3, [x4]1907    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 161908    %r = extractvalue { i128, i1 } %pair, 01909    ret i128 %r1910}1911 1912define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {1913; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:1914; -O0:    ldaxp x0, x1, [x4]1915; -O0:    cmp x0, x91916; -O0:    cmp x1, x101917; -O0:    stlxp w8, x2, x3, [x4]1918; -O0:    stlxp w8, x0, x1, [x4]1919;1920; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:1921; -O1:    ldaxp x8, x9, [x4]1922; -O1:    cmp x8, x01923; -O1:    cmp x9, x11924; -O1:    stlxp w10, x8, x9, [x4]1925; -O1:    stlxp w10, x2, x3, [x4]1926    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161927    %r = extractvalue { i128, i1 } %pair, 01928    ret i128 %r1929}1930 1931define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {1932; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:1933; -O0:    ldaxp x0, x1, [x4]1934; -O0:    cmp x0, x91935; -O0:    cmp x1, x101936; -O0:    stlxp w8, x2, x3, [x4]1937; -O0:    stlxp w8, x0, x1, [x4]1938;1939; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:1940; -O1:    ldaxp x8, x9, [x4]1941; -O1:    cmp x8, x01942; -O1:    cmp x9, x11943; -O1:    stlxp w10, x8, x9, [x4]1944; -O1:    stlxp w10, x2, x3, [x4]1945    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 161946    %r = extractvalue { i128, i1 } %pair, 01947    ret i128 %r1948}1949 1950define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {1951; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic:1952; -O0:    ldaxp x0, x1, [x4]1953; -O0:    cmp x0, x91954; -O0:    cmp x1, x101955; -O0:    stxp w8, x2, x3, [x4]1956; -O0:    stxp w8, x0, x1, [x4]1957;1958; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic:1959; -O1:    ldaxp x8, x9, [x4]1960; -O1:    cmp x8, x01961; -O1:    cmp x9, x11962; -O1:    stxp w10, x8, x9, [x4]1963; -O1:    stxp w10, x2, x3, [x4]1964    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161965    %r = extractvalue { i128, i1 } %pair, 01966    ret i128 %r1967}1968 1969define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {1970; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:1971; -O0:    ldaxp x0, x1, [x4]1972; -O0:    cmp x0, x91973; -O0:    cmp x1, x101974; -O0:    stxp w8, x2, x3, [x4]1975; -O0:    stxp w8, x0, x1, [x4]1976;1977; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:1978; -O1:    ldaxp x8, x9, [x4]1979; -O1:    cmp x8, x01980; -O1:    cmp x9, x11981; -O1:    stxp w10, x8, x9, [x4]1982; -O1:    stxp w10, x2, x3, [x4]1983    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 161984    %r = extractvalue { i128, i1 } %pair, 01985    ret i128 %r1986}1987 1988define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {1989; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire:1990; -O0:    ldaxp x0, x1, [x4]1991; -O0:    cmp x0, x91992; -O0:    cmp x1, x101993; -O0:    stxp w8, x2, x3, [x4]1994; -O0:    stxp w8, x0, x1, [x4]1995;1996; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire:1997; -O1:    ldaxp x8, x9, [x4]1998; -O1:    cmp x8, x01999; -O1:    cmp x9, x12000; -O1:    stxp w10, x8, x9, [x4]2001; -O1:    stxp w10, x2, x3, [x4]2002    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 162003    %r = extractvalue { i128, i1 } %pair, 02004    ret i128 %r2005}2006 2007define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2008; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:2009; -O0:    ldaxp x0, x1, [x4]2010; -O0:    cmp x0, x92011; -O0:    cmp x1, x102012; -O0:    stxp w8, x2, x3, [x4]2013; -O0:    stxp w8, x0, x1, [x4]2014;2015; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:2016; -O1:    ldaxp x8, x9, [x4]2017; -O1:    cmp x8, x02018; -O1:    cmp x9, x12019; -O1:    stxp w10, x8, x9, [x4]2020; -O1:    stxp w10, x2, x3, [x4]2021    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 162022    %r = extractvalue { i128, i1 } %pair, 02023    ret i128 %r2024}2025 2026define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2027; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:2028; -O0:    ldaxp x0, x1, [x4]2029; -O0:    cmp x0, x92030; -O0:    cmp x1, x102031; -O0:    stlxp w8, x2, x3, [x4]2032; -O0:    stlxp w8, x0, x1, [x4]2033;2034; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:2035; -O1:    ldaxp x8, x9, [x4]2036; -O1:    cmp x8, x02037; -O1:    cmp x9, x12038; -O1:    stlxp w10, x8, x9, [x4]2039; -O1:    stlxp w10, x2, x3, [x4]2040    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 162041    %r = extractvalue { i128, i1 } %pair, 02042    ret i128 %r2043}2044 2045define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2046; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:2047; -O0:    ldaxp x0, x1, [x4]2048; -O0:    cmp x0, x92049; -O0:    cmp x1, x102050; -O0:    stlxp w8, x2, x3, [x4]2051; -O0:    stlxp w8, x0, x1, [x4]2052;2053; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:2054; -O1:    ldaxp x8, x9, [x4]2055; -O1:    cmp x8, x02056; -O1:    cmp x9, x12057; -O1:    stlxp w10, x8, x9, [x4]2058; -O1:    stlxp w10, x2, x3, [x4]2059    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 162060    %r = extractvalue { i128, i1 } %pair, 02061    ret i128 %r2062}2063 2064define dso_local i128 @cmpxchg_i128_aligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {2065; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic:2066; -O0:    ldxp x0, x1, [x4]2067; -O0:    cmp x0, x92068; -O0:    cmp x1, x102069; -O0:    stlxp w8, x2, x3, [x4]2070; -O0:    stlxp w8, x0, x1, [x4]2071;2072; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic:2073; -O1:    ldxp x8, x9, [x4]2074; -O1:    cmp x8, x02075; -O1:    cmp x9, x12076; -O1:    stlxp w10, x8, x9, [x4]2077; -O1:    stlxp w10, x2, x3, [x4]2078    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 162079    %r = extractvalue { i128, i1 } %pair, 02080    ret i128 %r2081}2082 2083define dso_local i128 @cmpxchg_i128_aligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2084; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:2085; -O0:    ldxp x0, x1, [x4]2086; -O0:    cmp x0, x92087; -O0:    cmp x1, x102088; -O0:    stlxp w8, x2, x3, [x4]2089; -O0:    stlxp w8, x0, x1, [x4]2090;2091; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:2092; -O1:    ldxp x8, x9, [x4]2093; -O1:    cmp x8, x02094; -O1:    cmp x9, x12095; -O1:    stlxp w10, x8, x9, [x4]2096; -O1:    stlxp w10, x2, x3, [x4]2097    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 162098    %r = extractvalue { i128, i1 } %pair, 02099    ret i128 %r2100}2101 2102define dso_local i128 @cmpxchg_i128_aligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {2103; -O0-LABEL: cmpxchg_i128_aligned_release_acquire:2104; -O0:    ldaxp x0, x1, [x4]2105; -O0:    cmp x0, x92106; -O0:    cmp x1, x102107; -O0:    stlxp w8, x2, x3, [x4]2108; -O0:    stlxp w8, x0, x1, [x4]2109;2110; -O1-LABEL: cmpxchg_i128_aligned_release_acquire:2111; -O1:    ldaxp x8, x9, [x4]2112; -O1:    cmp x8, x02113; -O1:    cmp x9, x12114; -O1:    stlxp w10, x8, x9, [x4]2115; -O1:    stlxp w10, x2, x3, [x4]2116    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 162117    %r = extractvalue { i128, i1 } %pair, 02118    ret i128 %r2119}2120 2121define dso_local i128 @cmpxchg_i128_aligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2122; -O0-LABEL: cmpxchg_i128_aligned_release_acquire_weak:2123; -O0:    ldaxp x0, x1, [x4]2124; -O0:    cmp x0, x92125; -O0:    cmp x1, x102126; -O0:    stlxp w8, x2, x3, [x4]2127; -O0:    stlxp w8, x0, x1, [x4]2128;2129; -O1-LABEL: cmpxchg_i128_aligned_release_acquire_weak:2130; -O1:    ldaxp x8, x9, [x4]2131; -O1:    cmp x8, x02132; -O1:    cmp x9, x12133; -O1:    stlxp w10, x8, x9, [x4]2134; -O1:    stlxp w10, x2, x3, [x4]2135    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 162136    %r = extractvalue { i128, i1 } %pair, 02137    ret i128 %r2138}2139 2140define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2141; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst:2142; -O0:    ldaxp x0, x1, [x4]2143; -O0:    cmp x0, x92144; -O0:    cmp x1, x102145; -O0:    stlxp w8, x2, x3, [x4]2146; -O0:    stlxp w8, x0, x1, [x4]2147;2148; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst:2149; -O1:    ldaxp x8, x9, [x4]2150; -O1:    cmp x8, x02151; -O1:    cmp x9, x12152; -O1:    stlxp w10, x8, x9, [x4]2153; -O1:    stlxp w10, x2, x3, [x4]2154    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 162155    %r = extractvalue { i128, i1 } %pair, 02156    ret i128 %r2157}2158 2159define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2160; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:2161; -O0:    ldaxp x0, x1, [x4]2162; -O0:    cmp x0, x92163; -O0:    cmp x1, x102164; -O0:    stlxp w8, x2, x3, [x4]2165; -O0:    stlxp w8, x0, x1, [x4]2166;2167; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:2168; -O1:    ldaxp x8, x9, [x4]2169; -O1:    cmp x8, x02170; -O1:    cmp x9, x12171; -O1:    stlxp w10, x8, x9, [x4]2172; -O1:    stlxp w10, x2, x3, [x4]2173    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 162174    %r = extractvalue { i128, i1 } %pair, 02175    ret i128 %r2176}2177 2178define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {2179; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:2180; -O0:    ldaxp x0, x1, [x4]2181; -O0:    cmp x0, x92182; -O0:    cmp x1, x102183; -O0:    stlxp w8, x2, x3, [x4]2184; -O0:    stlxp w8, x0, x1, [x4]2185;2186; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:2187; -O1:    ldaxp x8, x9, [x4]2188; -O1:    cmp x8, x02189; -O1:    cmp x9, x12190; -O1:    stlxp w10, x8, x9, [x4]2191; -O1:    stlxp w10, x2, x3, [x4]2192    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 162193    %r = extractvalue { i128, i1 } %pair, 02194    ret i128 %r2195}2196 2197define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2198; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:2199; -O0:    ldaxp x0, x1, [x4]2200; -O0:    cmp x0, x92201; -O0:    cmp x1, x102202; -O0:    stlxp w8, x2, x3, [x4]2203; -O0:    stlxp w8, x0, x1, [x4]2204;2205; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:2206; -O1:    ldaxp x8, x9, [x4]2207; -O1:    cmp x8, x02208; -O1:    cmp x9, x12209; -O1:    stlxp w10, x8, x9, [x4]2210; -O1:    stlxp w10, x2, x3, [x4]2211    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 162212    %r = extractvalue { i128, i1 } %pair, 02213    ret i128 %r2214}2215 2216define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {2217; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:2218; -O0:    ldaxp x0, x1, [x4]2219; -O0:    cmp x0, x92220; -O0:    cmp x1, x102221; -O0:    stlxp w8, x2, x3, [x4]2222; -O0:    stlxp w8, x0, x1, [x4]2223;2224; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:2225; -O1:    ldaxp x8, x9, [x4]2226; -O1:    cmp x8, x02227; -O1:    cmp x9, x12228; -O1:    stlxp w10, x8, x9, [x4]2229; -O1:    stlxp w10, x2, x3, [x4]2230    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 162231    %r = extractvalue { i128, i1 } %pair, 02232    ret i128 %r2233}2234 2235define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2236; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:2237; -O0:    ldaxp x0, x1, [x4]2238; -O0:    cmp x0, x92239; -O0:    cmp x1, x102240; -O0:    stlxp w8, x2, x3, [x4]2241; -O0:    stlxp w8, x0, x1, [x4]2242;2243; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:2244; -O1:    ldaxp x8, x9, [x4]2245; -O1:    cmp x8, x02246; -O1:    cmp x9, x12247; -O1:    stlxp w10, x8, x9, [x4]2248; -O1:    stlxp w10, x2, x3, [x4]2249    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 162250    %r = extractvalue { i128, i1 } %pair, 02251    ret i128 %r2252}2253 2254define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2255; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:2256; -O0:    ldaxp x0, x1, [x4]2257; -O0:    cmp x0, x92258; -O0:    cmp x1, x102259; -O0:    stlxp w8, x2, x3, [x4]2260; -O0:    stlxp w8, x0, x1, [x4]2261;2262; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:2263; -O1:    ldaxp x8, x9, [x4]2264; -O1:    cmp x8, x02265; -O1:    cmp x9, x12266; -O1:    stlxp w10, x8, x9, [x4]2267; -O1:    stlxp w10, x2, x3, [x4]2268    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 162269    %r = extractvalue { i128, i1 } %pair, 02270    ret i128 %r2271}2272 2273define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2274; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:2275; -O0:    ldaxp x0, x1, [x4]2276; -O0:    cmp x0, x92277; -O0:    cmp x1, x102278; -O0:    stlxp w8, x2, x3, [x4]2279; -O0:    stlxp w8, x0, x1, [x4]2280;2281; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:2282; -O1:    ldaxp x8, x9, [x4]2283; -O1:    cmp x8, x02284; -O1:    cmp x9, x12285; -O1:    stlxp w10, x8, x9, [x4]2286; -O1:    stlxp w10, x2, x3, [x4]2287    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 162288    %r = extractvalue { i128, i1 } %pair, 02289    ret i128 %r2290}2291 2292define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {2293; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:2294; -O0:    ldaxp x0, x1, [x4]2295; -O0:    cmp x0, x92296; -O0:    cmp x1, x102297; -O0:    stlxp w8, x2, x3, [x4]2298; -O0:    stlxp w8, x0, x1, [x4]2299;2300; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:2301; -O1:    ldaxp x8, x9, [x4]2302; -O1:    cmp x8, x02303; -O1:    cmp x9, x12304; -O1:    stlxp w10, x8, x9, [x4]2305; -O1:    stlxp w10, x2, x3, [x4]2306    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 162307    %r = extractvalue { i128, i1 } %pair, 02308    ret i128 %r2309}2310 2311define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {2312; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:2313; -O0:    ldaxp x0, x1, [x4]2314; -O0:    cmp x0, x92315; -O0:    cmp x1, x102316; -O0:    stlxp w8, x2, x3, [x4]2317; -O0:    stlxp w8, x0, x1, [x4]2318;2319; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:2320; -O1:    ldaxp x8, x9, [x4]2321; -O1:    cmp x8, x02322; -O1:    cmp x9, x12323; -O1:    stlxp w10, x8, x9, [x4]2324; -O1:    stlxp w10, x2, x3, [x4]2325    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 162326    %r = extractvalue { i128, i1 } %pair, 02327    ret i128 %r2328}2329 2330define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {2331; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:2332; -O0:    ldaxp x0, x1, [x4]2333; -O0:    cmp x0, x92334; -O0:    cmp x1, x102335; -O0:    stlxp w8, x2, x3, [x4]2336; -O0:    stlxp w8, x0, x1, [x4]2337;2338; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:2339; -O1:    ldaxp x8, x9, [x4]2340; -O1:    cmp x8, x02341; -O1:    cmp x9, x12342; -O1:    stlxp w10, x8, x9, [x4]2343; -O1:    stlxp w10, x2, x3, [x4]2344    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 162345    %r = extractvalue { i128, i1 } %pair, 02346    ret i128 %r2347}2348 2349define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {2350; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:2351; -O0:    ldaxp x0, x1, [x4]2352; -O0:    cmp x0, x92353; -O0:    cmp x1, x102354; -O0:    stlxp w8, x2, x3, [x4]2355; -O0:    stlxp w8, x0, x1, [x4]2356;2357; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:2358; -O1:    ldaxp x8, x9, [x4]2359; -O1:    cmp x8, x02360; -O1:    cmp x9, x12361; -O1:    stlxp w10, x8, x9, [x4]2362; -O1:    stlxp w10, x2, x3, [x4]2363    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 162364    %r = extractvalue { i128, i1 } %pair, 02365    ret i128 %r2366}2367 2368define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {2369; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:2370; -O0:    ldaxp x0, x1, [x4]2371; -O0:    cmp x0, x92372; -O0:    cmp x1, x102373; -O0:    stlxp w8, x2, x3, [x4]2374; -O0:    stlxp w8, x0, x1, [x4]2375;2376; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:2377; -O1:    ldaxp x8, x9, [x4]2378; -O1:    cmp x8, x02379; -O1:    cmp x9, x12380; -O1:    stlxp w10, x8, x9, [x4]2381; -O1:    stlxp w10, x2, x3, [x4]2382    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 162383    %r = extractvalue { i128, i1 } %pair, 02384    ret i128 %r2385}2386 2387define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {2388; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:2389; -O0:    ldaxp x0, x1, [x4]2390; -O0:    cmp x0, x92391; -O0:    cmp x1, x102392; -O0:    stlxp w8, x2, x3, [x4]2393; -O0:    stlxp w8, x0, x1, [x4]2394;2395; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:2396; -O1:    ldaxp x8, x9, [x4]2397; -O1:    cmp x8, x02398; -O1:    cmp x9, x12399; -O1:    stlxp w10, x8, x9, [x4]2400; -O1:    stlxp w10, x2, x3, [x4]2401    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 162402    %r = extractvalue { i128, i1 } %pair, 02403    ret i128 %r2404}2405 2406define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {2407; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic:2408; -O0:    ldaxrb w0, [x2]2409; -O0:    cmp w0, w9, uxtb2410; -O0:    stlxrb w8, w1, [x2]2411;2412; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic:2413; -O1:    and w8, w0, #0xff2414; -O1:    ldxrb w0, [x2]2415; -O1:    cmp w0, w82416; -O1:    stxrb w9, w1, [x2]2417    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 12418    %r = extractvalue { i8, i1 } %pair, 02419    ret i8 %r2420}2421 2422define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {2423; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic_weak:2424; -O0:    ldaxrb w0, [x2]2425; -O0:    cmp w0, w9, uxtb2426; -O0:    stlxrb w8, w1, [x2]2427;2428; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic_weak:2429; -O1:    ldxrb w8, [x2]2430; -O1:    cmp w8, w0, uxtb2431; -O1:    stxrb wzr, w1, [x2]2432    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 12433    %r = extractvalue { i8, i1 } %pair, 02434    ret i8 %r2435}2436 2437define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {2438; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_acquire:2439; -O0:    ldaxrb w0, [x2]2440; -O0:    cmp w0, w9, uxtb2441; -O0:    stlxrb w8, w1, [x2]2442;2443; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_acquire:2444; -O1:    and w8, w0, #0xff2445; -O1:    ldaxrb w0, [x2]2446; -O1:    cmp w0, w82447; -O1:    stxrb w9, w1, [x2]2448    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 12449    %r = extractvalue { i8, i1 } %pair, 02450    ret i8 %r2451}2452 2453define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {2454; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_acquire_weak:2455; -O0:    ldaxrb w0, [x2]2456; -O0:    cmp w0, w9, uxtb2457; -O0:    stlxrb w8, w1, [x2]2458;2459; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_acquire_weak:2460; -O1:    ldaxrb w8, [x2]2461; -O1:    cmp w8, w0, uxtb2462; -O1:    stxrb wzr, w1, [x2]2463    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 12464    %r = extractvalue { i8, i1 } %pair, 02465    ret i8 %r2466}2467 2468define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {2469; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst:2470; -O0:    ldaxrb w0, [x2]2471; -O0:    cmp w0, w9, uxtb2472; -O0:    stlxrb w8, w1, [x2]2473;2474; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst:2475; -O1:    and w8, w0, #0xff2476; -O1:    ldaxrb w0, [x2]2477; -O1:    cmp w0, w82478; -O1:    stlxrb w9, w1, [x2]2479    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 12480    %r = extractvalue { i8, i1 } %pair, 02481    ret i8 %r2482}2483 2484define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {2485; -O0-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst_weak:2486; -O0:    ldaxrb w0, [x2]2487; -O0:    cmp w0, w9, uxtb2488; -O0:    stlxrb w8, w1, [x2]2489;2490; -O1-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst_weak:2491; -O1:    ldaxrb w8, [x2]2492; -O1:    cmp w8, w0, uxtb2493; -O1:    stlxrb wzr, w1, [x2]2494    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 12495    %r = extractvalue { i8, i1 } %pair, 02496    ret i8 %r2497}2498 2499define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {2500; -O0-LABEL: cmpxchg_i8_unaligned_acquire_monotonic:2501; -O0:    ldaxrb w0, [x2]2502; -O0:    cmp w0, w9, uxtb2503; -O0:    stlxrb w8, w1, [x2]2504;2505; -O1-LABEL: cmpxchg_i8_unaligned_acquire_monotonic:2506; -O1:    and w8, w0, #0xff2507; -O1:    ldaxrb w0, [x2]2508; -O1:    cmp w0, w82509; -O1:    stxrb w9, w1, [x2]2510    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 12511    %r = extractvalue { i8, i1 } %pair, 02512    ret i8 %r2513}2514 2515define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {2516; -O0-LABEL: cmpxchg_i8_unaligned_acquire_monotonic_weak:2517; -O0:    ldaxrb w0, [x2]2518; -O0:    cmp w0, w9, uxtb2519; -O0:    stlxrb w8, w1, [x2]2520;2521; -O1-LABEL: cmpxchg_i8_unaligned_acquire_monotonic_weak:2522; -O1:    ldaxrb w8, [x2]2523; -O1:    cmp w8, w0, uxtb2524; -O1:    stxrb wzr, w1, [x2]2525    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 12526    %r = extractvalue { i8, i1 } %pair, 02527    ret i8 %r2528}2529 2530define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {2531; -O0-LABEL: cmpxchg_i8_unaligned_acquire_acquire:2532; -O0:    ldaxrb w0, [x2]2533; -O0:    cmp w0, w9, uxtb2534; -O0:    stlxrb w8, w1, [x2]2535;2536; -O1-LABEL: cmpxchg_i8_unaligned_acquire_acquire:2537; -O1:    and w8, w0, #0xff2538; -O1:    ldaxrb w0, [x2]2539; -O1:    cmp w0, w82540; -O1:    stxrb w9, w1, [x2]2541    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 12542    %r = extractvalue { i8, i1 } %pair, 02543    ret i8 %r2544}2545 2546define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {2547; -O0-LABEL: cmpxchg_i8_unaligned_acquire_acquire_weak:2548; -O0:    ldaxrb w0, [x2]2549; -O0:    cmp w0, w9, uxtb2550; -O0:    stlxrb w8, w1, [x2]2551;2552; -O1-LABEL: cmpxchg_i8_unaligned_acquire_acquire_weak:2553; -O1:    ldaxrb w8, [x2]2554; -O1:    cmp w8, w0, uxtb2555; -O1:    stxrb wzr, w1, [x2]2556    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 12557    %r = extractvalue { i8, i1 } %pair, 02558    ret i8 %r2559}2560 2561define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {2562; -O0-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst:2563; -O0:    ldaxrb w0, [x2]2564; -O0:    cmp w0, w9, uxtb2565; -O0:    stlxrb w8, w1, [x2]2566;2567; -O1-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst:2568; -O1:    and w8, w0, #0xff2569; -O1:    ldaxrb w0, [x2]2570; -O1:    cmp w0, w82571; -O1:    stlxrb w9, w1, [x2]2572    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 12573    %r = extractvalue { i8, i1 } %pair, 02574    ret i8 %r2575}2576 2577define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {2578; -O0-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst_weak:2579; -O0:    ldaxrb w0, [x2]2580; -O0:    cmp w0, w9, uxtb2581; -O0:    stlxrb w8, w1, [x2]2582;2583; -O1-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst_weak:2584; -O1:    ldaxrb w8, [x2]2585; -O1:    cmp w8, w0, uxtb2586; -O1:    stlxrb wzr, w1, [x2]2587    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 12588    %r = extractvalue { i8, i1 } %pair, 02589    ret i8 %r2590}2591 2592define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {2593; -O0-LABEL: cmpxchg_i8_unaligned_release_monotonic:2594; -O0:    ldaxrb w0, [x2]2595; -O0:    cmp w0, w9, uxtb2596; -O0:    stlxrb w8, w1, [x2]2597;2598; -O1-LABEL: cmpxchg_i8_unaligned_release_monotonic:2599; -O1:    and w8, w0, #0xff2600; -O1:    ldxrb w0, [x2]2601; -O1:    cmp w0, w82602; -O1:    stlxrb w9, w1, [x2]2603    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 12604    %r = extractvalue { i8, i1 } %pair, 02605    ret i8 %r2606}2607 2608define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {2609; -O0-LABEL: cmpxchg_i8_unaligned_release_monotonic_weak:2610; -O0:    ldaxrb w0, [x2]2611; -O0:    cmp w0, w9, uxtb2612; -O0:    stlxrb w8, w1, [x2]2613;2614; -O1-LABEL: cmpxchg_i8_unaligned_release_monotonic_weak:2615; -O1:    ldxrb w8, [x2]2616; -O1:    cmp w8, w0, uxtb2617; -O1:    stlxrb wzr, w1, [x2]2618    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 12619    %r = extractvalue { i8, i1 } %pair, 02620    ret i8 %r2621}2622 2623define dso_local i8 @cmpxchg_i8_unaligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {2624; -O0-LABEL: cmpxchg_i8_unaligned_release_acquire:2625; -O0:    ldaxrb w0, [x2]2626; -O0:    cmp w0, w9, uxtb2627; -O0:    stlxrb w8, w1, [x2]2628;2629; -O1-LABEL: cmpxchg_i8_unaligned_release_acquire:2630; -O1:    and w8, w0, #0xff2631; -O1:    ldaxrb w0, [x2]2632; -O1:    cmp w0, w82633; -O1:    stlxrb w9, w1, [x2]2634    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 12635    %r = extractvalue { i8, i1 } %pair, 02636    ret i8 %r2637}2638 2639define dso_local i8 @cmpxchg_i8_unaligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {2640; -O0-LABEL: cmpxchg_i8_unaligned_release_acquire_weak:2641; -O0:    ldaxrb w0, [x2]2642; -O0:    cmp w0, w9, uxtb2643; -O0:    stlxrb w8, w1, [x2]2644;2645; -O1-LABEL: cmpxchg_i8_unaligned_release_acquire_weak:2646; -O1:    ldaxrb w8, [x2]2647; -O1:    cmp w8, w0, uxtb2648; -O1:    stlxrb wzr, w1, [x2]2649    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 12650    %r = extractvalue { i8, i1 } %pair, 02651    ret i8 %r2652}2653 2654define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {2655; -O0-LABEL: cmpxchg_i8_unaligned_release_seq_cst:2656; -O0:    ldaxrb w0, [x2]2657; -O0:    cmp w0, w9, uxtb2658; -O0:    stlxrb w8, w1, [x2]2659;2660; -O1-LABEL: cmpxchg_i8_unaligned_release_seq_cst:2661; -O1:    and w8, w0, #0xff2662; -O1:    ldaxrb w0, [x2]2663; -O1:    cmp w0, w82664; -O1:    stlxrb w9, w1, [x2]2665    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 12666    %r = extractvalue { i8, i1 } %pair, 02667    ret i8 %r2668}2669 2670define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {2671; -O0-LABEL: cmpxchg_i8_unaligned_release_seq_cst_weak:2672; -O0:    ldaxrb w0, [x2]2673; -O0:    cmp w0, w9, uxtb2674; -O0:    stlxrb w8, w1, [x2]2675;2676; -O1-LABEL: cmpxchg_i8_unaligned_release_seq_cst_weak:2677; -O1:    ldaxrb w8, [x2]2678; -O1:    cmp w8, w0, uxtb2679; -O1:    stlxrb wzr, w1, [x2]2680    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 12681    %r = extractvalue { i8, i1 } %pair, 02682    ret i8 %r2683}2684 2685define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {2686; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic:2687; -O0:    ldaxrb w0, [x2]2688; -O0:    cmp w0, w9, uxtb2689; -O0:    stlxrb w8, w1, [x2]2690;2691; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic:2692; -O1:    and w8, w0, #0xff2693; -O1:    ldaxrb w0, [x2]2694; -O1:    cmp w0, w82695; -O1:    stlxrb w9, w1, [x2]2696    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 12697    %r = extractvalue { i8, i1 } %pair, 02698    ret i8 %r2699}2700 2701define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {2702; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic_weak:2703; -O0:    ldaxrb w0, [x2]2704; -O0:    cmp w0, w9, uxtb2705; -O0:    stlxrb w8, w1, [x2]2706;2707; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic_weak:2708; -O1:    ldaxrb w8, [x2]2709; -O1:    cmp w8, w0, uxtb2710; -O1:    stlxrb wzr, w1, [x2]2711    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 12712    %r = extractvalue { i8, i1 } %pair, 02713    ret i8 %r2714}2715 2716define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {2717; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire:2718; -O0:    ldaxrb w0, [x2]2719; -O0:    cmp w0, w9, uxtb2720; -O0:    stlxrb w8, w1, [x2]2721;2722; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire:2723; -O1:    and w8, w0, #0xff2724; -O1:    ldaxrb w0, [x2]2725; -O1:    cmp w0, w82726; -O1:    stlxrb w9, w1, [x2]2727    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 12728    %r = extractvalue { i8, i1 } %pair, 02729    ret i8 %r2730}2731 2732define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {2733; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire_weak:2734; -O0:    ldaxrb w0, [x2]2735; -O0:    cmp w0, w9, uxtb2736; -O0:    stlxrb w8, w1, [x2]2737;2738; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire_weak:2739; -O1:    ldaxrb w8, [x2]2740; -O1:    cmp w8, w0, uxtb2741; -O1:    stlxrb wzr, w1, [x2]2742    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 12743    %r = extractvalue { i8, i1 } %pair, 02744    ret i8 %r2745}2746 2747define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {2748; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst:2749; -O0:    ldaxrb w0, [x2]2750; -O0:    cmp w0, w9, uxtb2751; -O0:    stlxrb w8, w1, [x2]2752;2753; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst:2754; -O1:    and w8, w0, #0xff2755; -O1:    ldaxrb w0, [x2]2756; -O1:    cmp w0, w82757; -O1:    stlxrb w9, w1, [x2]2758    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 12759    %r = extractvalue { i8, i1 } %pair, 02760    ret i8 %r2761}2762 2763define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {2764; -O0-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst_weak:2765; -O0:    ldaxrb w0, [x2]2766; -O0:    cmp w0, w9, uxtb2767; -O0:    stlxrb w8, w1, [x2]2768;2769; -O1-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst_weak:2770; -O1:    ldaxrb w8, [x2]2771; -O1:    cmp w8, w0, uxtb2772; -O1:    stlxrb wzr, w1, [x2]2773    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 12774    %r = extractvalue { i8, i1 } %pair, 02775    ret i8 %r2776}2777 2778define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {2779; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic:2780; -O0:    ldaxrb w0, [x2]2781; -O0:    cmp w0, w9, uxtb2782; -O0:    stlxrb w8, w1, [x2]2783;2784; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic:2785; -O1:    and w8, w0, #0xff2786; -O1:    ldaxrb w0, [x2]2787; -O1:    cmp w0, w82788; -O1:    stlxrb w9, w1, [x2]2789    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 12790    %r = extractvalue { i8, i1 } %pair, 02791    ret i8 %r2792}2793 2794define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {2795; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic_weak:2796; -O0:    ldaxrb w0, [x2]2797; -O0:    cmp w0, w9, uxtb2798; -O0:    stlxrb w8, w1, [x2]2799;2800; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic_weak:2801; -O1:    ldaxrb w8, [x2]2802; -O1:    cmp w8, w0, uxtb2803; -O1:    stlxrb wzr, w1, [x2]2804    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 12805    %r = extractvalue { i8, i1 } %pair, 02806    ret i8 %r2807}2808 2809define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {2810; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire:2811; -O0:    ldaxrb w0, [x2]2812; -O0:    cmp w0, w9, uxtb2813; -O0:    stlxrb w8, w1, [x2]2814;2815; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire:2816; -O1:    and w8, w0, #0xff2817; -O1:    ldaxrb w0, [x2]2818; -O1:    cmp w0, w82819; -O1:    stlxrb w9, w1, [x2]2820    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 12821    %r = extractvalue { i8, i1 } %pair, 02822    ret i8 %r2823}2824 2825define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {2826; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire_weak:2827; -O0:    ldaxrb w0, [x2]2828; -O0:    cmp w0, w9, uxtb2829; -O0:    stlxrb w8, w1, [x2]2830;2831; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire_weak:2832; -O1:    ldaxrb w8, [x2]2833; -O1:    cmp w8, w0, uxtb2834; -O1:    stlxrb wzr, w1, [x2]2835    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 12836    %r = extractvalue { i8, i1 } %pair, 02837    ret i8 %r2838}2839 2840define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {2841; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst:2842; -O0:    ldaxrb w0, [x2]2843; -O0:    cmp w0, w9, uxtb2844; -O0:    stlxrb w8, w1, [x2]2845;2846; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst:2847; -O1:    and w8, w0, #0xff2848; -O1:    ldaxrb w0, [x2]2849; -O1:    cmp w0, w82850; -O1:    stlxrb w9, w1, [x2]2851    %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 12852    %r = extractvalue { i8, i1 } %pair, 02853    ret i8 %r2854}2855 2856define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {2857; -O0-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst_weak:2858; -O0:    ldaxrb w0, [x2]2859; -O0:    cmp w0, w9, uxtb2860; -O0:    stlxrb w8, w1, [x2]2861;2862; -O1-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst_weak:2863; -O1:    ldaxrb w8, [x2]2864; -O1:    cmp w8, w0, uxtb2865; -O1:    stlxrb wzr, w1, [x2]2866    %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 12867    %r = extractvalue { i8, i1 } %pair, 02868    ret i8 %r2869}2870 2871define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {2872; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic:2873; CHECK:    bl __atomic_compare_exchange2874    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 12875    %r = extractvalue { i16, i1 } %pair, 02876    ret i16 %r2877}2878 2879define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {2880; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic_weak:2881; CHECK:    bl __atomic_compare_exchange2882    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 12883    %r = extractvalue { i16, i1 } %pair, 02884    ret i16 %r2885}2886 2887define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {2888; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire:2889; CHECK:    bl __atomic_compare_exchange2890    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 12891    %r = extractvalue { i16, i1 } %pair, 02892    ret i16 %r2893}2894 2895define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {2896; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire_weak:2897; CHECK:    bl __atomic_compare_exchange2898    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 12899    %r = extractvalue { i16, i1 } %pair, 02900    ret i16 %r2901}2902 2903define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {2904; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst:2905; CHECK:    bl __atomic_compare_exchange2906    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 12907    %r = extractvalue { i16, i1 } %pair, 02908    ret i16 %r2909}2910 2911define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {2912; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst_weak:2913; CHECK:    bl __atomic_compare_exchange2914    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 12915    %r = extractvalue { i16, i1 } %pair, 02916    ret i16 %r2917}2918 2919define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {2920; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic:2921; CHECK:    bl __atomic_compare_exchange2922    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 12923    %r = extractvalue { i16, i1 } %pair, 02924    ret i16 %r2925}2926 2927define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {2928; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic_weak:2929; CHECK:    bl __atomic_compare_exchange2930    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 12931    %r = extractvalue { i16, i1 } %pair, 02932    ret i16 %r2933}2934 2935define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {2936; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire:2937; CHECK:    bl __atomic_compare_exchange2938    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 12939    %r = extractvalue { i16, i1 } %pair, 02940    ret i16 %r2941}2942 2943define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {2944; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire_weak:2945; CHECK:    bl __atomic_compare_exchange2946    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 12947    %r = extractvalue { i16, i1 } %pair, 02948    ret i16 %r2949}2950 2951define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {2952; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst:2953; CHECK:    bl __atomic_compare_exchange2954    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 12955    %r = extractvalue { i16, i1 } %pair, 02956    ret i16 %r2957}2958 2959define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {2960; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst_weak:2961; CHECK:    bl __atomic_compare_exchange2962    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 12963    %r = extractvalue { i16, i1 } %pair, 02964    ret i16 %r2965}2966 2967define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {2968; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic:2969; CHECK:    bl __atomic_compare_exchange2970    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 12971    %r = extractvalue { i16, i1 } %pair, 02972    ret i16 %r2973}2974 2975define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {2976; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic_weak:2977; CHECK:    bl __atomic_compare_exchange2978    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 12979    %r = extractvalue { i16, i1 } %pair, 02980    ret i16 %r2981}2982 2983define dso_local i16 @cmpxchg_i16_unaligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {2984; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire:2985; CHECK:    bl __atomic_compare_exchange2986    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 12987    %r = extractvalue { i16, i1 } %pair, 02988    ret i16 %r2989}2990 2991define dso_local i16 @cmpxchg_i16_unaligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {2992; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire_weak:2993; CHECK:    bl __atomic_compare_exchange2994    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 12995    %r = extractvalue { i16, i1 } %pair, 02996    ret i16 %r2997}2998 2999define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {3000; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst:3001; CHECK:    bl __atomic_compare_exchange3002    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 13003    %r = extractvalue { i16, i1 } %pair, 03004    ret i16 %r3005}3006 3007define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {3008; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst_weak:3009; CHECK:    bl __atomic_compare_exchange3010    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 13011    %r = extractvalue { i16, i1 } %pair, 03012    ret i16 %r3013}3014 3015define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {3016; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic:3017; CHECK:    bl __atomic_compare_exchange3018    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 13019    %r = extractvalue { i16, i1 } %pair, 03020    ret i16 %r3021}3022 3023define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {3024; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic_weak:3025; CHECK:    bl __atomic_compare_exchange3026    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 13027    %r = extractvalue { i16, i1 } %pair, 03028    ret i16 %r3029}3030 3031define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {3032; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire:3033; CHECK:    bl __atomic_compare_exchange3034    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 13035    %r = extractvalue { i16, i1 } %pair, 03036    ret i16 %r3037}3038 3039define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {3040; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire_weak:3041; CHECK:    bl __atomic_compare_exchange3042    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 13043    %r = extractvalue { i16, i1 } %pair, 03044    ret i16 %r3045}3046 3047define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {3048; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst:3049; CHECK:    bl __atomic_compare_exchange3050    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 13051    %r = extractvalue { i16, i1 } %pair, 03052    ret i16 %r3053}3054 3055define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {3056; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst_weak:3057; CHECK:    bl __atomic_compare_exchange3058    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 13059    %r = extractvalue { i16, i1 } %pair, 03060    ret i16 %r3061}3062 3063define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {3064; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic:3065; CHECK:    bl __atomic_compare_exchange3066    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 13067    %r = extractvalue { i16, i1 } %pair, 03068    ret i16 %r3069}3070 3071define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {3072; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic_weak:3073; CHECK:    bl __atomic_compare_exchange3074    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 13075    %r = extractvalue { i16, i1 } %pair, 03076    ret i16 %r3077}3078 3079define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {3080; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire:3081; CHECK:    bl __atomic_compare_exchange3082    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 13083    %r = extractvalue { i16, i1 } %pair, 03084    ret i16 %r3085}3086 3087define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {3088; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire_weak:3089; CHECK:    bl __atomic_compare_exchange3090    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 13091    %r = extractvalue { i16, i1 } %pair, 03092    ret i16 %r3093}3094 3095define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {3096; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst:3097; CHECK:    bl __atomic_compare_exchange3098    %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 13099    %r = extractvalue { i16, i1 } %pair, 03100    ret i16 %r3101}3102 3103define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {3104; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst_weak:3105; CHECK:    bl __atomic_compare_exchange3106    %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 13107    %r = extractvalue { i16, i1 } %pair, 03108    ret i16 %r3109}3110 3111define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {3112; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic:3113; CHECK:    bl __atomic_compare_exchange3114    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 13115    %r = extractvalue { i32, i1 } %pair, 03116    ret i32 %r3117}3118 3119define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {3120; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic_weak:3121; CHECK:    bl __atomic_compare_exchange3122    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 13123    %r = extractvalue { i32, i1 } %pair, 03124    ret i32 %r3125}3126 3127define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {3128; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire:3129; CHECK:    bl __atomic_compare_exchange3130    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 13131    %r = extractvalue { i32, i1 } %pair, 03132    ret i32 %r3133}3134 3135define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {3136; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire_weak:3137; CHECK:    bl __atomic_compare_exchange3138    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 13139    %r = extractvalue { i32, i1 } %pair, 03140    ret i32 %r3141}3142 3143define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {3144; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst:3145; CHECK:    bl __atomic_compare_exchange3146    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 13147    %r = extractvalue { i32, i1 } %pair, 03148    ret i32 %r3149}3150 3151define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {3152; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst_weak:3153; CHECK:    bl __atomic_compare_exchange3154    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 13155    %r = extractvalue { i32, i1 } %pair, 03156    ret i32 %r3157}3158 3159define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {3160; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic:3161; CHECK:    bl __atomic_compare_exchange3162    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 13163    %r = extractvalue { i32, i1 } %pair, 03164    ret i32 %r3165}3166 3167define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {3168; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic_weak:3169; CHECK:    bl __atomic_compare_exchange3170    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 13171    %r = extractvalue { i32, i1 } %pair, 03172    ret i32 %r3173}3174 3175define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {3176; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire:3177; CHECK:    bl __atomic_compare_exchange3178    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 13179    %r = extractvalue { i32, i1 } %pair, 03180    ret i32 %r3181}3182 3183define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {3184; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire_weak:3185; CHECK:    bl __atomic_compare_exchange3186    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 13187    %r = extractvalue { i32, i1 } %pair, 03188    ret i32 %r3189}3190 3191define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {3192; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst:3193; CHECK:    bl __atomic_compare_exchange3194    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 13195    %r = extractvalue { i32, i1 } %pair, 03196    ret i32 %r3197}3198 3199define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {3200; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst_weak:3201; CHECK:    bl __atomic_compare_exchange3202    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 13203    %r = extractvalue { i32, i1 } %pair, 03204    ret i32 %r3205}3206 3207define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {3208; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic:3209; CHECK:    bl __atomic_compare_exchange3210    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 13211    %r = extractvalue { i32, i1 } %pair, 03212    ret i32 %r3213}3214 3215define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {3216; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic_weak:3217; CHECK:    bl __atomic_compare_exchange3218    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 13219    %r = extractvalue { i32, i1 } %pair, 03220    ret i32 %r3221}3222 3223define dso_local i32 @cmpxchg_i32_unaligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {3224; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire:3225; CHECK:    bl __atomic_compare_exchange3226    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 13227    %r = extractvalue { i32, i1 } %pair, 03228    ret i32 %r3229}3230 3231define dso_local i32 @cmpxchg_i32_unaligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {3232; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire_weak:3233; CHECK:    bl __atomic_compare_exchange3234    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 13235    %r = extractvalue { i32, i1 } %pair, 03236    ret i32 %r3237}3238 3239define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {3240; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst:3241; CHECK:    bl __atomic_compare_exchange3242    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 13243    %r = extractvalue { i32, i1 } %pair, 03244    ret i32 %r3245}3246 3247define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {3248; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst_weak:3249; CHECK:    bl __atomic_compare_exchange3250    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 13251    %r = extractvalue { i32, i1 } %pair, 03252    ret i32 %r3253}3254 3255define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {3256; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic:3257; CHECK:    bl __atomic_compare_exchange3258    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 13259    %r = extractvalue { i32, i1 } %pair, 03260    ret i32 %r3261}3262 3263define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {3264; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic_weak:3265; CHECK:    bl __atomic_compare_exchange3266    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 13267    %r = extractvalue { i32, i1 } %pair, 03268    ret i32 %r3269}3270 3271define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {3272; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire:3273; CHECK:    bl __atomic_compare_exchange3274    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 13275    %r = extractvalue { i32, i1 } %pair, 03276    ret i32 %r3277}3278 3279define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {3280; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire_weak:3281; CHECK:    bl __atomic_compare_exchange3282    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 13283    %r = extractvalue { i32, i1 } %pair, 03284    ret i32 %r3285}3286 3287define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {3288; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst:3289; CHECK:    bl __atomic_compare_exchange3290    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 13291    %r = extractvalue { i32, i1 } %pair, 03292    ret i32 %r3293}3294 3295define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {3296; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst_weak:3297; CHECK:    bl __atomic_compare_exchange3298    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 13299    %r = extractvalue { i32, i1 } %pair, 03300    ret i32 %r3301}3302 3303define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {3304; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic:3305; CHECK:    bl __atomic_compare_exchange3306    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 13307    %r = extractvalue { i32, i1 } %pair, 03308    ret i32 %r3309}3310 3311define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {3312; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic_weak:3313; CHECK:    bl __atomic_compare_exchange3314    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 13315    %r = extractvalue { i32, i1 } %pair, 03316    ret i32 %r3317}3318 3319define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {3320; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire:3321; CHECK:    bl __atomic_compare_exchange3322    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 13323    %r = extractvalue { i32, i1 } %pair, 03324    ret i32 %r3325}3326 3327define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {3328; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire_weak:3329; CHECK:    bl __atomic_compare_exchange3330    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 13331    %r = extractvalue { i32, i1 } %pair, 03332    ret i32 %r3333}3334 3335define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {3336; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst:3337; CHECK:    bl __atomic_compare_exchange3338    %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 13339    %r = extractvalue { i32, i1 } %pair, 03340    ret i32 %r3341}3342 3343define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {3344; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst_weak:3345; CHECK:    bl __atomic_compare_exchange3346    %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 13347    %r = extractvalue { i32, i1 } %pair, 03348    ret i32 %r3349}3350 3351define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {3352; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic:3353; CHECK:    bl __atomic_compare_exchange3354    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 13355    %r = extractvalue { i64, i1 } %pair, 03356    ret i64 %r3357}3358 3359define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {3360; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic_weak:3361; CHECK:    bl __atomic_compare_exchange3362    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 13363    %r = extractvalue { i64, i1 } %pair, 03364    ret i64 %r3365}3366 3367define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {3368; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire:3369; CHECK:    bl __atomic_compare_exchange3370    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 13371    %r = extractvalue { i64, i1 } %pair, 03372    ret i64 %r3373}3374 3375define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {3376; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire_weak:3377; CHECK:    bl __atomic_compare_exchange3378    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 13379    %r = extractvalue { i64, i1 } %pair, 03380    ret i64 %r3381}3382 3383define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {3384; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst:3385; CHECK:    bl __atomic_compare_exchange3386    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 13387    %r = extractvalue { i64, i1 } %pair, 03388    ret i64 %r3389}3390 3391define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {3392; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst_weak:3393; CHECK:    bl __atomic_compare_exchange3394    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 13395    %r = extractvalue { i64, i1 } %pair, 03396    ret i64 %r3397}3398 3399define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {3400; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic:3401; CHECK:    bl __atomic_compare_exchange3402    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 13403    %r = extractvalue { i64, i1 } %pair, 03404    ret i64 %r3405}3406 3407define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {3408; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic_weak:3409; CHECK:    bl __atomic_compare_exchange3410    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 13411    %r = extractvalue { i64, i1 } %pair, 03412    ret i64 %r3413}3414 3415define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {3416; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire:3417; CHECK:    bl __atomic_compare_exchange3418    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 13419    %r = extractvalue { i64, i1 } %pair, 03420    ret i64 %r3421}3422 3423define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {3424; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire_weak:3425; CHECK:    bl __atomic_compare_exchange3426    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 13427    %r = extractvalue { i64, i1 } %pair, 03428    ret i64 %r3429}3430 3431define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {3432; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst:3433; CHECK:    bl __atomic_compare_exchange3434    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 13435    %r = extractvalue { i64, i1 } %pair, 03436    ret i64 %r3437}3438 3439define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {3440; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst_weak:3441; CHECK:    bl __atomic_compare_exchange3442    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 13443    %r = extractvalue { i64, i1 } %pair, 03444    ret i64 %r3445}3446 3447define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {3448; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic:3449; CHECK:    bl __atomic_compare_exchange3450    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 13451    %r = extractvalue { i64, i1 } %pair, 03452    ret i64 %r3453}3454 3455define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {3456; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic_weak:3457; CHECK:    bl __atomic_compare_exchange3458    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 13459    %r = extractvalue { i64, i1 } %pair, 03460    ret i64 %r3461}3462 3463define dso_local i64 @cmpxchg_i64_unaligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {3464; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire:3465; CHECK:    bl __atomic_compare_exchange3466    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 13467    %r = extractvalue { i64, i1 } %pair, 03468    ret i64 %r3469}3470 3471define dso_local i64 @cmpxchg_i64_unaligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {3472; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire_weak:3473; CHECK:    bl __atomic_compare_exchange3474    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 13475    %r = extractvalue { i64, i1 } %pair, 03476    ret i64 %r3477}3478 3479define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {3480; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst:3481; CHECK:    bl __atomic_compare_exchange3482    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 13483    %r = extractvalue { i64, i1 } %pair, 03484    ret i64 %r3485}3486 3487define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {3488; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst_weak:3489; CHECK:    bl __atomic_compare_exchange3490    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 13491    %r = extractvalue { i64, i1 } %pair, 03492    ret i64 %r3493}3494 3495define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {3496; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic:3497; CHECK:    bl __atomic_compare_exchange3498    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 13499    %r = extractvalue { i64, i1 } %pair, 03500    ret i64 %r3501}3502 3503define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {3504; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic_weak:3505; CHECK:    bl __atomic_compare_exchange3506    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 13507    %r = extractvalue { i64, i1 } %pair, 03508    ret i64 %r3509}3510 3511define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {3512; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire:3513; CHECK:    bl __atomic_compare_exchange3514    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 13515    %r = extractvalue { i64, i1 } %pair, 03516    ret i64 %r3517}3518 3519define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {3520; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire_weak:3521; CHECK:    bl __atomic_compare_exchange3522    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 13523    %r = extractvalue { i64, i1 } %pair, 03524    ret i64 %r3525}3526 3527define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {3528; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst:3529; CHECK:    bl __atomic_compare_exchange3530    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 13531    %r = extractvalue { i64, i1 } %pair, 03532    ret i64 %r3533}3534 3535define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {3536; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst_weak:3537; CHECK:    bl __atomic_compare_exchange3538    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 13539    %r = extractvalue { i64, i1 } %pair, 03540    ret i64 %r3541}3542 3543define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {3544; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic:3545; CHECK:    bl __atomic_compare_exchange3546    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 13547    %r = extractvalue { i64, i1 } %pair, 03548    ret i64 %r3549}3550 3551define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {3552; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic_weak:3553; CHECK:    bl __atomic_compare_exchange3554    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 13555    %r = extractvalue { i64, i1 } %pair, 03556    ret i64 %r3557}3558 3559define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {3560; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire:3561; CHECK:    bl __atomic_compare_exchange3562    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 13563    %r = extractvalue { i64, i1 } %pair, 03564    ret i64 %r3565}3566 3567define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {3568; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire_weak:3569; CHECK:    bl __atomic_compare_exchange3570    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 13571    %r = extractvalue { i64, i1 } %pair, 03572    ret i64 %r3573}3574 3575define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {3576; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst:3577; CHECK:    bl __atomic_compare_exchange3578    %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 13579    %r = extractvalue { i64, i1 } %pair, 03580    ret i64 %r3581}3582 3583define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {3584; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst_weak:3585; CHECK:    bl __atomic_compare_exchange3586    %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 13587    %r = extractvalue { i64, i1 } %pair, 03588    ret i64 %r3589}3590 3591define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {3592; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic:3593; CHECK:    bl __atomic_compare_exchange3594    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 13595    %r = extractvalue { i128, i1 } %pair, 03596    ret i128 %r3597}3598 3599define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {3600; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic_weak:3601; CHECK:    bl __atomic_compare_exchange3602    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 13603    %r = extractvalue { i128, i1 } %pair, 03604    ret i128 %r3605}3606 3607define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {3608; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire:3609; CHECK:    bl __atomic_compare_exchange3610    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 13611    %r = extractvalue { i128, i1 } %pair, 03612    ret i128 %r3613}3614 3615define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {3616; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire_weak:3617; CHECK:    bl __atomic_compare_exchange3618    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 13619    %r = extractvalue { i128, i1 } %pair, 03620    ret i128 %r3621}3622 3623define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {3624; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst:3625; CHECK:    bl __atomic_compare_exchange3626    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 13627    %r = extractvalue { i128, i1 } %pair, 03628    ret i128 %r3629}3630 3631define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {3632; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst_weak:3633; CHECK:    bl __atomic_compare_exchange3634    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 13635    %r = extractvalue { i128, i1 } %pair, 03636    ret i128 %r3637}3638 3639define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {3640; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic:3641; CHECK:    bl __atomic_compare_exchange3642    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 13643    %r = extractvalue { i128, i1 } %pair, 03644    ret i128 %r3645}3646 3647define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {3648; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic_weak:3649; CHECK:    bl __atomic_compare_exchange3650    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 13651    %r = extractvalue { i128, i1 } %pair, 03652    ret i128 %r3653}3654 3655define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {3656; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire:3657; CHECK:    bl __atomic_compare_exchange3658    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 13659    %r = extractvalue { i128, i1 } %pair, 03660    ret i128 %r3661}3662 3663define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {3664; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire_weak:3665; CHECK:    bl __atomic_compare_exchange3666    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 13667    %r = extractvalue { i128, i1 } %pair, 03668    ret i128 %r3669}3670 3671define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {3672; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst:3673; CHECK:    bl __atomic_compare_exchange3674    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 13675    %r = extractvalue { i128, i1 } %pair, 03676    ret i128 %r3677}3678 3679define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {3680; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst_weak:3681; CHECK:    bl __atomic_compare_exchange3682    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 13683    %r = extractvalue { i128, i1 } %pair, 03684    ret i128 %r3685}3686 3687define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {3688; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic:3689; CHECK:    bl __atomic_compare_exchange3690    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 13691    %r = extractvalue { i128, i1 } %pair, 03692    ret i128 %r3693}3694 3695define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {3696; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic_weak:3697; CHECK:    bl __atomic_compare_exchange3698    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 13699    %r = extractvalue { i128, i1 } %pair, 03700    ret i128 %r3701}3702 3703define dso_local i128 @cmpxchg_i128_unaligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {3704; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire:3705; CHECK:    bl __atomic_compare_exchange3706    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 13707    %r = extractvalue { i128, i1 } %pair, 03708    ret i128 %r3709}3710 3711define dso_local i128 @cmpxchg_i128_unaligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {3712; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire_weak:3713; CHECK:    bl __atomic_compare_exchange3714    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 13715    %r = extractvalue { i128, i1 } %pair, 03716    ret i128 %r3717}3718 3719define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {3720; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst:3721; CHECK:    bl __atomic_compare_exchange3722    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 13723    %r = extractvalue { i128, i1 } %pair, 03724    ret i128 %r3725}3726 3727define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {3728; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst_weak:3729; CHECK:    bl __atomic_compare_exchange3730    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 13731    %r = extractvalue { i128, i1 } %pair, 03732    ret i128 %r3733}3734 3735define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {3736; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic:3737; CHECK:    bl __atomic_compare_exchange3738    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 13739    %r = extractvalue { i128, i1 } %pair, 03740    ret i128 %r3741}3742 3743define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {3744; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic_weak:3745; CHECK:    bl __atomic_compare_exchange3746    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 13747    %r = extractvalue { i128, i1 } %pair, 03748    ret i128 %r3749}3750 3751define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {3752; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire:3753; CHECK:    bl __atomic_compare_exchange3754    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 13755    %r = extractvalue { i128, i1 } %pair, 03756    ret i128 %r3757}3758 3759define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {3760; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire_weak:3761; CHECK:    bl __atomic_compare_exchange3762    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 13763    %r = extractvalue { i128, i1 } %pair, 03764    ret i128 %r3765}3766 3767define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {3768; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst:3769; CHECK:    bl __atomic_compare_exchange3770    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 13771    %r = extractvalue { i128, i1 } %pair, 03772    ret i128 %r3773}3774 3775define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {3776; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst_weak:3777; CHECK:    bl __atomic_compare_exchange3778    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 13779    %r = extractvalue { i128, i1 } %pair, 03780    ret i128 %r3781}3782 3783define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {3784; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic:3785; CHECK:    bl __atomic_compare_exchange3786    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 13787    %r = extractvalue { i128, i1 } %pair, 03788    ret i128 %r3789}3790 3791define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {3792; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic_weak:3793; CHECK:    bl __atomic_compare_exchange3794    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 13795    %r = extractvalue { i128, i1 } %pair, 03796    ret i128 %r3797}3798 3799define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {3800; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire:3801; CHECK:    bl __atomic_compare_exchange3802    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 13803    %r = extractvalue { i128, i1 } %pair, 03804    ret i128 %r3805}3806 3807define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {3808; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire_weak:3809; CHECK:    bl __atomic_compare_exchange3810    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 13811    %r = extractvalue { i128, i1 } %pair, 03812    ret i128 %r3813}3814 3815define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {3816; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst:3817; CHECK:    bl __atomic_compare_exchange3818    %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 13819    %r = extractvalue { i128, i1 } %pair, 03820    ret i128 %r3821}3822 3823define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {3824; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst_weak:3825; CHECK:    bl __atomic_compare_exchange3826    %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 13827    %r = extractvalue { i128, i1 } %pair, 03828    ret i128 %r3829}3830