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

--- |
  @g = external hidden unnamed_addr global i32, align 4
  define void @not_necessarily_equiv_loads() { ret void }
  define void @invariant_loads() { ret void }
  define void @both_have_to_be_invariant() { ret void }
...
---
name:            not_necessarily_equiv_loads
tracksRegLiveness: true
machineFunctionInfo: {}
body:             |
  bb.0:

    ; %load1 || %load2 == %load1 is not necessarily true, even though they
    ; both load from the same address. Whatever is in that address may be
    ; changed by another instruction which appears between them.
    ;
    ; Check that we don't remove the G_OR.

    ; CHECK-LABEL: name: not_necessarily_equiv_loads
    ; CHECK: %ptr:_(p0) = G_GLOBAL_VALUE @g
    ; CHECK: %load1:_(s32) = G_LOAD %ptr(p0) :: (load 4 from @g)
    ; CHECK: %load2:_(s32) = G_LOAD %ptr(p0) :: (load 4 from @g)
    ; CHECK: %or:_(s32) = G_OR %load2, %load1
    ; CHECK: G_STORE %or(s32), %ptr(p0) :: (store 4 into @g)
    ; CHECK: RET_ReallyLR
    %ptr:_(p0) = G_GLOBAL_VALUE @g
    %load1:_(s32) = G_LOAD %ptr(p0) :: (load 4 from @g)
    %load2:_(s32) = G_LOAD %ptr(p0) :: (load 4 from @g)
    %or:_(s32) = G_OR %load2, %load1
    G_STORE %or(s32), %ptr(p0) :: (store 4 into @g)
    RET_ReallyLR

...
---
name:            invariant_loads
tracksRegLiveness: true
machineFunctionInfo: {}
body:             |
  bb.0:

    ; %load1 || %load2 == %load1 is fine here, because the loads are invariant.

    ; CHECK-LABEL: name: invariant_loads
    ; CHECK: %ptr:_(p0) = G_GLOBAL_VALUE @g
    ; CHECK: %load2:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable invariant load 4 from @g)
    ; CHECK: G_STORE %load2(s32), %ptr(p0) :: (store 4 into @g)
    ; CHECK: RET_ReallyLR
    %ptr:_(p0) = G_GLOBAL_VALUE @g
    %load1:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable invariant load 4 from @g)
    %load2:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable invariant load 4 from @g)
    %or:_(s32) = G_OR %load2, %load1
    G_STORE %or(s32), %ptr(p0) :: (store 4 into @g)
    RET_ReallyLR

...
---
name:            both_have_to_be_invariant
tracksRegLiveness: true
machineFunctionInfo: {}
body:             |
  bb.0:

    ; We shouldn't combine here, because the loads both have to be invariant.

    ; CHECK-LABEL: name: both_have_to_be_invariant
    ; CHECK: %ptr:_(p0) = G_GLOBAL_VALUE @g
    ; CHECK: %load1:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable invariant load 4 from @g)
    ; CHECK: %load2:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable load 4 from @g)
    ; CHECK: %or:_(s32) = G_OR %load2, %load1
    ; CHECK: G_STORE %or(s32), %ptr(p0) :: (store 4 into @g)
    ; CHECK: RET_ReallyLR
    %ptr:_(p0) = G_GLOBAL_VALUE @g
    %load1:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable invariant load 4 from @g)
    %load2:_(s32) = G_LOAD %ptr(p0) :: (dereferenceable load 4 from @g)
    %or:_(s32) = G_OR %load2, %load1
    G_STORE %or(s32), %ptr(p0) :: (store 4 into @g)
    RET_ReallyLR
...
