chromium/v8/src/compiler/turboshaft/wasm-revec-reducer.h

// Copyright 2023 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#if !V8_ENABLE_WEBASSEMBLY
#error This header should only be included if WebAssembly is enabled.
#endif  // !V8_ENABLE_WEBASSEMBLY

#ifndef V8_COMPILER_TURBOSHAFT_WASM_REVEC_REDUCER_H_
#define V8_COMPILER_TURBOSHAFT_WASM_REVEC_REDUCER_H_

#include "src/compiler/turboshaft/assembler.h"
#include "src/compiler/turboshaft/operations.h"
#include "src/compiler/turboshaft/phase.h"
#include "src/compiler/turboshaft/use-map.h"
#include "src/compiler/wasm-graph-assembler.h"

namespace v8::internal::compiler::turboshaft {

#define SIMD256_LOADTRANSFORM_OP(V)

#define SIMD256_UNARY_SIMPLE_OP(V)

#define SIMD256_UNARY_SIGN_EXTENSION_OP(V)

#define SIMD256_BINOP_SIMPLE_OP(V)

#define SIMD256_BINOP_SIGN_EXTENSION_OP(V)

#define SIMD256_SHIFT_OP(V)

#define SIMD256_TERNARY_OP(V)

#define SIMD256_SPLAT_OP(V)

#define REDUCE_SEED_KIND(V)

#include "src/compiler/turboshaft/define-assembler-macros.inc"

class NodeGroup {};

// A PackNode consists of a fixed number of isomorphic simd128 nodes which can
// execute in parallel and convert to a 256-bit simd node later. The nodes in a
// PackNode must satisfy that they can be scheduled in the same basic block and
// are mutually independent.
class PackNode : public NON_EXPORTED_BASE(ZoneObject) {};

class ShufflePackNode : public PackNode {};

class SLPTree : public NON_EXPORTED_BASE(ZoneObject) {};

class WasmRevecAnalyzer {};

template <class Next>
class WasmRevecReducer : public UniformReducerAdapter<WasmRevecReducer, Next> {};

#include "src/compiler/turboshaft/undef-assembler-macros.inc"

}  // namespace v8::internal::compiler::turboshaft

#endif  // V8_COMPILER_TURBOSHAFT_WASM_REVEC_REDUCER_H_