diff options
| author | Yong He <yonghe@outlook.com> | 2024-05-29 18:01:11 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-29 18:01:11 -0700 |
| commit | efdbb954c57b89362e390f955d45f90e59d66878 (patch) | |
| tree | 7b47d6e52d2de666af99f66a2fd3a5dc387ca5cc /tests | |
| parent | 83f176ba8a3bae5533470aed6a90663653f894b8 (diff) | |
Improve compile time performance. (#3857)
* Handle type check cache update on extensions more gracefully.
* Correctness fix.
* Cache implcit cast overload resolution results.
* Fix.
* More optimizations.
* Cache implicit default ctor resolution.
* Disable redundancy removal.
* Fix.
* Fix test.
* Fix.
* Correctness fix.
* Fix.
* Fix,
* Fix test.
* Small tweak.
Diffstat (limited to 'tests')
3 files changed, 36 insertions, 2 deletions
diff --git a/tests/bindings/multiple-parameter-blocks.slang b/tests/bindings/multiple-parameter-blocks.slang index 0f247319d..f7ce33297 100644 --- a/tests/bindings/multiple-parameter-blocks.slang +++ b/tests/bindings/multiple-parameter-blocks.slang @@ -1,9 +1,13 @@ -//TEST:COMPARE_HLSL:-profile ps_5_1 -entry main -parameter-blocks-use-register-spaces +//TEST:SIMPLE(filecheck=CHECK):-target hlsl -profile ps_5_1 -entry main -parameter-blocks-use-register-spaces // Confirm that Slang `ParameterBlock<T>` generates // parameter bindings like we expect. +// CHECK: Texture2D{{.*}} p_t_0 : register(t0); +// CHECK: Texture2D{{.*}} p_ta_0[{{.*}}] : register(t1); +// CHECK: Texture2D{{.*}} p1_t_0 : register(t0, space1); +// CHECK: SamplerState p1_s_0 : register(s0, space1); float4 use(float4 val) { return val; }; float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } diff --git a/tests/language-feature/extensions/extension-method-simple.slang b/tests/language-feature/extensions/extension-method-simple.slang new file mode 100644 index 000000000..d3162c053 --- /dev/null +++ b/tests/language-feature/extensions/extension-method-simple.slang @@ -0,0 +1,30 @@ +// interface-extension.slang + +// Test that an `extension` applied to an interface type works as users expect + +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj + +struct MyType +{ + int v; +} + +extension MyType +{ + int foo() + { + return v; + } +} + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer<int> outputBuffer; + +[numthreads(4, 1, 1)] +void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) +{ + MyType t; + t.v = 1; + // CHECK: 1 + outputBuffer[dispatchThreadID.x] = t.foo(); +} diff --git a/tests/slang-extension/atomic-float-byte-address-buffer-cross.slang b/tests/slang-extension/atomic-float-byte-address-buffer-cross.slang index f7ae69365..c3204a37c 100644 --- a/tests/slang-extension/atomic-float-byte-address-buffer-cross.slang +++ b/tests/slang-extension/atomic-float-byte-address-buffer-cross.slang @@ -33,7 +33,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) int idx = int((tid & 3) ^ (tid >> 2)); const float delta = anotherBuffer[idx & 3]; - + float previousValue = 0; outputBuffer.InterlockedAddF32((idx << 2), 1.0f, previousValue); |
