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

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

  define void @xor_s32_gpr() { ret void }
  define void @xor_s64_gpr() { ret void }
  define void @xor_constant_n1_s32_gpr() { ret void }
  define void @xor_constant_n1_s64_gpr() { ret void }
  define void @xor_constant_n1_s32_gpr_2bb() { ret void }

...

---
# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
name:            xor_s32_gpr
legalized:       true
regBankSelected: true

registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }

body:             |
  bb.0:
    liveins: %w0, %w1

    ; CHECK-LABEL: name: xor_s32_gpr
    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
    ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY %w1
    ; CHECK: [[EORWrr:%[0-9]+]]:gpr32 = EORWrr [[COPY]], [[COPY1]]
    ; CHECK: %w0 = COPY [[EORWrr]]
    %0(s32) = COPY %w0
    %1(s32) = COPY %w1
    %2(s32) = G_XOR %0, %1
    %w0 = COPY %2(s32)
...

---
# Same as xor_s64_gpr, for 64-bit operations.
name:            xor_s64_gpr
legalized:       true
regBankSelected: true

registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }

body:             |
  bb.0:
    liveins: %x0, %x1

    ; CHECK-LABEL: name: xor_s64_gpr
    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY %x0
    ; CHECK: [[COPY1:%[0-9]+]]:gpr64 = COPY %x1
    ; CHECK: [[EORXrr:%[0-9]+]]:gpr64 = EORXrr [[COPY]], [[COPY1]]
    ; CHECK: %x0 = COPY [[EORXrr]]
    %0(s64) = COPY %x0
    %1(s64) = COPY %x1
    %2(s64) = G_XOR %0, %1
    %x0 = COPY %2(s64)
...

---
# Check that we select a 32-bit GPR G_XOR into EORWrr on GPR32.
# Also check that we constrain the register class of the COPY to GPR32.
name:            xor_constant_n1_s32_gpr
legalized:       true
regBankSelected: true

registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }

body:             |
  bb.0:
    liveins: %w0

    ; CHECK-LABEL: name: xor_constant_n1_s32_gpr
    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
    ; CHECK: [[ORNWrr:%[0-9]+]]:gpr32 = ORNWrr %wzr, [[COPY]]
    ; CHECK: %w0 = COPY [[ORNWrr]]
    %0(s32) = COPY %w0
    %1(s32) = G_CONSTANT i32 -1
    %2(s32) = G_XOR %0, %1
    %w0 = COPY %2(s32)
...

---
# Same as xor_constant_n1_s64_gpr, for 64-bit operations.
name:            xor_constant_n1_s64_gpr
legalized:       true
regBankSelected: true

registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }

body:             |
  bb.0:
    liveins: %x0

    ; CHECK-LABEL: name: xor_constant_n1_s64_gpr
    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY %x0
    ; CHECK: [[ORNXrr:%[0-9]+]]:gpr64 = ORNXrr %xzr, [[COPY]]
    ; CHECK: %x0 = COPY [[ORNXrr]]
    %0(s64) = COPY %x0
    %1(s64) = G_CONSTANT i64 -1
    %2(s64) = G_XOR %0, %1
    %x0 = COPY %2(s64)
...

---
# Check that we can obtain constants from other basic blocks.
name:            xor_constant_n1_s32_gpr_2bb
legalized:       true
regBankSelected: true

registers:
  - { id: 0, class: gpr }
  - { id: 1, class: gpr }
  - { id: 2, class: gpr }


body:             |
  ; CHECK-LABEL: name: xor_constant_n1_s32_gpr_2bb
  ; CHECK: bb.0:
  ; CHECK:   successors: %bb.1(0x80000000)
  ; CHECK:   B %bb.1
  ; CHECK: bb.1:
  ; CHECK:   [[COPY:%[0-9]+]]:gpr32 = COPY %w0
  ; CHECK:   [[ORNWrr:%[0-9]+]]:gpr32 = ORNWrr %wzr, [[COPY]]
  ; CHECK:   %w0 = COPY [[ORNWrr]]
  bb.0:
    liveins: %w0, %w1
    successors: %bb.1
    %1(s32) = G_CONSTANT i32 -1
    G_BR %bb.1
  bb.1:
    %0(s32) = COPY %w0
    %2(s32) = G_XOR %0, %1
    %w0 = COPY %2(s32)
...
