[Piglit] [PATCH] Add more int literal size limit tests.
Paul Berry
stereotype441 at gmail.com
Wed Oct 26 09:20:30 PDT 2011
On 24 October 2011 13:41, Eric Anholt <eric at anholt.net> wrote:
> This is based on my interpretation of the spec, and matches up with a
> Khronos spec clarification.
> ---
> .../basic-types/int-literal-size-ok-01.frag | 23
> +++++++++++++++++++
> .../basic-types/int-literal-size-ok-02.frag | 23
> +++++++++++++++++++
> .../basic-types/int-literal-size-ok-03.frag | 23
> +++++++++++++++++++
> .../basic-types/int-literal-size-ok-04.frag | 24
> ++++++++++++++++++++
> .../basic-types/int-literal-too-large-03.frag | 21
> +++++++++++++++++
> 5 files changed, 114 insertions(+), 0 deletions(-)
> create mode 100644
> tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-01.frag
> create mode 100644
> tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-02.frag
> create mode 100644
> tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-03.frag
> create mode 100644
> tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-04.frag
> create mode 100644
> tests/spec/glsl-1.30/compiler/basic-types/int-literal-too-large-03.frag
>
> diff --git
> a/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-01.frag
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-01.frag
> new file mode 100644
> index 0000000..0703c70
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-01.frag
> @@ -0,0 +1,23 @@
> +// [config]
> +// expect_result: pass
> +// glsl_version: 1.30
> +// [end config]
> +//
> +// Integer literals that are too large should raise an error.
> +//
> +// From page 22 (28 of PDF) of GLSL 1.30 spec:
> +// It is an error to provide a literal integer whose magnitude is too
> +// large to store in a variable of matching signed or unsigned type.
> +//
> +// Unsigned integers have exactly 32 bits of precision. Signed
> integers
> +// use 32 bits, including a sign bit, in two's complement form.
> +//
> +// However, a 32-bit integer literal (whether it has a 'u' suffix or not)
> +// is valid.
> +
> +#version 130
> +
> +int f() {
> + // Requires 32 bits.
> + return int(0xffffffff);
> +}
> diff --git
> a/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-02.frag
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-02.frag
> new file mode 100644
> index 0000000..5ebe37b
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-02.frag
> @@ -0,0 +1,23 @@
> +// [config]
> +// expect_result: pass
> +// glsl_version: 1.30
> +// [end config]
> +//
> +// Integer literals that are too large should raise an error.
> +//
> +// From page 22 (28 of PDF) of GLSL 1.30 spec:
> +// It is an error to provide a literal integer whose magnitude is too
> +// large to store in a variable of matching signed or unsigned type.
> +//
> +// Unsigned integers have exactly 32 bits of precision. Signed
> integers
> +// use 32 bits, including a sign bit, in two's complement form.
> +//
> +// However, a 32-bit integer literal (whether it has a 'u' suffix or not)
> +// is valid.
> +
> +#version 130
> +
> +uint f() {
> + // Requires 32 bits.
> + return uint(0xffffffff);
> +}
> diff --git
> a/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-03.frag
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-03.frag
> new file mode 100644
> index 0000000..c5ab82f
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-03.frag
> @@ -0,0 +1,23 @@
> +// [config]
> +// expect_result: pass
> +// glsl_version: 1.30
> +// [end config]
> +//
> +// Integer literals that are too large should raise an error.
> +//
> +// From page 22 (28 of PDF) of GLSL 1.30 spec:
> +// It is an error to provide a literal integer whose magnitude is too
> +// large to store in a variable of matching signed or unsigned type.
> +//
> +// Unsigned integers have exactly 32 bits of precision. Signed
> integers
> +// use 32 bits, including a sign bit, in two's complement form.
> +//
> +// However, a 32-bit integer literal (whether it has a 'u' suffix or not)
> +// is valid.
> +
> +#version 130
> +
> +int f() {
> + // Requires 32 bits.
> + return 3000000000;
> +}
> diff --git
> a/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-04.frag
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-04.frag
> new file mode 100644
> index 0000000..a1208db
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-size-ok-04.frag
> @@ -0,0 +1,24 @@
> +// [config]
> +// expect_result: pass
> +// glsl_version: 1.30
> +// [end config]
> +//
> +// Integer literals that are too large should raise an error.
> +//
> +// From page 22 (28 of PDF) of GLSL 1.30 spec:
> +// It is an error to provide a literal integer whose magnitude is too
> +// large to store in a variable of matching signed or unsigned type.
> +//
> +// Unsigned integers have exactly 32 bits of precision. Signed
> integers
> +// use 32 bits, including a sign bit, in two's complement form.
> +//
> +// However, a 32-bit integer literal (whether it has a 'u' suffix or not)
> +// is valid. Warnings generation for large signed decimals has to be
> careful,
> +// because -2147483648 is parsed as -(2147483648).
> +
> +#version 130
> +
> +int f() {
> + // Requires 32 bits.
> + return -2147483648;
> +}
> diff --git
> a/tests/spec/glsl-1.30/compiler/basic-types/int-literal-too-large-03.frag
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-too-large-03.frag
> new file mode 100644
> index 0000000..5381205
> --- /dev/null
> +++
> b/tests/spec/glsl-1.30/compiler/basic-types/int-literal-too-large-03.frag
> @@ -0,0 +1,21 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.30
> +// [end config]
> +//
> +// Integer literals that are too large should raise an error.
> +//
> +// From page 22 (28 of PDF) of GLSL 1.30 spec:
> +// It is an error to provide a literal integer whose magnitude is too
> +// large to store in a variable of matching signed or unsigned type.
> +//
> +// Unsigned integers have exactly 32 bits of precision. Signed
> integers
> +// use 32 bits, including a sign bit, in two's complement form.
> +
> +
> +#version 130
> +
> +int f() {
> + // Requires 33 bits.
> + return 5000000000;
> +}
> --
> 1.7.7
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
>
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20111026/29215366/attachment.html>
More information about the Piglit
mailing list