diff options
author | Sebastián Aedo <saedo@codeweavers.com> | 2021-11-18 22:08:59 +0300 |
---|---|---|
committer | Sebastián Aedo <saedo@codeweavers.com> | 2021-11-26 21:54:56 +0300 |
commit | 6d8302ef14d603f5e6171ea17048ad04e18c3a80 (patch) | |
tree | 750e74f45782da3187b498b2d3e7909b659e65ae /reference | |
parent | 37dfb3f45f4fc47c841f81e618c602f6f3de0f17 (diff) |
MSL: Add 64 bit switch support
Add 64 bit switch support for MSL version 2.2.
* Also fixes a wrong endianness conversion.
Signed-off-by: Sebastián Aedo <saedo@codeweavers.com>
Diffstat (limited to 'reference')
8 files changed, 195 insertions, 0 deletions
diff --git a/reference/opt/shaders-msl/asm/frag/switch-different-sizes.asm.frag b/reference/opt/shaders-msl/asm/frag/switch-different-sizes.asm.frag new file mode 100644 index 00000000..92ac1d9f --- /dev/null +++ b/reference/opt/shaders-msl/asm/frag/switch-different-sizes.asm.frag @@ -0,0 +1,9 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ +} + diff --git a/reference/opt/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag b/reference/opt/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag new file mode 100644 index 00000000..92ac1d9f --- /dev/null +++ b/reference/opt/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag @@ -0,0 +1,9 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ +} + diff --git a/reference/opt/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag b/reference/opt/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag new file mode 100644 index 00000000..92ac1d9f --- /dev/null +++ b/reference/opt/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag @@ -0,0 +1,9 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ +} + diff --git a/reference/opt/shaders/asm/frag/switch-preserve-sign-extension.asm.frag b/reference/opt/shaders/asm/frag/switch-preserve-sign-extension.asm.frag new file mode 100644 index 00000000..41b98085 --- /dev/null +++ b/reference/opt/shaders/asm/frag/switch-preserve-sign-extension.asm.frag @@ -0,0 +1,9 @@ +#version 330 +#ifdef GL_ARB_shading_language_420pack +#extension GL_ARB_shading_language_420pack : require +#endif + +void main() +{ +} + diff --git a/reference/shaders-msl/asm/frag/switch-different-sizes.asm.frag b/reference/shaders-msl/asm/frag/switch-different-sizes.asm.frag new file mode 100644 index 00000000..1ee9eebf --- /dev/null +++ b/reference/shaders-msl/asm/frag/switch-different-sizes.asm.frag @@ -0,0 +1,78 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ + int sw0 = 42; + int result = 0; + switch (sw0) + { + case -42: + { + result = 42; + } + case 420: + { + result = 420; + } + case -1234: + { + result = 420; + break; + } + } + char sw1 = char(10); + switch (sw1) + { + case -42: + { + result = 42; + } + case 42: + { + result = 420; + } + case -123: + { + result = 512; + break; + } + } + short sw2 = short(10); + switch (sw2) + { + case -42: + { + result = 42; + } + case 42: + { + result = 420; + } + case -1234: + { + result = 512; + break; + } + } + short sw3 = short(10); + switch (sw3) + { + case -42: + { + result = 42; + } + case 42: + { + result = 420; + } + case -1234: + { + result = 512; + break; + } + } +} + diff --git a/reference/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag b/reference/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag new file mode 100644 index 00000000..5ec002e7 --- /dev/null +++ b/reference/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag @@ -0,0 +1,27 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ + long sw = 42l; + int result = 0; + switch (sw) + { + case -42l: + { + result = 42; + } + case 420l: + { + result = 420; + } + case -34359738368l: + { + result = 420; + break; + } + } +} + diff --git a/reference/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag b/reference/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag new file mode 100644 index 00000000..2bf44c20 --- /dev/null +++ b/reference/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag @@ -0,0 +1,27 @@ +#include <metal_stdlib> +#include <simd/simd.h> + +using namespace metal; + +fragment void main0() +{ + ulong sw = 42ul; + int result = 0; + switch (sw) + { + case 42ul: + { + result = 42; + } + case 420ul: + { + result = 420; + } + case 343597383680ul: + { + result = 420; + break; + } + } +} + diff --git a/reference/shaders/asm/frag/switch-preserve-sign-extension.asm.frag b/reference/shaders/asm/frag/switch-preserve-sign-extension.asm.frag new file mode 100644 index 00000000..08921e1e --- /dev/null +++ b/reference/shaders/asm/frag/switch-preserve-sign-extension.asm.frag @@ -0,0 +1,27 @@ +#version 330 +#ifdef GL_ARB_shading_language_420pack +#extension GL_ARB_shading_language_420pack : require +#endif + +void main() +{ + int sw = 42; + int result = 0; + switch (sw) + { + case -42: + { + result = 42; + } + case 420: + { + result = 420; + } + case -1234: + { + result = 420; + break; + } + } +} + |