[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / sub_i1.ll
blob1c056c5a4facab3e809a1a45e9d8e2b7aebd8cc7
1 ; RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,WAVE64 %s
2 ; RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,WAVE32 %s
3 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,WAVE32 %s
6 ; GCN-LABEL: {{^}}sub_var_var_i1:
7 ; WAVE32: s_xor_b32
8 ; WAVE64: s_xor_b64
9 define amdgpu_kernel void @sub_var_var_i1(ptr addrspace(1) %out, ptr addrspace(1) %in0, ptr addrspace(1) %in1) {
10   %a = load volatile i1, ptr addrspace(1) %in0
11   %b = load volatile i1, ptr addrspace(1) %in1
12   %sub = sub i1 %a, %b
13   store i1 %sub, ptr addrspace(1) %out
14   ret void
17 ; GCN-LABEL: {{^}}sub_var_imm_i1:
18 ; WAVE32: s_not_b32
19 ; WAVE64: s_not_b64
20 define amdgpu_kernel void @sub_var_imm_i1(ptr addrspace(1) %out, ptr addrspace(1) %in) {
21   %a = load volatile i1, ptr addrspace(1) %in
22   %sub = sub i1 %a, 1
23   store i1 %sub, ptr addrspace(1) %out
24   ret void
27 ; GCN-LABEL: {{^}}sub_i1_cf:
28 ; GCN: ; %endif
29 ; WAVE32: s_not_b32
30 ; WAVE64: s_not_b64
31 define amdgpu_kernel void @sub_i1_cf(ptr addrspace(1) %out, ptr addrspace(1) %a, ptr addrspace(1) %b) {
32 entry:
33   %tid = call i32 @llvm.amdgcn.workitem.id.x()
34   %d_cmp = icmp ult i32 %tid, 16
35   br i1 %d_cmp, label %if, label %else
37 if:
38   %0 = load volatile i1, ptr addrspace(1) %a
39   br label %endif
41 else:
42   %1 = load volatile i1, ptr addrspace(1) %b
43   br label %endif
45 endif:
46   %2 = phi i1 [%0, %if], [%1, %else]
47   %3 = sub i1 %2, -1
48   store i1 %3, ptr addrspace(1) %out
49   ret void
52 declare i32 @llvm.amdgcn.workitem.id.x()