[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / PowerPC / aix_gpr_param.ll
blob42b6f886e687d5ea2540b69019acbc88783ba603
1 ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -stop-after=machine-cp < %s | \
2 ; RUN: FileCheck --check-prefix=32BIT %s
4 ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -stop-after=machine-cp < %s | \
5 ; RUN: FileCheck --check-prefix=64BIT %s
7 define void @call_test_char() {
8 entry:
9 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
10 ; 32BIT: $r3 = LI 97
11 ; 32BIT: BL_NOP <mcsymbol .test_char>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit $r2, implicit-def $r1
12 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
14 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
15 ; 64BIT: $x3 = LI8 97
16 ; 64BIT: BL8_NOP <mcsymbol .test_char>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit $x2, implicit-def $r1
17 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
19   call void @test_char(i8 signext 97)
20   ret void
23 define void @call_test_chars() {
24 entry:
25 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
26 ; 32BIT: $r3 = LI 97
27 ; 32BIT: $r4 = LI 97
28 ; 32BIT: $r5 = LI 97
29 ; 32BIT: $r6 = LI 97
30 ; 32BIT: BL_NOP <mcsymbol .test_chars>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit $r2, implicit-def $r1
31 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
33 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
34 ; 64BIT: $x3 = LI8 97
35 ; 64BIT: $x4 = LI8 97
36 ; 64BIT: $x5 = LI8 97
37 ; 64BIT: $x6 = LI8 97
38 ; 64BIT: BL8_NOP <mcsymbol .test_chars>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit $x2, implicit-def $r1
39 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
41   call void @test_chars(i8 signext 97, i8 signext 97, i8 signext 97, i8 signext 97)
42   ret void
45 define void @call_test_chars_mix() {
46 entry:
47 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
48 ; 32BIT: $r3 = LI 97
49 ; 32BIT: $r4 = LI 225
50 ; 32BIT: $r5 = LI 97
51 ; 32BIT: $r6 = LI -31
52 ; 32BIT: BL_NOP <mcsymbol .test_chars_mix>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit $r2, implicit-def $r1
53 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
55 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
56 ; 64BIT: $x3 = LI8 97
57 ; 64BIT: $x4 = LI8 225
58 ; 64BIT: $x5 = LI8 97
59 ; 64BIT: $x6 = LI8 -31
60 ; 64BIT: BL8_NOP <mcsymbol .test_chars_mix>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit $x2, implicit-def $r1
61 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
63   call void @test_chars_mix(i8 signext 97, i8 zeroext -31, i8 zeroext 97, i8 signext -31)
64   ret void
67 define void @call_test_int() {
68 entry:
69 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
70 ; 32BIT: $r3 = LI 1
71 ; 32BIT: BL_NOP <mcsymbol .test_int>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit $r2, implicit-def $r1
72 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
74 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
75 ; 64BIT: $x3 = LI8 1
76 ; 64BIT: BL8_NOP <mcsymbol .test_int>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit $x2, implicit-def $r1
77 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
79   call void @test_int(i32 1)
80   ret void
83 define void @call_test_ints() {
84 entry:
85 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
86 ; 32BIT: $r3 = LI 1
87 ; 32BIT: $r4 = LI 1
88 ; 32BIT: $r5 = LI 1
89 ; 32BIT: $r6 = LI 1
90 ; 32BIT: $r7 = LI 1
91 ; 32BIT: $r8 = LI 1
92 ; 32BIT: $r9 = LI 1
93 ; 32BIT: $r10 = LI 1
94 ; 32BIT: BL_NOP <mcsymbol .test_ints>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit killed $r5, implicit killed $r6, implicit killed $r7, implicit killed $r8, implicit killed $r9, implicit killed $r10, implicit $r2, implicit-def $r1
95 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
97 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
98 ; 64BIT: $x3 = LI8 1
99 ; 64BIT: $x4 = LI8 1
100 ; 64BIT: $x5 = LI8 1
101 ; 64BIT: $x6 = LI8 1
102 ; 64BIT: $x7 = LI8 1
103 ; 64BIT: $x8 = LI8 1
104 ; 64BIT: $x9 = LI8 1
105 ; 64BIT: $x10 = LI8 1
106 ; 64BIT: BL8_NOP <mcsymbol .test_ints>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit killed $x4, implicit killed $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit killed $x9, implicit killed $x10, implicit $x2, implicit-def $r1
107 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
109   call void @test_ints(i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1)
110   ret void
113 define void @call_test_ints_64bit() {
114 entry:
115 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
116 ; 64BIT: renamable $x3 = LI8 1
117 ; 64BIT: renamable $x5 = RLDICR killed renamable $x3, 31, 32
118 ; 64BIT: $x3 = LI8 1
119 ; 64BIT: $x4 = LI8 1
120 ; 64BIT: $x6 = LIS8 32768
121 ; 64BIT: $x7 = LI8 1
122 ; 64BIT: $x8 = LI8 1
123 ; 64BIT: $x9 = LI8 1
124 ; 64BIT: $x10 = LI8 1
125 ; 64BIT: BL8_NOP <mcsymbol .test_ints_64bit>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit killed $x4, implicit $x5, implicit killed $x6, implicit killed $x7, implicit killed $x8, implicit killed $x9, implicit killed $x10, implicit $x2, implicit-def $r1
126 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
128   call void @test_ints_64bit(i32 signext 1, i32 zeroext 1, i32 zeroext 2147483648, i32 signext -2147483648, i32 signext 1, i32 signext 1, i32 signext 1, i32 signext 1)
129   ret void
132 define void @call_test_i1() {
133 entry:
134 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
135 ; 32BIT: $r3 = LI 1
136 ; 32BIT: BL_NOP <mcsymbol .test_i1>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit $r2, implicit-def $r1
137 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
139 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
140 ; 64BIT: $x3 = LI8 1
141 ; 64BIT: BL8_NOP <mcsymbol .test_i1>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit $x2, implicit-def $r1
142 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
144   call void @test_i1(i1 1)
145   ret void
148 define void @call_test_i64() {
149 entry:
150 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
151 ; 32BIT: $r3 = LI 0
152 ; 32BIT: $r4 = LI 1
153 ; 32BIT: BL_NOP <mcsymbol .test_i64>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit killed $r3, implicit killed $r4, implicit $r2, implicit-def $r1
154 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
156 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
157 ; 64BIT: $x3 = LI8 1
158 ; 64BIT: BL8_NOP <mcsymbol .test_i64>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit killed $x3, implicit $x2, implicit-def $r1
159 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
161   call void @test_i64(i64 1)
162   ret void
165 define void @call_test_int_ptr() {
166 entry:
167   %b = alloca i32, align 4
168 ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
169 ; 32BIT: renamable $r3 = ADDI %stack.0.b, 0
170 ; 32BIT: BL_NOP <mcsymbol .test_int_ptr>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r2, implicit-def $r1
171 ; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
173 ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
174 ; 64BIT: renamable $x3 = ADDI8 %stack.0.b, 0
175 ; 64BIT: BL8_NOP <mcsymbol .test_int_ptr>, csr_aix64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x2, implicit-def $r1
176 ; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
178   store i32 0, i32* %b, align 4
179   call void @test_int_ptr(i32* %b)
180   ret void
183 declare void @test_char(i8 signext)
185 declare void @test_chars(i8 signext, i8 signext, i8 signext, i8 signext)
187 declare void @test_chars_mix(i8 signext, i8 zeroext, i8 zeroext, i8 signext)
189 declare void @test_int(i32)
191 declare void @test_ints(i32, i32, i32, i32, i32, i32, i32, i32)
193 declare void @test_ints_64bit(i32 signext, i32 zeroext, i32 zeroext, i32 signext, i32 signext, i32 signext, i32 signext, i32 signext)
195 declare void @test_i1(i1)
197 declare void @test_i64(i64)
199 declare void @test_int_ptr(i32*)