]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/AMDGPU/udivrem64.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / CodeGen / AMDGPU / udivrem64.ll
1 ;RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=SI --check-prefix=GCN --check-prefix=FUNC %s
2 ;RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck --check-prefix=VI --check-prefix=GCN --check-prefix=FUNC %s
3 ;RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck --check-prefix=VI --check-prefix=GCN --check-prefix=FUNC %s
4 ;RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck --check-prefix=EG --check-prefix=FUNC %s
5
6 ;FUNC-LABEL: {{^}}test_udiv:
7 ;EG: RECIP_UINT
8 ;EG: LSHL {{.*}}, 1,
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 ;EG: BFE_UINT
39
40 ;GCN: v_mac_f32_e32 v{{[0-9]+}}, 0x4f800000,
41 ;GCN: v_rcp_f32_e32
42 ;GCN: v_mul_f32_e32 v{{[0-9]+}}, 0x5f7ffffc
43 ;GCN: v_mul_f32_e32 v{{[0-9]+}}, 0x2f800000
44 ;GCN: v_trunc_f32_e32
45 ;GCN: v_mac_f32_e32 v{{[0-9]+}}, 0xcf800000
46 ;GCN: s_endpgm
47 define amdgpu_kernel void @test_udiv(i64 addrspace(1)* %out, i64 %x, i64 %y) {
48   %result = udiv i64 %x, %y
49   store i64 %result, i64 addrspace(1)* %out
50   ret void
51 }
52
53 ;FUNC-LABEL: {{^}}test_urem:
54 ;EG: RECIP_UINT
55 ;EG: BFE_UINT
56 ;EG: BFE_UINT
57 ;EG: BFE_UINT
58 ;EG: BFE_UINT
59 ;EG: BFE_UINT
60 ;EG: BFE_UINT
61 ;EG: BFE_UINT
62 ;EG: BFE_UINT
63 ;EG: BFE_UINT
64 ;EG: BFE_UINT
65 ;EG: BFE_UINT
66 ;EG: BFE_UINT
67 ;EG: BFE_UINT
68 ;EG: BFE_UINT
69 ;EG: BFE_UINT
70 ;EG: BFE_UINT
71 ;EG: BFE_UINT
72 ;EG: BFE_UINT
73 ;EG: BFE_UINT
74 ;EG: BFE_UINT
75 ;EG: BFE_UINT
76 ;EG: BFE_UINT
77 ;EG: BFE_UINT
78 ;EG: BFE_UINT
79 ;EG: BFE_UINT
80 ;EG: BFE_UINT
81 ;EG: BFE_UINT
82 ;EG: BFE_UINT
83 ;EG: BFE_UINT
84 ;EG: BFE_UINT
85 ;EG: AND_INT {{.*}}, 1,
86
87 ;GCN: v_mac_f32_e32 v{{[0-9]+}}, 0x4f800000,
88 ;GCN: v_rcp_f32_e32
89 ;GCN: v_mul_f32_e32 v{{[0-9]+}}, 0x5f7ffffc
90 ;GCN: v_mul_f32_e32 v{{[0-9]+}}, 0x2f800000
91 ;GCN: v_trunc_f32_e32
92 ;GCN: v_mac_f32_e32 v{{[0-9]+}}, 0xcf800000
93 ;GCN: s_endpgm
94 define amdgpu_kernel void @test_urem(i64 addrspace(1)* %out, i64 %x, i64 %y) {
95   %result = urem i64 %x, %y
96   store i64 %result, i64 addrspace(1)* %out
97   ret void
98 }
99
100 ;FUNC-LABEL: {{^}}test_udiv3264:
101 ;EG: RECIP_UINT
102 ;EG-NOT: BFE_UINT
103
104 ;GCN-NOT: s_bfe_u32
105 ;GCN-NOT: v_mad_f32
106 ;SI-NOT: v_lshr_b64
107 ;VI-NOT: v_lshrrev_b64
108 ;GCN: s_endpgm
109 define amdgpu_kernel void @test_udiv3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
110   %1 = lshr i64 %x, 33
111   %2 = lshr i64 %y, 33
112   %result = udiv i64 %1, %2
113   store i64 %result, i64 addrspace(1)* %out
114   ret void
115 }
116
117 ;FUNC-LABEL: {{^}}test_urem3264:
118 ;EG: RECIP_UINT
119 ;EG-NOT: BFE_UINT
120
121 ;GCN-NOT: s_bfe_u32
122 ;GCN-NOT: v_mad_f32
123 ;SI-NOT: v_lshr_b64
124 ;VI-NOT: v_lshrrev_b64
125 ;GCN: s_endpgm
126 define amdgpu_kernel void @test_urem3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
127   %1 = lshr i64 %x, 33
128   %2 = lshr i64 %y, 33
129   %result = urem i64 %1, %2
130   store i64 %result, i64 addrspace(1)* %out
131   ret void
132 }
133
134 ;FUNC-LABEL: {{^}}test_udiv2364:
135 ;EG: UINT_TO_FLT
136 ;EG: UINT_TO_FLT
137 ;EG: FLT_TO_UINT
138 ;EG-NOT: RECIP_UINT
139 ;EG-NOT: BFE_UINT
140
141 ;SI-NOT: v_lshr_b64
142 ;VI-NOT: v_lshrrev_b64
143 ;GCN: v_mad_f32
144 ;GCN: s_endpgm
145 define amdgpu_kernel void @test_udiv2364(i64 addrspace(1)* %out, i64 %x, i64 %y) {
146   %1 = lshr i64 %x, 41
147   %2 = lshr i64 %y, 41
148   %result = udiv i64 %1, %2
149   store i64 %result, i64 addrspace(1)* %out
150   ret void
151 }
152
153 ;FUNC-LABEL: {{^}}test_urem2364:
154 ;EG: UINT_TO_FLT
155 ;EG: UINT_TO_FLT
156 ;EG: FLT_TO_UINT
157 ;EG-NOT: RECIP_UINT
158 ;EG-NOT: BFE_UINT
159
160 ;SI-NOT: v_lshr_b64
161 ;VI-NOT: v_lshrrev_b64
162 ;GCN: v_mad_f32
163 ;GCN: s_endpgm
164 define amdgpu_kernel void @test_urem2364(i64 addrspace(1)* %out, i64 %x, i64 %y) {
165   %1 = lshr i64 %x, 41
166   %2 = lshr i64 %y, 41
167   %result = urem i64 %1, %2
168   store i64 %result, i64 addrspace(1)* %out
169   ret void
170 }