Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-vec-arg-spills.ll
blob66f88b4e3d5ab39ec7c21ad37a96ac927ff2557e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=+altivec \
3 ; RUN:     -vec-extabi -mtriple powerpc-ibm-aix-xcoff < %s | \
4 ; RUN:   FileCheck %s --check-prefix=32BIT
6 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=+altivec \
7 ; RUN:     -vec-extabi -mtriple powerpc64-ibm-aix-xcoff < %s | \
8 ; RUN:   FileCheck %s --check-prefix=64BIT
9 %struct.Test = type { double, double, double, double }
11 @__const.caller.t = private unnamed_addr constant %struct.Test { double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00 }, align 8
13 define double @caller() {
14 ; 32BIT-LABEL: caller:
15 ; 32BIT:       # %bb.0: # %entry
16 ; 32BIT-NEXT:    mflr 0
17 ; 32BIT-NEXT:    stwu 1, -192(1)
18 ; 32BIT-NEXT:    lis 4, 16392
19 ; 32BIT-NEXT:    stw 0, 200(1)
20 ; 32BIT-NEXT:    li 3, 0
21 ; 32BIT-NEXT:    xxlxor 0, 0, 0
22 ; 32BIT-NEXT:    xxlxor 1, 1, 1
23 ; 32BIT-NEXT:    stw 4, 180(1)
24 ; 32BIT-NEXT:    lis 4, 16384
25 ; 32BIT-NEXT:    stw 3, 184(1)
26 ; 32BIT-NEXT:    stw 3, 176(1)
27 ; 32BIT-NEXT:    stw 4, 172(1)
28 ; 32BIT-NEXT:    lis 4, 16368
29 ; 32BIT-NEXT:    stw 3, 168(1)
30 ; 32BIT-NEXT:    stw 3, 160(1)
31 ; 32BIT-NEXT:    stw 4, 164(1)
32 ; 32BIT-NEXT:    stw 3, 156(1)
33 ; 32BIT-NEXT:    li 3, 136
34 ; 32BIT-NEXT:    li 4, 120
35 ; 32BIT-NEXT:    xxlxor 2, 2, 2
36 ; 32BIT-NEXT:    stxvw4x 0, 1, 3
37 ; 32BIT-NEXT:    li 3, 104
38 ; 32BIT-NEXT:    stxvw4x 0, 1, 4
39 ; 32BIT-NEXT:    li 4, 88
40 ; 32BIT-NEXT:    stxvw4x 0, 1, 3
41 ; 32BIT-NEXT:    stxvw4x 0, 1, 4
42 ; 32BIT-NEXT:    lwz 4, L..C0(2) # %const.0
43 ; 32BIT-NEXT:    li 3, 72
44 ; 32BIT-NEXT:    stxvw4x 0, 1, 3
45 ; 32BIT-NEXT:    li 3, 48
46 ; 32BIT-NEXT:    xxlxor 34, 34, 34
47 ; 32BIT-NEXT:    xxlxor 35, 35, 35
48 ; 32BIT-NEXT:    lxvd2x 0, 0, 4
49 ; 32BIT-NEXT:    li 4, 512
50 ; 32BIT-NEXT:    xxlxor 36, 36, 36
51 ; 32BIT-NEXT:    xxlxor 37, 37, 37
52 ; 32BIT-NEXT:    xxlxor 38, 38, 38
53 ; 32BIT-NEXT:    xxlxor 39, 39, 39
54 ; 32BIT-NEXT:    xxlxor 40, 40, 40
55 ; 32BIT-NEXT:    xxlxor 41, 41, 41
56 ; 32BIT-NEXT:    xxlxor 42, 42, 42
57 ; 32BIT-NEXT:    stxvd2x 0, 1, 3
58 ; 32BIT-NEXT:    stw 4, 152(1)
59 ; 32BIT-NEXT:    li 3, 128
60 ; 32BIT-NEXT:    li 4, 256
61 ; 32BIT-NEXT:    xxlxor 43, 43, 43
62 ; 32BIT-NEXT:    xxlxor 44, 44, 44
63 ; 32BIT-NEXT:    xxlxor 45, 45, 45
64 ; 32BIT-NEXT:    xxlxor 3, 3, 3
65 ; 32BIT-NEXT:    xxlxor 4, 4, 4
66 ; 32BIT-NEXT:    xxlxor 5, 5, 5
67 ; 32BIT-NEXT:    xxlxor 6, 6, 6
68 ; 32BIT-NEXT:    xxlxor 7, 7, 7
69 ; 32BIT-NEXT:    xxlxor 8, 8, 8
70 ; 32BIT-NEXT:    xxlxor 9, 9, 9
71 ; 32BIT-NEXT:    xxlxor 10, 10, 10
72 ; 32BIT-NEXT:    xxlxor 11, 11, 11
73 ; 32BIT-NEXT:    xxlxor 12, 12, 12
74 ; 32BIT-NEXT:    xxlxor 13, 13, 13
75 ; 32BIT-NEXT:    bl .callee[PR]
76 ; 32BIT-NEXT:    nop
77 ; 32BIT-NEXT:    addi 1, 1, 192
78 ; 32BIT-NEXT:    lwz 0, 8(1)
79 ; 32BIT-NEXT:    mtlr 0
80 ; 32BIT-NEXT:    blr
82 ; 64BIT-LABEL: caller:
83 ; 64BIT:       # %bb.0: # %entry
84 ; 64BIT-NEXT:    mflr 0
85 ; 64BIT-NEXT:    stdu 1, -224(1)
86 ; 64BIT-NEXT:    li 3, 2049
87 ; 64BIT-NEXT:    std 0, 240(1)
88 ; 64BIT-NEXT:    li 4, 1
89 ; 64BIT-NEXT:    xxlxor 0, 0, 0
90 ; 64BIT-NEXT:    xxlxor 1, 1, 1
91 ; 64BIT-NEXT:    rldic 3, 3, 51, 1
92 ; 64BIT-NEXT:    rldic 4, 4, 62, 1
93 ; 64BIT-NEXT:    xxlxor 2, 2, 2
94 ; 64BIT-NEXT:    xxlxor 34, 34, 34
95 ; 64BIT-NEXT:    std 3, 216(1)
96 ; 64BIT-NEXT:    li 3, 1023
97 ; 64BIT-NEXT:    std 4, 208(1)
98 ; 64BIT-NEXT:    li 4, 0
99 ; 64BIT-NEXT:    xxlxor 35, 35, 35
100 ; 64BIT-NEXT:    xxlxor 36, 36, 36
101 ; 64BIT-NEXT:    rldic 3, 3, 52, 2
102 ; 64BIT-NEXT:    std 4, 192(1)
103 ; 64BIT-NEXT:    xxlxor 37, 37, 37
104 ; 64BIT-NEXT:    xxlxor 38, 38, 38
105 ; 64BIT-NEXT:    xxlxor 39, 39, 39
106 ; 64BIT-NEXT:    std 3, 200(1)
107 ; 64BIT-NEXT:    li 3, 160
108 ; 64BIT-NEXT:    xxlxor 40, 40, 40
109 ; 64BIT-NEXT:    stxvw4x 0, 1, 3
110 ; 64BIT-NEXT:    li 3, 144
111 ; 64BIT-NEXT:    xxlxor 41, 41, 41
112 ; 64BIT-NEXT:    xxlxor 42, 42, 42
113 ; 64BIT-NEXT:    stxvw4x 0, 1, 3
114 ; 64BIT-NEXT:    li 3, 128
115 ; 64BIT-NEXT:    xxlxor 43, 43, 43
116 ; 64BIT-NEXT:    stxvw4x 0, 1, 3
117 ; 64BIT-NEXT:    ld 3, L..C0(2) # %const.0
118 ; 64BIT-NEXT:    xxlxor 44, 44, 44
119 ; 64BIT-NEXT:    xxlxor 45, 45, 45
120 ; 64BIT-NEXT:    lxvd2x 0, 0, 3
121 ; 64BIT-NEXT:    li 3, 80
122 ; 64BIT-NEXT:    xxlxor 3, 3, 3
123 ; 64BIT-NEXT:    xxlxor 4, 4, 4
124 ; 64BIT-NEXT:    xxlxor 5, 5, 5
125 ; 64BIT-NEXT:    stxvd2x 0, 1, 3
126 ; 64BIT-NEXT:    li 3, 512
127 ; 64BIT-NEXT:    std 4, 176(1)
128 ; 64BIT-NEXT:    li 4, 256
129 ; 64BIT-NEXT:    xxlxor 6, 6, 6
130 ; 64BIT-NEXT:    xxlxor 7, 7, 7
131 ; 64BIT-NEXT:    xxlxor 8, 8, 8
132 ; 64BIT-NEXT:    std 3, 184(1)
133 ; 64BIT-NEXT:    li 3, 128
134 ; 64BIT-NEXT:    xxlxor 9, 9, 9
135 ; 64BIT-NEXT:    xxlxor 10, 10, 10
136 ; 64BIT-NEXT:    xxlxor 11, 11, 11
137 ; 64BIT-NEXT:    xxlxor 12, 12, 12
138 ; 64BIT-NEXT:    xxlxor 13, 13, 13
139 ; 64BIT-NEXT:    bl .callee[PR]
140 ; 64BIT-NEXT:    nop
141 ; 64BIT-NEXT:    addi 1, 1, 224
142 ; 64BIT-NEXT:    ld 0, 16(1)
143 ; 64BIT-NEXT:    mtlr 0
144 ; 64BIT-NEXT:    blr
146   entry:
147     %call = tail call double @callee(i32 signext 128, i32 signext 256, double 0.000000e+00, double 0.000000e+00, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 2.400000e+01, double 2.500000e+01>, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, i32 signext 512, ptr nonnull byval(%struct.Test) align 4 @__const.caller.t)
148       ret double %call
151 declare double @callee(i32 signext, i32 signext, double, double, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, double, double, double, double, double, double, double, double, double, double, i32 signext, ptr byval(%struct.Test) align 8)