Connecting the dots for some built-in functions

- Completed implementation of round
  and hyperbolic trigonometry operations
- Added a few more cases in op to string
  functions

Change-Id: Ic09d228de8e4446a66152b70edc6a6bba511288a
Reviewed-on: https://swiftshader-review.googlesource.com/2891
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/compiler/intermOut.cpp b/src/OpenGL/compiler/intermOut.cpp
index f71eea4..81b088d 100644
--- a/src/OpenGL/compiler/intermOut.cpp
+++ b/src/OpenGL/compiler/intermOut.cpp
@@ -160,6 +160,12 @@
         case EOpAsin:           out << "arc sine";             break;
         case EOpAcos:           out << "arc cosine";           break;
         case EOpAtan:           out << "arc tangent";          break;
+        case EOpSinh:           out << "hyperbolic sine";        break;
+        case EOpCosh:           out << "hyperbolic cosine";      break;
+        case EOpTanh:           out << "hyperbolic tangent";     break;
+        case EOpAsinh:          out << "arc hyperbolic sine";    break;
+        case EOpAcosh:          out << "arc hyperbolic cosine";  break;
+        case EOpAtanh:          out << "arc hyperbolic tangent"; break;
 
         case EOpExp:            out << "exp";                  break;
         case EOpLog:            out << "log";                  break;
@@ -171,8 +177,26 @@
         case EOpAbs:            out << "Absolute value";       break;
         case EOpSign:           out << "Sign";                 break;
         case EOpFloor:          out << "Floor";                break;
+        case EOpTrunc:          out << "Trunc";                break;
+        case EOpRound:          out << "Round";                break;
+        case EOpRoundEven:      out << "RoundEven";            break;
         case EOpCeil:           out << "Ceiling";              break;
         case EOpFract:          out << "Fraction";             break;
+        case EOpIsNan:          out << "Is not a number";      break;
+        case EOpIsInf:          out << "Is infinity";          break;
+
+        case EOpFloatBitsToInt: out << "float bits to int";    break;
+        case EOpFloatBitsToUint: out << "float bits to uint";  break;
+        case EOpIntBitsToFloat: out << "int bits to float";    break;
+        case EOpUintBitsToFloat: out << "uint bits to float";  break;
+
+        case EOpPackSnorm2x16:  out << "pack Snorm 2x16";      break;
+        case EOpPackUnorm2x16:  out << "pack Unorm 2x16";      break;
+        case EOpPackHalf2x16:   out << "pack half 2x16";       break;
+
+        case EOpUnpackSnorm2x16: out << "unpack Snorm 2x16";   break;
+        case EOpUnpackUnorm2x16: out << "unpack Unorm 2x16";   break;
+        case EOpUnpackHalf2x16:  out << "unpack half 2x16";    break;
 
         case EOpLength:         out << "length";               break;
         case EOpNormalize:      out << "normalize";            break;
@@ -180,6 +204,10 @@
             //	case EOpDPdy:           out << "dPdy";                 break;   
             //	case EOpFwidth:         out << "fwidth";               break;                   
 
+        case EOpDeterminant:    out << "determinant";          break;
+        case EOpTranspose:      out << "transpose";            break;
+        case EOpInverse:        out << "inverse";              break;
+
         case EOpAny:            out << "any";                  break;
         case EOpAll:            out << "all";                  break;
 
@@ -258,6 +286,7 @@
         case EOpReflect:       out << "reflect";                 break;
         case EOpRefract:       out << "refract";                 break;
         case EOpMul:           out << "component-wise multiply"; break;
+        case EOpOuterProduct:  out << "outer product";           break;
 
         default: out.message(EPrefixError, "Bad aggregation op");
     }