1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=aarch64-linux-gnu -code-model=large -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@var8 = global i8 0 4*9880d681SAndroid Build Coastguard Worker@var16 = global i16 0 5*9880d681SAndroid Build Coastguard Worker@var32 = global i32 0 6*9880d681SAndroid Build Coastguard Worker@var64 = global i64 0 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i8* @global_addr() { 9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: global_addr: 10*9880d681SAndroid Build Coastguard Worker ret i8* @var8 11*9880d681SAndroid Build Coastguard Worker ; The movz/movk calculation should end up returned directly in x0. 12*9880d681SAndroid Build Coastguard Worker; CHECK: movz x0, #:abs_g3:var8 13*9880d681SAndroid Build Coastguard Worker; CHECK: movk x0, #:abs_g2_nc:var8 14*9880d681SAndroid Build Coastguard Worker; CHECK: movk x0, #:abs_g1_nc:var8 15*9880d681SAndroid Build Coastguard Worker; CHECK: movk x0, #:abs_g0_nc:var8 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine i8 @global_i8() { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: global_i8: 21*9880d681SAndroid Build Coastguard Worker %val = load i8, i8* @var8 22*9880d681SAndroid Build Coastguard Worker ret i8 %val 23*9880d681SAndroid Build Coastguard Worker; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var8 24*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var8 25*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var8 26*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var8 27*9880d681SAndroid Build Coastguard Worker; CHECK: ldrb w0, [x[[ADDR_REG]]] 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine i16 @global_i16() { 31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: global_i16: 32*9880d681SAndroid Build Coastguard Worker %val = load i16, i16* @var16 33*9880d681SAndroid Build Coastguard Worker ret i16 %val 34*9880d681SAndroid Build Coastguard Worker; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var16 35*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var16 36*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var16 37*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var16 38*9880d681SAndroid Build Coastguard Worker; CHECK: ldrh w0, [x[[ADDR_REG]]] 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine i32 @global_i32() { 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: global_i32: 43*9880d681SAndroid Build Coastguard Worker %val = load i32, i32* @var32 44*9880d681SAndroid Build Coastguard Worker ret i32 %val 45*9880d681SAndroid Build Coastguard Worker; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var32 46*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var32 47*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var32 48*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var32 49*9880d681SAndroid Build Coastguard Worker; CHECK: ldr w0, [x[[ADDR_REG]]] 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerdefine i64 @global_i64() { 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: global_i64: 54*9880d681SAndroid Build Coastguard Worker %val = load i64, i64* @var64 55*9880d681SAndroid Build Coastguard Worker ret i64 %val 56*9880d681SAndroid Build Coastguard Worker; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g3:var64 57*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var64 58*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var64 59*9880d681SAndroid Build Coastguard Worker; CHECK: movk x[[ADDR_REG]], #:abs_g0_nc:var64 60*9880d681SAndroid Build Coastguard Worker; CHECK: ldr x0, [x[[ADDR_REG]]] 61*9880d681SAndroid Build Coastguard Worker} 62