288 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=+lse2,+lse128 -O0 | FileCheck %s --check-prefixes=CHECK,-O04; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+lse2,+lse128 -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; CHECK-LABEL: store_atomic_i128_aligned_unordered:120; CHECK: stp x0, x1, [x2]121 store atomic i128 %value, ptr %ptr unordered, align 16122 ret void123}124 125define dso_local void @store_atomic_i128_aligned_monotonic(i128 %value, ptr %ptr) {126; CHECK-LABEL: store_atomic_i128_aligned_monotonic:127; CHECK: stp x0, x1, [x2]128 store atomic i128 %value, ptr %ptr monotonic, align 16129 ret void130}131 132define dso_local void @store_atomic_i128_aligned_release(i128 %value, ptr %ptr) {133; CHECK-LABEL: store_atomic_i128_aligned_release:134; CHECK: swppl x0, x1, [x2]135 store atomic i128 %value, ptr %ptr release, align 16136 ret void137}138 139define dso_local void @store_atomic_i128_aligned_seq_cst(i128 %value, ptr %ptr) {140; CHECK-LABEL: store_atomic_i128_aligned_seq_cst:141; CHECK: swppal x0, x1, [x2]142 store atomic i128 %value, ptr %ptr seq_cst, align 16143 ret void144}145 146define dso_local void @store_atomic_i8_unaligned_unordered(i8 %value, ptr %ptr) {147; CHECK-LABEL: store_atomic_i8_unaligned_unordered:148; CHECK: strb w0, [x1]149 store atomic i8 %value, ptr %ptr unordered, align 1150 ret void151}152 153define dso_local void @store_atomic_i8_unaligned_monotonic(i8 %value, ptr %ptr) {154; CHECK-LABEL: store_atomic_i8_unaligned_monotonic:155; CHECK: strb w0, [x1]156 store atomic i8 %value, ptr %ptr monotonic, align 1157 ret void158}159 160define dso_local void @store_atomic_i8_unaligned_release(i8 %value, ptr %ptr) {161; CHECK-LABEL: store_atomic_i8_unaligned_release:162; CHECK: stlrb w0, [x1]163 store atomic i8 %value, ptr %ptr release, align 1164 ret void165}166 167define dso_local void @store_atomic_i8_unaligned_seq_cst(i8 %value, ptr %ptr) {168; CHECK-LABEL: store_atomic_i8_unaligned_seq_cst:169; CHECK: stlrb w0, [x1]170 store atomic i8 %value, ptr %ptr seq_cst, align 1171 ret void172}173 174define dso_local void @store_atomic_i16_unaligned_unordered(i16 %value, ptr %ptr) {175; CHECK-LABEL: store_atomic_i16_unaligned_unordered:176; CHECK: bl __atomic_store177 store atomic i16 %value, ptr %ptr unordered, align 1178 ret void179}180 181define dso_local void @store_atomic_i16_unaligned_monotonic(i16 %value, ptr %ptr) {182; CHECK-LABEL: store_atomic_i16_unaligned_monotonic:183; CHECK: bl __atomic_store184 store atomic i16 %value, ptr %ptr monotonic, align 1185 ret void186}187 188define dso_local void @store_atomic_i16_unaligned_release(i16 %value, ptr %ptr) {189; CHECK-LABEL: store_atomic_i16_unaligned_release:190; CHECK: bl __atomic_store191 store atomic i16 %value, ptr %ptr release, align 1192 ret void193}194 195define dso_local void @store_atomic_i16_unaligned_seq_cst(i16 %value, ptr %ptr) {196; CHECK-LABEL: store_atomic_i16_unaligned_seq_cst:197; CHECK: bl __atomic_store198 store atomic i16 %value, ptr %ptr seq_cst, align 1199 ret void200}201 202define dso_local void @store_atomic_i32_unaligned_unordered(i32 %value, ptr %ptr) {203; CHECK-LABEL: store_atomic_i32_unaligned_unordered:204; CHECK: bl __atomic_store205 store atomic i32 %value, ptr %ptr unordered, align 1206 ret void207}208 209define dso_local void @store_atomic_i32_unaligned_monotonic(i32 %value, ptr %ptr) {210; CHECK-LABEL: store_atomic_i32_unaligned_monotonic:211; CHECK: bl __atomic_store212 store atomic i32 %value, ptr %ptr monotonic, align 1213 ret void214}215 216define dso_local void @store_atomic_i32_unaligned_release(i32 %value, ptr %ptr) {217; CHECK-LABEL: store_atomic_i32_unaligned_release:218; CHECK: bl __atomic_store219 store atomic i32 %value, ptr %ptr release, align 1220 ret void221}222 223define dso_local void @store_atomic_i32_unaligned_seq_cst(i32 %value, ptr %ptr) {224; CHECK-LABEL: store_atomic_i32_unaligned_seq_cst:225; CHECK: bl __atomic_store226 store atomic i32 %value, ptr %ptr seq_cst, align 1227 ret void228}229 230define dso_local void @store_atomic_i64_unaligned_unordered(i64 %value, ptr %ptr) {231; CHECK-LABEL: store_atomic_i64_unaligned_unordered:232; CHECK: bl __atomic_store233 store atomic i64 %value, ptr %ptr unordered, align 1234 ret void235}236 237define dso_local void @store_atomic_i64_unaligned_monotonic(i64 %value, ptr %ptr) {238; CHECK-LABEL: store_atomic_i64_unaligned_monotonic:239; CHECK: bl __atomic_store240 store atomic i64 %value, ptr %ptr monotonic, align 1241 ret void242}243 244define dso_local void @store_atomic_i64_unaligned_release(i64 %value, ptr %ptr) {245; CHECK-LABEL: store_atomic_i64_unaligned_release:246; CHECK: bl __atomic_store247 store atomic i64 %value, ptr %ptr release, align 1248 ret void249}250 251define dso_local void @store_atomic_i64_unaligned_seq_cst(i64 %value, ptr %ptr) {252; CHECK-LABEL: store_atomic_i64_unaligned_seq_cst:253; CHECK: bl __atomic_store254 store atomic i64 %value, ptr %ptr seq_cst, align 1255 ret void256}257 258define dso_local void @store_atomic_i128_unaligned_unordered(i128 %value, ptr %ptr) {259; CHECK-LABEL: store_atomic_i128_unaligned_unordered:260; CHECK: bl __atomic_store261 store atomic i128 %value, ptr %ptr unordered, align 1262 ret void263}264 265define dso_local void @store_atomic_i128_unaligned_monotonic(i128 %value, ptr %ptr) {266; CHECK-LABEL: store_atomic_i128_unaligned_monotonic:267; CHECK: bl __atomic_store268 store atomic i128 %value, ptr %ptr monotonic, align 1269 ret void270}271 272define dso_local void @store_atomic_i128_unaligned_release(i128 %value, ptr %ptr) {273; CHECK-LABEL: store_atomic_i128_unaligned_release:274; CHECK: bl __atomic_store275 store atomic i128 %value, ptr %ptr release, align 1276 ret void277}278 279define dso_local void @store_atomic_i128_unaligned_seq_cst(i128 %value, ptr %ptr) {280; CHECK-LABEL: store_atomic_i128_unaligned_seq_cst:281; CHECK: bl __atomic_store282 store atomic i128 %value, ptr %ptr seq_cst, align 1283 ret void284}285;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:286; -O0: {{.*}}287; -O1: {{.*}}288