xref: /llvm-project/llvm/test/CodeGen/NVPTX/redux-sync.ll (revision b279f6b098d3849f7f1c1f539b108307d5f8ae2d)
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_80 -mattr=+ptx70 | FileCheck %s
2; RUN: %if ptxas-11.0 %{ llc < %s -mtriple=nvptx64 -mcpu=sm_80 -mattr=+ptx70 | %ptxas-verify -arch=sm_80 %}
3
4declare i32 @llvm.nvvm.redux.sync.umin(i32, i32)
5; CHECK-LABEL: .func{{.*}}redux_sync_min_u32
6define i32 @redux_sync_min_u32(i32 %src, i32 %mask) {
7  ; CHECK: redux.sync.min.u32
8  %val = call i32 @llvm.nvvm.redux.sync.umin(i32 %src, i32 %mask)
9  ret i32 %val
10}
11
12declare i32 @llvm.nvvm.redux.sync.umax(i32, i32)
13; CHECK-LABEL: .func{{.*}}redux_sync_max_u32
14define i32 @redux_sync_max_u32(i32 %src, i32 %mask) {
15  ; CHECK: redux.sync.max.u32
16  %val = call i32 @llvm.nvvm.redux.sync.umax(i32 %src, i32 %mask)
17  ret i32 %val
18}
19
20declare i32 @llvm.nvvm.redux.sync.add(i32, i32)
21; CHECK-LABEL: .func{{.*}}redux_sync_add_s32
22define i32 @redux_sync_add_s32(i32 %src, i32 %mask) {
23  ; CHECK: redux.sync.add.s32
24  %val = call i32 @llvm.nvvm.redux.sync.add(i32 %src, i32 %mask)
25  ret i32 %val
26}
27
28declare i32 @llvm.nvvm.redux.sync.min(i32, i32)
29; CHECK-LABEL: .func{{.*}}redux_sync_min_s32
30define i32 @redux_sync_min_s32(i32 %src, i32 %mask) {
31  ; CHECK: redux.sync.min.s32
32  %val = call i32 @llvm.nvvm.redux.sync.min(i32 %src, i32 %mask)
33  ret i32 %val
34}
35
36declare i32 @llvm.nvvm.redux.sync.max(i32, i32)
37; CHECK-LABEL: .func{{.*}}redux_sync_max_s32
38define i32 @redux_sync_max_s32(i32 %src, i32 %mask) {
39  ; CHECK: redux.sync.max.s32
40  %val = call i32 @llvm.nvvm.redux.sync.max(i32 %src, i32 %mask)
41  ret i32 %val
42}
43
44declare i32 @llvm.nvvm.redux.sync.and(i32, i32)
45; CHECK-LABEL: .func{{.*}}redux_sync_and_b32
46define i32 @redux_sync_and_b32(i32 %src, i32 %mask) {
47  ; CHECK: redux.sync.and.b32
48  %val = call i32 @llvm.nvvm.redux.sync.and(i32 %src, i32 %mask)
49  ret i32 %val
50}
51
52declare i32 @llvm.nvvm.redux.sync.xor(i32, i32)
53; CHECK-LABEL: .func{{.*}}redux_sync_xor_b32
54define i32 @redux_sync_xor_b32(i32 %src, i32 %mask) {
55  ; CHECK: redux.sync.xor.b32
56  %val = call i32 @llvm.nvvm.redux.sync.xor(i32 %src, i32 %mask)
57  ret i32 %val
58}
59
60declare i32 @llvm.nvvm.redux.sync.or(i32, i32)
61; CHECK-LABEL: .func{{.*}}redux_sync_or_b32
62define i32 @redux_sync_or_b32(i32 %src, i32 %mask) {
63  ; CHECK: redux.sync.or.b32
64  %val = call i32 @llvm.nvvm.redux.sync.or(i32 %src, i32 %mask)
65  ret i32 %val
66}
67