R600: optimize the UDIVREM 64 algorithm
[oota-llvm.git] / test / CodeGen / R600 / udivrem64.ll
1 ;XUN: llc < %s -march=r600 -mcpu=SI | FileCheck --check-prefix=SI --check-prefix=FUNC %s
2 ;RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG --check-prefix=FUNC %s
3
4 ;FUNC-LABEL: @test_udiv
5 ;EG: RECIP_UINT
6 ;EG: BFE_UINT
7 ;EG: BFE_UINT
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
39 define 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: BFE_UINT
78 ;EG: BFE_UINT
79 ;SI: S_ENDPGM
80 define void @test_urem(i64 addrspace(1)* %out, i64 %x, i64 %y) {
81   %result = urem i64 %x, %y
82   store i64 %result, i64 addrspace(1)* %out
83   ret void
84 }