summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/library/slang_core.gc
diff options
context:
space:
mode:
authorBrian <brian@yutani.localnet.net>2006-12-18 08:25:23 -0700
committerBrian <brian@yutani.localnet.net>2006-12-18 08:25:23 -0700
commit962a9f2f9d0326408c9b400d765a6aa14c5a5f57 (patch)
tree83c55d8a57d7e5de34b5ee6e7c0fe2132a5e8e8a /src/mesa/shader/slang/library/slang_core.gc
parent0031ea7d85ae8990872c2181d038fb97b566dc2b (diff)
comments
Diffstat (limited to 'src/mesa/shader/slang/library/slang_core.gc')
-rwxr-xr-xsrc/mesa/shader/slang/library/slang_core.gc16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mesa/shader/slang/library/slang_core.gc b/src/mesa/shader/slang/library/slang_core.gc
index 00d5916150..81be17f9f0 100755
--- a/src/mesa/shader/slang/library/slang_core.gc
+++ b/src/mesa/shader/slang/library/slang_core.gc
@@ -687,6 +687,7 @@ vec4 __operator * (const mat4 m, const vec4 v)
__asm vec4_dot __retVal.w, r4, v;
}
+// xxx move
mat4 __operator * (const mat4 m, const mat4 n) {
return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);
}
@@ -870,6 +871,7 @@ void __operator *= (inout vec3 v, const mat3 m) {
}
+
vec4 __operator * (const vec4 v, const mat4 m)
{
__retVal.x = dot(v, m[0]);
@@ -878,7 +880,9 @@ vec4 __operator * (const vec4 v, const mat4 m)
__retVal.w = dot(v, m[3]);
}
-void __operator *= (inout vec4 v, const mat4 m) {
+void __operator *= (inout vec4 v, const mat4 m)
+{
+// xxx improve codegen for this case
v = v * m;
}
@@ -1676,12 +1680,14 @@ mat4 __operator ++ (inout mat4 m, const int) {
return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);
}
-bool __operator < (const float a, const float b) {
- bool c;
- __asm float_less c, a, b;
- return c;
+
+// XXX are the inequality operators for floats/ints really needed????
+bool __operator < (const float a, const float b)
+{
+ __asm vec4_sgt __retVal.x, b, a;
}
+
bool __operator < (const int a, const int b) {
return float (a) < float (b);
}