# 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: [[CST:%[0-9]+]]:gpr64 = MOVi64imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr64 = SWPX [[CST]], [[COPY]] :: (load store monotonic 8 on %ir.addr)
    ; CHECK: $x0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s64) = G_CONSTANT i64 1
    %2:gpr(s64) = G_ATOMICRMW_XCHG %0, %1 :: (load store monotonic 8 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: [[CST:%[0-9]+]]:gpr64 = MOVi64imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr64 = LDADDX [[CST]], [[COPY]] :: (load store monotonic 8 on %ir.addr)
    ; CHECK: $x0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s64) = G_CONSTANT i64 1
    %2:gpr(s64) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic 8 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDADDALW [[CST]], [[COPY]] :: (load store seq_cst 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_ADD %0, %1 :: (load store seq_cst 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDADDALW [[CST]], [[COPY]] :: (load store seq_cst 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_ADD %0, %1 :: (load store seq_cst 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[CST2:%[0-9]+]]:gpr32 = ORNWrr $wzr, [[CST]]
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDCLRAW [[CST2]], [[COPY]] :: (load store acquire 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_AND %0, %1 :: (load store acquire 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDSETLW [[CST]], [[COPY]] :: (load store release 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_OR %0, %1 :: (load store release 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDEORALW [[CST]], [[COPY]] :: (load store acq_rel 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_XOR %0, %1 :: (load store acq_rel 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDSMINALW [[CST]], [[COPY]] :: (load store acq_rel 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_MIN %0, %1 :: (load store acq_rel 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDSMAXALW [[CST]], [[COPY]] :: (load store acq_rel 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_MAX %0, %1 :: (load store acq_rel 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDUMINALW [[CST]], [[COPY]] :: (load store acq_rel 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_UMIN %0, %1 :: (load store acq_rel 4 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: [[CST:%[0-9]+]]:gpr32 = MOVi32imm 1
    ; CHECK: [[RES:%[0-9]+]]:gpr32 = LDUMAXALW [[CST]], [[COPY]] :: (load store acq_rel 4 on %ir.addr)
    ; CHECK: $w0 = COPY [[RES]]
    %0:gpr(p0) = COPY $x0
    %1:gpr(s32) = G_CONSTANT i32 1
    %2:gpr(s32) = G_ATOMICRMW_UMAX %0, %1 :: (load store acq_rel 4 on %ir.addr)
    $w0 = COPY %2(s32)
...
