[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / code-model-large-abs.ll
blob82169acc3e5614807d10064e4ff353dd4553bcc2
1 ; RUN: llc -mtriple=aarch64-linux-gnu -code-model=large -o - %s | FileCheck %s
3 @var8 = global i8 0
4 @var16 = global i16 0
5 @var32 = global i32 0
6 @var64 = global i64 0
8 define i8* @global_addr() {
9 ; CHECK-LABEL: global_addr:
10   ret i8* @var8
11   ; The movz/movk calculation should end up returned directly in x0.
12 ; CHECK: movz x0, #:abs_g0_nc:var8
13 ; CHECK: movk x0, #:abs_g1_nc:var8
14 ; CHECK: movk x0, #:abs_g2_nc:var8
15 ; CHECK: movk x0, #:abs_g3:var8
16 ; CHECK-NEXT: ret
19 define i8 @global_i8() {
20 ; CHECK-LABEL: global_i8:
21   %val = load i8, i8* @var8
22   ret i8 %val
23 ; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g0_nc:var8
24 ; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var8
25 ; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var8
26 ; CHECK: movk x[[ADDR_REG]], #:abs_g3:var8
27 ; CHECK: ldrb w0, [x[[ADDR_REG]]]
30 define i16 @global_i16() {
31 ; CHECK-LABEL: global_i16:
32   %val = load i16, i16* @var16
33   ret i16 %val
34 ; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g0_nc:var16
35 ; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var16
36 ; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var16
37 ; CHECK: movk x[[ADDR_REG]], #:abs_g3:var16
38 ; CHECK: ldrh w0, [x[[ADDR_REG]]]
41 define i32 @global_i32() {
42 ; CHECK-LABEL: global_i32:
43   %val = load i32, i32* @var32
44   ret i32 %val
45 ; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g0_nc:var32
46 ; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var32
47 ; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var32
48 ; CHECK: movk x[[ADDR_REG]], #:abs_g3:var32
49 ; CHECK: ldr w0, [x[[ADDR_REG]]]
52 define i64 @global_i64() {
53 ; CHECK-LABEL: global_i64:
54   %val = load i64, i64* @var64
55   ret i64 %val
56 ; CHECK: movz x[[ADDR_REG:[0-9]+]], #:abs_g0_nc:var64
57 ; CHECK: movk x[[ADDR_REG]], #:abs_g1_nc:var64
58 ; CHECK: movk x[[ADDR_REG]], #:abs_g2_nc:var64
59 ; CHECK: movk x[[ADDR_REG]], #:abs_g3:var64
60 ; CHECK: ldr x0, [x[[ADDR_REG]]]