mesa: remove unused/obsolete __NormalMatrixTranspose matrix
[mesa.git] / src / mesa / shader / slang / library / slang_core.gc
index ffa57f74c2772cff98d169e6d31f0fc486f91d85..10a6bb5cb15d2a2c6d6bb6777931ff3aead3303b 100644 (file)
 
 int __constructor(const float f)
 {
-   __asm float_to_int __retVal, f;
+   __asm vec4_to_ivec4 __retVal, f;
 }
 
-bool __constructor(const int i)
+int __constructor(const bool b)
 {
-   const float zero = 0.0;
-   __asm vec4_seq __retVal, i, zero;
+   __retVal = b;
 }
 
-bool __constructor(const float f)
+int __constructor(const int i)
 {
-   const float zero = 0.0;
-   __asm vec4_seq __retVal, i, zero;
+   __retVal = i;
 }
 
-int __constructor(const bool b)
+bool __constructor(const int i)
 {
-   __retVal = b;
+   __asm vec4_sne __retVal, i, 0.0;
 }
 
-float __constructor(const bool b)
+bool __constructor(const float f)
 {
-   __retVal = b;
+   __asm vec4_sne __retVal, f, 0.0;
 }
 
-float __constructor(const int i)
+bool __constructor(const bool b)
 {
-    __asm int_to_float __retVal, i;
+   __retVal = b;
 }
 
-bool __constructor(const bool b)
+float __constructor(const int i)
 {
-   __retVal = b;
+    __asm ivec4_to_vec4 __retVal, i;
 }
 
-int __constructor(const int i)
+float __constructor(const bool b)
 {
-   __retVal = i;
+    __asm ivec4_to_vec4 __retVal, b;
 }
 
 float __constructor(const float f)
@@ -163,27 +161,33 @@ vec2 __constructor(const float x, const float y)
 
 vec2 __constructor(const float f)
 {
-   __retVal.xy = f.xx;
+   __asm vec4_move __retVal.xy, f;
 }
 
 vec2 __constructor(const int i)
 {
-   __retVal.xy = i.xx;
+   __asm ivec4_to_vec4 __retVal.xy, i;
 }
 
 vec2 __constructor(const bool b)
 {
-   __retVal.xy = b.xx;
+   __asm ivec4_to_vec4 __retVal.xy, b;
+}
+
+vec2 __constructor(const bvec2 b)
+{
+//   __retVal = b;
+   __asm ivec4_to_vec4 __retVal.xy, b;
 }
 
 vec2 __constructor(const vec3 v)
 {
-   __retVal.xy = v.xy;
+   __asm vec4_move __retVal.xy, v.xy;
 }
 
 vec2 __constructor(const vec4 v)
 {
-   __retVal.st = v.xy;
+   __asm vec4_move __retVal.xy, v.xy;
 }
 
 
@@ -198,22 +202,28 @@ vec3 __constructor(const float x, const float y, const float z)
 
 vec3 __constructor(const float f)
 {
-   __retVal.xyz = f.xxx;
+   // Note: this could be "__retVal.xyz = f" but that's an illegal assignment
+   __asm vec4_move __retVal.xyz, f;
 }
 
 vec3 __constructor(const int i)
 {
-   __asm int_to_float __retVal.xyz, i.xxx;
+   __asm ivec4_to_vec4 __retVal.xyz, i;
 }
 
 vec3 __constructor(const bool b)
 {
-   __retVal.xyz = b.xxx;
+   __asm ivec4_to_vec4 __retVal.xyz, b;
+}
+
+vec3 __constructor(const bvec3 b)
+{
+   __asm ivec4_to_vec4 __retVal.xyz, b;
 }
 
 vec3 __constructor(const vec4 v)
 {
-   __retVal.xyz = v.xyz;
+   __asm vec4_move __retVal.xyz, v;
 }
 
 
@@ -229,17 +239,28 @@ vec4 __constructor(const float x, const float y, const float z, const float w)
 
 vec4 __constructor(const float f)
 {
-   __retVal = f.xxxx;
+   // Note: this could be "__retVal = f" but that's an illegal assignment
+   __asm vec4_move __retVal, f;
 }
 
 vec4 __constructor(const int i)
 {
-   __retVal = i.xxxx;
+   __asm ivec4_to_vec4 __retVal, i;
 }
 
 vec4 __constructor(const bool b)
 {
-   __retVal = b.xxxx;
+   __asm ivec4_to_vec4 __retVal, b;
+}
+
+vec4 __constructor(const bvec4 b)
+{
+   __asm ivec4_to_vec4 __retVal, b;
+}
+
+vec4 __constructor(const ivec4 i)
+{
+   __asm ivec4_to_vec4 __retVal, i;
 }
 
 vec4 __constructor(const vec3 v3, const float f)
