145 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc -mtriple=aarch64-linux-gnu -code-model=large -o - %s | FileCheck %s --check-prefix=STATIC3; RUN: llc -mtriple=aarch64-linux-gnu -code-model=large -relocation-model=pic -o - %s | FileCheck %s --check-prefix=PIC4 5@var8 = dso_local global i8 06@var16 = dso_local global i16 07@var32 = dso_local global i32 08@var64 = dso_local global i64 09 10define dso_local ptr @global_addr() {11;12; STATIC-LABEL: global_addr:13; STATIC: // %bb.0:14; STATIC-NEXT: movz x0, #:abs_g0_nc:var815; STATIC-NEXT: movk x0, #:abs_g1_nc:var816; STATIC-NEXT: movk x0, #:abs_g2_nc:var817; STATIC-NEXT: movk x0, #:abs_g3:var818; STATIC-NEXT: ret19;20; PIC-LABEL: global_addr:21; PIC: .Lglobal_addr$local:22; PIC-NEXT: .type .Lglobal_addr$local,@function23; PIC-NEXT: .cfi_startproc24; PIC-NEXT: // %bb.0:25; PIC-NEXT: adrp x0, .Lvar8$local26; PIC-NEXT: add x0, x0, :lo12:.Lvar8$local27; PIC-NEXT: ret28 ret ptr @var829 ; The movz/movk calculation should end up returned directly in x0.30}31 32define dso_local i8 @global_i8() {33;34; STATIC-LABEL: global_i8:35; STATIC: // %bb.0:36; STATIC-NEXT: movz x8, #:abs_g0_nc:var837; STATIC-NEXT: movk x8, #:abs_g1_nc:var838; STATIC-NEXT: movk x8, #:abs_g2_nc:var839; STATIC-NEXT: movk x8, #:abs_g3:var840; STATIC-NEXT: ldrb w0, [x8]41; STATIC-NEXT: ret42;43; PIC-LABEL: global_i8:44; PIC: .Lglobal_i8$local:45; PIC-NEXT: .type .Lglobal_i8$local,@function46; PIC-NEXT: .cfi_startproc47; PIC-NEXT: // %bb.0:48; PIC-NEXT: adrp x8, .Lvar8$local49; PIC-NEXT: ldrb w0, [x8, :lo12:.Lvar8$local]50; PIC-NEXT: ret51 %val = load i8, ptr @var852 ret i8 %val53}54 55define dso_local i16 @global_i16() {56;57; STATIC-LABEL: global_i16:58; STATIC: // %bb.0:59; STATIC-NEXT: movz x8, #:abs_g0_nc:var1660; STATIC-NEXT: movk x8, #:abs_g1_nc:var1661; STATIC-NEXT: movk x8, #:abs_g2_nc:var1662; STATIC-NEXT: movk x8, #:abs_g3:var1663; STATIC-NEXT: ldrh w0, [x8]64; STATIC-NEXT: ret65;66; PIC-LABEL: global_i16:67; PIC: .Lglobal_i16$local:68; PIC-NEXT: .type .Lglobal_i16$local,@function69; PIC-NEXT: .cfi_startproc70; PIC-NEXT: // %bb.0:71; PIC-NEXT: adrp x8, .Lvar16$local72; PIC-NEXT: ldrh w0, [x8, :lo12:.Lvar16$local]73; PIC-NEXT: ret74 %val = load i16, ptr @var1675 ret i16 %val76}77 78define dso_local i32 @global_i32() {79;80; STATIC-LABEL: global_i32:81; STATIC: // %bb.0:82; STATIC-NEXT: movz x8, #:abs_g0_nc:var3283; STATIC-NEXT: movk x8, #:abs_g1_nc:var3284; STATIC-NEXT: movk x8, #:abs_g2_nc:var3285; STATIC-NEXT: movk x8, #:abs_g3:var3286; STATIC-NEXT: ldr w0, [x8]87; STATIC-NEXT: ret88;89; PIC-LABEL: global_i32:90; PIC: .Lglobal_i32$local:91; PIC-NEXT: .type .Lglobal_i32$local,@function92; PIC-NEXT: .cfi_startproc93; PIC-NEXT: // %bb.0:94; PIC-NEXT: adrp x8, .Lvar32$local95; PIC-NEXT: ldr w0, [x8, :lo12:.Lvar32$local]96; PIC-NEXT: ret97 %val = load i32, ptr @var3298 ret i32 %val99}100 101define dso_local i64 @global_i64() {102;103; STATIC-LABEL: global_i64:104; STATIC: // %bb.0:105; STATIC-NEXT: movz x8, #:abs_g0_nc:var64106; STATIC-NEXT: movk x8, #:abs_g1_nc:var64107; STATIC-NEXT: movk x8, #:abs_g2_nc:var64108; STATIC-NEXT: movk x8, #:abs_g3:var64109; STATIC-NEXT: ldr x0, [x8]110; STATIC-NEXT: ret111;112; PIC-LABEL: global_i64:113; PIC: .Lglobal_i64$local:114; PIC-NEXT: .type .Lglobal_i64$local,@function115; PIC-NEXT: .cfi_startproc116; PIC-NEXT: // %bb.0:117; PIC-NEXT: adrp x8, .Lvar64$local118; PIC-NEXT: ldr x0, [x8, :lo12:.Lvar64$local]119; PIC-NEXT: ret120 %val = load i64, ptr @var64121 ret i64 %val122}123 124define dso_local <2 x i64> @constpool() {125;126; STATIC-LABEL: constpool:127; STATIC: // %bb.0:128; STATIC-NEXT: movz x8, #:abs_g0_nc:.LCPI5_0129; STATIC-NEXT: movk x8, #:abs_g1_nc:.LCPI5_0130; STATIC-NEXT: movk x8, #:abs_g2_nc:.LCPI5_0131; STATIC-NEXT: movk x8, #:abs_g3:.LCPI5_0132; STATIC-NEXT: ldr q0, [x8]133; STATIC-NEXT: ret134;135; PIC-LABEL: constpool:136; PIC: .Lconstpool$local:137; PIC-NEXT: .type .Lconstpool$local,@function138; PIC-NEXT: .cfi_startproc139; PIC-NEXT: // %bb.0:140; PIC-NEXT: adrp x8, .LCPI5_0141; PIC-NEXT: ldr q0, [x8, :lo12:.LCPI5_0]142; PIC-NEXT: ret143 ret <2 x i64> <i64 123456789, i64 987654321100>144}145