Changes to pass 'abs' conformance tests.
Review URL: http://codereview.appspot.com/858041

git-svn-id: https://angleproject.googlecode.com/svn/trunk@90 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputGLSL.cpp b/src/compiler/OutputGLSL.cpp
index 4119459..b997c5e 100644
--- a/src/compiler/OutputGLSL.cpp
+++ b/src/compiler/OutputGLSL.cpp
@@ -17,10 +17,6 @@
         out << "mat";
         out << type.getNominalSize();
     }
-    else if (type.isArray())
-    {
-        UNIMPLEMENTED();
-    }
     else if (type.isVector())
     {
         switch (type.getBasicType())
@@ -120,6 +116,10 @@
         out << getTypeName(node->getType()) << " ";
     }
     out << node->getSymbol();
+    if (writeFullSymbol && node->getType().isArray())
+    {
+        out << "[" << node->getType().getArraySize() << "]";
+    }
 }
 
 void TOutputGLSL::visitConstantUnion(TIntermConstantUnion* node)
@@ -161,7 +161,7 @@
             break;
         case EOpAddAssign: writeTriplet(visit, NULL, " += ", NULL); break;
         case EOpSubAssign: UNIMPLEMENTED(); break;
-        case EOpMulAssign: UNIMPLEMENTED(); break;
+        case EOpMulAssign: writeTriplet(visit, NULL, " *= ", NULL); break;
         case EOpVectorTimesMatrixAssign: UNIMPLEMENTED(); break;
         case EOpVectorTimesScalarAssign: UNIMPLEMENTED(); break;
         case EOpMatrixTimesScalarAssign: UNIMPLEMENTED(); break;
@@ -210,7 +210,7 @@
         case EOpMul: writeTriplet(visit, "(", " * ", ")"); break;
         case EOpDiv: writeTriplet(visit, "(", " / ", ")"); break;
         case EOpMod: UNIMPLEMENTED(); break;
-        case EOpEqual: UNIMPLEMENTED(); break;
+        case EOpEqual: writeTriplet(visit, "(", " == ", ")"); break;
         case EOpNotEqual: UNIMPLEMENTED(); break;
         case EOpLessThan: writeTriplet(visit, "(", " < ", ")"); break;
         case EOpGreaterThan: writeTriplet(visit, "(", " > ", ")"); break;
@@ -254,7 +254,7 @@
         case EOpConvFloatToBool: UNIMPLEMENTED(); break;
         case EOpConvBoolToFloat: UNIMPLEMENTED(); break;
         case EOpConvIntToFloat: writeTriplet(visit, "float(", NULL, ")"); break;
-        case EOpConvFloatToInt: UNIMPLEMENTED(); break;
+        case EOpConvFloatToInt: writeTriplet(visit, "int(", NULL, ")"); break;
         case EOpConvBoolToInt: UNIMPLEMENTED(); break;
 
         case EOpRadians: UNIMPLEMENTED(); break;
@@ -263,7 +263,7 @@
         case EOpCos: writeTriplet(visit, "cos(", NULL, ")"); break;
         case EOpTan: UNIMPLEMENTED(); break;
         case EOpAsin: UNIMPLEMENTED(); break;
-        case EOpAcos: UNIMPLEMENTED(); break;
+        case EOpAcos: writeTriplet(visit, "acos(", NULL, ")"); break;
         case EOpAtan: UNIMPLEMENTED(); break;
 
         case EOpExp: UNIMPLEMENTED(); break;
@@ -273,7 +273,7 @@
         case EOpSqrt: UNIMPLEMENTED(); break;
         case EOpInverseSqrt: UNIMPLEMENTED(); break;
 
-        case EOpAbs: UNIMPLEMENTED(); break;
+        case EOpAbs: writeTriplet(visit, "abs(", NULL, ")"); break;
         case EOpSign: UNIMPLEMENTED(); break;
         case EOpFloor: writeTriplet(visit, "floor(", NULL, ")"); break;
         case EOpCeil: UNIMPLEMENTED(); break;