@@ -249,6 +270,14 @@ vec4 __constructor(const vec3 v3, const float f)
    __retVal.w = f;
 }
 
+vec4 __constructor(const vec2 v2, const float f1, const float f2)
+{
+   // XXX this constructor shouldn't be needed anymore
+   __retVal.xy = v2;
+   __retVal.z = f1;
+   __retVal.w = f2;
+}
+
 
 //// ivec2 constructors
 
@@ -260,17 +289,17 @@ ivec2 __constructor(const int i, const int j)
 
 ivec2 __constructor(const int i)
 {
-   __retVal.xy = i.xx;
+   __asm vec4_move __retVal.xy, i;
 }
 
 ivec2 __constructor(const float f)
 {
-   __asm float_to_int __retVal.xy, f.xx;
+   __asm vec4_to_ivec4 __retVal.xy, f;
 }
 
 ivec2 __constructor(const bool b)
 {
-   __asm float_to_int __retVal.xy, b.xx;
+   __asm vec4_to_ivec4 __retVal.xy, b;
 }
 
 
@@ -285,17 +314,17 @@ ivec3 __constructor(const int i, const int j, const int k)
 
 ivec3 __constructor(const int i)
 {
-   __retVal.xyz = i.xxx;
+   __asm vec4_move __retVal.xyz, i;
 }
 
 ivec3 __constructor(const float f)
 {
-   __retVal.xyz = f.xxx;
+   __asm vec4_to_ivec4 __retVal.xyz, f;
 }
 
 ivec3 __constructor(const bool b)
 {
-   __retVal.xyz = b.xxx;
+   __asm vec4_move __retVal.xyz, b;
 }
 
 
@@ -311,17 +340,17 @@ ivec4 __constructor(const int x, const int y, const int z, const int w)
 
 ivec4 __constructor(const int i)
 {
-   __retVal = i.xxxx;
+   __asm vec4_move __retVal, i;
 }
 
 ivec4 __constructor(const float f)
 {
-   __asm float_to_int __retVal, f.xxxx;
+   __asm vec4_to_ivec4 __retVal, f;
 }
 
 ivec4 __constructor(const bool b)
 {
-   __retVal = b.xxxx;
+   __asm vec4_to_ivec4 __retVal, b;
 }
 
 
@@ -333,23 +362,39 @@ bvec2 __constructor(const bool b1, const bool b2)
    __retVal.y = b2;
 }
 
+bvec2 __constructor(const int i1, const int i2)
+{
+   __asm vec4_sne __retVal.x, i1, 0.0;
+   __asm vec4_sne __retVal.y, i2, 0.0;
+}
+
+
 bvec2 __constructor(const bool b)
 {
-   __retVal.xy = b.xx;
+   __asm vec4_move __retVal.xy, b;
 }
 
 bvec2 __constructor(const float f)
 {
-   const vec2 zero = vec2(0.0, 0.0);
-   __asm vec4_seq __retVal.xy, f.xx, zero;
+   __asm vec4_sne __retVal.xy, f, 0.0;
 }
 
 bvec2 __constructor(const int i)
 {
-   const ivec2 zero = ivec2(0, 0);
-   __asm vec4_seq __retVal.xy, i.xx, zero;
+   __asm vec4_sne __retVal.xy, i, 0.0;
+}
+
+bvec2 __constructor(const vec2 v)
+{
+   __asm vec4_sne __retVal.xy, v, 0.0;
 }
 
+bvec2 __constructor(const ivec2 v)
+{
+   __asm vec4_sne __retVal.xy, v, 0.0;
+}
+
+
 
 //// bvec3 constructors
 
@@ -360,24 +405,40 @@ bvec3 __constructor(const bool b1, const bool b2, const bool b3)
    __retVal.z = b3;
 }
 
