annotate llvm/test/CodeGen/AMDGPU/nor.ll @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
1 ; RUN: llc -march=amdgcn -mcpu=gfx600 -verify-machineinstrs < %s | FileCheck --check-prefix=GCN %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
2 ; RUN: llc -march=amdgcn -mcpu=gfx700 -verify-machineinstrs < %s | FileCheck --check-prefix=GCN %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
3 ; RUN: llc -march=amdgcn -mcpu=gfx801 -verify-machineinstrs < %s | FileCheck --check-prefix=GCN %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
4 ; RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck --check-prefix=GCN %s
150
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 ; GCN-LABEL: {{^}}scalar_nor_i32_one_use
anatofuz
parents:
diff changeset
7 ; GCN: s_nor_b32
anatofuz
parents:
diff changeset
8 define amdgpu_kernel void @scalar_nor_i32_one_use(
anatofuz
parents:
diff changeset
9 i32 addrspace(1)* %r0, i32 %a, i32 %b) {
anatofuz
parents:
diff changeset
10 entry:
anatofuz
parents:
diff changeset
11 %or = or i32 %a, %b
anatofuz
parents:
diff changeset
12 %r0.val = xor i32 %or, -1
anatofuz
parents:
diff changeset
13 store i32 %r0.val, i32 addrspace(1)* %r0
anatofuz
parents:
diff changeset
14 ret void
anatofuz
parents:
diff changeset
15 }
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 ; GCN-LABEL: {{^}}scalar_nor_i32_mul_use
anatofuz
parents:
diff changeset
18 ; GCN-NOT: s_nor_b32
anatofuz
parents:
diff changeset
19 ; GCN: s_or_b32
anatofuz
parents:
diff changeset
20 ; GCN: s_not_b32
anatofuz
parents:
diff changeset
21 ; GCN: s_add_i32
anatofuz
parents:
diff changeset
22 define amdgpu_kernel void @scalar_nor_i32_mul_use(
anatofuz
parents:
diff changeset
23 i32 addrspace(1)* %r0, i32 addrspace(1)* %r1, i32 %a, i32 %b) {
anatofuz
parents:
diff changeset
24 entry:
anatofuz
parents:
diff changeset
25 %or = or i32 %a, %b
anatofuz
parents:
diff changeset
26 %r0.val = xor i32 %or, -1
anatofuz
parents:
diff changeset
27 %r1.val = add i32 %or, %a
anatofuz
parents:
diff changeset
28 store i32 %r0.val, i32 addrspace(1)* %r0
anatofuz
parents:
diff changeset
29 store i32 %r1.val, i32 addrspace(1)* %r1
anatofuz
parents:
diff changeset
30 ret void
anatofuz
parents:
diff changeset
31 }
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 ; GCN-LABEL: {{^}}scalar_nor_i64_one_use
anatofuz
parents:
diff changeset
34 ; GCN: s_nor_b64
anatofuz
parents:
diff changeset
35 define amdgpu_kernel void @scalar_nor_i64_one_use(
anatofuz
parents:
diff changeset
36 i64 addrspace(1)* %r0, i64 %a, i64 %b) {
anatofuz
parents:
diff changeset
37 entry:
anatofuz
parents:
diff changeset
38 %or = or i64 %a, %b
anatofuz
parents:
diff changeset
39 %r0.val = xor i64 %or, -1
anatofuz
parents:
diff changeset
40 store i64 %r0.val, i64 addrspace(1)* %r0
anatofuz
parents:
diff changeset
41 ret void
anatofuz
parents:
diff changeset
42 }
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 ; GCN-LABEL: {{^}}scalar_nor_i64_mul_use
anatofuz
parents:
diff changeset
45 ; GCN-NOT: s_nor_b64
anatofuz
parents:
diff changeset
46 ; GCN: s_or_b64
anatofuz
parents:
diff changeset
47 ; GCN: s_not_b64
anatofuz
parents:
diff changeset
48 ; GCN: s_add_u32
anatofuz
parents:
diff changeset
49 ; GCN: s_addc_u32
anatofuz
parents:
diff changeset
50 define amdgpu_kernel void @scalar_nor_i64_mul_use(
anatofuz
parents:
diff changeset
51 i64 addrspace(1)* %r0, i64 addrspace(1)* %r1, i64 %a, i64 %b) {
anatofuz
parents:
diff changeset
52 entry:
anatofuz
parents:
diff changeset
53 %or = or i64 %a, %b
anatofuz
parents:
diff changeset
54 %r0.val = xor i64 %or, -1
anatofuz
parents:
diff changeset
55 %r1.val = add i64 %or, %a
anatofuz
parents:
diff changeset
56 store i64 %r0.val, i64 addrspace(1)* %r0
anatofuz
parents:
diff changeset
57 store i64 %r1.val, i64 addrspace(1)* %r1
anatofuz
parents:
diff changeset
58 ret void
anatofuz
parents:
diff changeset
59 }
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 ; GCN-LABEL: {{^}}vector_nor_i32_one_use
anatofuz
parents:
diff changeset
62 ; GCN-NOT: s_nor_b32
anatofuz
parents:
diff changeset
63 ; GCN: v_or_b32
anatofuz
parents:
diff changeset
64 ; GCN: v_not_b32
anatofuz
parents:
diff changeset
65 define i32 @vector_nor_i32_one_use(i32 %a, i32 %b) {
anatofuz
parents:
diff changeset
66 entry:
anatofuz
parents:
diff changeset
67 %or = or i32 %a, %b
anatofuz
parents:
diff changeset
68 %r = xor i32 %or, -1
anatofuz
parents:
diff changeset
69 ret i32 %r
anatofuz
parents:
diff changeset
70 }
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 ; GCN-LABEL: {{^}}vector_nor_i64_one_use
anatofuz
parents:
diff changeset
73 ; GCN-NOT: s_nor_b64
anatofuz
parents:
diff changeset
74 ; GCN: v_or_b32
anatofuz
parents:
diff changeset
75 ; GCN: v_or_b32
anatofuz
parents:
diff changeset
76 ; GCN: v_not_b32
anatofuz
parents:
diff changeset
77 ; GCN: v_not_b32
anatofuz
parents:
diff changeset
78 define i64 @vector_nor_i64_one_use(i64 %a, i64 %b) {
anatofuz
parents:
diff changeset
79 entry:
anatofuz
parents:
diff changeset
80 %or = or i64 %a, %b
anatofuz
parents:
diff changeset
81 %r = xor i64 %or, -1
anatofuz
parents:
diff changeset
82 ret i64 %r
anatofuz
parents:
diff changeset
83 }