brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · 250ae1b Raw
333 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 -mattr=+v8a -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -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, x9, [x11]121; -O0:    cmp x10, x12122; -O0:    cmp x9, x13123; -O0:    stxp w8, x14, x15, [x11]124; -O0:    stxp w8, x10, x9, [x11]125; -O0:    eor x8, x10, x8126; -O0:    eor x11, x9, x11127; -O0:    orr x8, x8, x11128; -O0:    subs x8, x8, #0129;130; -O1-LABEL: store_atomic_i128_aligned_unordered:131; -O1:    ldxp xzr, x8, [x2]132; -O1:    stxp w8, x0, x1, [x2]133    store atomic i128 %value, ptr %ptr unordered, align 16134    ret void135}136 137define dso_local void @store_atomic_i128_aligned_monotonic(i128 %value, ptr %ptr) {138; -O0-LABEL: store_atomic_i128_aligned_monotonic:139; -O0:    ldxp x10, x9, [x11]140; -O0:    cmp x10, x12141; -O0:    cmp x9, x13142; -O0:    stxp w8, x14, x15, [x11]143; -O0:    stxp w8, x10, x9, [x11]144; -O0:    eor x8, x10, x8145; -O0:    eor x11, x9, x11146; -O0:    orr x8, x8, x11147; -O0:    subs x8, x8, #0148;149; -O1-LABEL: store_atomic_i128_aligned_monotonic:150; -O1:    ldxp xzr, x8, [x2]151; -O1:    stxp w8, x0, x1, [x2]152    store atomic i128 %value, ptr %ptr monotonic, align 16153    ret void154}155 156define dso_local void @store_atomic_i128_aligned_release(i128 %value, ptr %ptr) {157; -O0-LABEL: store_atomic_i128_aligned_release:158; -O0:    ldxp x10, x9, [x11]159; -O0:    cmp x10, x12160; -O0:    cmp x9, x13161; -O0:    stlxp w8, x14, x15, [x11]162; -O0:    stlxp w8, x10, x9, [x11]163; -O0:    eor x8, x10, x8164; -O0:    eor x11, x9, x11165; -O0:    orr x8, x8, x11166; -O0:    subs x8, x8, #0167;168; -O1-LABEL: store_atomic_i128_aligned_release:169; -O1:    ldxp xzr, x8, [x2]170; -O1:    stlxp w8, x0, x1, [x2]171    store atomic i128 %value, ptr %ptr release, align 16172    ret void173}174 175define dso_local void @store_atomic_i128_aligned_seq_cst(i128 %value, ptr %ptr) {176; -O0-LABEL: store_atomic_i128_aligned_seq_cst:177; -O0:    ldaxp x10, x9, [x11]178; -O0:    cmp x10, x12179; -O0:    cmp x9, x13180; -O0:    stlxp w8, x14, x15, [x11]181; -O0:    stlxp w8, x10, x9, [x11]182; -O0:    eor x8, x10, x8183; -O0:    eor x11, x9, x11184; -O0:    orr x8, x8, x11185; -O0:    subs x8, x8, #0186;187; -O1-LABEL: store_atomic_i128_aligned_seq_cst:188; -O1:    ldaxp xzr, x8, [x2]189; -O1:    stlxp w8, x0, x1, [x2]190    store atomic i128 %value, ptr %ptr seq_cst, align 16191    ret void192}193 194define dso_local void @store_atomic_i8_unaligned_unordered(i8 %value, ptr %ptr) {195; CHECK-LABEL: store_atomic_i8_unaligned_unordered:196; CHECK:    strb w0, [x1]197    store atomic i8 %value, ptr %ptr unordered, align 1198    ret void199}200 201define dso_local void @store_atomic_i8_unaligned_monotonic(i8 %value, ptr %ptr) {202; CHECK-LABEL: store_atomic_i8_unaligned_monotonic:203; CHECK:    strb w0, [x1]204    store atomic i8 %value, ptr %ptr monotonic, align 1205    ret void206}207 208define dso_local void @store_atomic_i8_unaligned_release(i8 %value, ptr %ptr) {209; CHECK-LABEL: store_atomic_i8_unaligned_release:210; CHECK:    stlrb w0, [x1]211    store atomic i8 %value, ptr %ptr release, align 1212    ret void213}214 215define dso_local void @store_atomic_i8_unaligned_seq_cst(i8 %value, ptr %ptr) {216; CHECK-LABEL: store_atomic_i8_unaligned_seq_cst:217; CHECK:    stlrb w0, [x1]218    store atomic i8 %value, ptr %ptr seq_cst, align 1219    ret void220}221 222define dso_local void @store_atomic_i16_unaligned_unordered(i16 %value, ptr %ptr) {223; CHECK-LABEL: store_atomic_i16_unaligned_unordered:224; CHECK:    bl __atomic_store225    store atomic i16 %value, ptr %ptr unordered, align 1226    ret void227}228 229define dso_local void @store_atomic_i16_unaligned_monotonic(i16 %value, ptr %ptr) {230; CHECK-LABEL: store_atomic_i16_unaligned_monotonic:231; CHECK:    bl __atomic_store232    store atomic i16 %value, ptr %ptr monotonic, align 1233    ret void234}235 236define dso_local void @store_atomic_i16_unaligned_release(i16 %value, ptr %ptr) {237; CHECK-LABEL: store_atomic_i16_unaligned_release:238; CHECK:    bl __atomic_store239    store atomic i16 %value, ptr %ptr release, align 1240    ret void241}242 243define dso_local void @store_atomic_i16_unaligned_seq_cst(i16 %value, ptr %ptr) {244; CHECK-LABEL: store_atomic_i16_unaligned_seq_cst:245; CHECK:    bl __atomic_store246    store atomic i16 %value, ptr %ptr seq_cst, align 1247    ret void248}249 250define dso_local void @store_atomic_i32_unaligned_unordered(i32 %value, ptr %ptr) {251; CHECK-LABEL: store_atomic_i32_unaligned_unordered:252; CHECK:    bl __atomic_store253    store atomic i32 %value, ptr %ptr unordered, align 1254    ret void255}256 257define dso_local void @store_atomic_i32_unaligned_monotonic(i32 %value, ptr %ptr) {258; CHECK-LABEL: store_atomic_i32_unaligned_monotonic:259; CHECK:    bl __atomic_store260    store atomic i32 %value, ptr %ptr monotonic, align 1261    ret void262}263 264define dso_local void @store_atomic_i32_unaligned_release(i32 %value, ptr %ptr) {265; CHECK-LABEL: store_atomic_i32_unaligned_release:266; CHECK:    bl __atomic_store267    store atomic i32 %value, ptr %ptr release, align 1268    ret void269}270 271define dso_local void @store_atomic_i32_unaligned_seq_cst(i32 %value, ptr %ptr) {272; CHECK-LABEL: store_atomic_i32_unaligned_seq_cst:273; CHECK:    bl __atomic_store274    store atomic i32 %value, ptr %ptr seq_cst, align 1275    ret void276}277 278define dso_local void @store_atomic_i64_unaligned_unordered(i64 %value, ptr %ptr) {279; CHECK-LABEL: store_atomic_i64_unaligned_unordered:280; CHECK:    bl __atomic_store281    store atomic i64 %value, ptr %ptr unordered, align 1282    ret void283}284 285define dso_local void @store_atomic_i64_unaligned_monotonic(i64 %value, ptr %ptr) {286; CHECK-LABEL: store_atomic_i64_unaligned_monotonic:287; CHECK:    bl __atomic_store288    store atomic i64 %value, ptr %ptr monotonic, align 1289    ret void290}291 292define dso_local void @store_atomic_i64_unaligned_release(i64 %value, ptr %ptr) {293; CHECK-LABEL: store_atomic_i64_unaligned_release:294; CHECK:    bl __atomic_store295    store atomic i64 %value, ptr %ptr release, align 1296    ret void297}298 299define dso_local void @store_atomic_i64_unaligned_seq_cst(i64 %value, ptr %ptr) {300; CHECK-LABEL: store_atomic_i64_unaligned_seq_cst:301; CHECK:    bl __atomic_store302    store atomic i64 %value, ptr %ptr seq_cst, align 1303    ret void304}305 306define dso_local void @store_atomic_i128_unaligned_unordered(i128 %value, ptr %ptr) {307; CHECK-LABEL: store_atomic_i128_unaligned_unordered:308; CHECK:    bl __atomic_store309    store atomic i128 %value, ptr %ptr unordered, align 1310    ret void311}312 313define dso_local void @store_atomic_i128_unaligned_monotonic(i128 %value, ptr %ptr) {314; CHECK-LABEL: store_atomic_i128_unaligned_monotonic:315; CHECK:    bl __atomic_store316    store atomic i128 %value, ptr %ptr monotonic, align 1317    ret void318}319 320define dso_local void @store_atomic_i128_unaligned_release(i128 %value, ptr %ptr) {321; CHECK-LABEL: store_atomic_i128_unaligned_release:322; CHECK:    bl __atomic_store323    store atomic i128 %value, ptr %ptr release, align 1324    ret void325}326 327define dso_local void @store_atomic_i128_unaligned_seq_cst(i128 %value, ptr %ptr) {328; CHECK-LABEL: store_atomic_i128_unaligned_seq_cst:329; CHECK:    bl __atomic_store330    store atomic i128 %value, ptr %ptr seq_cst, align 1331    ret void332}333