|
| 1 | +// RUN: %dxc -Tlib_6_7 -verify %s |
| 2 | + |
| 3 | +// Test translatable barriers in compute shader model. |
| 4 | +// These are currently not translated, so we expect errors for now. |
| 5 | + |
| 6 | +struct RECORD { uint a; }; |
| 7 | +RWBuffer<uint> buf0; |
| 8 | +static uint i = 7; |
| 9 | + |
| 10 | +// Barriers not requiring visible group, compatible with any shader stage. |
| 11 | +// expected-note@+4 {{entry function defined here}} |
| 12 | +// expected-note@+3 {{entry function defined here}} |
| 13 | +// expected-note@+2 {{entry function defined here}} |
| 14 | +[noinline] export |
| 15 | +void DeviceBarriers() { |
| 16 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 17 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'DeviceBarriers' requires shader model 6.8 or greater}} |
| 18 | + Barrier(ALL_MEMORY, DEVICE_SCOPE); |
| 19 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 20 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'DeviceBarriers' requires shader model 6.8 or greater}} |
| 21 | + Barrier(ALL_MEMORY, 2 + 2); |
| 22 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 23 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'DeviceBarriers' requires shader model 6.8 or greater}} |
| 24 | + Barrier(UAV_MEMORY, DEVICE_SCOPE); |
| 25 | +} |
| 26 | + |
| 27 | +// Barriers requiring visible group. |
| 28 | +// expected-note@+13 {{entry function defined here}} |
| 29 | +// expected-note@+12 {{entry function defined here}} |
| 30 | +// expected-note@+11 {{entry function defined here}} |
| 31 | +// expected-note@+10 {{entry function defined here}} |
| 32 | +// expected-note@+9 {{entry function defined here}} |
| 33 | +// expected-note@+8 {{entry function defined here}} |
| 34 | +// expected-note@+7 {{entry function defined here}} |
| 35 | +// expected-note@+6 {{entry function defined here}} |
| 36 | +// expected-note@+5 {{entry function defined here}} |
| 37 | +// expected-note@+4 {{entry function defined here}} |
| 38 | +// expected-note@+3 {{entry function defined here}} |
| 39 | +// expected-note@+2 {{entry function defined here}} |
| 40 | +[noinline] export |
| 41 | +void GroupBarriers() { |
| 42 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 43 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 44 | + Barrier(0, GROUP_SYNC); |
| 45 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 46 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 47 | + Barrier(ALL_MEMORY, GROUP_SCOPE); |
| 48 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 49 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 50 | + Barrier(ALL_MEMORY, GROUP_SCOPE | GROUP_SYNC); |
| 51 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 52 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 53 | + Barrier(ALL_MEMORY, DEVICE_SCOPE | GROUP_SYNC); |
| 54 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 55 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 56 | + Barrier(ALL_MEMORY, DEVICE_SCOPE | GROUP_SCOPE | GROUP_SYNC); |
| 57 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 58 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 59 | + Barrier(ALL_MEMORY, 1 + 2 + 4); |
| 60 | + |
| 61 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 62 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 63 | + Barrier(UAV_MEMORY, GROUP_SCOPE); |
| 64 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 65 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 66 | + Barrier(UAV_MEMORY, GROUP_SCOPE | GROUP_SYNC); |
| 67 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 68 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 69 | + Barrier(UAV_MEMORY, DEVICE_SCOPE | GROUP_SYNC); |
| 70 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 71 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 72 | + Barrier(UAV_MEMORY, DEVICE_SCOPE | GROUP_SCOPE | GROUP_SYNC); |
| 73 | + |
| 74 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 75 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 76 | + Barrier(GROUP_SHARED_MEMORY, GROUP_SCOPE); |
| 77 | + // expected-error@+2 {{intrinsic Barrier potentially used by 'main' requires shader model 6.8 or greater}} |
| 78 | + // expected-error@+1 {{intrinsic Barrier potentially used by 'GroupBarriers' requires shader model 6.8 or greater}} |
| 79 | + Barrier(GROUP_SHARED_MEMORY, GROUP_SCOPE | GROUP_SYNC); |
| 80 | +} |
| 81 | + |
| 82 | +// expected-note@+17 {{entry function defined here}} |
| 83 | +// expected-note@+16 {{entry function defined here}} |
| 84 | +// expected-note@+15 {{entry function defined here}} |
| 85 | +// expected-note@+14 {{entry function defined here}} |
| 86 | +// expected-note@+13 {{entry function defined here}} |
| 87 | +// expected-note@+12 {{entry function defined here}} |
| 88 | +// expected-note@+11 {{entry function defined here}} |
| 89 | +// expected-note@+10 {{entry function defined here}} |
| 90 | +// expected-note@+9 {{entry function defined here}} |
| 91 | +// expected-note@+8 {{entry function defined here}} |
| 92 | +// expected-note@+7 {{entry function defined here}} |
| 93 | +// expected-note@+6 {{entry function defined here}} |
| 94 | +// expected-note@+5 {{entry function defined here}} |
| 95 | +// expected-note@+4 {{entry function defined here}} |
| 96 | +// expected-note@+3 {{entry function defined here}} |
| 97 | +[Shader("compute")] |
| 98 | +[numthreads(1, 1, 1)] |
| 99 | +void main() { |
| 100 | + DeviceBarriers(); |
| 101 | + GroupBarriers(); |
| 102 | +} |
0 commit comments