[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / icmp64.ll
blobc2f00f8519059918b2f007158cd6c2a815c385f3
1 ; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,SI %s
2 ; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,VI %s
4 ; GCN-LABEL: {{^}}test_i64_eq:
5 ; VI: s_cmp_eq_u64
6 ; SI: v_cmp_eq_u64
7 define amdgpu_kernel void @test_i64_eq(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
8   %cmp = icmp eq i64 %a, %b
9   %result = sext i1 %cmp to i32
10   store i32 %result, ptr addrspace(1) %out, align 4
11   ret void
14 ; GCN-LABEL: {{^}}test_i64_ne:
15 ; VI: s_cmp_lg_u64
16 ; SI: v_cmp_ne_u64
17 define amdgpu_kernel void @test_i64_ne(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
18   %cmp = icmp ne i64 %a, %b
19   %result = sext i1 %cmp to i32
20   store i32 %result, ptr addrspace(1) %out, align 4
21   ret void
24 ; GCN-LABEL: {{^}}test_i64_slt:
25 ; GCN: v_cmp_lt_i64
26 define amdgpu_kernel void @test_i64_slt(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
27   %cmp = icmp slt i64 %a, %b
28   %result = sext i1 %cmp to i32
29   store i32 %result, ptr addrspace(1) %out, align 4
30   ret void
33 ; GCN-LABEL: {{^}}test_i64_ult:
34 ; GCN: v_cmp_lt_u64
35 define amdgpu_kernel void @test_i64_ult(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
36   %cmp = icmp ult i64 %a, %b
37   %result = sext i1 %cmp to i32
38   store i32 %result, ptr addrspace(1) %out, align 4
39   ret void
42 ; GCN-LABEL: {{^}}test_i64_sle:
43 ; GCN: v_cmp_le_i64
44 define amdgpu_kernel void @test_i64_sle(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
45   %cmp = icmp sle i64 %a, %b
46   %result = sext i1 %cmp to i32
47   store i32 %result, ptr addrspace(1) %out, align 4
48   ret void
51 ; GCN-LABEL: {{^}}test_i64_ule:
52 ; GCN: v_cmp_le_u64
53 define amdgpu_kernel void @test_i64_ule(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
54   %cmp = icmp ule i64 %a, %b
55   %result = sext i1 %cmp to i32
56   store i32 %result, ptr addrspace(1) %out, align 4
57   ret void
60 ; GCN-LABEL: {{^}}test_i64_sgt:
61 ; GCN: v_cmp_gt_i64
62 define amdgpu_kernel void @test_i64_sgt(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
63   %cmp = icmp sgt i64 %a, %b
64   %result = sext i1 %cmp to i32
65   store i32 %result, ptr addrspace(1) %out, align 4
66   ret void
69 ; GCN-LABEL: {{^}}test_i64_ugt:
70 ; GCN: v_cmp_gt_u64
71 define amdgpu_kernel void @test_i64_ugt(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
72   %cmp = icmp ugt i64 %a, %b
73   %result = sext i1 %cmp to i32
74   store i32 %result, ptr addrspace(1) %out, align 4
75   ret void
78 ; GCN-LABEL: {{^}}test_i64_sge:
79 ; GCN: v_cmp_ge_i64
80 define amdgpu_kernel void @test_i64_sge(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
81   %cmp = icmp sge i64 %a, %b
82   %result = sext i1 %cmp to i32
83   store i32 %result, ptr addrspace(1) %out, align 4
84   ret void
87 ; GCN-LABEL: {{^}}test_i64_uge:
88 ; GCN: v_cmp_ge_u64
89 define amdgpu_kernel void @test_i64_uge(ptr addrspace(1) %out, i64 %a, i64 %b) nounwind {
90   %cmp = icmp uge i64 %a, %b
91   %result = sext i1 %cmp to i32
92   store i32 %result, ptr addrspace(1) %out, align 4
93   ret void