# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-- -mattr=+lse -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s

--- |
  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"

  define void @atomicrmw_xchg_i64(i64* %addr) { ret void }
  define void @atomicrmw_add_i64(i64* %addr) { ret void }
  define void @atomicrmw_add_i32(i64* %addr) { ret void }
  define void @atomicrmw_sub_i32(i64* %addr) { ret void }
  define void @atomicrmw_and_i32(i64* %addr) { ret void }
  ; nand isn't legal
  define void @atomicrmw_or_i32(i64* %addr) { ret void }
  define void @atomicrmw_xor_i32(i64* %addr) { ret void }
  define void @atomicrmw_min_i32(i64* %addr) { ret void }
  define void @atomicrmw_max_i32(i64* %addr) { ret void }
  define void @atomicrmw_umin_i32(i64* %addr) { ret void }
  define void @atomicrmw_umax_i32(i64* %addr) { ret void }
...

---
name:            atomicrmw_xchg_i64
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_xchg_i64
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64 = SUBREG_TO_REG 0, [[MOVi32imm]], %subreg.sub_32
    ; CHECK: [[SWPX:%[0-9]+]]:gpr64 = SWPX [[SUBREG_TO_REG]], [[COPY]] :: (load store monotonic (s64) on %ir.addr)
    ; CHECK: $x0 = COPY [[SWPX]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s64) = G_CONSTANT i64 1
    %2:gpr(s64) = G_ATOMICRMW_XCHG %0, %1 :: (load store monotonic (s64) on %ir.addr)
    $x0 = COPY %2(s64)
...
---
name:            atomicrmw_add_i64
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_add_i64
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64 = SUBREG_TO_REG 0, [[MOVi32imm]], %subreg.sub_32
    ; CHECK: [[LDADDX:%[0-9]+]]:gpr64 = LDADDX [[SUBREG_TO_REG]], [[COPY]] :: (load store monotonic (s64) on %ir.addr)
    ; CHECK: $x0 = COPY [[LDADDX]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s64) = G_CONSTANT i64 1
    %2:gpr(s64) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic (s64) on %ir.addr)
    $x0 = COPY %2(s64)
...
---
name:            atomicrmw_add_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_add_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDADDALW:%[0-9]+]]:gpr32 = LDADDALW [[MOVi32imm]], [[COPY]] :: (load store seq_cst (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDADDALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_ADD %0, %1 :: (load store seq_cst (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_sub_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_sub_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDADDALW:%[0-9]+]]:gpr32 = LDADDALW [[MOVi32imm]], [[COPY]] :: (load store seq_cst (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDADDALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_ADD %0, %1 :: (load store seq_cst (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_and_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_and_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[ORNWrr:%[0-9]+]]:gpr32 = ORNWrr $wzr, [[MOVi32imm]]
    ; CHECK: [[LDCLRAW:%[0-9]+]]:gpr32 = LDCLRAW [[ORNWrr]], [[COPY]] :: (load store acquire (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDCLRAW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_AND %0, %1 :: (load store acquire (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_or_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_or_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDSETLW:%[0-9]+]]:gpr32 = LDSETLW [[MOVi32imm]], [[COPY]] :: (load store release (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDSETLW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_OR %0, %1 :: (load store release (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_xor_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_xor_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDEORALW:%[0-9]+]]:gpr32 = LDEORALW [[MOVi32imm]], [[COPY]] :: (load store acq_rel (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDEORALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_XOR %0, %1 :: (load store acq_rel (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_min_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_min_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDSMINALW:%[0-9]+]]:gpr32 = LDSMINALW [[MOVi32imm]], [[COPY]] :: (load store acq_rel (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDSMINALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_MIN %0, %1 :: (load store acq_rel (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_max_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_max_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDSMAXALW:%[0-9]+]]:gpr32 = LDSMAXALW [[MOVi32imm]], [[COPY]] :: (load store acq_rel (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDSMAXALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_MAX %0, %1 :: (load store acq_rel (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_umin_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_umin_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDUMINALW:%[0-9]+]]:gpr32 = LDUMINALW [[MOVi32imm]], [[COPY]] :: (load store acq_rel (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDUMINALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_UMIN %0, %1 :: (load store acq_rel (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...

---
name:            atomicrmw_umax_i32
legalized:       true
regBankSelected: true

body:             |
  bb.0:
    liveins: $x0

    ; CHECK-LABEL: name: atomicrmw_umax_i32
    ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
    ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[LDUMAXALW:%[0-9]+]]:gpr32 = LDUMAXALW [[MOVi32imm]], [[COPY]] :: (load store acq_rel (s32) on %ir.addr)
    ; CHECK: $w0 = COPY [[LDUMAXALW]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_UMAX %0, %1 :: (load store acq_rel (s32) on %ir.addr)
    $w0 = COPY %2(s32)
...
