R600: Remove a few more things from AMDILISelLowering
[oota-llvm.git] / test / CodeGen / R600 / sub.ll
1 ;RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG --check-prefix=FUNC %s
2 ;RUN: llc < %s -march=r600 -mcpu=verde -verify-machineinstrs | FileCheck --check-prefix=SI --check-prefix=FUNC %s
3
4 ;FUNC-LABEL: @test2
5 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
6 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
7
8 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
9 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
10
11 define void @test2(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) {
12   %b_ptr = getelementptr <2 x i32> addrspace(1)* %in, i32 1
13   %a = load <2 x i32> addrspace(1) * %in
14   %b = load <2 x i32> addrspace(1) * %b_ptr
15   %result = sub <2 x i32> %a, %b
16   store <2 x i32> %result, <2 x i32> addrspace(1)* %out
17   ret void
18 }
19
20 ;FUNC-LABEL: @test4
21 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
22 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
23 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
24 ;EG: SUB_INT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
25
26 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
27 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
28 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
29 ;SI: V_SUB_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
30
31 define void @test4(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) {
32   %b_ptr = getelementptr <4 x i32> addrspace(1)* %in, i32 1
33   %a = load <4 x i32> addrspace(1) * %in
34   %b = load <4 x i32> addrspace(1) * %b_ptr
35   %result = sub <4 x i32> %a, %b
36   store <4 x i32> %result, <4 x i32> addrspace(1)* %out
37   ret void
38 }
39
40 ;FUNC_LABEL: @test5
41
42 ;EG-DAG: SETGE_UINT
43 ;EG-DAG: CNDE_INT
44 ;EG-DAG: SUB_INT
45 ;EG-DAG: SUB_INT
46 ;EG-DAG: SUB_INT
47
48 ;SI: S_NOT_B64
49 ;SI-DAG: S_ADD_I32
50 ;SI-DAG: S_ADDC_U32
51 ;SI-DAG: S_ADD_I32
52 ;SI-DAG: S_ADDC_U32
53
54 define void @test5(i64 addrspace(1)* %out, i64 %a, i64 %b) {
55 entry:
56   %0 = sub i64 %a, %b
57   store i64 %0, i64 addrspace(1)* %out
58   ret void
59 }