5#ifndef V8_COMPILER_TURBOSHAFT_EXPLICIT_TRUNCATION_REDUCER_H_
6#define V8_COMPILER_TURBOSHAFT_EXPLICIT_TRUNCATION_REDUCER_H_
26 template <
Opcode opcode,
typename Continuation,
typename... Ts>
36 bool has_truncation =
false;
37 for (
size_t i = 0;
i < reps.
size(); ++
i) {
40 Asm().input_graph().Get(inputs[
i]).outputs_rep();
45 if (actual_inputs_rep.
size() == 1 &&
47 has_truncation =
true;
56 if (!has_truncation) {
58 return Continuation{
this}.Reduce(
args...);
62 return operation->Explode(
64 return Continuation{
this}.Reduce(
args...);
constexpr size_t size() const
base::SmallVector< OperationStorageSlot, 32 > storage_
OpIndex ReduceOperation(Ts... args)
ZoneVector< MaybeRegisterRepresentation > inputs_rep_storage_
static constexpr MaybeRegisterRepresentation Word32()
static constexpr RegisterRepresentation Word32()
static constexpr RegisterRepresentation Word64()
#define TURBOSHAFT_REDUCER_BOILERPLATE(Name)
base::Vector< const DirectHandle< Object > > args
Op * CreateOperation(base::SmallVector< OperationStorageSlot, 32 > &storage, Args... args)