1 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_30 -mattr=+ptx60 | FileCheck %s 2 3 declare i1 @llvm.nvvm.vote.all(i1) 4 ; CHECK-LABEL: .func{{.*}}vote.all 5 define i1 @vote.all(i1 %pred) { 6 ; CHECK: vote.all.pred 7 %val = call i1 @llvm.nvvm.vote.all(i1 %pred) 8 ret i1 %val 9 } 10 11 declare i1 @llvm.nvvm.vote.any(i1) 12 ; CHECK-LABEL: .func{{.*}}vote.any 13 define i1 @vote.any(i1 %pred) { 14 ; CHECK: vote.any.pred 15 %val = call i1 @llvm.nvvm.vote.any(i1 %pred) 16 ret i1 %val 17 } 18 19 declare i1 @llvm.nvvm.vote.uni(i1) 20 ; CHECK-LABEL: .func{{.*}}vote.uni 21 define i1 @vote.uni(i1 %pred) { 22 ; CHECK: vote.uni.pred 23 %val = call i1 @llvm.nvvm.vote.uni(i1 %pred) 24 ret i1 %val 25 } 26 27 declare i32 @llvm.nvvm.vote.ballot(i1) 28 ; CHECK-LABEL: .func{{.*}}vote.ballot 29 define i32 @vote.ballot(i1 %pred) { 30 ; CHECK: vote.ballot.b32 31 %val = call i32 @llvm.nvvm.vote.ballot(i1 %pred) 32 ret i32 %val 33 } 34 35 declare i1 @llvm.nvvm.vote.all.sync(i32, i1) 36 ; CHECK-LABEL: .func{{.*}}vote.sync.all 37 define i1 @vote.sync.all(i32 %mask, i1 %pred) { 38 ; CHECK: vote.sync.all.pred 39 %val = call i1 @llvm.nvvm.vote.all.sync(i32 %mask, i1 %pred) 40 ret i1 %val 41 } 42 43 declare i1 @llvm.nvvm.vote.any.sync(i32, i1) 44 ; CHECK-LABEL: .func{{.*}}vote.sync.any 45 define i1 @vote.sync.any(i32 %mask, i1 %pred) { 46 ; CHECK: vote.sync.any.pred 47 %val = call i1 @llvm.nvvm.vote.any.sync(i32 %mask, i1 %pred) 48 ret i1 %val 49 } 50 51 declare i1 @llvm.nvvm.vote.uni.sync(i32, i1) 52 ; CHECK-LABEL: .func{{.*}}vote.sync.uni 53 define i1 @vote.sync.uni(i32 %mask, i1 %pred) { 54 ; CHECK: vote.sync.uni.pred 55 %val = call i1 @llvm.nvvm.vote.uni.sync(i32 %mask, i1 %pred) 56 ret i1 %val 57 } 58 59 declare i32 @llvm.nvvm.vote.ballot.sync(i32, i1) 60 ; CHECK-LABEL: .func{{.*}}vote.sync.ballot 61 define i32 @vote.sync.ballot(i32 %mask, i1 %pred) { 62 ; CHECK: vote.sync.ballot.b32 63 %val = call i32 @llvm.nvvm.vote.ballot.sync(i32 %mask, i1 %pred) 64 ret i32 %val 65 } 66