[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / la-05.ll
blob154fa4a0aa812b86c84985ad8c5d5e9040b5c073
1 ; Test that a huge address offset is loaded into a register and then added
2 ; separately.
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
6 @a = common dso_local global i32 0, align 4
8 define i64 @f1() {
9 ; CHECK-LABEL: f1:
10 ; CHECK: llihl   %r0, 829
11 ; CHECK: oilf    %r0, 4294966308
12 ; CHECK: larl    %r2, a
13 ; CHECK: agr     %r2, %r0
14 ; CHECK: br      %r14
15   ret i64 add (i64 ptrtoint (ptr @a to i64), i64 3564822854692)
18 define signext i32 @f2() {
19 ; CHECK-LABEL: f2:
20 ; CHECK: llihl   %r0, 829
21 ; CHECK: oilf    %r0, 4294966308
22 ; CHECK: larl    %r1, a
23 ; CHECK: agr     %r1, %r0
24 ; CHECK: lgf     %r2, 0(%r1)
25 ; CHECK: br      %r14
26 entry:
27   %0 = load i32, ptr inttoptr (i64 add (i64 ptrtoint (ptr @a to i64),
28                                 i64 3564822854692) to ptr)
29   ret i32 %0