Add vec4 extension.
authorMichal Krol <mjkrol@gmail.org>
Wed, 2 Aug 2006 14:44:46 +0000 (14:44 +0000)
committerMichal Krol <mjkrol@gmail.org>
Wed, 2 Aug 2006 14:44:46 +0000 (14:44 +0000)
src/mesa/shader/slang/library/gc_to_bin.c
src/mesa/shader/slang/library/slang_builtin_vec4.gc [new file with mode: 0755]
src/mesa/shader/slang/library/slang_builtin_vec4_gc.h [new file with mode: 0644]
src/mesa/shader/slang/library/slang_common_builtin_gc.h
src/mesa/shader/slang/library/slang_core_gc.h
src/mesa/shader/slang/library/slang_fragment_builtin_gc.h
src/mesa/shader/slang/library/slang_vertex_builtin_gc.h

index 749c57a032f155c06f7f6b66d6e5574a19974292..69895d84bfd8e6cb38596702dcdebaf842eb17a1 100755 (executable)
@@ -32,7 +32,7 @@ static void gc_to_bin (grammar id, const char *in, const char *out)
 
        f = fopen (out, "w");
        fprintf (f, "\n");
-       fprintf (f, "/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\n");
+       fprintf (f, "/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */\n");
        fprintf (f, "/* %s */\n", in);
        fprintf (f, "\n");
        for (i = 0; i < size; i++)
@@ -75,6 +75,7 @@ int main ()
        gc_to_bin (id, "slang_core.gc", "slang_core_gc.h");
        gc_to_bin (id, "slang_common_builtin.gc", "slang_common_builtin_gc.h");
        gc_to_bin (id, "slang_fragment_builtin.gc", "slang_fragment_builtin_gc.h");
+   gc_to_bin (id, "slang_builtin_vec4.gc", "slang_builtin_vec4_gc.h");
 
        grammar_set_reg8 (id, (const byte *) "shader_type", 2);
        gc_to_bin (id, "slang_vertex_builtin.gc", "slang_vertex_builtin_gc.h");
diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4.gc b/src/mesa/shader/slang/library/slang_builtin_vec4.gc
new file mode 100755 (executable)
index 0000000..d549c01
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5
+ *
+ * Copyright (C) 2006  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+//
+// This file overrides most of the standard built-in functions that operate on vec4 data type.
+// This file also overrides most commonly used functions that do not neccessarily operate
+// on vec4 data type, like dot(vec3,vec3). Those are adapted to vec4 instructions and are believed
+// to execute faster.
+// This file replaces parts of the core.gc and common.gc, so it must be included somewhere after
+// the common.gc file.
+// 
+// Assembly instructions required:
+//   float_to_vec4
+//   vec4_add
+//   vec4_subtract
+//   vec4_multiply
+//   vec4_divide
+//   vec4_negate
+//   vec4_dot
+//
+
+
+vec4 __constructor (const float f) {
+    vec4 v;
+    __asm float_to_vec4 v, f;
+    return v;
+}
+
+
+void __operator += (inout vec4 v, const vec4 u) {
+    __asm vec4_add v, u;
+}
+
+void __operator -= (inout vec4 v, const vec4 u) {
+    __asm vec4_subtract v, u;
+}
+
+void __operator *= (inout vec4 v, const vec4 u) {
+    __asm vec4_multiply v, u;
+}
+
+void __operator /= (inout vec4 v, const vec4 u) {
+    __asm vec4_divide v, u;
+}
+
+
+void __operator += (inout vec4 v, const float a) {
+    vec4 u;
+    __asm float_to_vec4 u, a;
+    __asm vec4_add      v, u;
+}
+
+void __operator -= (inout vec4 v, const float a) {
+    vec4 u;
+    __asm float_to_vec4 u, a;
+    __asm vec4_subtract v, u;
+}
+
+void __operator *= (inout vec4 v, const float a) {
+    vec4 u;
+    __asm float_to_vec4 u, a;
+    __asm vec4_multiply v, u;
+}
+
+void __operator /= (inout vec4 v, const float a) {
+    vec4 u;
+    __asm float_to_vec4 u, a;
+    __asm vec4_divide   v, u;
+}
+
+
+vec4 __operator + (vec4 v, const vec4 u) {
+    __asm vec4_add v, u;
+    return v;
+}
+
+vec4 __operator - (vec4 v, const vec4 u) {
+    __asm vec4_subtract v, u;
+    return v;
+}
+
+vec4 __operator * (vec4 v, const vec4 u) {
+    __asm vec4_multiply v, u;
+    return v;
+}
+
+vec4 __operator / (vec4 v, const vec4 u) {
+    __asm vec4_divide v, u;
+    return v;
+}
+
+
+vec4 __operator + (const float a, const vec4 u) {
+    vec4 v;
+    __asm float_to_vec4 v, a;
+    __asm vec4_add      v, u;
+    return v;
+}
+
+vec4 __operator + (const vec4 v, const float b) {
+    vec4 u;
+    __asm float_to_vec4 u, b;
+    __asm vec4_add      u, v;
+    return u;
+}
+
+vec4 __operator - (const float a, const vec4 u) {
+    vec4 v;
+    __asm float_to_vec4 v, a;
+    __asm vec4_subtract v, u;
+    return v;
+}
+
+vec4 __operator - (vec4 v, const float b) {
+    vec4 u;
+    __asm float_to_vec4 u, b;
+    __asm vec4_subtract v, u;
+    return v;
+}
+
+vec4 __operator * (const float a, const vec4 u) {
+    vec4 v;
+    __asm float_to_vec4 v, a;
+    __asm vec4_multiply v, u;
+    return v;
+}
+
+vec4 __operator * (const vec4 v, const float b) {
+    vec4 u;
+    __asm float_to_vec4 u, b;
+    __asm vec4_multiply u, v;
+    return u;
+}
+
+vec4 __operator / (const float a, const vec4 u) {
+    vec4 v;
+    __asm float_to_vec4 v, a;
+    __asm vec4_divide   v, u;
+    return v;
+}
+
+vec4 __operator / (vec4 v, const float b) {
+    vec4 u;
+    __asm float_to_vec4 u, b;
+    __asm vec4_divide   v, u;
+    return v;
+}
+
+
+vec4 __operator - (vec4 v) {
+    __asm vec4_negate v;
+    return v;
+}
+
+
+float dot (vec3 v, vec3 u) {
+    vec4 v4 = vec4 (v, 0.0);
+    vec4 u4 = vec4 (u, 0.0);
+    __asm vec4_dot v4, u4;
+    return v4.x;
+}
+
+float dot (vec4 v, vec4 u) {
+    __asm vec4_dot v, u;
+    return v.x;
+}
+
+
+float length (vec3 v) {
+    vec4 u = vec4 (v, 0.0);
+    __asm vec4_dot u, u;
+    return sqrt (u.x);
+}
+
+float length (vec4 v) {
+    __asm vec4_dot v, v;
+    return sqrt (v.x);
+}
+
+
+vec3 normalize (vec3 v) {
+    vec4 u = vec4 (v, 0.0);
+    vec4 w = u;
+    __asm vec4_dot      u, u;
+    float l = sqrt (u.x);
+    __asm float_to_vec4 u, l;
+    __asm vec4_divide   w, u;
+    return w.xyz;
+}
+
+vec4 normalize (vec4 v) {
+    vec4 w = v;
+    __asm vec4_dot      v, v;
+    float l = sqrt (v.x);
+    __asm float_to_vec4 v, l;
+    __asm vec4_divide   w, v;
+    return w;
+}
+
diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h b/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h
new file mode 100644 (file)
index 0000000..9c3bae2
--- /dev/null
@@ -0,0 +1,62 @@
+
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* slang_builtin_vec4.gc */
+
+3,1,0,12,1,1,1,0,9,102,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,
+52,0,18,118,0,0,18,102,0,0,0,8,18,118,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,
+101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,
+1,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,
+118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,
+117,0,0,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,
+101,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,
+4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,97,
+100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,
+0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,
+115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,9,97,0,0,
+0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,
+4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,4,1,0,2,12,
+118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,0,1,0,
+12,2,26,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,
+0,0,8,18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,115,117,98,
+116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,0,0,12,118,0,0,1,1,0,12,
+117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,
+0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,101,
+0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,
+1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,
+52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,0,9,98,
+0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,
+0,0,4,118,101,99,52,95,97,100,100,0,18,117,0,0,18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,27,1,1,0,9,97,
+0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,
+18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,
+116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,
+99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,
+2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,
+101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,
+1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,
+101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,117,0,0,
+18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,22,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,
+102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,
+118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,9,98,0,
+0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,
+0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,27,
+1,0,0,12,118,0,0,0,1,4,118,101,99,52,95,110,101,103,97,116,101,0,18,118,0,0,0,8,18,118,0,0,0,1,0,9,
+0,100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,12,1,118,52,0,2,58,118,101,99,52,0,18,
+118,0,0,17,48,0,48,0,0,0,0,0,0,3,2,0,12,1,117,52,0,2,58,118,101,99,52,0,18,117,0,0,17,48,0,48,0,0,
+0,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,52,0,0,18,117,52,0,0,0,8,18,118,52,0,59,120,0,0,0,
+1,0,9,0,100,111,116,0,1,0,0,12,118,0,0,1,0,0,12,117,0,0,0,1,4,118,101,99,52,95,100,111,116,0,18,
+118,0,0,18,117,0,0,0,8,18,118,0,59,120,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,11,118,0,0,0,
+1,3,2,0,12,1,117,0,2,58,118,101,99,52,0,18,118,0,0,17,48,0,48,0,0,0,0,0,0,4,118,101,99,52,95,100,
+111,116,0,18,117,0,0,18,117,0,0,0,8,58,115,113,114,116,0,18,117,0,59,120,0,0,0,0,0,1,0,9,0,108,101,
+110,103,116,104,0,1,0,0,12,118,0,0,0,1,4,118,101,99,52,95,100,111,116,0,18,118,0,0,18,118,0,0,0,8,
+58,115,113,114,116,0,18,118,0,59,120,0,0,0,0,0,1,0,11,0,110,111,114,109,97,108,105,122,101,0,1,0,0,
+11,118,0,0,0,1,3,2,0,12,1,117,0,2,58,118,101,99,52,0,18,118,0,0,17,48,0,48,0,0,0,0,0,0,3,2,0,12,1,
+119,0,2,18,117,0,0,0,4,118,101,99,52,95,100,111,116,0,18,117,0,0,18,117,0,0,0,3,2,0,9,1,108,0,2,58,
+115,113,114,116,0,18,117,0,59,120,0,0,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,
+117,0,0,18,108,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,119,0,0,18,117,0,0,0,8,18,119,
+0,59,120,121,122,0,0,0,1,0,12,0,110,111,114,109,97,108,105,122,101,0,1,0,0,12,118,0,0,0,1,3,2,0,12,
+1,119,0,2,18,118,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,0,0,18,118,0,0,0,3,2,0,9,1,108,0,2,
+58,115,113,114,116,0,18,118,0,59,120,0,0,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
+18,118,0,0,18,108,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,119,0,0,18,118,0,0,0,8,18,
+119,0,0,0,0
index 944378b3fbfd7a167dac97dc330f44f51bc78dca..e5876528e1cfdd9ee1c43f507dbcab5079dac798 100644 (file)
@@ -1,5 +1,5 @@
 
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
 /* slang_common_builtin.gc */
 
 3,2,2,1,5,1,103,108,95,77,97,120,76,105,103,104,116,115,0,2,16,10,56,0,0,0,2,2,1,5,1,103,108,95,77,
