Add constant folding support for more built-ins

This change adds constant folding support for following built-ins:
  - atan(two arguments), pow, mod, mix, step and smoothstep.

BUG=angleproject:913
TEST=dEQP tests
Following 80 tests from dEQP-GLES3.functional.shaders.constant_expressions
started passing with this change:
 - builtin_functions.angle_and_trigonometry.atan_separate*
 - builtin_functions.exponential.pow_*
 - builtin_functions.common.mod_*
 - builtin_functions.common.mix_*
 - builtin_functions.common.step_*
 - builtin_functions.common.smoothstep_*

Change-Id: I70f0a8837a82c480da8cff3f1382c6252a486fe4
Reviewed-on: https://chromium-review.googlesource.com/271753
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/Intermediate.cpp b/src/compiler/translator/Intermediate.cpp
index 18113be..b48269e 100644
--- a/src/compiler/translator/Intermediate.cpp
+++ b/src/compiler/translator/Intermediate.cpp
@@ -462,10 +462,16 @@
 {
     switch (op)
     {
+      case EOpAtan:
+      case EOpPow:
+      case EOpMod:
       case EOpMin:
       case EOpMax:
       case EOpClamp:
-        return TIntermConstantUnion::FoldAggregateBuiltIn(op, aggregate);
+      case EOpMix:
+      case EOpStep:
+      case EOpSmoothStep:
+        return TIntermConstantUnion::FoldAggregateBuiltIn(op, aggregate, mInfoSink);
       default:
         // Constant folding not supported for the built-in.
         return nullptr;