Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastián Aedo <saedo@codeweavers.com>2021-11-18 22:08:59 +0300
committerSebastián Aedo <saedo@codeweavers.com>2021-11-26 21:54:56 +0300
commit6d8302ef14d603f5e6171ea17048ad04e18c3a80 (patch)
tree750e74f45782da3187b498b2d3e7909b659e65ae /reference
parent37dfb3f45f4fc47c841f81e618c602f6f3de0f17 (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')
-rw-r--r--reference/opt/shaders-msl/asm/frag/switch-different-sizes.asm.frag9
-rw-r--r--reference/opt/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag9
-rw-r--r--reference/opt/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag9
-rw-r--r--reference/opt/shaders/asm/frag/switch-preserve-sign-extension.asm.frag9
-rw-r--r--reference/shaders-msl/asm/frag/switch-different-sizes.asm.frag78
-rw-r--r--reference/shaders-msl/asm/frag/switch-long-case.asm.msl22.frag27
-rw-r--r--reference/shaders-msl/asm/frag/switch-unsigned-long-case.asm.msl22.frag27
-rw-r--r--reference/shaders/asm/frag/switch-preserve-sign-extension.asm.frag27
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;
+ }
+ }
+}
+