47 OpIndex og_index = Continuation{
this}.ReduceInputGraph(ig_index, operation);
48 if constexpr (std::is_same_v<Op, LoadRootRegisterOp>) {
53 if (std::is_same_v<Op, ConstantOp>) {
61 if (!og_index.
valid())
return og_index;
65 if (operation.IsBlockTerminator())
return og_index;
67 auto reps = operation.outputs_rep();
69 if (reps.size() == 1) {
70 Type type =
__ GetInputGraphType(ig_index);
91 auto GenerateBuiltinCall =
98 actual_value_indices.push_back(
__ HeapConstant(expected_type));
99 actual_value_indices.push_back(
__ SmiConstant(op_id));
103 {actual_value_indices.data(), actual_value_indices.size()},
107 if (
v8_flags.turboshaft_trace_typing) {
108 PrintF(
"Inserted assert for %3d:%-40s (%s)\n", original_value.id(),
110 type.ToString().c_str());
115 switch (rep.
value()) {
119 GenerateBuiltinCall(Builtin::kCheckTurboshaftWord32Type, value,
120 std::move(actual_value_indices), type);
126 __ TruncateWord64ToWord32(
__ Word64ShiftRightLogical(value, 32));
127 OpIndex value_low =
__ TruncateWord64ToWord32(value);
130 GenerateBuiltinCall(Builtin::kCheckTurboshaftWord64Type, value,
131 std::move(actual_value_indices), type);
137 GenerateBuiltinCall(Builtin::kCheckTurboshaftFloat32Type, value,
138 std::move(actual_value_indices), type);
144 GenerateBuiltinCall(Builtin::kCheckTurboshaftFloat64Type, value,
145 std::move(actual_value_indices), type);