blob: 3af74277df128bd9fd139c7a84610aab6045f85b [file] [log] [blame]
Matt Arsenault7aad8fd2017-01-24 22:02:15 +00001; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
2; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -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 Arsenault3dbeefa2017-03-21 21:39:51 +00006define amdgpu_kernel void @test_i64_eq(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +00007 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000015define amdgpu_kernel void @test_i64_ne(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000016 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000024define amdgpu_kernel void @test_i64_slt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000025 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000033define amdgpu_kernel void @test_i64_ult(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000034 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000042define amdgpu_kernel void @test_i64_sle(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000043 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000051define amdgpu_kernel void @test_i64_ule(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000052 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000060define amdgpu_kernel void @test_i64_sgt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000061 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000069define amdgpu_kernel void @test_i64_ugt(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000070 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000078define amdgpu_kernel void @test_i64_sge(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000079 %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 Arsenault3dbeefa2017-03-21 21:39:51 +000087define amdgpu_kernel void @test_i64_uge(i32 addrspace(1)* %out, i64 %a, i64 %b) nounwind {
Matt Arsenault29da7172013-12-10 21:11:55 +000088 %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