R600/SI: Enable all tests that pass on VI without changes
[oota-llvm.git] / test / CodeGen / R600 / udivrem64.ll
1 ;RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck --check-prefix=SI --check-prefix=FUNC %s
2 ;RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=SI --check-prefix=FUNC %s
3 ;RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck --check-prefix=EG --check-prefix=FUNC %s
4
5 ;FUNC-LABEL: {{^}}test_udiv:
6 ;EG: RECIP_UINT
7 ;EG: LSHL {{.*}}, 1,
8 ;EG: BFE_UINT
9 ;EG: BFE_UINT
10 ;EG: BFE_UINT
11 ;EG: BFE_UINT
12 ;EG: BFE_UINT
13 ;EG: BFE_UINT
14 ;EG: BFE_UINT
15 ;EG: BFE_UINT
16 ;EG: BFE_UINT
17 ;EG: BFE_UINT
18 ;EG: BFE_UINT
19 ;EG: BFE_UINT
20 ;EG: BFE_UINT
21 ;EG: BFE_UINT
22 ;EG: BFE_UINT
23 ;EG: BFE_UINT
24 ;EG: BFE_UINT
25 ;EG: BFE_UINT
26 ;EG: BFE_UINT
27 ;EG: BFE_UINT
28 ;EG: BFE_UINT
29 ;EG: BFE_UINT
30 ;EG: BFE_UINT
31 ;EG: BFE_UINT
32 ;EG: BFE_UINT
33 ;EG: BFE_UINT
34 ;EG: BFE_UINT
35 ;EG: BFE_UINT
36 ;EG: BFE_UINT
37 ;EG: BFE_UINT
38
39 ;SI: s_bfe_u32
40 ;SI: s_bfe_u32
41 ;SI: s_bfe_u32
42 ;SI: s_bfe_u32
43 ;SI: s_bfe_u32
44 ;SI: s_bfe_u32
45 ;SI: s_bfe_u32
46 ;SI: s_bfe_u32
47 ;SI: s_bfe_u32
48 ;SI: s_bfe_u32
49 ;SI: s_bfe_u32
50 ;SI: s_bfe_u32
51 ;SI: s_bfe_u32
52 ;SI: s_bfe_u32
53 ;SI: s_bfe_u32
54 ;SI: s_bfe_u32
55 ;SI: s_bfe_u32
56 ;SI: s_bfe_u32
57 ;SI: s_bfe_u32
58 ;SI: s_bfe_u32
59 ;SI: s_bfe_u32
60 ;SI: s_bfe_u32
61 ;SI: s_bfe_u32
62 ;SI: s_bfe_u32
63 ;SI: s_bfe_u32
64 ;SI: s_bfe_u32
65 ;SI: s_bfe_u32
66 ;SI: s_bfe_u32
67 ;SI: s_bfe_u32
68 ;SI: s_bfe_u32
69 ;SI-NOT: v_mad_f32
70 ;SI-NOT: v_lshr_64
71 ;SI: s_endpgm
72 define void @test_udiv(i64 addrspace(1)* %out, i64 %x, i64 %y) {
73   %result = udiv i64 %x, %y
74   store i64 %result, i64 addrspace(1)* %out
75   ret void
76 }
77
78 ;FUNC-LABEL: {{^}}test_urem:
79 ;EG: RECIP_UINT
80 ;EG: BFE_UINT
81 ;EG: BFE_UINT
82 ;EG: BFE_UINT
83 ;EG: BFE_UINT
84 ;EG: BFE_UINT
85 ;EG: BFE_UINT
86 ;EG: BFE_UINT
87 ;EG: BFE_UINT
88 ;EG: BFE_UINT
89 ;EG: BFE_UINT
90 ;EG: BFE_UINT
91 ;EG: BFE_UINT
92 ;EG: BFE_UINT
93 ;EG: BFE_UINT
94 ;EG: BFE_UINT
95 ;EG: BFE_UINT
96 ;EG: BFE_UINT
97 ;EG: BFE_UINT
98 ;EG: BFE_UINT
99 ;EG: BFE_UINT
100 ;EG: BFE_UINT
101 ;EG: BFE_UINT
102 ;EG: BFE_UINT
103 ;EG: BFE_UINT
104 ;EG: BFE_UINT
105 ;EG: BFE_UINT
106 ;EG: BFE_UINT
107 ;EG: BFE_UINT
108 ;EG: BFE_UINT
109 ;EG: BFE_UINT
110 ;EG: AND_INT {{.*}}, 1,
111
112 ;SI: s_bfe_u32
113 ;SI: s_bfe_u32
114 ;SI: s_bfe_u32
115 ;SI: s_bfe_u32
116 ;SI: s_bfe_u32
117 ;SI: s_bfe_u32
118 ;SI: s_bfe_u32
119 ;SI: s_bfe_u32
120 ;SI: s_bfe_u32
121 ;SI: s_bfe_u32
122 ;SI: s_bfe_u32
123 ;SI: s_bfe_u32
124 ;SI: s_bfe_u32
125 ;SI: s_bfe_u32
126 ;SI: s_bfe_u32
127 ;SI: s_bfe_u32
128 ;SI: s_bfe_u32
129 ;SI: s_bfe_u32
130 ;SI: s_bfe_u32
131 ;SI: s_bfe_u32
132 ;SI: s_bfe_u32
133 ;SI: s_bfe_u32
134 ;SI: s_bfe_u32
135 ;SI: s_bfe_u32
136 ;SI: s_bfe_u32
137 ;SI: s_bfe_u32
138 ;SI: s_bfe_u32
139 ;SI: s_bfe_u32
140 ;SI: s_bfe_u32
141 ;SI: s_bfe_u32
142 ;SI-NOT: v_mad_f32
143 ;SI-NOT: v_lshr_64
144 ;SI: s_endpgm
145 define void @test_urem(i64 addrspace(1)* %out, i64 %x, i64 %y) {
146   %result = urem i64 %x, %y
147   store i64 %result, i64 addrspace(1)* %out
148   ret void
149 }
150
151 ;FUNC-LABEL: {{^}}test_udiv3264:
152 ;EG: RECIP_UINT
153 ;EG-NOT: BFE_UINT
154
155 ;SI-NOT: s_bfe_u32
156 ;SI-NOT: v_mad_f32
157 ;SI-NOT: v_lshr_64
158 ;SI: s_endpgm
159 define void @test_udiv3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
160   %1 = lshr i64 %x, 33
161   %2 = lshr i64 %y, 33
162   %result = udiv i64 %1, %2
163   store i64 %result, i64 addrspace(1)* %out
164   ret void
165 }
166
167 ;FUNC-LABEL: {{^}}test_urem3264:
168 ;EG: RECIP_UINT
169 ;EG-NOT: BFE_UINT
170
171 ;SI-NOT: s_bfe_u32
172 ;SI-NOT: v_mad_f32
173 ;SI-NOT: v_lshr_64
174 ;SI: s_endpgm
175 define void @test_urem3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
176   %1 = lshr i64 %x, 33
177   %2 = lshr i64 %y, 33
178   %result = urem i64 %1, %2
179   store i64 %result, i64 addrspace(1)* %out
180   ret void
181 }
182
183 ;FUNC-LABEL: {{^}}test_udiv2464:
184 ;EG: UINT_TO_FLT
185 ;EG: UINT_TO_FLT
186 ;EG: FLT_TO_UINT
187 ;EG-NOT: RECIP_UINT
188 ;EG-NOT: BFE_UINT
189
190 ;SI-NOT: v_lshr_64
191 ;SI: v_mad_f32
192 ;SI: s_endpgm
193 define void @test_udiv2464(i64 addrspace(1)* %out, i64 %x, i64 %y) {
194   %1 = lshr i64 %x, 40
195   %2 = lshr i64 %y, 40
196   %result = udiv i64 %1, %2
197   store i64 %result, i64 addrspace(1)* %out
198   ret void
199 }
200
201 ;FUNC-LABEL: {{^}}test_urem2464:
202 ;EG: UINT_TO_FLT
203 ;EG: UINT_TO_FLT
204 ;EG: FLT_TO_UINT
205 ;EG-NOT: RECIP_UINT
206 ;EG-NOT: BFE_UINT
207
208 ;SI-NOT: v_lshr_64
209 ;SI: v_mad_f32
210 ;SI: s_endpgm
211 define void @test_urem2464(i64 addrspace(1)* %out, i64 %x, i64 %y) {
212   %1 = lshr i64 %x, 40
213   %2 = lshr i64 %y, 40
214   %result = urem i64 %1, %2
215   store i64 %result, i64 addrspace(1)* %out
216   ret void
217 }