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;SI: s_endpgm
39define void @test_udiv(i64 addrspace(1)* %out, i64 %x, i64 %y) {
40  %result = udiv i64 %x, %y
41  store i64 %result, i64 addrspace(1)* %out
42  ret void
43}
44
45;FUNC-LABEL: {{^}}test_urem:
46;EG: RECIP_UINT
47;EG: BFE_UINT
48;EG: BFE_UINT
49;EG: BFE_UINT
50;EG: BFE_UINT
51;EG: BFE_UINT
52;EG: BFE_UINT
53;EG: BFE_UINT
54;EG: BFE_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: AND_INT {{.*}}, 1,
78;SI: s_endpgm
79define void @test_urem(i64 addrspace(1)* %out, i64 %x, i64 %y) {
80  %result = urem i64 %x, %y
81  store i64 %result, i64 addrspace(1)* %out
82  ret void
83}
84