; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+lse2 %s -o - | FileCheck %s define dso_local half @load_atomic_f16_aligned_unordered(ptr %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_unordered: ; CHECK: ldrh w8, [x0] %r = load atomic half, ptr %ptr unordered, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_unordered_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_unordered_const: ; CHECK: ldrh w8, [x0] %r = load atomic half, ptr %ptr unordered, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_monotonic(ptr %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_monotonic: ; CHECK: ldrh w8, [x0] %r = load atomic half, ptr %ptr monotonic, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_monotonic_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_monotonic_const: ; CHECK: ldrh w8, [x0] %r = load atomic half, ptr %ptr monotonic, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_acquire(ptr %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_acquire: ; CHECK: ldarh w8, [x0] %r = load atomic half, ptr %ptr acquire, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_acquire_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_acquire_const: ; CHECK: ldarh w8, [x0] %r = load atomic half, ptr %ptr acquire, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_seq_cst(ptr %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_seq_cst: ; CHECK: ldarh w8, [x0] %r = load atomic half, ptr %ptr seq_cst, align 2 ret half %r } define dso_local half @load_atomic_f16_aligned_seq_cst_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_f16_aligned_seq_cst_const: ; CHECK: ldarh w8, [x0] %r = load atomic half, ptr %ptr seq_cst, align 2 ret half %r } define dso_local bfloat @load_atomic_bf16_aligned_unordered(ptr %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_unordered: ; CHECK: ldrh w8, [x0] %r = load atomic bfloat, ptr %ptr unordered, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_unordered_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_unordered_const: ; CHECK: ldrh w8, [x0] %r = load atomic bfloat, ptr %ptr unordered, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_monotonic(ptr %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_monotonic: ; CHECK: ldrh w8, [x0] %r = load atomic bfloat, ptr %ptr monotonic, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_monotonic_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_monotonic_const: ; CHECK: ldrh w8, [x0] %r = load atomic bfloat, ptr %ptr monotonic, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_acquire(ptr %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_acquire: ; CHECK: ldarh w8, [x0] %r = load atomic bfloat, ptr %ptr acquire, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_acquire_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_acquire_const: ; CHECK: ldarh w8, [x0] %r = load atomic bfloat, ptr %ptr acquire, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_seq_cst(ptr %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_seq_cst: ; CHECK: ldarh w8, [x0] %r = load atomic bfloat, ptr %ptr seq_cst, align 2 ret bfloat %r } define dso_local bfloat @load_atomic_bf16_aligned_seq_cst_const(ptr readonly %ptr) { ; CHECK-LABEL: load_atomic_bf16_aligned_seq_cst_const: ; CHECK: ldarh w8, [x0] %r = load atomic bfloat, ptr %ptr seq_cst, align 2 ret bfloat %r }