1// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-feature +wavefrontsize64 -emit-llvm -o - %s | FileCheck -enable-var-scope %s 2// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-cpu gfx900 -emit-llvm -o - %s | FileCheck -enable-var-scope %s 3// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-cpu gfx900 -target-feature +wavefrontsize64 -emit-llvm -o - %s | FileCheck -enable-var-scope %s 4// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-cpu gfx1010 -target-feature +wavefrontsize64 -emit-llvm -o - %s | FileCheck -enable-var-scope %s 5// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-cpu gfx1100 -target-feature +wavefrontsize64 -emit-llvm -o - %s | FileCheck -enable-var-scope %s 6 7typedef unsigned long ulong; 8 9// CHECK-LABEL: @test_ballot_wave64( 10// CHECK: call i64 @llvm.amdgcn.ballot.i64(i1 %{{.+}}) 11void test_ballot_wave64(global ulong* out, int a, int b) 12{ 13 *out = __builtin_amdgcn_ballot_w64(a == b); 14} 15 16// CHECK: declare i64 @llvm.amdgcn.ballot.i64(i1) #[[$NOUNWIND_READONLY:[0-9]+]] 17 18// CHECK-LABEL: @test_ballot_wave64_target_attr( 19// CHECK: call i64 @llvm.amdgcn.ballot.i64(i1 %{{.+}}) 20__attribute__((target("wavefrontsize64"))) 21void test_ballot_wave64_target_attr(global ulong* out, int a, int b) 22{ 23 *out = __builtin_amdgcn_ballot_w64(a == b); 24} 25 26// CHECK-LABEL: @test_read_exec( 27// CHECK: call i64 @llvm.amdgcn.ballot.i64(i1 true) 28void test_read_exec(global ulong* out) { 29 *out = __builtin_amdgcn_read_exec(); 30} 31 32// CHECK-LABEL: @test_read_exec_lo( 33// CHECK: call i32 @llvm.amdgcn.ballot.i32(i1 true) 34void test_read_exec_lo(global ulong* out) { 35 *out = __builtin_amdgcn_read_exec_lo(); 36} 37 38// CHECK: declare i32 @llvm.amdgcn.ballot.i32(i1) #[[$NOUNWIND_READONLY:[0-9]+]] 39 40// CHECK-LABEL: @test_read_exec_hi( 41// CHECK: call i64 @llvm.amdgcn.ballot.i64(i1 true) 42// CHECK: lshr i64 [[A:%.*]], 32 43void test_read_exec_hi(global ulong* out) { 44 *out = __builtin_amdgcn_read_exec_hi(); 45} 46 47#if defined(__AMDGCN_WAVEFRONT_SIZE__) && __AMDGCN_WAVEFRONT_SIZE__ != 64 48#error Wrong wavesize detected 49#endif 50