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