| // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.8-library -x hlsl %s -verify |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 1}} |
| [WaveSize(1)] |
| void e0() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 2}} |
| [WaveSize(4, 2)] |
| void e1() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 7}} |
| [WaveSize(4, 8, 7)] |
| void e2() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute argument is invalid: min must not be greater than max}} |
| [WaveSize(16, 8)] |
| void e3() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 16 and 128 inclusive; provided argument was 8}} |
| [WaveSize(16, 128, 8)] |
| void e4() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 8 and 16 inclusive; provided argument was 32}} |
| [WaveSize(8, 16, 32)] |
| void e5() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 0}} |
| [WaveSize(4, 0)] |
| void e6() { |
| } |
| |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 0}} |
| [WaveSize(4, 4, 0)] |
| void e7() { |
| } |
| |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute minimum and maximum arguments are equal}} |
| [WaveSize(16, 16)] |
| void e8() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 0}} |
| [WaveSize(0)] |
| void e9() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute requires an integer argument which is a constant power of two between 4 and 128 inclusive; provided argument was 4294967292}} |
| [WaveSize(-4)] |
| void e10() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute takes no more than 3 arguments}} |
| [WaveSize(16, 128, 64, 64)] |
| void e11() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute takes at least 1 argument}} |
| [WaveSize()] |
| void e12() { |
| } |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute takes at least 1 argument}} |
| [WaveSize] |
| void e13() { |
| } |
| |
| |
| [shader("compute")] |
| [numthreads(1,1,1)] |
| // expected-error@+1 {{'WaveSize' attribute parameters do not match the previous declaration}} |
| [WaveSize(8)] |
| // expected-note@+1 {{conflicting attribute is here}} |
| [WaveSize(16)] |
| void e14() { |
| } |