5#ifndef V8_COMPILER_TURBOSHAFT_UNIFORM_REDUCER_ADAPTER_H_
6#define V8_COMPILER_TURBOSHAFT_UNIFORM_REDUCER_ADAPTER_H_
109template <
template <
typename>
typename Reducer,
typename Next>
112 template <
Opcode opcode,
typename Continuation,
typename... Args>
114 return Continuation{
this}.Reduce(
args...);
117 template <
typename Op,
typename Continuation>
119 return Continuation{
this}.ReduceInputGraph(ig_index, operation);
123 struct Reduce##op##Continuation final { \
124 explicit Reduce##op##Continuation(Next* _this) : this_(_this) {} \
126 auto ReduceInputGraph(OpIndex ig_index, const op##Op& operation) { \
127 return this_->ReduceInputGraph##op(ig_index, operation); \
129 template <typename... Args> \
130 auto Reduce(Args... args) const { \
131 return this_->Reduce##op(args...); \
135 auto ReduceInputGraph##op(OpIndex ig_index, const op##Op& operation) { \
136 return static_cast<Reducer<Next>*>(this) \
137 ->template ReduceInputGraphOperation<op##Op, \
138 Reduce##op##Continuation>( \
139 ig_index, operation); \
141 template <typename... Args> \
142 auto Reduce##op(Args... args) { \
143 return static_cast<Reducer<Next>*>(this) \
144 ->template ReduceOperation<Opcode::k##op, Reduce##op##Continuation>( \
#define REDUCE(operation)
base::Vector< const DirectHandle< Object > > args
#define TURBOSHAFT_OPERATION_LIST(V)