+bvec3 __constructor(const float f1, const float f2, const float f3)
+{
+   __asm vec4_sne __retVal.x, f1, 0.0;
+   __asm vec4_sne __retVal.y, f2, 0.0;
+   __asm vec4_sne __retVal.z, f3, 0.0;
+}
+
 bvec3 __constructor(const bool b)
 {
-   __retVal.xyz = b.xxx;
+   __asm vec4_move __retVal.xyz, b;
 }
 
 bvec3 __constructor(const float f)
 {
-   const vec3 zero = vec3(0.0, 0.0, 0.0);
-   __asm vec4_seq __retVal.xyz, f.xxx, zero;
+   __asm vec4_sne __retVal.xyz, f, 0.0;
 }
 
 bvec3 __constructor(const int i)
 {
-   const ivec3 zero = ivec3(0, 0, 0);
-   __asm vec4_seq __retVal.xyz, i.xxx, zero;
+   __asm vec4_sne __retVal.xyz, i, 0.0;
+}
+
+bvec3 __constructor(const vec3 v)
+{
+   __asm vec4_sne __retVal.xyz, v, 0.0;
+}
+
+bvec3 __constructor(const ivec3 v)
+{
+   __asm vec4_sne __retVal.xyz, v, 0.0;
 }
 
 
+
 //// bvec4 constructors
 
 bvec4 __constructor(const bool b1, const bool b2, const bool b3, const bool b4)
@@ -388,21 +449,38 @@ bvec4 __constructor(const bool b1, const bool b2, const bool b3, const bool b4)
    __retVal.w = b4;
 }
 
+bvec4 __constructor(const float f1, const float f2, const float f3, const float f4)
+{
+   const float zero = 0.0;
+   __asm vec4_sne __retVal.x, f1, zero;   
+   __asm vec4_sne __retVal.y, f2, zero;   
+   __asm vec4_sne __retVal.z, f3, zero;   
+   __asm vec4_sne __retVal.w, f4, zero;   
+}
+
 bvec4 __constructor(const bool b)
 {
-   __retVal.xyzw = b.xxxx;
+   __asm vec4_move __retVal.xyzw, b;
 }
 
 bvec4 __constructor(const float f)
 {
-   const vec4 zero = vec4(0.0, 0.0, 0.0, 0.0);
-   __asm vec4_seq __retVal, f.xxxx, zero;
+   __asm vec4_sne __retVal.xyzw, f, 0.0;
 }
 
 bvec4 __constructor(const int i)
 {
-   const ivec4 zero = ivec4(0, 0, 0, 0);
-   __asm vec4_seq __retVal, i.xxxx, zero;
+   __asm vec4_sne __retVal.xyzw, i, 0.0;
+}
+
+bvec4 __constructor(const vec4 v)
+{
+   __asm vec4_sne __retVal.xyzw, v, 0.0;
+}
+
+bvec4 __constructor(const ivec4 v)
+{
+   __asm vec4_sne __retVal.xyzw, v, 0.0;
 }
 
 
@@ -545,30 +623,17 @@ mat4 __constructor(const vec4 c0, const vec4 c1, const vec4 c2, const vec4 c3)
 
 int __operator + (const int a, const int b)
 {
-// XXX If we ever have int registers, we'll do something like this:
-// XXX For now, mostly treat ints as floats.
-//    float x, y;
-//    __asm int_to_float x, a;
-//    __asm int_to_float y, b;
-//    __asm vec4_add x.x, x.x, y.x;
-//    __asm float_to_int __retVal, x;
-   float x;
-   __asm vec4_add x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_add __retVal, a, b;
 }
 
 int __operator - (const int a, const int b)
 {
-   float x;
-   __asm vec4_subtract x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_subtract __retVal, a, b;
 }
 
 int __operator * (const int a, const int b)
 {
-   float x;
-   __asm vec4_multiply x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_multiply __retVal, a, b;
 }
 
 int __operator / (const int a, const int b)
@@ -576,7 +641,7 @@ int __operator / (const int a, const int b)
    float bInv, x;
    __asm float_rcp bInv, b;
    __asm vec4_multiply x, a, bInv;
-   __asm float_to_int __retVal, x;
+   __asm vec4_to_ivec4 __retVal, x;
 }
 
 
