Import Tint changes from Dawn

Changes:
  - f7055d7b2bf881a73601273d78470c0cb7fefba1 [tint][ir] Rename Unary::Kind to UnaryOp by Ben Clayton <bclayton@google.com>
GitOrigin-RevId: f7055d7b2bf881a73601273d78470c0cb7fefba1
Change-Id: I109ae9b58d4a9a879fb161bdf1a9a82783c2765c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/157400
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/core/ir/builder.h b/src/tint/lang/core/ir/builder.h
index c122ca7..6020902 100644
--- a/src/tint/lang/core/ir/builder.h
+++ b/src/tint/lang/core/ir/builder.h
@@ -606,15 +606,15 @@
         return Binary(BinaryOp::kModulo, type, std::forward<LHS>(lhs), std::forward<RHS>(rhs));
     }
 
-    /// Creates an op for `kind val`
-    /// @param kind the kind of operation
+    /// Creates an op for `op val`
+    /// @param op the unary operator
     /// @param type the result type of the binary expression
     /// @param val the value of the operation
     /// @returns the operation
     template <typename VAL>
-    ir::Unary* Unary(enum Unary::Kind kind, const core::type::Type* type, VAL&& val) {
+    ir::Unary* Unary(UnaryOp op, const core::type::Type* type, VAL&& val) {
         auto* value = Value(std::forward<VAL>(val));
-        return Append(ir.instructions.Create<ir::Unary>(InstructionResult(type), kind, value));
+        return Append(ir.instructions.Create<ir::Unary>(InstructionResult(type), op, value));
     }
 
     /// Creates a Complement operation
@@ -623,7 +623,7 @@
     /// @returns the operation
     template <typename VAL>
     ir::Unary* Complement(const core::type::Type* type, VAL&& val) {
-        return Unary(ir::Unary::Kind::kComplement, type, std::forward<VAL>(val));
+        return Unary(ir::UnaryOp::kComplement, type, std::forward<VAL>(val));
     }
 
     /// Creates a Negation operation
@@ -632,7 +632,7 @@
     /// @returns the operation
     template <typename VAL>
     ir::Unary* Negation(const core::type::Type* type, VAL&& val) {
-        return Unary(ir::Unary::Kind::kNegation, type, std::forward<VAL>(val));
+        return Unary(ir::UnaryOp::kNegation, type, std::forward<VAL>(val));
     }
 
     /// Creates a Not operation
diff --git a/src/tint/lang/core/ir/disassembler.cc b/src/tint/lang/core/ir/disassembler.cc
index 60166e6..09d5c75 100644
--- a/src/tint/lang/core/ir/disassembler.cc
+++ b/src/tint/lang/core/ir/disassembler.cc
@@ -864,11 +864,11 @@
     SourceMarker sm(this);
     EmitValueWithType(u);
     out_ << " = ";
-    switch (u->Kind()) {
-        case Unary::Kind::kComplement:
+    switch (u->Op()) {
+        case UnaryOp::kComplement:
             out_ << "complement";
             break;
-        case Unary::Kind::kNegation:
+        case UnaryOp::kNegation:
             out_ << "negation";
             break;
     }
diff --git a/src/tint/lang/core/ir/unary.cc b/src/tint/lang/core/ir/unary.cc
index bbf58e1..2b81d7b 100644
--- a/src/tint/lang/core/ir/unary.cc
+++ b/src/tint/lang/core/ir/unary.cc
@@ -34,7 +34,7 @@
 
 namespace tint::core::ir {
 
-Unary::Unary(InstructionResult* result, enum Kind k, Value* val) : kind_(k) {
+Unary::Unary(InstructionResult* result, UnaryOp op, Value* val) : op_(op) {
     AddOperand(Unary::kValueOperandOffset, val);
     AddResult(result);
 }
@@ -44,7 +44,7 @@
 Unary* Unary::Clone(CloneContext& ctx) {
     auto* new_result = ctx.Clone(Result());
     auto* val = ctx.Remap(Val());
-    return ctx.ir.instructions.Create<Unary>(new_result, kind_, val);
+    return ctx.ir.instructions.Create<Unary>(new_result, op_, val);
 }
 
 }  // namespace tint::core::ir
diff --git a/src/tint/lang/core/ir/unary.h b/src/tint/lang/core/ir/unary.h
index 8ef3f5c..c25f5fc 100644
--- a/src/tint/lang/core/ir/unary.h
+++ b/src/tint/lang/core/ir/unary.h
@@ -35,23 +35,23 @@
 
 namespace tint::core::ir {
 
+/// A unary operator.
+enum class UnaryOp {
+    kComplement,
+    kNegation,
+};
+
 /// A unary instruction in the IR.
 class Unary final : public Castable<Unary, OperandInstruction<1, 1>> {
   public:
     /// The offset in Operands() for the value
     static constexpr size_t kValueOperandOffset = 0;
 
-    /// The kind of instruction.
-    enum class Kind {
-        kComplement,
-        kNegation,
-    };
-
     /// Constructor
     /// @param result the result value
-    /// @param kind the kind of unary instruction
+    /// @param op the unary operator
     /// @param val the input value for the instruction
-    Unary(InstructionResult* result, enum Kind kind, Value* val);
+    Unary(InstructionResult* result, UnaryOp op, Value* val);
     ~Unary() override;
 
     /// @copydoc Instruction::Clone()
@@ -60,14 +60,14 @@
     /// @returns the value for the instruction
     Value* Val() { return operands_[kValueOperandOffset]; }
 
-    /// @returns the kind of unary instruction
-    enum Kind Kind() { return kind_; }
+    /// @returns the unary operator
+    UnaryOp Op() { return op_; }
 
     /// @returns the friendly name for the instruction
     std::string FriendlyName() override { return "unary"; }
 
   private:
-    enum Kind kind_;
+    UnaryOp op_;
 };
 
 }  // namespace tint::core::ir
diff --git a/src/tint/lang/core/ir/unary_test.cc b/src/tint/lang/core/ir/unary_test.cc
index 770866d..bbdccdd 100644
--- a/src/tint/lang/core/ir/unary_test.cc
+++ b/src/tint/lang/core/ir/unary_test.cc
@@ -44,7 +44,7 @@
     auto* inst = b.Complement(mod.Types().i32(), 4_i);
 
     ASSERT_TRUE(inst->Is<Unary>());
-    EXPECT_EQ(inst->Kind(), Unary::Kind::kComplement);
+    EXPECT_EQ(inst->Op(), UnaryOp::kComplement);
 
     ASSERT_TRUE(inst->Val()->Is<Constant>());
     auto lhs = inst->Val()->As<Constant>()->Value();
@@ -56,7 +56,7 @@
     auto* inst = b.Negation(mod.Types().i32(), 4_i);
 
     ASSERT_TRUE(inst->Is<Unary>());
-    EXPECT_EQ(inst->Kind(), Unary::Kind::kNegation);
+    EXPECT_EQ(inst->Op(), UnaryOp::kNegation);
 
     ASSERT_TRUE(inst->Val()->Is<Constant>());
     auto lhs = inst->Val()->As<Constant>()->Value();
@@ -67,7 +67,7 @@
 TEST_F(IR_UnaryTest, Usage) {
     auto* inst = b.Negation(mod.Types().i32(), 4_i);
 
-    EXPECT_EQ(inst->Kind(), Unary::Kind::kNegation);
+    EXPECT_EQ(inst->Op(), UnaryOp::kNegation);
 
     ASSERT_NE(inst->Val(), nullptr);
     EXPECT_THAT(inst->Val()->Usages(), testing::UnorderedElementsAre(Usage{inst, 0u}));
@@ -99,7 +99,7 @@
     EXPECT_NE(nullptr, new_inst->Result());
     EXPECT_NE(inst->Result(), new_inst->Result());
 
-    EXPECT_EQ(Unary::Kind::kComplement, new_inst->Kind());
+    EXPECT_EQ(UnaryOp::kComplement, new_inst->Op());
 
     auto new_val = new_inst->Val()->As<Constant>()->Value();
     ASSERT_TRUE(new_val->Is<core::constant::Scalar<i32>>());
diff --git a/src/tint/lang/core/ir/validator_test.cc b/src/tint/lang/core/ir/validator_test.cc
index 2209af9..d9f6abf 100644
--- a/src/tint/lang/core/ir/validator_test.cc
+++ b/src/tint/lang/core/ir/validator_test.cc
@@ -1332,7 +1332,7 @@
 
 TEST_F(IR_ValidatorTest, Unary_Result_Nullptr) {
     auto* bin =
-        mod.instructions.Create<ir::Unary>(nullptr, ir::Unary::Kind::kNegation, b.Constant(2_i));
+        mod.instructions.Create<ir::Unary>(nullptr, ir::UnaryOp::kNegation, b.Constant(2_i));
 
     auto* f = b.Function("my_func", ty.void_());
 
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 69fd6a8..0bd3b7a 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -1761,11 +1761,11 @@
     auto id = Value(unary);
     auto* ty = unary->Result()->Type();
     spv::Op op = spv::Op::Max;
-    switch (unary->Kind()) {
-        case core::ir::Unary::Kind::kComplement:
+    switch (unary->Op()) {
+        case core::ir::UnaryOp::kComplement:
             op = spv::Op::OpNot;
             break;
-        case core::ir::Unary::Kind::kNegation:
+        case core::ir::UnaryOp::kNegation:
             if (ty->is_float_scalar_or_vector()) {
                 op = spv::Op::OpFNegate;
             } else if (ty->is_signed_integer_scalar_or_vector()) {
diff --git a/src/tint/lang/spirv/writer/unary_test.cc b/src/tint/lang/spirv/writer/unary_test.cc
index f88b25d..72fff71 100644
--- a/src/tint/lang/spirv/writer/unary_test.cc
+++ b/src/tint/lang/spirv/writer/unary_test.cc
@@ -39,7 +39,7 @@
     /// The element type to test.
     TestElementType type;
     /// The unary operation.
-    enum core::ir::Unary::Kind kind;
+    enum core::ir::UnaryOp op;
     /// The expected SPIR-V instruction.
     std::string spirv_inst;
     /// The expected SPIR-V result type name.
@@ -54,7 +54,7 @@
     auto* func = b.Function("foo", ty.void_());
     func->SetParams({arg});
     b.Append(func->Block(), [&] {
-        auto* result = b.Unary(params.kind, MakeScalarType(params.type), arg);
+        auto* result = b.Unary(params.op, MakeScalarType(params.type), arg);
         b.Return(func);
         mod.SetName(result, "result");
     });
@@ -69,7 +69,7 @@
     auto* func = b.Function("foo", ty.void_());
     func->SetParams({arg});
     b.Append(func->Block(), [&] {
-        auto* result = b.Unary(params.kind, MakeVectorType(params.type), arg);
+        auto* result = b.Unary(params.op, MakeVectorType(params.type), arg);
         b.Return(func);
         mod.SetName(result, "result");
     });
@@ -80,11 +80,11 @@
 INSTANTIATE_TEST_SUITE_P(
     SpirvWriterTest_Unary,
     Arithmetic,
-    testing::Values(UnaryTestCase{kI32, core::ir::Unary::Kind::kComplement, "OpNot", "int"},
-                    UnaryTestCase{kU32, core::ir::Unary::Kind::kComplement, "OpNot", "uint"},
-                    UnaryTestCase{kI32, core::ir::Unary::Kind::kNegation, "OpSNegate", "int"},
-                    UnaryTestCase{kF32, core::ir::Unary::Kind::kNegation, "OpFNegate", "float"},
-                    UnaryTestCase{kF16, core::ir::Unary::Kind::kNegation, "OpFNegate", "half"}));
+    testing::Values(UnaryTestCase{kI32, core::ir::UnaryOp::kComplement, "OpNot", "int"},
+                    UnaryTestCase{kU32, core::ir::UnaryOp::kComplement, "OpNot", "uint"},
+                    UnaryTestCase{kI32, core::ir::UnaryOp::kNegation, "OpSNegate", "int"},
+                    UnaryTestCase{kF32, core::ir::UnaryOp::kNegation, "OpFNegate", "float"},
+                    UnaryTestCase{kF16, core::ir::UnaryOp::kNegation, "OpFNegate", "half"}));
 
 }  // namespace
 }  // namespace tint::spirv::writer
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
index df929b2..5dc9a62 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
@@ -653,11 +653,11 @@
 
     void Unary(core::ir::Unary* u) {
         const ast::Expression* expr = nullptr;
-        switch (u->Kind()) {
-            case core::ir::Unary::Kind::kComplement:
+        switch (u->Op()) {
+            case core::ir::UnaryOp::kComplement:
                 expr = b.Complement(Expr(u->Val()));
                 break;
-            case core::ir::Unary::Kind::kNegation:
+            case core::ir::UnaryOp::kNegation:
                 expr = b.Negation(Expr(u->Val()));
                 break;
         }