llvm/clang/test/CodeGenHLSL/wavesize.hlsl

// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
// RUN:   dxil-pc-shadermodel6.6-compute %s -DSM66 -hlsl-entry foo \
// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s

// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
// RUN:   dxil-pc-shadermodel6.8-compute %s -DNO_PREFERR -hlsl-entry foo \
// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s --check-prefix=NO_PREFERR

// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
// RUN:   dxil-pc-shadermodel6.8-compute %s -hlsl-entry foo \
// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s --check-prefix=CHECK-SM68


// Make sure wavesize attribute get correct value for sm66 and sm68.
// CHECK:define void @foo()
// CHECK:"hlsl.wavesize"="8,0,0"

// NO_PREFERR:define void @foo()
// NO_PREFERR:"hlsl.wavesize"="8,128,0"

// CHECK-SM68:define void @foo()
// CHECK-SM68:"hlsl.wavesize"="8,128,64"

[numthreads(16,8,1)]
#ifdef SM66
[WaveSize(8)]
#elif NO_PREFERR
[WaveSize(8, 128)]
#else
[WaveSize(8, 128, 64)]
#endif
void foo() {

}