brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.7 KiB · 1a79c73 Raw
325 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|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_be -mattr=+v8a -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+v8a -O1 | FileCheck %s --check-prefixes=CHECK,-O15 6define dso_local void @store_atomic_i8_aligned_unordered(i8 %value, ptr %ptr) {7; CHECK-LABEL: store_atomic_i8_aligned_unordered:8; CHECK:    strb w0, [x1]9    store atomic i8 %value, ptr %ptr unordered, align 110    ret void11}12 13define dso_local void @store_atomic_i8_aligned_monotonic(i8 %value, ptr %ptr) {14; CHECK-LABEL: store_atomic_i8_aligned_monotonic:15; CHECK:    strb w0, [x1]16    store atomic i8 %value, ptr %ptr monotonic, align 117    ret void18}19 20define dso_local void @store_atomic_i8_aligned_release(i8 %value, ptr %ptr) {21; CHECK-LABEL: store_atomic_i8_aligned_release:22; CHECK:    stlrb w0, [x1]23    store atomic i8 %value, ptr %ptr release, align 124    ret void25}26 27define dso_local void @store_atomic_i8_aligned_seq_cst(i8 %value, ptr %ptr) {28; CHECK-LABEL: store_atomic_i8_aligned_seq_cst:29; CHECK:    stlrb w0, [x1]30    store atomic i8 %value, ptr %ptr seq_cst, align 131    ret void32}33 34define dso_local void @store_atomic_i16_aligned_unordered(i16 %value, ptr %ptr) {35; CHECK-LABEL: store_atomic_i16_aligned_unordered:36; CHECK:    strh w0, [x1]37    store atomic i16 %value, ptr %ptr unordered, align 238    ret void39}40 41define dso_local void @store_atomic_i16_aligned_monotonic(i16 %value, ptr %ptr) {42; CHECK-LABEL: store_atomic_i16_aligned_monotonic:43; CHECK:    strh w0, [x1]44    store atomic i16 %value, ptr %ptr monotonic, align 245    ret void46}47 48define dso_local void @store_atomic_i16_aligned_release(i16 %value, ptr %ptr) {49; CHECK-LABEL: store_atomic_i16_aligned_release:50; CHECK:    stlrh w0, [x1]51    store atomic i16 %value, ptr %ptr release, align 252    ret void53}54 55define dso_local void @store_atomic_i16_aligned_seq_cst(i16 %value, ptr %ptr) {56; CHECK-LABEL: store_atomic_i16_aligned_seq_cst:57; CHECK:    stlrh w0, [x1]58    store atomic i16 %value, ptr %ptr seq_cst, align 259    ret void60}61 62define dso_local void @store_atomic_i32_aligned_unordered(i32 %value, ptr %ptr) {63; CHECK-LABEL: store_atomic_i32_aligned_unordered:64; CHECK:    str w0, [x1]65    store atomic i32 %value, ptr %ptr unordered, align 466    ret void67}68 69define dso_local void @store_atomic_i32_aligned_monotonic(i32 %value, ptr %ptr) {70; CHECK-LABEL: store_atomic_i32_aligned_monotonic:71; CHECK:    str w0, [x1]72    store atomic i32 %value, ptr %ptr monotonic, align 473    ret void74}75 76define dso_local void @store_atomic_i32_aligned_release(i32 %value, ptr %ptr) {77; CHECK-LABEL: store_atomic_i32_aligned_release:78; CHECK:    stlr w0, [x1]79    store atomic i32 %value, ptr %ptr release, align 480    ret void81}82 83define dso_local void @store_atomic_i32_aligned_seq_cst(i32 %value, ptr %ptr) {84; CHECK-LABEL: store_atomic_i32_aligned_seq_cst:85; CHECK:    stlr w0, [x1]86    store atomic i32 %value, ptr %ptr seq_cst, align 487    ret void88}89 90define dso_local void @store_atomic_i64_aligned_unordered(i64 %value, ptr %ptr) {91; CHECK-LABEL: store_atomic_i64_aligned_unordered:92; CHECK:    str x0, [x1]93    store atomic i64 %value, ptr %ptr unordered, align 894    ret void95}96 97define dso_local void @store_atomic_i64_aligned_monotonic(i64 %value, ptr %ptr) {98; CHECK-LABEL: store_atomic_i64_aligned_monotonic:99; CHECK:    str x0, [x1]100    store atomic i64 %value, ptr %ptr monotonic, align 8101    ret void102}103 104define dso_local void @store_atomic_i64_aligned_release(i64 %value, ptr %ptr) {105; CHECK-LABEL: store_atomic_i64_aligned_release:106; CHECK:    stlr x0, [x1]107    store atomic i64 %value, ptr %ptr release, align 8108    ret void109}110 111define dso_local void @store_atomic_i64_aligned_seq_cst(i64 %value, ptr %ptr) {112; CHECK-LABEL: store_atomic_i64_aligned_seq_cst:113; CHECK:    stlr x0, [x1]114    store atomic i64 %value, ptr %ptr seq_cst, align 8115    ret void116}117 118define dso_local void @store_atomic_i128_aligned_unordered(i128 %value, ptr %ptr) {119; -O0-LABEL: store_atomic_i128_aligned_unordered:120; -O0:    ldxp x10, x12, [x9]121; -O0:    cmp x10, x11122; -O0:    cmp x12, x13123; -O0:    stxp w8, x14, x15, [x9]124; -O0:    stxp w8, x10, x12, [x9]125; -O0:    subs x12, x12, x13126; -O0:    ccmp x10, x11, #0, eq127;128; -O1-LABEL: store_atomic_i128_aligned_unordered:129; -O1:    ldxp xzr, x8, [x2]130; -O1:    stxp w8, x1, x0, [x2]131    store atomic i128 %value, ptr %ptr unordered, align 16132    ret void133}134 135define dso_local void @store_atomic_i128_aligned_monotonic(i128 %value, ptr %ptr) {136; -O0-LABEL: store_atomic_i128_aligned_monotonic:137; -O0:    ldxp x10, x12, [x9]138; -O0:    cmp x10, x11139; -O0:    cmp x12, x13140; -O0:    stxp w8, x14, x15, [x9]141; -O0:    stxp w8, x10, x12, [x9]142; -O0:    subs x12, x12, x13143; -O0:    ccmp x10, x11, #0, eq144;145; -O1-LABEL: store_atomic_i128_aligned_monotonic:146; -O1:    ldxp xzr, x8, [x2]147; -O1:    stxp w8, x1, x0, [x2]148    store atomic i128 %value, ptr %ptr monotonic, align 16149    ret void150}151 152define dso_local void @store_atomic_i128_aligned_release(i128 %value, ptr %ptr) {153; -O0-LABEL: store_atomic_i128_aligned_release:154; -O0:    ldxp x10, x12, [x9]155; -O0:    cmp x10, x11156; -O0:    cmp x12, x13157; -O0:    stlxp w8, x14, x15, [x9]158; -O0:    stlxp w8, x10, x12, [x9]159; -O0:    subs x12, x12, x13160; -O0:    ccmp x10, x11, #0, eq161;162; -O1-LABEL: store_atomic_i128_aligned_release:163; -O1:    ldxp xzr, x8, [x2]164; -O1:    stlxp w8, x1, x0, [x2]165    store atomic i128 %value, ptr %ptr release, align 16166    ret void167}168 169define dso_local void @store_atomic_i128_aligned_seq_cst(i128 %value, ptr %ptr) {170; -O0-LABEL: store_atomic_i128_aligned_seq_cst:171; -O0:    ldaxp x10, x12, [x9]172; -O0:    cmp x10, x11173; -O0:    cmp x12, x13174; -O0:    stlxp w8, x14, x15, [x9]175; -O0:    stlxp w8, x10, x12, [x9]176; -O0:    subs x12, x12, x13177; -O0:    ccmp x10, x11, #0, eq178;179; -O1-LABEL: store_atomic_i128_aligned_seq_cst:180; -O1:    ldaxp xzr, x8, [x2]181; -O1:    stlxp w8, x1, x0, [x2]182    store atomic i128 %value, ptr %ptr seq_cst, align 16183    ret void184}185 186define dso_local void @store_atomic_i8_unaligned_unordered(i8 %value, ptr %ptr) {187; CHECK-LABEL: store_atomic_i8_unaligned_unordered:188; CHECK:    strb w0, [x1]189    store atomic i8 %value, ptr %ptr unordered, align 1190    ret void191}192 193define dso_local void @store_atomic_i8_unaligned_monotonic(i8 %value, ptr %ptr) {194; CHECK-LABEL: store_atomic_i8_unaligned_monotonic:195; CHECK:    strb w0, [x1]196    store atomic i8 %value, ptr %ptr monotonic, align 1197    ret void198}199 200define dso_local void @store_atomic_i8_unaligned_release(i8 %value, ptr %ptr) {201; CHECK-LABEL: store_atomic_i8_unaligned_release:202; CHECK:    stlrb w0, [x1]203    store atomic i8 %value, ptr %ptr release, align 1204    ret void205}206 207define dso_local void @store_atomic_i8_unaligned_seq_cst(i8 %value, ptr %ptr) {208; CHECK-LABEL: store_atomic_i8_unaligned_seq_cst:209; CHECK:    stlrb w0, [x1]210    store atomic i8 %value, ptr %ptr seq_cst, align 1211    ret void212}213 214define dso_local void @store_atomic_i16_unaligned_unordered(i16 %value, ptr %ptr) {215; CHECK-LABEL: store_atomic_i16_unaligned_unordered:216; CHECK:    bl __atomic_store217    store atomic i16 %value, ptr %ptr unordered, align 1218    ret void219}220 221define dso_local void @store_atomic_i16_unaligned_monotonic(i16 %value, ptr %ptr) {222; CHECK-LABEL: store_atomic_i16_unaligned_monotonic:223; CHECK:    bl __atomic_store224    store atomic i16 %value, ptr %ptr monotonic, align 1225    ret void226}227 228define dso_local void @store_atomic_i16_unaligned_release(i16 %value, ptr %ptr) {229; CHECK-LABEL: store_atomic_i16_unaligned_release:230; CHECK:    bl __atomic_store231    store atomic i16 %value, ptr %ptr release, align 1232    ret void233}234 235define dso_local void @store_atomic_i16_unaligned_seq_cst(i16 %value, ptr %ptr) {236; CHECK-LABEL: store_atomic_i16_unaligned_seq_cst:237; CHECK:    bl __atomic_store238    store atomic i16 %value, ptr %ptr seq_cst, align 1239    ret void240}241 242define dso_local void @store_atomic_i32_unaligned_unordered(i32 %value, ptr %ptr) {243; CHECK-LABEL: store_atomic_i32_unaligned_unordered:244; CHECK:    bl __atomic_store245    store atomic i32 %value, ptr %ptr unordered, align 1246    ret void247}248 249define dso_local void @store_atomic_i32_unaligned_monotonic(i32 %value, ptr %ptr) {250; CHECK-LABEL: store_atomic_i32_unaligned_monotonic:251; CHECK:    bl __atomic_store252    store atomic i32 %value, ptr %ptr monotonic, align 1253    ret void254}255 256define dso_local void @store_atomic_i32_unaligned_release(i32 %value, ptr %ptr) {257; CHECK-LABEL: store_atomic_i32_unaligned_release:258; CHECK:    bl __atomic_store259    store atomic i32 %value, ptr %ptr release, align 1260    ret void261}262 263define dso_local void @store_atomic_i32_unaligned_seq_cst(i32 %value, ptr %ptr) {264; CHECK-LABEL: store_atomic_i32_unaligned_seq_cst:265; CHECK:    bl __atomic_store266    store atomic i32 %value, ptr %ptr seq_cst, align 1267    ret void268}269 270define dso_local void @store_atomic_i64_unaligned_unordered(i64 %value, ptr %ptr) {271; CHECK-LABEL: store_atomic_i64_unaligned_unordered:272; CHECK:    bl __atomic_store273    store atomic i64 %value, ptr %ptr unordered, align 1274    ret void275}276 277define dso_local void @store_atomic_i64_unaligned_monotonic(i64 %value, ptr %ptr) {278; CHECK-LABEL: store_atomic_i64_unaligned_monotonic:279; CHECK:    bl __atomic_store280    store atomic i64 %value, ptr %ptr monotonic, align 1281    ret void282}283 284define dso_local void @store_atomic_i64_unaligned_release(i64 %value, ptr %ptr) {285; CHECK-LABEL: store_atomic_i64_unaligned_release:286; CHECK:    bl __atomic_store287    store atomic i64 %value, ptr %ptr release, align 1288    ret void289}290 291define dso_local void @store_atomic_i64_unaligned_seq_cst(i64 %value, ptr %ptr) {292; CHECK-LABEL: store_atomic_i64_unaligned_seq_cst:293; CHECK:    bl __atomic_store294    store atomic i64 %value, ptr %ptr seq_cst, align 1295    ret void296}297 298define dso_local void @store_atomic_i128_unaligned_unordered(i128 %value, ptr %ptr) {299; CHECK-LABEL: store_atomic_i128_unaligned_unordered:300; CHECK:    bl __atomic_store301    store atomic i128 %value, ptr %ptr unordered, align 1302    ret void303}304 305define dso_local void @store_atomic_i128_unaligned_monotonic(i128 %value, ptr %ptr) {306; CHECK-LABEL: store_atomic_i128_unaligned_monotonic:307; CHECK:    bl __atomic_store308    store atomic i128 %value, ptr %ptr monotonic, align 1309    ret void310}311 312define dso_local void @store_atomic_i128_unaligned_release(i128 %value, ptr %ptr) {313; CHECK-LABEL: store_atomic_i128_unaligned_release:314; CHECK:    bl __atomic_store315    store atomic i128 %value, ptr %ptr release, align 1316    ret void317}318 319define dso_local void @store_atomic_i128_unaligned_seq_cst(i128 %value, ptr %ptr) {320; CHECK-LABEL: store_atomic_i128_unaligned_seq_cst:321; CHECK:    bl __atomic_store322    store atomic i128 %value, ptr %ptr seq_cst, align 1323    ret void324}325