; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -o - -mtriple=aarch64-none-linux-gnu -code-model=tiny < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -o - -mtriple=aarch64-none-linux-gnu -code-model=tiny -fast-isel < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -o - -mtriple=aarch64-none-linux-gnu -code-model=tiny -global-isel < %s | FileCheck %s --check-prefix=CHECK-GLOBISEL

; Note fast-isel tests here will fall back to isel

@src = external local_unnamed_addr global [65536 x i8], align 1
@dst = external global [65536 x i8], align 1
@ptr = external local_unnamed_addr global ptr, align 8

define dso_local void @foo1() {
; CHECK-LABEL: foo1:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x8, :got:src
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    ldr x9, :got:dst
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: foo1:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    ldr x8, :got:src
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    ldr x9, :got:dst
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @src, align 1
  store i8 %0, ptr @dst, align 1
  ret void
}

define dso_local void @foo2() {
; CHECK-LABEL: foo2:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x8, :got:ptr
; CHECK-NEXT:    ldr x9, :got:dst
; CHECK-NEXT:    str x9, [x8]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: foo2:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    ldr x8, :got:ptr
; CHECK-GLOBISEL-NEXT:    ldr x9, :got:dst
; CHECK-GLOBISEL-NEXT:    str x9, [x8]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  store ptr @dst, ptr @ptr, align 8
  ret void
}

define dso_local void @foo3() {
; FIXME: Needn't adr ptr
;
; CHECK-LABEL: foo3:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x8, :got:src
; CHECK-NEXT:    ldr x9, :got:ptr
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    ldr x9, [x9]
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: foo3:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    ldr x8, :got:src
; CHECK-GLOBISEL-NEXT:    ldr x9, :got:ptr
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    ldr x9, [x9]
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @src, align 1
  %1 = load ptr, ptr @ptr, align 8
  store i8 %0, ptr %1, align 1
  ret void
}

@lsrc = internal global i8 0, align 4
@ldst = internal global i8 0, align 4
@lptr = internal global ptr null, align 8

define dso_local void @bar1() {
; CHECK-LABEL: bar1:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lsrc
; CHECK-NEXT:    adr x9, ldst
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: bar1:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lsrc
; CHECK-GLOBISEL-NEXT:    adr x9, ldst
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @lsrc, align 4
  store i8 %0, ptr @ldst, align 4
  ret void
}

define dso_local void @bar2() {
; CHECK-LABEL: bar2:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lptr
; CHECK-NEXT:    adr x9, ldst
; CHECK-NEXT:    str x9, [x8]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: bar2:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lptr
; CHECK-GLOBISEL-NEXT:    adr x9, ldst
; CHECK-GLOBISEL-NEXT:    str x9, [x8]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  store ptr @ldst, ptr @lptr, align 8
  ret void
}

define dso_local void @bar3() {
; FIXME: Needn't adr lptr
;
; CHECK-LABEL: bar3:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lsrc
; CHECK-NEXT:    ldr x9, lptr
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: bar3:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lsrc
; CHECK-GLOBISEL-NEXT:    adr x9, lptr
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    ldr x9, [x9]
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @lsrc, align 4
  %1 = load ptr, ptr @lptr, align 8
  store i8 %0, ptr %1, align 1
  ret void
}


@lbsrc = internal global [65536 x i8] zeroinitializer, align 4
@lbdst = internal global [65536 x i8] zeroinitializer, align 4

define dso_local void @baz1() {
; CHECK-LABEL: baz1:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lbsrc
; CHECK-NEXT:    adr x9, lbdst
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: baz1:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lbsrc
; CHECK-GLOBISEL-NEXT:    adr x9, lbdst
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @lbsrc, align 4
  store i8 %0, ptr @lbdst, align 4
  ret void
}

define dso_local void @baz2() {
; CHECK-LABEL: baz2:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lptr
; CHECK-NEXT:    adr x9, lbdst
; CHECK-NEXT:    str x9, [x8]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: baz2:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lptr
; CHECK-GLOBISEL-NEXT:    adr x9, lbdst
; CHECK-GLOBISEL-NEXT:    str x9, [x8]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  store ptr @lbdst, ptr @lptr, align 8
  ret void
}

define dso_local void @baz3() {
; FIXME: Needn't adr lptr
;
; CHECK-LABEL: baz3:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, lbsrc
; CHECK-NEXT:    ldr x9, lptr
; CHECK-NEXT:    ldrb w8, [x8]
; CHECK-NEXT:    strb w8, [x9]
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: baz3:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x8, lbsrc
; CHECK-GLOBISEL-NEXT:    adr x9, lptr
; CHECK-GLOBISEL-NEXT:    ldrb w8, [x8]
; CHECK-GLOBISEL-NEXT:    ldr x9, [x9]
; CHECK-GLOBISEL-NEXT:    strb w8, [x9]
; CHECK-GLOBISEL-NEXT:    ret
entry:
  %0 = load i8, ptr @lbsrc, align 4
  %1 = load ptr, ptr @lptr, align 8
  store i8 %0, ptr %1, align 1
  ret void
}


declare void @func(...)

define dso_local ptr @externfuncaddr() {
; CHECK-LABEL: externfuncaddr:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x0, :got:func
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: externfuncaddr:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    ldr x0, :got:func
; CHECK-GLOBISEL-NEXT:    ret
entry:
      ret ptr @func
}

define dso_local ptr @localfuncaddr() {
; CHECK-LABEL: localfuncaddr:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x0, externfuncaddr
; CHECK-NEXT:    ret
;
; CHECK-GLOBISEL-LABEL: localfuncaddr:
; CHECK-GLOBISEL:       // %bb.0: // %entry
; CHECK-GLOBISEL-NEXT:    adr x0, externfuncaddr
; CHECK-GLOBISEL-NEXT:    ret
entry:
      ret ptr @externfuncaddr
}
