[hlsl-writer] Simplify logical and/or code.

This CL unifies the logical and/or HLSL code as it was mostly duplicate
code.

Bug: tint:192
Change-Id: Ied050afb0b054a9ccda1c8896edabf78deaa3709
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27921
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index bba6c0f..2b15907 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -302,7 +302,8 @@
 bool GeneratorImpl::EmitBinary(std::ostream& pre,
                                std::ostream& out,
                                ast::BinaryExpression* expr) {
-  if (expr->op() == ast::BinaryOp::kLogicalAnd) {
+  if (expr->op() == ast::BinaryOp::kLogicalAnd ||
+      expr->op() == ast::BinaryOp::kLogicalOr) {
     std::ostringstream lhs_out;
     if (!EmitExpression(pre, lhs_out, expr->lhs())) {
       return false;
@@ -316,55 +317,15 @@
     {
       increment_indent();
 
-      std::ostringstream rhs_out;
-      if (!EmitExpression(pre, rhs_out, expr->rhs())) {
-        return false;
-      }
-      make_indent(pre);
-      pre << "if (" << rhs_out.str() << ") {" << std::endl;
-      {
-        increment_indent();
-
+      if (expr->op() == ast::BinaryOp::kLogicalOr) {
         make_indent(pre);
         pre << name << " = true;" << std::endl;
 
         decrement_indent();
+        make_indent(pre);
+        pre << "} else {" << std::endl;
+        increment_indent();
       }
-      make_indent(pre);
-      pre << "}" << std::endl;
-
-      decrement_indent();
-    }
-    make_indent(pre);
-    pre << "}" << std::endl;
-
-    out << "(" << name << ")";
-    return true;
-  }
-  if (expr->op() == ast::BinaryOp::kLogicalOr) {
-    std::ostringstream lhs_out;
-    if (!EmitExpression(pre, lhs_out, expr->lhs())) {
-      return false;
-    }
-
-    auto name = generate_name(kTempNamePrefix);
-    make_indent(pre);
-    pre << "bool " << name << " = false;" << std::endl;
-    make_indent(pre);
-    pre << "if (" << lhs_out.str() << ") {" << std::endl;
-    {
-      increment_indent();
-
-      make_indent(pre);
-      pre << name << " = true;" << std::endl;
-
-      decrement_indent();
-    }
-
-    make_indent(pre);
-    pre << "} else {" << std::endl;
-    {
-      increment_indent();
 
       std::ostringstream rhs_out;
       if (!EmitExpression(pre, rhs_out, expr->rhs())) {
@@ -374,15 +335,13 @@
       pre << "if (" << rhs_out.str() << ") {" << std::endl;
       {
         increment_indent();
-
         make_indent(pre);
         pre << name << " = true;" << std::endl;
-
         decrement_indent();
       }
+
       make_indent(pre);
       pre << "}" << std::endl;
-
       decrement_indent();
     }
     make_indent(pre);