@@ -584,23 +649,17 @@ int __operator / (const int a, const int b)
 
 ivec2 __operator + (const ivec2 a, const ivec2 b)
 {
-   vec2 x;
-   __asm vec4_add x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_add __retVal, a, b;
 }
 
 ivec2 __operator - (const ivec2 a, const ivec2 b)
 {
-   vec2 x;
-   __asm vec4_subtract x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_subtract __retVal, a, b;
 }
 
 ivec2 __operator * (const ivec2 a, const ivec2 b)
 {
-   vec2 x;
-   __asm vec4_multiply x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_multiply __retVal, a, b;
 }
 
 ivec2 __operator / (const ivec2 a, const ivec2 b)
@@ -609,7 +668,7 @@ ivec2 __operator / (const ivec2 a, const ivec2 b)
    __asm float_rcp bInv.x, b.x;
    __asm float_rcp bInv.y, b.y;
    __asm vec4_multiply x, a, bInv;
-   __asm float_to_int __retVal, x;
+   __asm vec4_to_ivec4 __retVal, x;
 }
 
 
@@ -617,23 +676,17 @@ ivec2 __operator / (const ivec2 a, const ivec2 b)
 
 ivec3 __operator + (const ivec3 a, const ivec3 b)
 {
-   vec3 x;
-   __asm vec4_add x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_add __retVal, a, b;
 }
 
 ivec3 __operator - (const ivec3 a, const ivec3 b)
 {
-   vec3 x;
-   __asm vec4_subtract x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_subtract __retVal, a, b;
 }
 
 ivec3 __operator * (const ivec3 a, const ivec3 b)
 {
-   vec3 x;
-   __asm vec4_multiply x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_multiply __retVal, a, b;
 }
 
 ivec3 __operator / (const ivec3 a, const ivec3 b)
@@ -643,7 +696,7 @@ ivec3 __operator / (const ivec3 a, const ivec3 b)
    __asm float_rcp bInv.y, b.y;
    __asm float_rcp bInv.z, b.z;
    __asm vec4_multiply x, a, bInv;
-   __asm float_to_int __retVal, x;
+   __asm vec4_to_ivec4 __retVal, x;
 }
 
 
@@ -651,23 +704,17 @@ ivec3 __operator / (const ivec3 a, const ivec3 b)
 
 ivec4 __operator + (const ivec4 a, const ivec4 b)
 {
-   vec3 x;
-   __asm vec4_add x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_add __retVal, a, b;
 }
 
 ivec4 __operator - (const ivec4 a, const ivec4 b)
 {
-   vec4 x;
-   __asm vec4_subtract x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_subtract __retVal, a, b;
 }
 
 ivec4 __operator * (const ivec4 a, const ivec4 b)
 {
-   vec4 x;
-   __asm vec4_multiply x, a, b;
-   __asm float_to_int __retVal, x;
+   __asm vec4_multiply __retVal, a, b;
 }
 
 ivec4 __operator / (const ivec4 a, const ivec4 b)
@@ -678,7 +725,7 @@ ivec4 __operator / (const ivec4 a, const ivec4 b)
    __asm float_rcp bInv.z, b.z;
    __asm float_rcp bInv.w, b.w;
    __asm vec4_multiply x, a, bInv;
-   __asm float_to_int __retVal, x;
+   __asm vec4_to_ivec4 __retVal, x;
 }
 
 
@@ -686,24 +733,24 @@ ivec4 __operator / (const ivec4 a, const ivec4 b)
 
 float __operator + (const float a, const float b)
 {
-   __asm vec4_add __retVal.x, a, b;
+   __asm vec4_add __retVal, a, b;
 }
 
 float __operator - (const float a, const float b)
 {
-   __asm vec4_subtract __retVal.x, a, b;
+   __asm vec4_subtract __retVal, a, b;
 }
 
 float __operator * (const float a, const float b)
 {
-    __asm vec4_multiply __retVal.x, a, b;
+    __asm vec4_multiply __retVal, a, b;
 }
 
 float __operator / (const float a, const float b)
 {
    float bInv;
-   __asm float_rcp bInv.x, b.x;
-   __asm vec4_multiply __retVal.x, a, bInv;
+   __asm float_rcp bInv.x, b;
+   __asm vec4_multiply __retVal, a, bInv;
 }
 
 
