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
7 typedef unsigned long ulong
;
9 // CHECK-LABEL
: @test_ballot_wave64
(
10 // CHECK
: call i64
@llvm.amdgcn.ballot.i64
(i1 %
{{.
+}})
11 void test_ballot_wave64
(global ulong
* out
, int a
, int b
)
13 *out
= __builtin_amdgcn_ballot_w64
(a == b
);
16 // CHECK
: declare i64
@llvm.amdgcn.ballot.i64
(i1) #[[$NOUNWIND_READONLY
:[0-
9]+]]
18 // CHECK-LABEL
: @test_ballot_wave64_target_attr
(
19 // CHECK
: call i64
@llvm.amdgcn.ballot.i64
(i1 %
{{.
+}})
20 __attribute__
((target("wavefrontsize64")))
21 void test_ballot_wave64_target_attr
(global ulong
* out
, int a
, int b
)
23 *out
= __builtin_amdgcn_ballot_w64
(a == b
);
26 // CHECK-LABEL
: @test_read_exec
(
27 // CHECK
: call i64
@llvm.amdgcn.ballot.i64
(i1 true
)
28 void test_read_exec
(global ulong
* out
) {
29 *out
= __builtin_amdgcn_read_exec
();
32 // CHECK-LABEL
: @test_read_exec_lo
(
33 // CHECK
: call i32
@llvm.amdgcn.ballot.i32
(i1 true
)
34 void test_read_exec_lo
(global ulong
* out
) {
35 *out
= __builtin_amdgcn_read_exec_lo
();
38 // CHECK
: declare i32
@llvm.amdgcn.ballot.i32
(i1) #[[$NOUNWIND_READONLY
:[0-
9]+]]
40 // CHECK-LABEL
: @test_read_exec_hi
(
41 // CHECK
: call i64
@llvm.amdgcn.ballot.i64
(i1 true
)
42 // CHECK
: lshr i64
[[A
:%.
*]], 32
43 void test_read_exec_hi
(global ulong
* out
) {
44 *out
= __builtin_amdgcn_read_exec_hi
();
47 #if defined
(__AMDGCN_WAVEFRONT_SIZE__) && __AMDGCN_WAVEFRONT_SIZE__
!= 64
48 #error Wrong wavesize detected