5#ifndef V8_COMPILER_MACHINE_OPERATOR_H_
6#define V8_COMPILER_MACHINE_OPERATOR_H_
24struct MachineOperatorGlobalCache;
193 :
public std::pair<StoreRepresentation, StoreRepresentation> {
300 typename = std::enable_if_t<simd_size ==
kSimd128Size ||
319template <const
int simd_size>
326template <const
int simd_size>
329 return !(lhs == rhs);
332template <const
int simd_size>
337template <const
int simd_size>
340 for (
int i = 0;
i < simd_size;
i++) {
341 const char*
separator = (
i < simd_size - 1) ?
"," :
"";
342 os << static_cast<uint32_t>(p[
i]) <<
separator;
383 kFloat32RoundDown = 1u << 0,
384 kFloat64RoundDown = 1u << 1,
385 kFloat32RoundUp = 1u << 2,
386 kFloat64RoundUp = 1u << 3,
387 kFloat32RoundTruncate = 1u << 4,
388 kFloat64RoundTruncate = 1u << 5,
389 kFloat32RoundTiesEven = 1u << 6,
390 kFloat64RoundTiesEven = 1u << 7,
391 kFloat64RoundTiesAway = 1u << 8,
392 kInt32DivIsSafe = 1u << 9,
393 kUint32DivIsSafe = 1u << 10,
394 kWord32ShiftIsSafe = 1u << 11,
395 kWord32Ctz = 1u << 12,
396 kWord64Ctz = 1u << 13,
397 kWord64CtzLowerable = 1u << 14,
398 kWord32Popcnt = 1u << 15,
399 kWord64Popcnt = 1u << 16,
400 kWord32ReverseBits = 1u << 17,
401 kWord64ReverseBits = 1u << 18,
402 kFloat32Select = 1u << 19,
403 kFloat64Select = 1u << 20,
404 kInt32AbsWithOverflow = 1u << 21,
405 kInt64AbsWithOverflow = 1u << 22,
406 kWord32Rol = 1u << 23,
407 kWord64Rol = 1u << 24,
408 kWord64RolLowerable = 1u << 25,
409 kSatConversionIsSafe = 1u << 26,
410 kWord32Select = 1u << 27,
411 kWord64Select = 1u << 28,
412 kLoadStorePairs = 1u << 29,
414 kFloat16RawBitsConversion = 1u << 31,
416 kFloat32RoundDown | kFloat64RoundDown | kFloat32RoundUp |
417 kFloat64RoundUp | kFloat32RoundTruncate | kFloat64RoundTruncate |
418 kFloat64RoundTiesAway | kFloat32RoundTiesEven | kFloat64RoundTiesEven |
419 kWord32Ctz | kWord64Ctz | kWord64CtzLowerable | kWord32Popcnt |
420 kWord64Popcnt | kWord32ReverseBits | kWord64ReverseBits |
421 kInt32AbsWithOverflow | kInt64AbsWithOverflow | kWord32Rol |
422 kWord64Rol | kWord64RolLowerable | kSatConversionIsSafe |
423 kFloat32Select | kFloat64Select | kWord32Select | kWord64Select |
424 kLoadStorePairs |
kFloat16 | kFloat16RawBitsConversion
433 return IsUnalignedSupported(unalignedLoadUnsupportedTypes_, rep);
437 return IsUnalignedSupported(unalignedStoreUnsupportedTypes_, rep);
450 unalignedStoreUnsupportedTypes);
460 : unalignedSupport_(unalignedAccessSupport),
461 unalignedLoadUnsupportedTypes_(unalignedLoadUnsupportedTypes),
462 unalignedStoreUnsupportedTypes_(unalignedStoreUnsupportedTypes) {}
467 DCHECK_NE(MachineRepresentation::kWord8, rep);
468 switch (unalignedSupport_) {
487 Flags supportedOperators = kNoFlags,
489 AlignmentRequirements::FullUnalignedAccessSupport());
494 const Operator* Comment(
const char* msg);
506 return Word32Sar(ShiftKind::kShiftOutZeros);
536 return !
v8_flags.enable_unconditional_write_barriers &&
537 (
flags_ & kLoadStorePairs);
548 return Word64Sar(ShiftKind::kShiftOutZeros);
611 const Operator* BitcastTaggedToWord();
623 const Operator* BitcastMaybeObjectToWord();
626 const Operator* BitcastWordToTagged();
800#if V8_ENABLE_WEBASSEMBLY
810 const Operator* F64x2ExtractLane(int32_t);
813 const Operator* F64x2ReplaceLane(int32_t);
826 const Operator* F64x2ConvertLowI32x4S();
827 const Operator* F64x2ConvertLowI32x4U();
828 const Operator* F64x2PromoteLowF32x4();
831 const Operator* F32x4ExtractLane(int32_t);
832 const Operator* F32x4ReplaceLane(int32_t);
833 const Operator* F32x4SConvertI32x4();
834 const Operator* F32x4UConvertI32x4();
856 const Operator* F32x4DemoteF64x2Zero();
859 const Operator* F16x8ExtractLane(int32_t);
860 const Operator* F16x8ReplaceLane(int32_t);
880 const Operator* F16x8SConvertI16x8();
881 const Operator* F16x8UConvertI16x8();
882 const Operator* I16x8SConvertF16x8();
883 const Operator* I16x8UConvertF16x8();
884 const Operator* F32x4PromoteLowF16x8();
885 const Operator* F16x8DemoteF32x4Zero();
886 const Operator* F16x8DemoteF64x2Zero();
891 const Operator* I64x2SplatI32Pair();
892 const Operator* I64x2ExtractLane(int32_t);
893 const Operator* I64x2ReplaceLane(int32_t);
894 const Operator* I64x2ReplaceLaneI32Pair(int32_t);
897 const Operator* I64x2SConvertI32x4Low();
898 const Operator* I64x2SConvertI32x4High();
899 const Operator* I64x2UConvertI32x4Low();
900 const Operator* I64x2UConvertI32x4High();
912 const Operator* I64x2ExtMulLowI32x4S();
913 const Operator* I64x2ExtMulHighI32x4S();
914 const Operator* I64x2ExtMulLowI32x4U();
915 const Operator* I64x2ExtMulHighI32x4U();
918 const Operator* I32x4ExtractLane(int32_t);
919 const Operator* I32x4ReplaceLane(int32_t);
920 const Operator* I32x4SConvertF32x4();
921 const Operator* I32x4SConvertI16x8Low();
922 const Operator* I32x4SConvertI16x8High();
936 const Operator* I32x4UConvertF32x4();
937 const Operator* I32x4UConvertI16x8Low();
938 const Operator* I32x4UConvertI16x8High();
947 const Operator* I32x4ExtMulLowI16x8S();
948 const Operator* I32x4ExtMulHighI16x8S();
949 const Operator* I32x4ExtMulLowI16x8U();
950 const Operator* I32x4ExtMulHighI16x8U();
951 const Operator* I32x4ExtAddPairwiseI16x8S();
952 const Operator* I32x4ExtAddPairwiseI16x8U();
953 const Operator* I32x4TruncSatF64x2SZero();
954 const Operator* I32x4TruncSatF64x2UZero();
957 const Operator* I16x8ExtractLaneU(int32_t);
958 const Operator* I16x8ExtractLaneS(int32_t);
959 const Operator* I16x8ReplaceLane(int32_t);
960 const Operator* I16x8SConvertI8x16Low();
961 const Operator* I16x8SConvertI8x16High();
965 const Operator* I16x8SConvertI32x4();
978 const Operator* I16x8UConvertI8x16Low();
979 const Operator* I16x8UConvertI8x16High();
981 const Operator* I16x8UConvertI32x4();
988 const Operator* I16x8RoundingAverageU();
992 const Operator* I16x8ExtMulLowI8x16S();
993 const Operator* I16x8ExtMulHighI8x16S();
994 const Operator* I16x8ExtMulLowI8x16U();
995 const Operator* I16x8ExtMulHighI8x16U();
996 const Operator* I16x8ExtAddPairwiseI8x16S();
997 const Operator* I16x8ExtAddPairwiseI8x16U();
999 const Operator* I8x16ExtractLaneU(int32_t);
1000 const Operator* I8x16ExtractLaneS(int32_t);
1001 const Operator* I8x16ReplaceLane(int32_t);
1005 const Operator* I8x16SConvertI16x8();
1017 const Operator* I8x16UConvertI16x8();
1024 const Operator* I8x16RoundingAverageU();
1028 const Operator* S128Const(
const uint8_t value[16]);
1038 const Operator* I8x16Swizzle(
bool relaxed =
false);
1040 const Operator* I8x16RelaxedSwizzle() {
return I8x16Swizzle(
true); }
1041 const Operator* I8x16Shuffle(
const uint8_t shuffle[16]);
1050 const Operator* I8x16RelaxedLaneSelect();
1051 const Operator* I16x8RelaxedLaneSelect();
1052 const Operator* I32x4RelaxedLaneSelect();
1053 const Operator* I64x2RelaxedLaneSelect();
1058 const Operator* I32x4RelaxedTruncF32x4S();
1059 const Operator* I32x4RelaxedTruncF32x4U();
1060 const Operator* I32x4RelaxedTruncF64x2SZero();
1061 const Operator* I32x4RelaxedTruncF64x2UZero();
1062 const Operator* I16x8RelaxedQ15MulRS();
1063 const Operator* I16x8DotI8x16I7x16S();
1064 const Operator* I32x4DotI8x16I7x16AddS();
1148 const Operator* I32x8SConvertF32x8();
1149 const Operator* I32x8UConvertF32x8();
1150 const Operator* F64x4ConvertI32x4S();
1151 const Operator* F32x8SConvertI32x8();
1152 const Operator* F32x8UConvertI32x8();
1153 const Operator* F32x4DemoteF64x4();
1154 const Operator* I64x4SConvertI32x4();
1155 const Operator* I64x4UConvertI32x4();
1156 const Operator* I32x8SConvertI16x8();
1157 const Operator* I32x8UConvertI16x8();
1158 const Operator* I16x16SConvertI8x16();
1159 const Operator* I16x16UConvertI8x16();
1160 const Operator* I16x16SConvertI32x8();
1161 const Operator* I16x16UConvertI32x8();
1162 const Operator* I8x32SConvertI16x16();
1163 const Operator* I8x32UConvertI16x16();
1179 const Operator* I16x16RoundingAverageU();
1180 const Operator* I8x32RoundingAverageU();
1181 const Operator* I64x4ExtMulI32x4S();
1182 const Operator* I64x4ExtMulI32x4U();
1183 const Operator* I32x8ExtMulI16x8S();
1184 const Operator* I32x8ExtMulI16x8U();
1185 const Operator* I16x16ExtMulI8x16S();
1186 const Operator* I16x16ExtMulI8x16U();
1187 const Operator* I32x8ExtAddPairwiseI16x16S();
1188 const Operator* I32x8ExtAddPairwiseI16x16U();
1189 const Operator* I16x16ExtAddPairwiseI8x32S();
1190 const Operator* I16x16ExtAddPairwiseI8x32U();
1191 const Operator* ExtractF128(int32_t lane_index);
1200 const Operator* I8x32Shuffle(
const uint8_t shuffle[32]);
1202 const Operator* S256Const(
const uint8_t value[32]);
1215 const Operator* I64x4RelaxedLaneSelect();
1216 const Operator* I32x8RelaxedLaneSelect();
1217 const Operator* I16x16RelaxedLaneSelect();
1218 const Operator* I8x32RelaxedLaneSelect();
1219 const Operator* I32x8DotI8x32I7x32AddS();
1220 const Operator* I16x16DotI8x32I7x32S();
1225 const Operator* I32x8RelaxedTruncF32x8S();
1226 const Operator* I32x8RelaxedTruncF32x8U();
1241 const Operator* TraceInstruction(uint32_t markid);
1263 const Operator* StackSlot(
int size,
int alignment = 0,
1264 bool is_tagged =
false);
1276#if V8_ENABLE_WEBASSEMBLY
1277 const Operator* LoadStackPointer();
1333 const Operator* Word32AtomicPairAdd();
1335 const Operator* Word32AtomicPairSub();
1337 const Operator* Word32AtomicPairAnd();
1339 const Operator* Word32AtomicPairOr();
1341 const Operator* Word32AtomicPairXor();
1343 const Operator* Word32AtomicPairExchange();
1346 const Operator* Word32AtomicPairCompareExchange();
1349 bool Is32()
const {
return word() == MachineRepresentation::kWord32; }
1350 bool Is64()
const {
return word() == MachineRepresentation::kWord64; }
1354 return alignment_requirements_.IsUnalignedLoadSupported(rep);
1358 return alignment_requirements_.IsUnalignedStoreSupported(rep);
1363#define PSEUDO_OP_LIST(V) \
1378 V(Int, LessThanOrEqual) \
1382#define PSEUDO_OP(Prefix, Suffix) \
1383 const Operator* Prefix##Suffix() { \
1384 return Is32() ? Prefix##32##Suffix() : Prefix##64##Suffix(); \
1388#undef PSEUDO_OP_LIST
1391 return Is32() ? Word32Sar(
kind) : Word64Sar(
kind);
1394 return WordSar(ShiftKind::kShiftOutZeros);
#define DEFINE_OPERATORS_FOR_FLAGS(Type)
constexpr bool contains(E element) const
MemoryAccessKind kind() const
LoadRepresentation representation() const
AtomicLoadParameters(LoadRepresentation representation, AtomicMemoryOrder order, MemoryAccessKind kind=MemoryAccessKind::kNormal)
AtomicMemoryOrder order() const
LoadRepresentation representation_
MemoryAccessKind kind() const
AtomicOpParameters(MachineType type, MemoryAccessKind kind=MemoryAccessKind::kNormal)
StoreRepresentation store_representation_
StoreRepresentation store_representation() const
AtomicStoreParameters(MachineRepresentation representation, WriteBarrierKind write_barrier_kind, AtomicMemoryOrder order, MemoryAccessKind kind=MemoryAccessKind::kNormal)
MachineRepresentation representation() const
AtomicMemoryOrder order() const
MemoryAccessKind kind() const
WriteBarrierKind write_barrier_kind() const
const base::EnumSet< MachineRepresentation > unalignedStoreUnsupportedTypes_
const AlignmentRequirements::UnalignedAccessSupport unalignedSupport_
bool IsUnalignedLoadSupported(MachineRepresentation rep) const
const base::EnumSet< MachineRepresentation > unalignedLoadUnsupportedTypes_
static AlignmentRequirements SomeUnalignedAccessUnsupported(base::EnumSet< MachineRepresentation > unalignedLoadUnsupportedTypes, base::EnumSet< MachineRepresentation > unalignedStoreUnsupportedTypes)
static AlignmentRequirements NoUnalignedAccessSupport()
bool IsUnalignedSupported(base::EnumSet< MachineRepresentation > unsupported, MachineRepresentation rep) const
AlignmentRequirements(AlignmentRequirements::UnalignedAccessSupport unalignedAccessSupport, base::EnumSet< MachineRepresentation > unalignedLoadUnsupportedTypes=base::EnumSet< MachineRepresentation >(), base::EnumSet< MachineRepresentation > unalignedStoreUnsupportedTypes=base::EnumSet< MachineRepresentation >())
bool IsUnalignedStoreSupported(MachineRepresentation rep) const
static AlignmentRequirements FullUnalignedAccessSupport()
const Operator * RoundUint32ToFloat32()
const Operator * Float64ExtractLowWord32()
bool Word32ShiftIsSafe() const
const Operator * ChangeInt64ToFloat64()
const Operator * Float64Max()
const OptionalOperator Float64RoundUp()
MachineRepresentation word() const
const Operator * Float64Asin()
bool UnalignedLoadSupported(MachineRepresentation rep)
const Operator * Word64Shr()
const Operator * Float64Sqrt()
const Operator * TryTruncateFloat64ToInt64()
const Operator * Float64Expm1()
const OptionalOperator Word64Popcnt()
const Operator * Int32LessThan()
const OptionalOperator Float64RoundTiesEven()
const Operator * Int64SubWithOverflow()
const Operator * Word32PairSar()
const Operator * Float32Max()
const OptionalOperator Word64Rol()
const Operator * RoundInt64ToFloat32()
const Operator * RoundFloat64ToInt32()
bool SatConversionIsSafe() const
MachineOperatorBuilder & operator=(const MachineOperatorBuilder &)=delete
const Operator * LoadRootRegister()
const Operator * Float32Div()
bool Uint32DivIsSafe() const
const Operator * Float64Log10()
const Operator * ChangeUint32ToUint64()
const Operator * Float64Cos()
const Operator * Word64Or()
const Operator * Word32Xor()
const Operator * RoundInt32ToFloat32()
const Operator * Word64Equal()
const Operator * Uint32LessThan()
const Operator * TaggedEqual()
const Operator * Float64Cosh()
const Operator * Uint32LessThanOrEqual()
const Operator * Float64Mod()
const OptionalOperator Word32Ctz()
const Operator * Float64Tanh()
const Operator * Int64LessThanOrEqual()
const Operator * I8x16BitMask()
const Operator * Word32Or()
const Operator * Word32Clz()
const Operator * Uint64LessThanOrEqual()
const Operator * Float64Pow()
const Operator * ChangeFloat64ToInt32()
const Operator * Float64LessThan()
const Operator * Word32ReverseBytes()
const Operator * Float64Atan()
const Operator * ChangeFloat64ToUint32()
const OptionalOperator Word32Select()
const Operator * ChangeUint32ToFloat64()
const Operator * Float64Atan2()
const Operator * Word32PairShl()
const Operator * Int32Add()
const Operator * Float64Log2()
const Operator * Float64Abs()
const Operator * Float32Abs()
const Operator * Uint64MulHigh()
const Operator * Int64Mod()
const Operator * RoundUint64ToFloat32()
const Operator * I8x16Splat()
const Operator * TruncateFloat64ToFloat32()
const Operator * Float64Acos()
const Operator * Simd128ReverseBytes()
const OptionalOperator Float32RoundTruncate()
const Operator * TryTruncateFloat32ToInt64()
const Operator * BitcastFloat32ToInt32()
const Operator * BitcastWordToTaggedSigned()
const Operator * Float64Min()
const Operator * BitcastInt32ToFloat32()
const Operator * BitcastInt64ToFloat64()
const OptionalOperator Word64Ctz()
MachineOperatorBuilder(const MachineOperatorBuilder &)=delete
const Operator * Float64Div()
const Operator * Float32LessThanOrEqual()
const Operator * TryTruncateFloat64ToUint64()
const Operator * Int32SubWithOverflow()
const Operator * LoadStackCheckOffset()
const Operator * Float64Log1p()
const Operator * SignExtendWord8ToInt32()
AlignmentRequirements const alignment_requirements_
const Operator * Int32PairAdd()
const OptionalOperator Float32RoundUp()
const Operator * Float32Sub()
const Operator * TruncateFloat64ToWord32()
const Operator * Int32PairSub()
const Operator * Float64Asinh()
const OptionalOperator Word64Select()
bool UnalignedStoreSupported(MachineRepresentation rep)
const Operator * Float32Min()
const Operator * Int64MulHigh()
const OptionalOperator Int64AbsWithOverflow()
const Operator * Word64Shl()
const Operator * Word64And()
const Operator * Float64Sin()
const Operator * BitcastWord32ToWord64()
const Operator * ChangeInt32ToInt64()
const Operator * Uint64LessThan()
const Operator * LoadFramePointer()
const Operator * Float64InsertHighWord32()
bool Int32DivIsSafe() const
const OptionalOperator Word64CtzLowerable()
const OptionalOperator Word32ReverseBits()
const Operator * Float64LessThanOrEqual()
const Operator * WordSar(ShiftKind kind=ShiftKind::kNormal)
const Operator * Int64Add()
const Operator * Float64Cbrt()
const Operator * RoundInt64ToFloat64()
const OptionalOperator Float64RoundDown()
const Operator * ChangeFloat32ToFloat64()
const Operator * Uint32MulHigh()
const Operator * Float32Equal()
const Operator * Int32Sub()
const Operator * Float64Tan()
const Operator * Float32Add()
const Operator * BitcastFloat64ToInt64()
const Operator * Word64RorLowerable()
const Operator * Float64Sub()
const Operator * TruncateFloat64ToUint32()
const Operator * Word64Ror()
const Operator * TryTruncateFloat32ToUint64()
const Operator * Word32SarShiftOutZeros()
const Operator * Float64ExtractHighWord32()
const Operator * TruncateInt64ToInt32()
const Operator * Word32PairShr()
const Operator * Word32Equal()
const Operator * Uint64Div()
bool SupportsLoadStorePairs() const
const OptionalOperator Float32RoundTiesEven()
const Operator * Int64MulWithOverflow()
const Operator * Uint64Mod()
const Operator * Float64Log()
const Operator * WordSarShiftOutZeros()
const Operator * SignExtendWord32ToInt64()
const Operator * Word64Clz()
const OptionalOperator Word32Rol()
const Operator * Float64Exp()
const Operator * Int32Mul()
const Operator * SignExtendWord16ToInt32()
const Operator * ChangeInt32ToFloat64()
const Operator * Int32PairMul()
const Operator * RoundUint64ToFloat64()
const Operator * Word32Shr()
const Operator * Float64Sinh()
const Operator * Int64Sub()
const Operator * ChangeFloat64ToUint64()
const Operator * LoadParentFramePointer()
const Operator * Word64ReverseBytes()
const Operator * Float32LessThan()
MachineOperatorGlobalCache const & cache_
const Operator * Float64Equal()
const Operator * Float64Acosh()
const Operator * TryTruncateFloat64ToInt32()
const Operator * Float32Sqrt()
const OptionalOperator Word64RolLowerable()
const OptionalOperator Word64ReverseBits()
const Operator * Float32Neg()
const Operator * Int64Mul()
const Operator * Int32LessThanOrEqual()
const Operator * Int32Div()
const Operator * Uint32Mod()
const Operator * TryTruncateFloat64ToUint32()
const OptionalOperator Float64RoundTruncate()
const Operator * Word64SarShiftOutZeros()
const Operator * Int32Mod()
const Operator * Word64Xor()
const OptionalOperator Float64RoundTiesAway()
const Operator * Float64SilenceNaN()
const Operator * Int64LessThan()
MachineRepresentation const word_
const Operator * Word32Ror()
const Operator * Float64Add()
const Operator * BitcastTaggedToWordForTagAndSmiBits()
const Operator * SignExtendWord16ToInt64()
const Operator * Uint32Div()
const Operator * Word32And()
const OptionalOperator Float32Select()
const Operator * I8x16Eq()
const OptionalOperator Int32AbsWithOverflow()
const Operator * Word64ClzLowerable()
const Operator * Word64Sar()
const Operator * Int64Div()
const Operator * Float32Mul()
const Operator * Float64Neg()
const Operator * Word32Shl()
const Operator * ChangeFloat64ToInt64()
const Operator * SignExtendWord8ToInt64()
const Operator * Float64InsertLowWord32()
const OptionalOperator Float32RoundDown()
const Operator * Int64AddWithOverflow()
const Operator * Int32AddWithOverflow()
const Operator * Int32MulWithOverflow()
const Operator * Float64Mul()
const OptionalOperator Float64Select()
const OptionalOperator Word32Popcnt()
const Operator * Float64Atanh()
const Operator * Word32Sar()
const Operator * Int32MulHigh()
const Operator * op() const
OptionalOperator(bool supported, const Operator *op)
const Operator *const op_
const Operator * placeholder() const
StackSlotRepresentation(int size, int alignment, bool is_tagged)
WriteBarrierKind write_barrier_kind_
StoreRepresentation(MachineRepresentation representation, WriteBarrierKind write_barrier_kind)
MachineRepresentation representation_
MachineRepresentation representation() const
WriteBarrierKind write_barrier_kind() const
#define COMPRESS_POINTERS_BOOL
#define PSEUDO_OP(Prefix, Suffix)
#define PSEUDO_OP_LIST(V)
V8_INLINE size_t hash_range(Iterator first, Iterator last)
AtomicOpParameters AtomicOpParametersOf(Operator const *op)
V8_EXPORT_PRIVATE StoreLaneParameters const & StoreLaneParametersOf(Operator const *) V8_WARN_UNUSED_RESULT
StackCheckKind StackCheckKindOf(Operator const *op)
V8_EXPORT_PRIVATE LoadTransformParameters const & LoadTransformParametersOf(Operator const *) V8_WARN_UNUSED_RESULT
AtomicStoreParameters const & AtomicStoreParametersOf(Operator const *op)
V8_EXPORT_PRIVATE S128ImmediateParameter const & S128ImmediateParameterOf(Operator const *op) V8_WARN_UNUSED_RESULT
StoreRepresentation const & StoreRepresentationOf(Operator const *op)
V8_EXPORT_PRIVATE S256ImmediateParameter const & S256ImmediateParameterOf(Operator const *op) V8_WARN_UNUSED_RESULT
AtomicLoadParameters AtomicLoadParametersOf(Operator const *op)
StackSlotRepresentation const & StackSlotRepresentationOf(Operator const *op)
MachineType AtomicOpType(InstructionSelectorT *selector, OpIndex node)
StorePairRepresentation const & StorePairRepresentationOf(Operator const *op)
size_t hash_value(const BranchParameters &p)
LoadRepresentation LoadRepresentationOf(Operator const *op)
bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs)
bool operator==(const BranchParameters &lhs, const BranchParameters &rhs)
V8_EXPORT_PRIVATE LoadLaneParameters const & LoadLaneParametersOf(Operator const *) V8_WARN_UNUSED_RESULT
UnalignedStoreRepresentation const & UnalignedStoreRepresentationOf(Operator const *op)
std::ostream & operator<<(std::ostream &os, AccessMode access_mode)
ShiftKind ShiftKindOf(Operator const *op)
constexpr int kSimd128Size
constexpr int kSimd256Size
V8_EXPORT_PRIVATE FlagValues v8_flags
i::Address Load(i::Address address)
#define NON_EXPORTED_BASE(code)
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE
MachineRepresentation rep
friend std::ostream & operator<<(std::ostream &out, const StorePairRepresentation rep)
StorePairRepresentation(StoreRepresentation first, StoreRepresentation second)
#define V8_WARN_UNUSED_RESULT