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