blob: 3d42eac442970efd600330bfb75ba12b11bcb031 [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
Marek Olsak75170772015-01-27 17:27:15 +00002; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
Matt Arsenault29da7172013-12-10 21:11:55 +00003
Tom Stellard79243d92014-10-01 17:15:17 +00004; SI-LABEL: {{^}}test_i64_eq:
Matt Arsenault5d8eb252016-09-30 01:50:20 +00005; SI: v_cmp_eq_u64
Matt Arsenault29da7172013-12-10 21:11:55 +00006define void @test_i64_eq(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
7 %cmp = icmp eq i64 %a, %b
8 %result = sext i1 %cmp to i32
9 store i32 %result, i32 addrspace(1)* %out, align 4
10 ret void
11}
12
Tom Stellard79243d92014-10-01 17:15:17 +000013; SI-LABEL: {{^}}test_i64_ne:
Matt Arsenault5d8eb252016-09-30 01:50:20 +000014; SI: v_cmp_ne_u64
Matt Arsenault29da7172013-12-10 21:11:55 +000015define void @test_i64_ne(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
16 %cmp = icmp ne i64 %a, %b
17 %result = sext i1 %cmp to i32
18 store i32 %result, i32 addrspace(1)* %out, align 4
19 ret void
20}
21
Tom Stellard79243d92014-10-01 17:15:17 +000022; SI-LABEL: {{^}}test_i64_slt:
Tom Stellard326d6ec2014-11-05 14:50:53 +000023; SI: v_cmp_lt_i64
Matt Arsenault29da7172013-12-10 21:11:55 +000024define void @test_i64_slt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
25 %cmp = icmp slt i64 %a, %b
26 %result = sext i1 %cmp to i32
27 store i32 %result, i32 addrspace(1)* %out, align 4
28 ret void
29}
30
Tom Stellard79243d92014-10-01 17:15:17 +000031; SI-LABEL: {{^}}test_i64_ult:
Tom Stellard326d6ec2014-11-05 14:50:53 +000032; SI: v_cmp_lt_u64
Matt Arsenault29da7172013-12-10 21:11:55 +000033define void @test_i64_ult(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
34 %cmp = icmp ult i64 %a, %b
35 %result = sext i1 %cmp to i32
36 store i32 %result, i32 addrspace(1)* %out, align 4
37 ret void
38}
39
Tom Stellard79243d92014-10-01 17:15:17 +000040; SI-LABEL: {{^}}test_i64_sle:
Tom Stellard326d6ec2014-11-05 14:50:53 +000041; SI: v_cmp_le_i64
Matt Arsenault29da7172013-12-10 21:11:55 +000042define void @test_i64_sle(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
43 %cmp = icmp sle i64 %a, %b
44 %result = sext i1 %cmp to i32
45 store i32 %result, i32 addrspace(1)* %out, align 4
46 ret void
47}
48
Tom Stellard79243d92014-10-01 17:15:17 +000049; SI-LABEL: {{^}}test_i64_ule:
Tom Stellard326d6ec2014-11-05 14:50:53 +000050; SI: v_cmp_le_u64
Matt Arsenault29da7172013-12-10 21:11:55 +000051define void @test_i64_ule(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
52 %cmp = icmp ule i64 %a, %b
53 %result = sext i1 %cmp to i32
54 store i32 %result, i32 addrspace(1)* %out, align 4
55 ret void
56}
57
Tom Stellard79243d92014-10-01 17:15:17 +000058; SI-LABEL: {{^}}test_i64_sgt:
Tom Stellard326d6ec2014-11-05 14:50:53 +000059; SI: v_cmp_gt_i64
Matt Arsenault29da7172013-12-10 21:11:55 +000060define void @test_i64_sgt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
61 %cmp = icmp sgt i64 %a, %b
62 %result = sext i1 %cmp to i32
63 store i32 %result, i32 addrspace(1)* %out, align 4
64 ret void
65}
66
Tom Stellard79243d92014-10-01 17:15:17 +000067; SI-LABEL: {{^}}test_i64_ugt:
Tom Stellard326d6ec2014-11-05 14:50:53 +000068; SI: v_cmp_gt_u64
Matt Arsenault29da7172013-12-10 21:11:55 +000069define void @test_i64_ugt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
70 %cmp = icmp ugt i64 %a, %b
71 %result = sext i1 %cmp to i32
72 store i32 %result, i32 addrspace(1)* %out, align 4
73 ret void
74}
75
Tom Stellard79243d92014-10-01 17:15:17 +000076; SI-LABEL: {{^}}test_i64_sge:
Tom Stellard326d6ec2014-11-05 14:50:53 +000077; SI: v_cmp_ge_i64
Matt Arsenault29da7172013-12-10 21:11:55 +000078define void @test_i64_sge(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
79 %cmp = icmp sge i64 %a, %b
80 %result = sext i1 %cmp to i32
81 store i32 %result, i32 addrspace(1)* %out, align 4
82 ret void
83}
84
Tom Stellard79243d92014-10-01 17:15:17 +000085; SI-LABEL: {{^}}test_i64_uge:
Tom Stellard326d6ec2014-11-05 14:50:53 +000086; SI: v_cmp_ge_u64
Matt Arsenault29da7172013-12-10 21:11:55 +000087define void @test_i64_uge(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
88 %cmp = icmp uge i64 %a, %b
89 %result = sext i1 %cmp to i32
90 store i32 %result, i32 addrspace(1)* %out, align 4
91 ret void
92}
93