From 923ef7af304f2f118b0aee153bd50e054ebc50c9 Mon Sep 17 00:00:00 2001 From: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:07:06 -0400 Subject: bit_cast & reinterpret warning if src->dst type not equally sized. (#3988) * bit_cast & reinterpret warning if src->dst type not equally sized. bit_cast & reinterpret warning if src->dst type not equally sized. --------- Co-authored-by: Yong He --- .../language-feature/bit-cast/narrowing-bit-cast-error.slang | 12 ++++++++++++ tests/language-feature/bit-cast/struct-bit-cast.slang | 6 +----- .../language-feature/bit-cast/widening-bit-cast-error.slang | 12 ++++++++++++ .../reinterpret/narrowing-reinterpret-warning.slang | 12 ++++++++++++ .../reinterpret/widening-reinterpret-warning.slang | 12 ++++++++++++ 5 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 tests/language-feature/bit-cast/narrowing-bit-cast-error.slang create mode 100644 tests/language-feature/bit-cast/widening-bit-cast-error.slang create mode 100644 tests/language-feature/reinterpret/narrowing-reinterpret-warning.slang create mode 100644 tests/language-feature/reinterpret/widening-reinterpret-warning.slang (limited to 'tests') diff --git a/tests/language-feature/bit-cast/narrowing-bit-cast-error.slang b/tests/language-feature/bit-cast/narrowing-bit-cast-error.slang new file mode 100644 index 000000000..0591144a9 --- /dev/null +++ b/tests/language-feature/bit-cast/narrowing-bit-cast-error.slang @@ -0,0 +1,12 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -stage compute -entry computeMain + +uniform StructuredBuffer in; +uniform RWStructuredBuffer out; + +//CHECK: error 41202{{.*}}8{{.*}}4 + +[numthreads(4, 1, 1)] +[shader("compute")] +void computeMain() { + out[0] = bit_cast(in[0]); +} \ No newline at end of file diff --git a/tests/language-feature/bit-cast/struct-bit-cast.slang b/tests/language-feature/bit-cast/struct-bit-cast.slang index 5398f36c9..630efb1e0 100644 --- a/tests/language-feature/bit-cast/struct-bit-cast.slang +++ b/tests/language-feature/bit-cast/struct-bit-cast.slang @@ -47,11 +47,7 @@ struct Larger int test1() { - Smaller s = {1}; - int v0 = bit_cast(s).y; // 0. - Larger l = {1, 2}; - int v1 = bit_cast(l).s; // 1. - return v0 + v1; + return 1; } diff --git a/tests/language-feature/bit-cast/widening-bit-cast-error.slang b/tests/language-feature/bit-cast/widening-bit-cast-error.slang new file mode 100644 index 000000000..29dc5a4e1 --- /dev/null +++ b/tests/language-feature/bit-cast/widening-bit-cast-error.slang @@ -0,0 +1,12 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -stage compute -entry computeMain + +uniform StructuredBuffer in; +uniform RWStructuredBuffer out; + +//CHECK: error 41202{{.*}}4{{.*}}8 + +[numthreads(4, 1, 1)] +[shader("compute")] +void computeMain() { + out[0] = bit_cast(in[0]); +} \ No newline at end of file diff --git a/tests/language-feature/reinterpret/narrowing-reinterpret-warning.slang b/tests/language-feature/reinterpret/narrowing-reinterpret-warning.slang new file mode 100644 index 000000000..98ed71165 --- /dev/null +++ b/tests/language-feature/reinterpret/narrowing-reinterpret-warning.slang @@ -0,0 +1,12 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -stage compute -entry computeMain + +uniform StructuredBuffer in; +uniform RWStructuredBuffer out; + +// CHECK: warning 41203{{.*}}8{{.*}}4 + +[numthreads(4, 1, 1)] +[shader("compute")] +void computeMain() { + out[0] = reinterpret(in[0]); +} \ No newline at end of file diff --git a/tests/language-feature/reinterpret/widening-reinterpret-warning.slang b/tests/language-feature/reinterpret/widening-reinterpret-warning.slang new file mode 100644 index 000000000..2f643cc3f --- /dev/null +++ b/tests/language-feature/reinterpret/widening-reinterpret-warning.slang @@ -0,0 +1,12 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -stage compute -entry computeMain + +uniform StructuredBuffer in; +uniform RWStructuredBuffer out; + +//CHECK: warning 41203{{.*}}4{{.*}}8 + +[numthreads(4, 1, 1)] +[shader("compute")] +void computeMain() { + out[0] = reinterpret(in[0]); +} \ No newline at end of file -- cgit v1.2.3