@@ -794,32 +841,32 @@ vec4 __operator / (const vec4 v, const vec4 u)
 
 vec2 __operator + (const float a, const vec2 u)
 {
-   __asm vec4_add __retVal.xy, a.xx, u.xy;
+   __asm vec4_add __retVal.xy, a, u.xy;
 }
 
 vec2 __operator + (const vec2 v, const float b)
 {
-   __asm vec4_add __retVal.xy, v.xy, b.xx;
+   __asm vec4_add __retVal.xy, v.xy, b;
 }
 
 vec2 __operator - (const float a, const vec2 u)
 {
-   __asm vec4_subtract __retVal.xy, a.xx, u.xy;
+   __asm vec4_subtract __retVal.xy, a, u.xy;
 }
 
 vec2 __operator - (const vec2 v, const float b)
 {
-   __asm vec4_subtract __retVal.xy, v.xy, b.xx;
+   __asm vec4_subtract __retVal.xy, v.xy, b;
 }
 
 vec2 __operator * (const float a, const vec2 u)
 {
-   __asm vec4_multiply __retVal.xy, a.xx, u.xy;
+   __asm vec4_multiply __retVal.xy, a, u.xy;
 }
 
 vec2 __operator * (const vec2 v, const float b)
 {
-   __asm vec4_multiply __retVal.xy, v.xy, b.xx;
+   __asm vec4_multiply __retVal.xy, v.xy, b;
 }
 
 vec2 __operator / (const float a, const vec2 u)
@@ -827,14 +874,14 @@ vec2 __operator / (const float a, const vec2 u)
    vec2 invU;
    __asm float_rcp invU.x, u.x;
    __asm float_rcp invU.y, u.y;
-   __asm vec4_multiply __retVal.xy, a.xx, invU.xy;
+   __asm vec4_multiply __retVal.xy, a, invU.xy;
 }
 
 vec2 __operator / (const vec2 v, const float b)
 {
    float invB;
    __asm float_rcp invB, b;
-   __asm vec4_multiply __retVal.xy, v.xy, invB.xx;
+   __asm vec4_multiply __retVal.xy, v.xy, invB;
 }
 
 
@@ -842,32 +889,32 @@ vec2 __operator / (const vec2 v, const float b)
 
 vec3 __operator + (const float a, const vec3 u)
 {
-   __asm vec4_add __retVal.xyz, a.xxx, u.xyz;
+   __asm vec4_add __retVal.xyz, a, u.xyz;
 }
 
 vec3 __operator + (const vec3 v, const float b)
 {
-   __asm vec4_add __retVal.xyz, v.xyz, b.xxx;
+   __asm vec4_add __retVal.xyz, v.xyz, b;
 }
 
 vec3 __operator - (const float a, const vec3 u)
 {
-   __asm vec4_subtract __retVal.xyz, a.xxx, u.xyz;
+   __asm vec4_subtract __retVal.xyz, a, u.xyz;
 }
 
 vec3 __operator - (const vec3 v, const float b)
 {
-   __asm vec4_subtract __retVal.xyz, v.xyz, b.xxx;
+   __asm vec4_subtract __retVal.xyz, v.xyz, b;
 }
 
 vec3 __operator * (const float a, const vec3 u)
 {
-   __asm vec4_multiply __retVal.xyz, a.xxx, u.xyz;
+   __asm vec4_multiply __retVal.xyz, a, u.xyz;
 }
 
 vec3 __operator * (const vec3 v, const float b)
 {
-   __asm vec4_multiply __retVal.xyz, v.xyz, b.xxx;
+   __asm vec4_multiply __retVal.xyz, v.xyz, b;
 }
 
 vec3 __operator / (const float a, const vec3 u)
@@ -876,14 +923,14 @@ vec3 __operator / (const float a, const vec3 u)
    __asm float_rcp invU.x, u.x;
    __asm float_rcp invU.y, u.y;
    __asm float_rcp invU.z, u.z;
-   __asm vec4_multiply __retVal.xyz, a.xxx, invU.xyz;
+   __asm vec4_multiply __retVal.xyz, a, invU.xyz;
 }
 
 vec3 __operator / (const vec3 v, const float b)
 {
    float invB;
    __asm float_rcp invB, b;
-   __asm vec4_multiply __retVal.xyz, v.xyz, invB.xxx;
+   __asm vec4_multiply __retVal.xyz, v.xyz, invB;
 }
 
 
