brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 66fea35 Raw
147 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s3 4define i8 @atomicrmw_uinc_wrap_i8(ptr %ptr, i8 %val) {5; CHECK-LABEL: atomicrmw_uinc_wrap_i8:6; CHECK:       // %bb.0:7; CHECK-NEXT:  .LBB0_1: // %atomicrmw.start8; CHECK-NEXT:    // =>This Inner Loop Header: Depth=19; CHECK-NEXT:    ldaxrb w8, [x0]10; CHECK-NEXT:    cmp w8, w1, uxtb11; CHECK-NEXT:    csinc w9, wzr, w8, hs12; CHECK-NEXT:    stlxrb w10, w9, [x0]13; CHECK-NEXT:    cbnz w10, .LBB0_114; CHECK-NEXT:  // %bb.2: // %atomicrmw.end15; CHECK-NEXT:    mov w0, w816; CHECK-NEXT:    ret17  %result = atomicrmw uinc_wrap ptr %ptr, i8 %val seq_cst18  ret i8 %result19}20 21define i16 @atomicrmw_uinc_wrap_i16(ptr %ptr, i16 %val) {22; CHECK-LABEL: atomicrmw_uinc_wrap_i16:23; CHECK:       // %bb.0:24; CHECK-NEXT:  .LBB1_1: // %atomicrmw.start25; CHECK-NEXT:    // =>This Inner Loop Header: Depth=126; CHECK-NEXT:    ldaxrh w8, [x0]27; CHECK-NEXT:    cmp w8, w1, uxth28; CHECK-NEXT:    csinc w9, wzr, w8, hs29; CHECK-NEXT:    stlxrh w10, w9, [x0]30; CHECK-NEXT:    cbnz w10, .LBB1_131; CHECK-NEXT:  // %bb.2: // %atomicrmw.end32; CHECK-NEXT:    mov w0, w833; CHECK-NEXT:    ret34  %result = atomicrmw uinc_wrap ptr %ptr, i16 %val seq_cst35  ret i16 %result36}37 38define i32 @atomicrmw_uinc_wrap_i32(ptr %ptr, i32 %val) {39; CHECK-LABEL: atomicrmw_uinc_wrap_i32:40; CHECK:       // %bb.0:41; CHECK-NEXT:  .LBB2_1: // %atomicrmw.start42; CHECK-NEXT:    // =>This Inner Loop Header: Depth=143; CHECK-NEXT:    ldaxr w8, [x0]44; CHECK-NEXT:    cmp w8, w145; CHECK-NEXT:    csinc w9, wzr, w8, hs46; CHECK-NEXT:    stlxr w10, w9, [x0]47; CHECK-NEXT:    cbnz w10, .LBB2_148; CHECK-NEXT:  // %bb.2: // %atomicrmw.end49; CHECK-NEXT:    mov w0, w850; CHECK-NEXT:    ret51  %result = atomicrmw uinc_wrap ptr %ptr, i32 %val seq_cst52  ret i32 %result53}54 55define i64 @atomicrmw_uinc_wrap_i64(ptr %ptr, i64 %val) {56; CHECK-LABEL: atomicrmw_uinc_wrap_i64:57; CHECK:       // %bb.0:58; CHECK-NEXT:  .LBB3_1: // %atomicrmw.start59; CHECK-NEXT:    // =>This Inner Loop Header: Depth=160; CHECK-NEXT:    ldaxr x8, [x0]61; CHECK-NEXT:    cmp x8, x162; CHECK-NEXT:    csinc x9, xzr, x8, hs63; CHECK-NEXT:    stlxr w10, x9, [x0]64; CHECK-NEXT:    cbnz w10, .LBB3_165; CHECK-NEXT:  // %bb.2: // %atomicrmw.end66; CHECK-NEXT:    mov x0, x867; CHECK-NEXT:    ret68  %result = atomicrmw uinc_wrap ptr %ptr, i64 %val seq_cst69  ret i64 %result70}71 72define i8 @atomicrmw_udec_wrap_i8(ptr %ptr, i8 %val) {73; CHECK-LABEL: atomicrmw_udec_wrap_i8:74; CHECK:       // %bb.0:75; CHECK-NEXT:  .LBB4_1: // %atomicrmw.start76; CHECK-NEXT:    // =>This Inner Loop Header: Depth=177; CHECK-NEXT:    ldaxrb w8, [x0]78; CHECK-NEXT:    cmp w8, w1, uxtb79; CHECK-NEXT:    sub w9, w8, #180; CHECK-NEXT:    ccmp w8, #0, #4, ls81; CHECK-NEXT:    csel w9, w1, w9, eq82; CHECK-NEXT:    stlxrb w10, w9, [x0]83; CHECK-NEXT:    cbnz w10, .LBB4_184; CHECK-NEXT:  // %bb.2: // %atomicrmw.end85; CHECK-NEXT:    mov w0, w886; CHECK-NEXT:    ret87  %result = atomicrmw udec_wrap ptr %ptr, i8 %val seq_cst88  ret i8 %result89}90 91define i16 @atomicrmw_udec_wrap_i16(ptr %ptr, i16 %val) {92; CHECK-LABEL: atomicrmw_udec_wrap_i16:93; CHECK:       // %bb.0:94; CHECK-NEXT:  .LBB5_1: // %atomicrmw.start95; CHECK-NEXT:    // =>This Inner Loop Header: Depth=196; CHECK-NEXT:    ldaxrh w8, [x0]97; CHECK-NEXT:    cmp w8, w1, uxth98; CHECK-NEXT:    sub w9, w8, #199; CHECK-NEXT:    ccmp w8, #0, #4, ls100; CHECK-NEXT:    csel w9, w1, w9, eq101; CHECK-NEXT:    stlxrh w10, w9, [x0]102; CHECK-NEXT:    cbnz w10, .LBB5_1103; CHECK-NEXT:  // %bb.2: // %atomicrmw.end104; CHECK-NEXT:    mov w0, w8105; CHECK-NEXT:    ret106  %result = atomicrmw udec_wrap ptr %ptr, i16 %val seq_cst107  ret i16 %result108}109 110define i32 @atomicrmw_udec_wrap_i32(ptr %ptr, i32 %val) {111; CHECK-LABEL: atomicrmw_udec_wrap_i32:112; CHECK:       // %bb.0:113; CHECK-NEXT:  .LBB6_1: // %atomicrmw.start114; CHECK-NEXT:    // =>This Inner Loop Header: Depth=1115; CHECK-NEXT:    ldaxr w8, [x0]116; CHECK-NEXT:    cmp w8, w1117; CHECK-NEXT:    sub w9, w8, #1118; CHECK-NEXT:    ccmp w8, #0, #4, ls119; CHECK-NEXT:    csel w9, w1, w9, eq120; CHECK-NEXT:    stlxr w10, w9, [x0]121; CHECK-NEXT:    cbnz w10, .LBB6_1122; CHECK-NEXT:  // %bb.2: // %atomicrmw.end123; CHECK-NEXT:    mov w0, w8124; CHECK-NEXT:    ret125  %result = atomicrmw udec_wrap ptr %ptr, i32 %val seq_cst126  ret i32 %result127}128 129define i64 @atomicrmw_udec_wrap_i64(ptr %ptr, i64 %val) {130; CHECK-LABEL: atomicrmw_udec_wrap_i64:131; CHECK:       // %bb.0:132; CHECK-NEXT:    mov x8, x0133; CHECK-NEXT:  .LBB7_1: // %atomicrmw.start134; CHECK-NEXT:    // =>This Inner Loop Header: Depth=1135; CHECK-NEXT:    ldaxr x0, [x8]136; CHECK-NEXT:    cmp x0, x1137; CHECK-NEXT:    sub x9, x0, #1138; CHECK-NEXT:    ccmp x0, #0, #4, ls139; CHECK-NEXT:    csel x9, x1, x9, eq140; CHECK-NEXT:    stlxr w10, x9, [x8]141; CHECK-NEXT:    cbnz w10, .LBB7_1142; CHECK-NEXT:  // %bb.2: // %atomicrmw.end143; CHECK-NEXT:    ret144  %result = atomicrmw udec_wrap ptr %ptr, i64 %val seq_cst145  ret i64 %result146}147