index 51a9269e48c48d0ce01b4fea418dd81d78624ce4..a7aaa317fa70ad85cd67fee88f9af59e09fda1cf 100644 (file)
@@ -1,5 +1,5 @@
 
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
 /* slang_core.gc */
 
 3,1,0,5,1,1,1,0,9,102,0,0,0,1,3,2,0,5,1,105,0,0,0,4,102,108,111,97,116,95,116,111,95,105,110,116,0,
index 3ec7138e41bd4f71e44f2d242027d245e108eec5..b7f1d3816c13fb5b8a547ab3f312a8a38f349721 100644 (file)
@@ -1,5 +1,5 @@
 
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
 /* slang_fragment_builtin.gc */
 
 3,2,2,6,12,1,103,108,95,70,114,97,103,67,111,111,114,100,0,0,0,2,2,6,1,1,103,108,95,70,114,111,110,
index 55324b12ddce60c4f82b564ec0f19d48f9704663..b47c2717c56df34a08efcf36560ad9787f15cb0b 100644 (file)
@@ -1,5 +1,5 @@
 
-/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
+/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
 /* slang_vertex_builtin.gc */
 
 3,2,2,5,12,1,103,108,95,80,111,115,105,116,105,111,110,0,0,0,2,2,5,9,1,103,108,95,80,111,105,110,