5#ifndef V8_COMPILER_TURBOSHAFT_REPRESENTATIONS_H_
6#define V8_COMPILER_TURBOSHAFT_REPRESENTATIONS_H_
18class WordRepresentation;
19class FloatRepresentation;
24 enum class Enum : uint8_t {
142 switch (this->
value()) {
144 return std::numeric_limits<uint32_t>::max();
146 return std::numeric_limits<uint64_t>::max();
159 switch (this->
value()) {
182 switch (this->
value()) {
355 return a.value() != b.
value();
359 return static_cast<size_t>(rep.
value());
364 if (*
this == dst_rep) {
367 switch (dst_rep.
value()) {
376 if (graph_created_from_turbofan &&
418 T,
std::enable_if_t<std::is_base_of_v<MaybeRegisterRepresentation, T>>> {
419 static constexpr uint64_t max_value = 8;
420 static constexpr uint64_t
encode(T rep) {
421 const uint64_t value =
static_cast<uint64_t
>(rep.value());
459 switch (this->
value()) {
461 return std::numeric_limits<uint32_t>::max();
463 return std::numeric_limits<uint64_t>::max();
467 switch (this->
value()) {
469 return std::numeric_limits<int32_t>::min();
471 return std::numeric_limits<int64_t>::min();
475 switch (this->
value()) {
477 return std::numeric_limits<int32_t>::max();
479 return std::numeric_limits<int64_t>::max();
576 if constexpr (
Is64()) {
725 switch (repr.
value()) {
750#ifdef V8_COMPRESS_POINTERS
808 switch (type.representation()) {
810 return type.IsSigned() ?
Int8() :
Uint8();
940 return a.value() == b.
value();
944 return a.value() != b.
value();
948 return static_cast<size_t>(rep.
value());
static constexpr MachineType Simd256()
static constexpr MachineType Float16()
static constexpr MachineType Float64()
static constexpr MachineType Uint8()
static constexpr MachineType Int32()
static constexpr MachineType Simd128()
static constexpr MachineType AnyTagged()
static constexpr MachineType Uint64()
static constexpr MachineType Uint32()
static MachineType TypeForCType(const CTypeInfo &type)
static constexpr MachineType SandboxedPointer()
static constexpr MachineType TaggedSigned()
static constexpr MachineType IndirectPointer()
static constexpr MachineType Uint16()
static constexpr MachineType Int16()
static constexpr MachineType Float32()
static constexpr MachineType Int64()
static constexpr MachineType TaggedPointer()
static constexpr MachineType ProtectedPointer()
static constexpr MachineType Int8()
FloatRepresentation()=default
constexpr FloatRepresentation(Enum value)
constexpr FloatRepresentation(RegisterRepresentation rep)
static constexpr FloatRepresentation Float32()
constexpr Enum value() const
static constexpr FloatRepresentation Float64()
static constexpr MaybeRegisterRepresentation WordPtr()
static constexpr MaybeRegisterRepresentation Float64()
static constexpr Enum kInvalid
MachineRepresentation machine_representation() const
constexpr MaybeRegisterRepresentation(Enum value)
constexpr bool IsWord() const
static constexpr MaybeRegisterRepresentation None()
static constexpr MaybeRegisterRepresentation Compressed()
uint64_t MaxUnsignedValue() const
constexpr Enum value() const
static constexpr MaybeRegisterRepresentation Word64()
static constexpr MaybeRegisterRepresentation Float32()
static constexpr MaybeRegisterRepresentation Tagged()
constexpr bool IsTaggedOrCompressed() const
static constexpr MaybeRegisterRepresentation Word32()
static constexpr MaybeRegisterRepresentation Simd128()
constexpr uint16_t bit_width() const
constexpr MaybeRegisterRepresentation()
constexpr bool is_valid() const
constexpr bool IsFloat() const
static constexpr MaybeRegisterRepresentation Simd256()
static constexpr MemoryRepresentation FromMachineRepresentation(MachineRepresentation rep)
constexpr MemoryRepresentation(Enum value)
@ kUncompressedTaggedPointer
@ kUncompressedTaggedSigned
RegisterRepresentation ToRegisterRepresentation() const
static MemoryRepresentation FromMachineType(MachineType type)
static constexpr MemoryRepresentation AnyTagged()
constexpr bool is_valid() const
static constexpr MemoryRepresentation Int8()
static MemoryRepresentation FromRegisterRepresentation(RegisterRepresentation repr, bool is_signed)
static constexpr MemoryRepresentation Float16()
bool IsCompressibleTagged() const
static constexpr MemoryRepresentation AnyUncompressedTagged()
constexpr Enum value() const
static constexpr MemoryRepresentation UncompressedTaggedPointer()
static constexpr MemoryRepresentation Uint32()
static constexpr MemoryRepresentation TaggedSigned()
RegisterRepresentation ToRegisterRepresentationForStore() const
static constexpr MemoryRepresentation Int32()
static constexpr MemoryRepresentation Int64()
static constexpr MemoryRepresentation Simd128()
static constexpr MemoryRepresentation SandboxedPointer()
static constexpr Enum kInvalid
constexpr uint8_t SizeInBytesLog2() const
static constexpr MemoryRepresentation Uint16()
static constexpr MemoryRepresentation ProtectedPointer()
constexpr uint8_t SizeInBytes() const
static constexpr MemoryRepresentation TaggedPointer()
static constexpr MemoryRepresentation UintPtr()
static constexpr MemoryRepresentation Uint8()
static constexpr MemoryRepresentation Simd256()
static constexpr MemoryRepresentation Int16()
static constexpr MemoryRepresentation IndirectPointer()
static constexpr MemoryRepresentation Uint64()
MachineType ToMachineType() const
static constexpr MemoryRepresentation Float32()
constexpr MemoryRepresentation()
static constexpr MemoryRepresentation UncompressedTaggedSigned()
static constexpr MemoryRepresentation Float64()
RegisterRepresentation()=default
static constexpr RegisterRepresentation FromMachineType(MachineType type)
constexpr Enum value() const
static constexpr RegisterRepresentation Compressed()
static constexpr RegisterRepresentation FromMachineRepresentation(MachineRepresentation rep)
static constexpr RegisterRepresentation Simd128()
static constexpr RegisterRepresentation Word32()
static constexpr RegisterRepresentation Float64()
constexpr RegisterRepresentation MapTaggedToWord() const
static constexpr RegisterRepresentation WordPtr()
static constexpr RegisterRepresentation Float32()
static constexpr RegisterRepresentation FromCTypeInfo(CTypeInfo t, CFunctionInfo::Int64Representation int64_repr)
static constexpr RegisterRepresentation Simd256()
constexpr bool AllowImplicitRepresentationChangeTo(RegisterRepresentation dst_rep, bool graph_created_from_turbofan) const
static constexpr RegisterRepresentation Word64()
constexpr RegisterRepresentation(Enum value)
constexpr RegisterRepresentation(MaybeRegisterRepresentation rep)
static constexpr RegisterRepresentation Tagged()
WordRepresentation()=default
constexpr WordRepresentation(RegisterRepresentation rep)
static constexpr WordRepresentation Word32()
constexpr int64_t MaxSignedValue() const
constexpr Enum value() const
constexpr WordRepresentation(Enum value)
constexpr int64_t MinSignedValue() const
static constexpr WordRepresentation WordPtr()
static constexpr WordRepresentation Word64()
constexpr uint64_t MaxUnsignedValue() const
#define V8_MAP_PACKING_BOOL
#define COMPRESS_POINTERS_BOOL
ZoneVector< RpoNumber > & result
std::ostream & operator<<(std::ostream &os, PaddingSpace padding)
bool operator==(const ControlState &lhs, const ControlState &rhs)
any_of(const Args &...) -> any_of< Args... >
V8_INLINE size_t hash_value(OpIndex op)
bool operator!=(const ControlState &lhs, const ControlState &rhs)
constexpr int kTaggedSize
constexpr int kSystemPointerSizeLog2
constexpr int kSystemPointerSize
constexpr int kTaggedSizeLog2
bool is_signed(Condition cond)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE
static constexpr uint64_t encode(T rep)