; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=aarch64-none-eabi -code-model=tiny -verify-machineinstrs | FileCheck %s

%struct.T = type <{ i32, i64, i8, i32 }>

@ptr = external local_unnamed_addr global i32*, align 8
@ch = external local_unnamed_addr global i32, align 4
@ch8 = external local_unnamed_addr global i8, align 4
@t = external local_unnamed_addr global %struct.T, align 4
@t2 = external local_unnamed_addr global %struct.T, align 2
@f = external local_unnamed_addr global float, align 4

define i32 @barp() {
; CHECK-LABEL: barp:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x8, ptr
; CHECK-NEXT:    ldr w0, [x8]
; CHECK-NEXT:    ret
entry:
  %0 = load i32*, i32** @ptr, align 8
  %1 = load i32, i32* %0, align 4
  ret i32 %1
}

define i32 @barch() {
; CHECK-LABEL: barch:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr w0, ch
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* @ch, align 4
  ret i32 %0
}

define i32 @barta() {
; CHECK-LABEL: barta:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr w0, t
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* getelementptr inbounds (%struct.T, %struct.T* @t, i64 0, i32 0), align 4
  ret i32 %0
}

define i64 @bartb() {
; CHECK-LABEL: bartb:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr x0, t+4
; CHECK-NEXT:    ret
entry:
  %0 = load i64, i64* getelementptr inbounds (%struct.T, %struct.T* @t, i64 0, i32 1), align 8
  ret i64 %0
}

define i32 @bartc() {
; CHECK-LABEL: bartc:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, t+13
; CHECK-NEXT:    ldr w0, [x8]
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* getelementptr inbounds (%struct.T, %struct.T* @t, i64 0, i32 3), align 1
  ret i32 %0
}

define i32 @bart2a() {
; CHECK-LABEL: bart2a:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, t2
; CHECK-NEXT:    ldr w0, [x8]
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* getelementptr inbounds (%struct.T, %struct.T* @t2, i64 0, i32 0), align 2
  ret i32 %0
}

define i64 @zextload() {
; CHECK-LABEL: zextload:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr w0, ch
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* @ch, align 4
  %1 = zext i32 %0 to i64
  ret i64 %1
}

define i64 @zextload8() {
; CHECK-LABEL: zextload8:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, ch8
; CHECK-NEXT:    ldrb w0, [x8]
; CHECK-NEXT:    ret
entry:
  %0 = load i8, i8* @ch8, align 4
  %1 = zext i8 %0 to i64
  ret i64 %1
}

define i64 @sextload() {
; CHECK-LABEL: sextload:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldrsw x0, ch
; CHECK-NEXT:    ret
entry:
  %0 = load i32, i32* @ch, align 4
  %1 = sext i32 %0 to i64
  ret i64 %1
}

define i64 @sextload8() {
; CHECK-LABEL: sextload8:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    adr x8, ch8
; CHECK-NEXT:    ldrsb x0, [x8]
; CHECK-NEXT:    ret
entry:
  %0 = load i8, i8* @ch8, align 4
  %1 = sext i8 %0 to i64
  ret i64 %1
}

define float @floatload() {
; CHECK-LABEL: floatload:
; CHECK:       // %bb.0: // %entry
; CHECK-NEXT:    ldr s0, f
; CHECK-NEXT:    ret
entry:
  %0 = load float, float* @f, align 4
  ret float %0
}

