Add support for bitwise operations in ESSL3

Add support for <<, >>, &, |, ^, and their compound assignment variants
<<=, >>=, &=, |=, ^=. Also add support for bitwise not (~).

BUG=angle:870

Change-Id: I5e6a835409589556d5d58d58078fdf505cfd8da5
Reviewed-on: https://chromium-review.googlesource.com/241850
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/compiler/translator/intermOut.cpp b/src/compiler/translator/intermOut.cpp
index 0197e23..65d8d51 100644
--- a/src/compiler/translator/intermOut.cpp
+++ b/src/compiler/translator/intermOut.cpp
@@ -134,6 +134,22 @@
       case EOpModAssign:
         out << "modulo second child into first child";
         break;
+      case EOpBitShiftLeftAssign:
+        out << "bit-wise shift first child left by second child";
+        break;
+      case EOpBitShiftRightAssign:
+        out << "bit-wise shift first child right by second child";
+        break;
+      case EOpBitwiseAndAssign:
+        out << "bit-wise and second child into first child";
+        break;
+      case EOpBitwiseXorAssign:
+        out << "bit-wise xor second child into first child";
+        break;
+      case EOpBitwiseOrAssign:
+        out << "bit-wise or second child into first child";
+        break;
+
       case EOpIndexDirect:
         out << "direct index";
         break;
@@ -165,6 +181,22 @@
       case EOpMod:
         out << "modulo";
         break;
+      case EOpBitShiftLeft:
+        out << "bit-wise shift left";
+        break;
+      case EOpBitShiftRight:
+        out << "bit-wise shift right";
+        break;
+      case EOpBitwiseAnd:
+        out << "bit-wise and";
+        break;
+      case EOpBitwiseXor:
+        out << "bit-wise xor";
+        break;
+      case EOpBitwiseOr:
+        out << "bit-wise or";
+        break;
+
       case EOpEqual:
         out << "Compare Equal";
         break;
@@ -262,6 +294,7 @@
       case EOpPositive:       out << "Positive sign";        break;
       case EOpVectorLogicalNot:
       case EOpLogicalNot:     out << "Negate conditional";   break;
+      case EOpBitwiseNot:     out << "bit-wise not";         break;
 
       case EOpPostIncrement:  out << "Post-Increment";       break;
       case EOpPostDecrement:  out << "Post-Decrement";       break;