@@ -891,32 +938,32 @@ vec3 __operator / (const vec3 v, const float b)
 
 vec4 __operator + (const float a, const vec4 u)
 {
-   __asm vec4_add __retVal, a.xxxx, u;
+   __asm vec4_add __retVal, a, u;
 }
 
 vec4 __operator + (const vec4 v, const float b)
 {
-   __asm vec4_add __retVal, v, b.xxxx;
+   __asm vec4_add __retVal, v, b;
 }
 
 vec4 __operator - (const float a, const vec4 u)
 {
-   __asm vec4_subtract __retVal, a.xxxx, u;
+   __asm vec4_subtract __retVal, a, u;
 }
 
 vec4 __operator - (const vec4 v, const float b)
 {
-   __asm vec4_subtract __retVal, v, b.xxxx;
+   __asm vec4_subtract __retVal, v, b;
 }
 
 vec4 __operator * (const float a, const vec4 u)
 {
-   __asm vec4_multiply __retVal, a.xxxx, u;
+   __asm vec4_multiply __retVal, a, u;
 }
 
 vec4 __operator * (const vec4 v, const float b)
 {
-   __asm vec4_multiply __retVal, v, b.xxxx;
+   __asm vec4_multiply __retVal, v, b;
 }
 
 vec4 __operator / (const float a, const vec4 u)
@@ -926,14 +973,14 @@ vec4 __operator / (const float a, const vec4 u)
    __asm float_rcp invU.y, u.y;
    __asm float_rcp invU.z, u.z;
    __asm float_rcp invU.w, u.w;
-   __asm vec4_multiply __retVal, a.xxxx, invU;
+   __asm vec4_multiply __retVal, a, invU;
 }
 
 vec4 __operator / (const vec4 v, const float b)
 {
    float invB;
    __asm float_rcp invB, b;
-   __asm vec4_multiply __retVal, v, invB.xxxx;
+   __asm vec4_multiply __retVal, v, invB;
 }
 
 
@@ -1180,6 +1227,7 @@ void __operator /= (inout int a, const int b)
    float invB;
    __asm float_rcp invB, b;
    __asm vec4_multiply a, a, invB;
+   __asm vec4_to_ivec4 a, a;
 }
 
 
@@ -1206,7 +1254,7 @@ void __operator /= (inout ivec2 v, const ivec2 u)
    __asm float_rcp inv.x, u.x;
    __asm float_rcp inv.y, u.y;
    __asm vec4_multiply z, v, inv;
-   __asm float_to_int __retVal, z;
+   __asm vec4_to_ivec4 v, z;
 }
 
 
@@ -1233,7 +1281,7 @@ void __operator /= (inout ivec3 v, const ivec3 u)
    __asm float_rcp inv.x, u.x;
    __asm float_rcp inv.y, u.y;
    __asm vec4_multiply z, v, inv;
-   __asm float_to_int __retVal, z;
+   __asm vec4_to_ivec4 v, z;
 }
 
 
@@ -1260,7 +1308,7 @@ void __operator /= (inout ivec4 v, const ivec4 u)
    __asm float_rcp inv.x, u.x;
    __asm float_rcp inv.y, u.y;
    __asm vec4_multiply z, v, inv;
-   __asm float_to_int __retVal, z;
+   __asm vec4_to_ivec4 v, z;
 }
 
 
@@ -1268,7 +1316,7 @@ void __operator /= (inout ivec4 v, const ivec4 u)
 
 void __operator += (inout float a, const float b)
 {
-    __asm vec4_add a.x, a.x, b;
+    __asm vec4_add a.x, a.x, b.x;
 }
 
 void __operator -= (inout float a, const float b)
@@ -1375,17 +1423,17 @@ void __operator /= (inout vec4 v, const vec4 u)
 
 void __operator += (inout ivec2 v, const int a)
 {
-   __asm vec4_add v.xy, v.xy, a.xx;
+   __asm vec4_add v.xy, v.xy, a;
 }
 
 void __operator -= (inout ivec2 v, const int a)
 {
-   __asm vec4_subtract v.xy, v.xy, a.xx;
+   __asm vec4_subtract v.xy, v.xy, a;
 }
 
 void __operator *= (inout ivec2 v, const int a)
 {
-   __asm vec4_multiply v.xy, v.xy, a.xx;
+   __asm vec4_multiply v.xy, v.xy, a;
    v.x *= a;
    v.y *= a;
 }
