[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / zos-ada-relocations.ll
blob068b56d8cef8b9b81b85ce6543b11b107c1a3b5c
1 ; Test the ADA section in the assembly output for all cases.
3 ; RUN: llc < %s -mtriple=s390x-ibm-zos | FileCheck %s
5 ; CHECK-LABEL: DoIt:
6 ; CHECK:    stmg    6,7,1840(4)
7 ; CHECK:    aghi    4,-224
8 ; CHECK:    lg  1,0(5)
9 ; CHECK:    lg  6,16(5)
10 ; CHECK:    lg  5,8(5)
11 ; CHECK:    stg 1,2264(4)
12 ; CHECK:    basr    7,6
13 ; CHECK:    bcr 0,0
14 ; CHECK:    lg  7,2072(4)
15 ; CHECK:    aghi    4,224
16 ; CHECK:    b   2(7)
17 define hidden void @DoIt() {
18 entry:
19   %F = alloca ptr, align 8
20   store ptr @DoFunc, ptr %F, align 8
21   %0 = load ptr, ptr %F, align 8
22   call void @Caller(ptr noundef %0)
23   ret void
25 declare void @DoFunc()
26 declare void @Caller(ptr noundef)
28 ; CHECK-LABEL: get_i:
29 ; CHECK:    stmg    6,8,1872(4)
30 ; CHECK:    aghi    4,-192
31 ; CHECK:    lg  1,24(5)
32 ; CHECK:    lg  2,32(5)
33 ; CHECK:    lgf 1,0(1)
34 ; CHECK:    lg  6,48(5)
35 ; CHECK:    lg  5,40(5)
36 ; CHECK:    l   8,0(2)
37 ; CHECK:    basr    7,6
38 ; CHECK:    bcr 0,0
39 ; CHECK:    ar  3,8
40 ; CHECK:    lgfr    3,3
41 ; CHECK:    lmg 7,8,2072(4)
42 ; CHECK:    aghi    4,192
43 ; CHECK:    b   2(7)
44 @i = external global i32, align 4
45 @i2 = external global i32, align 4
47 define signext i32 @get_i() {
48 entry:
49   %0 = load i32, ptr @i, align 4
50   %1 = load i32, ptr @i2, align 4
51   %call = call signext i32 @callout(i32 signext %1)
52   %add = add nsw i32 %0, %call
53   ret i32 %add
56 declare signext i32 @callout(i32 signext)
58 ; CHECK:     .section    ".ada"
59 ; CHECK:  .set L#DoFunc@indirect0, DoFunc
60 ; CHECK:      .indirect_symbol   L#DoFunc@indirect0
61 ; CHECK:  .quad V(L#DoFunc@indirect0)          * Offset 0 pointer to function descriptor DoFunc
62 ; CHECK:  .quad R(Caller)                      * Offset 8 function descriptor of Caller
63 ; CHECK:  .quad V(Caller)
64 ; CHECK:  .quad A(i2)                           * Offset 24 pointer to data symbol i2
65 ; CHECK:  .quad A(i)                            * Offset 32 pointer to data symbol i
66 ; CHECK:  .quad R(callout)                      * Offset 40 function descriptor of callout
67 ; CHECK:  .quad V(callout)