114 lines · plain
1; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+lse2 %s -o - | FileCheck %s2 3define dso_local half @load_atomic_f16_aligned_unordered(ptr %ptr) {4; CHECK-LABEL: load_atomic_f16_aligned_unordered:5; CHECK: ldrh w8, [x0]6 %r = load atomic half, ptr %ptr unordered, align 27 ret half %r8}9 10define dso_local half @load_atomic_f16_aligned_unordered_const(ptr readonly %ptr) {11; CHECK-LABEL: load_atomic_f16_aligned_unordered_const:12; CHECK: ldrh w8, [x0]13 %r = load atomic half, ptr %ptr unordered, align 214 ret half %r15}16 17define dso_local half @load_atomic_f16_aligned_monotonic(ptr %ptr) {18; CHECK-LABEL: load_atomic_f16_aligned_monotonic:19; CHECK: ldrh w8, [x0]20 %r = load atomic half, ptr %ptr monotonic, align 221 ret half %r22}23 24define dso_local half @load_atomic_f16_aligned_monotonic_const(ptr readonly %ptr) {25; CHECK-LABEL: load_atomic_f16_aligned_monotonic_const:26; CHECK: ldrh w8, [x0]27 %r = load atomic half, ptr %ptr monotonic, align 228 ret half %r29}30 31define dso_local half @load_atomic_f16_aligned_acquire(ptr %ptr) {32; CHECK-LABEL: load_atomic_f16_aligned_acquire:33; CHECK: ldarh w8, [x0]34 %r = load atomic half, ptr %ptr acquire, align 235 ret half %r36}37 38define dso_local half @load_atomic_f16_aligned_acquire_const(ptr readonly %ptr) {39; CHECK-LABEL: load_atomic_f16_aligned_acquire_const:40; CHECK: ldarh w8, [x0]41 %r = load atomic half, ptr %ptr acquire, align 242 ret half %r43}44 45define dso_local half @load_atomic_f16_aligned_seq_cst(ptr %ptr) {46; CHECK-LABEL: load_atomic_f16_aligned_seq_cst:47; CHECK: ldarh w8, [x0]48 %r = load atomic half, ptr %ptr seq_cst, align 249 ret half %r50}51 52define dso_local half @load_atomic_f16_aligned_seq_cst_const(ptr readonly %ptr) {53; CHECK-LABEL: load_atomic_f16_aligned_seq_cst_const:54; CHECK: ldarh w8, [x0]55 %r = load atomic half, ptr %ptr seq_cst, align 256 ret half %r57}58 59define dso_local bfloat @load_atomic_bf16_aligned_unordered(ptr %ptr) {60; CHECK-LABEL: load_atomic_bf16_aligned_unordered:61; CHECK: ldrh w8, [x0]62 %r = load atomic bfloat, ptr %ptr unordered, align 263 ret bfloat %r64}65 66define dso_local bfloat @load_atomic_bf16_aligned_unordered_const(ptr readonly %ptr) {67; CHECK-LABEL: load_atomic_bf16_aligned_unordered_const:68; CHECK: ldrh w8, [x0]69 %r = load atomic bfloat, ptr %ptr unordered, align 270 ret bfloat %r71}72 73define dso_local bfloat @load_atomic_bf16_aligned_monotonic(ptr %ptr) {74; CHECK-LABEL: load_atomic_bf16_aligned_monotonic:75; CHECK: ldrh w8, [x0]76 %r = load atomic bfloat, ptr %ptr monotonic, align 277 ret bfloat %r78}79 80define dso_local bfloat @load_atomic_bf16_aligned_monotonic_const(ptr readonly %ptr) {81; CHECK-LABEL: load_atomic_bf16_aligned_monotonic_const:82; CHECK: ldrh w8, [x0]83 %r = load atomic bfloat, ptr %ptr monotonic, align 284 ret bfloat %r85}86 87define dso_local bfloat @load_atomic_bf16_aligned_acquire(ptr %ptr) {88; CHECK-LABEL: load_atomic_bf16_aligned_acquire:89; CHECK: ldarh w8, [x0]90 %r = load atomic bfloat, ptr %ptr acquire, align 291 ret bfloat %r92}93 94define dso_local bfloat @load_atomic_bf16_aligned_acquire_const(ptr readonly %ptr) {95; CHECK-LABEL: load_atomic_bf16_aligned_acquire_const:96; CHECK: ldarh w8, [x0]97 %r = load atomic bfloat, ptr %ptr acquire, align 298 ret bfloat %r99}100 101define dso_local bfloat @load_atomic_bf16_aligned_seq_cst(ptr %ptr) {102; CHECK-LABEL: load_atomic_bf16_aligned_seq_cst:103; CHECK: ldarh w8, [x0]104 %r = load atomic bfloat, ptr %ptr seq_cst, align 2105 ret bfloat %r106}107 108define dso_local bfloat @load_atomic_bf16_aligned_seq_cst_const(ptr readonly %ptr) {109; CHECK-LABEL: load_atomic_bf16_aligned_seq_cst_const:110; CHECK: ldarh w8, [x0]111 %r = load atomic bfloat, ptr %ptr seq_cst, align 2112 ret bfloat %r113}114