7#ifndef JLM_RVSDG_BITSTRING_SLICE_HPP
8#define JLM_RVSDG_BITSTRING_SLICE_HPP
45 return low_ + std::static_pointer_cast<const BitType>(
result(0))->nbits();
49 copy()
const override;
54 return *std::static_pointer_cast<const BitType>(
argument(0));
67 static std::optional<std::vector<Output *>>
86 static std::optional<std::vector<Output *>>
103 static std::optional<std::vector<Output *>>
116 static std::optional<std::vector<Output *>>
const Type & argument_type() const noexcept
bool operator==(const Operation &other) const noexcept override
static std::optional< std::vector< Output * > > normalizeIdempotent(const BitSliceOperation &operation, const std::vector< Output * > &operands)
static std::optional< std::vector< Output * > > narrowSlice(const BitSliceOperation &operation, const std::vector< Output * > &operands)
static std::optional< std::vector< Output * > > foldConstant(const BitSliceOperation &operation, const std::vector< Output * > &operands)
std::unique_ptr< Operation > copy() const override
static std::optional< std::vector< Output * > > distributeSlice(const BitSliceOperation &operation, const std::vector< Output * > &operands)
~BitSliceOperation() noexcept override
std::string debug_string() const override
size_t high() const noexcept
size_t low() const noexcept
const std::shared_ptr< const rvsdg::Type > & argument(size_t index) const noexcept
const std::shared_ptr< const rvsdg::Type > & result(size_t index) const noexcept
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
jlm::rvsdg::Output * bitslice(jlm::rvsdg::Output *argument, size_t low, size_t high)
Create bitslice.