@@ -1402,17 +1450,17 @@ void __operator /= (inout ivec2 v, const int a)
 
 void __operator += (inout ivec3 v, const int a)
 {
-   __asm vec4_add v.xyz, v.xyz, a.xxx;
+   __asm vec4_add v.xyz, v.xyz, a;
 }
 
 void __operator -= (inout ivec3 v, const int a)
 {
-   __asm vec4_subtract v.xyz, v.xyz, a.xxx;
+   __asm vec4_subtract v.xyz, v.xyz, a;
 }
 
 void __operator *= (inout ivec3 v, const int a)
 {
-   __asm vec4_multiply v.xyz, v.xyz, a.xxx;
+   __asm vec4_multiply v.xyz, v.xyz, a;
 }
 
 void __operator /= (inout ivec3 v, const int a)
@@ -1428,17 +1476,17 @@ void __operator /= (inout ivec3 v, const int a)
 
 void __operator += (inout ivec4 v, const int a)
 {
-   __asm vec4_add v, v, a.xxxx;
+   __asm vec4_add v, v, a;
 }
 
 void __operator -= (inout ivec4 v, const int a)
 {
-   __asm vec4_subtract v, v, a.xxxx;
+   __asm vec4_subtract v, v, a;
 }
 
 void __operator *= (inout ivec4 v, const int a)
 {
-   __asm vec4_multiply v, v, a.xxxx;
+   __asm vec4_multiply v, v, a;
 }
 
 void __operator /= (inout ivec4 v, const int a)
@@ -1455,24 +1503,24 @@ void __operator /= (inout ivec4 v, const int a)
 
 void __operator += (inout vec2 v, const float a)
 {
-   __asm vec4_add v.xy, v, a.xx;
+   __asm vec4_add v.xy, v, a;
 }
 
 void __operator -= (inout vec2 v, const float a)
 {
-   __asm vec4_subtract v.xy, v, a.xx;
+   __asm vec4_subtract v.xy, v, a;
 }
 
 void __operator *= (inout vec2 v, const float a)
 {
-   __asm vec4_multiply v.xy, v, a.xx;
+   __asm vec4_multiply v.xy, v, a;
 }
 
 void __operator /= (inout vec2 v, const float a)
 {
    float invA;
    __asm float_rcp invA, a;
-   __asm vec4_multiply v.xy, v.xy, a.xx;
+   __asm vec4_multiply v.xy, v.xy, invA;
 }
 
 
@@ -1480,24 +1528,24 @@ void __operator /= (inout vec2 v, const float a)
 
 void __operator += (inout vec3 v, const float a)
 {
-   __asm vec4_add v.xyz, v, a.xxx;
+   __asm vec4_add v.xyz, v, a;
 }
 
 void __operator -= (inout vec3 v, const float a)
 {
-   __asm vec4_subtract v.xyz, v, a.xxx;
+   __asm vec4_subtract v.xyz, v, a;
 }
 
 void __operator *= (inout vec3 v, const float a)
 {
-   __asm vec4_multiply v.xyz, v, a.xxx;
+   __asm vec4_multiply v.xyz, v, a;
 }
 
 void __operator /= (inout vec3 v, const float a)
 {
    float invA;
    __asm float_rcp invA, a;
-   __asm vec4_multiply v.xyz, v.xyz, a.xxx;
+   __asm vec4_multiply v.xyz, v.xyz, invA;
 }
 
 
@@ -1505,24 +1553,24 @@ void __operator /= (inout vec3 v, const float a)
 
 void __operator += (inout vec4 v, const float a)
 {
-   __asm vec4_add v, v, a.xxxx;
+   __asm vec4_add v, v, a;
 }
 
 void __operator -= (inout vec4 v, const float a)
 {
-   __asm vec4_subtract v, v, a.xxxx;
+   __asm vec4_subtract v, v, a;
 }
 
 void __operator *= (inout vec4 v, const float a)
 {
-   __asm vec4_multiply v, v, a.xxxx;
+   __asm vec4_multiply v, v, a;
 }
 
 void __operator /= (inout vec4 v, const float a)
 {
    float invA;
    __asm float_rcp invA, a;
-   __asm vec4_multiply v, v, a.xxxx;
+   __asm vec4_multiply v, v, invA;
 }