Commit a8c846b2 authored by Santiago Aboy Solanes's avatar Santiago Aboy Solanes Committed by Commit Bot

Add ChangeTaggedXXXToCompressedXXX, ChangeCompressedXXXToTaggedXXX mach ops

We have a version for each (Any, Pointer, Signed)

Bug: v8:8977
Change-Id: I1df994f96e24183a136c25818bf4917d9f8126d3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1524481Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60268}
parent 3072a082
This diff is collapsed.
...@@ -334,6 +334,12 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final ...@@ -334,6 +334,12 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final
const Operator* ChangeInt64ToFloat64(); const Operator* ChangeInt64ToFloat64();
const Operator* ChangeUint32ToFloat64(); const Operator* ChangeUint32ToFloat64();
const Operator* ChangeUint32ToUint64(); const Operator* ChangeUint32ToUint64();
const Operator* ChangeTaggedToCompressed();
const Operator* ChangeTaggedPointerToCompressedPointer();
const Operator* ChangeTaggedSignedToCompressedSigned();
const Operator* ChangeCompressedToTagged();
const Operator* ChangeCompressedPointerToTaggedPointer();
const Operator* ChangeCompressedSignedToTaggedSigned();
// These operators truncate or round numbers, both changing the representation // These operators truncate or round numbers, both changing the representation
// of the number and mapping multiple input values onto the same output value. // of the number and mapping multiple input values onto the same output value.
......
...@@ -598,109 +598,115 @@ ...@@ -598,109 +598,115 @@
V(Word64AtomicExchange) \ V(Word64AtomicExchange) \
V(Word64AtomicCompareExchange) V(Word64AtomicCompareExchange)
#define MACHINE_OP_LIST(V) \ #define MACHINE_OP_LIST(V) \
MACHINE_UNOP_32_LIST(V) \ MACHINE_UNOP_32_LIST(V) \
MACHINE_BINOP_32_LIST(V) \ MACHINE_BINOP_32_LIST(V) \
MACHINE_BINOP_64_LIST(V) \ MACHINE_BINOP_64_LIST(V) \
MACHINE_COMPARE_BINOP_LIST(V) \ MACHINE_COMPARE_BINOP_LIST(V) \
MACHINE_FLOAT32_BINOP_LIST(V) \ MACHINE_FLOAT32_BINOP_LIST(V) \
MACHINE_FLOAT32_UNOP_LIST(V) \ MACHINE_FLOAT32_UNOP_LIST(V) \
MACHINE_FLOAT64_BINOP_LIST(V) \ MACHINE_FLOAT64_BINOP_LIST(V) \
MACHINE_FLOAT64_UNOP_LIST(V) \ MACHINE_FLOAT64_UNOP_LIST(V) \
MACHINE_WORD64_ATOMIC_OP_LIST(V) \ MACHINE_WORD64_ATOMIC_OP_LIST(V) \
V(DebugAbort) \ V(DebugAbort) \
V(DebugBreak) \ V(DebugBreak) \
V(Comment) \ V(Comment) \
V(Load) \ V(Load) \
V(PoisonedLoad) \ V(PoisonedLoad) \
V(Store) \ V(Store) \
V(StackSlot) \ V(StackSlot) \
V(Word32Popcnt) \ V(Word32Popcnt) \
V(Word64Popcnt) \ V(Word64Popcnt) \
V(Word64Clz) \ V(Word64Clz) \
V(Word64Ctz) \ V(Word64Ctz) \
V(Word64ReverseBits) \ V(Word64ReverseBits) \
V(Word64ReverseBytes) \ V(Word64ReverseBytes) \
V(Int64AbsWithOverflow) \ V(Int64AbsWithOverflow) \
V(BitcastTaggedToWord) \ V(BitcastTaggedToWord) \
V(BitcastWordToTagged) \ V(BitcastWordToTagged) \
V(BitcastWordToTaggedSigned) \ V(BitcastWordToTaggedSigned) \
V(TruncateFloat64ToWord32) \ V(TruncateFloat64ToWord32) \
V(ChangeFloat32ToFloat64) \ V(ChangeFloat32ToFloat64) \
V(ChangeFloat64ToInt32) \ V(ChangeFloat64ToInt32) \
V(ChangeFloat64ToInt64) \ V(ChangeFloat64ToInt64) \
V(ChangeFloat64ToUint32) \ V(ChangeFloat64ToUint32) \
V(ChangeFloat64ToUint64) \ V(ChangeFloat64ToUint64) \
V(Float64SilenceNaN) \ V(Float64SilenceNaN) \
V(TruncateFloat64ToInt64) \ V(TruncateFloat64ToInt64) \
V(TruncateFloat64ToUint32) \ V(TruncateFloat64ToUint32) \
V(TruncateFloat32ToInt32) \ V(TruncateFloat32ToInt32) \
V(TruncateFloat32ToUint32) \ V(TruncateFloat32ToUint32) \
V(TryTruncateFloat32ToInt64) \ V(TryTruncateFloat32ToInt64) \
V(TryTruncateFloat64ToInt64) \ V(TryTruncateFloat64ToInt64) \
V(TryTruncateFloat32ToUint64) \ V(TryTruncateFloat32ToUint64) \
V(TryTruncateFloat64ToUint64) \ V(TryTruncateFloat64ToUint64) \
V(ChangeInt32ToFloat64) \ V(ChangeInt32ToFloat64) \
V(ChangeInt32ToInt64) \ V(ChangeInt32ToInt64) \
V(ChangeInt64ToFloat64) \ V(ChangeInt64ToFloat64) \
V(ChangeUint32ToFloat64) \ V(ChangeUint32ToFloat64) \
V(ChangeUint32ToUint64) \ V(ChangeUint32ToUint64) \
V(TruncateFloat64ToFloat32) \ V(ChangeTaggedToCompressed) \
V(TruncateInt64ToInt32) \ V(ChangeTaggedPointerToCompressedPointer) \
V(RoundFloat64ToInt32) \ V(ChangeTaggedSignedToCompressedSigned) \
V(RoundInt32ToFloat32) \ V(ChangeCompressedToTagged) \
V(RoundInt64ToFloat32) \ V(ChangeCompressedPointerToTaggedPointer) \
V(RoundInt64ToFloat64) \ V(ChangeCompressedSignedToTaggedSigned) \
V(RoundUint32ToFloat32) \ V(TruncateFloat64ToFloat32) \
V(RoundUint64ToFloat32) \ V(TruncateInt64ToInt32) \
V(RoundUint64ToFloat64) \ V(RoundFloat64ToInt32) \
V(BitcastFloat32ToInt32) \ V(RoundInt32ToFloat32) \
V(BitcastFloat64ToInt64) \ V(RoundInt64ToFloat32) \
V(BitcastInt32ToFloat32) \ V(RoundInt64ToFloat64) \
V(BitcastInt64ToFloat64) \ V(RoundUint32ToFloat32) \
V(Float64ExtractLowWord32) \ V(RoundUint64ToFloat32) \
V(Float64ExtractHighWord32) \ V(RoundUint64ToFloat64) \
V(Float64InsertLowWord32) \ V(BitcastFloat32ToInt32) \
V(Float64InsertHighWord32) \ V(BitcastFloat64ToInt64) \
V(TaggedPoisonOnSpeculation) \ V(BitcastInt32ToFloat32) \
V(Word32PoisonOnSpeculation) \ V(BitcastInt64ToFloat64) \
V(Word64PoisonOnSpeculation) \ V(Float64ExtractLowWord32) \
V(LoadStackPointer) \ V(Float64ExtractHighWord32) \
V(LoadFramePointer) \ V(Float64InsertLowWord32) \
V(LoadParentFramePointer) \ V(Float64InsertHighWord32) \
V(UnalignedLoad) \ V(TaggedPoisonOnSpeculation) \
V(UnalignedStore) \ V(Word32PoisonOnSpeculation) \
V(Int32PairAdd) \ V(Word64PoisonOnSpeculation) \
V(Int32PairSub) \ V(LoadStackPointer) \
V(Int32PairMul) \ V(LoadFramePointer) \
V(Word32PairShl) \ V(LoadParentFramePointer) \
V(Word32PairShr) \ V(UnalignedLoad) \
V(Word32PairSar) \ V(UnalignedStore) \
V(ProtectedLoad) \ V(Int32PairAdd) \
V(ProtectedStore) \ V(Int32PairSub) \
V(Word32AtomicLoad) \ V(Int32PairMul) \
V(Word32AtomicStore) \ V(Word32PairShl) \
V(Word32AtomicExchange) \ V(Word32PairShr) \
V(Word32AtomicCompareExchange) \ V(Word32PairSar) \
V(Word32AtomicAdd) \ V(ProtectedLoad) \
V(Word32AtomicSub) \ V(ProtectedStore) \
V(Word32AtomicAnd) \ V(Word32AtomicLoad) \
V(Word32AtomicOr) \ V(Word32AtomicStore) \
V(Word32AtomicXor) \ V(Word32AtomicExchange) \
V(Word32AtomicPairLoad) \ V(Word32AtomicCompareExchange) \
V(Word32AtomicPairStore) \ V(Word32AtomicAdd) \
V(Word32AtomicPairAdd) \ V(Word32AtomicSub) \
V(Word32AtomicPairSub) \ V(Word32AtomicAnd) \
V(Word32AtomicPairAnd) \ V(Word32AtomicOr) \
V(Word32AtomicPairOr) \ V(Word32AtomicXor) \
V(Word32AtomicPairXor) \ V(Word32AtomicPairLoad) \
V(Word32AtomicPairExchange) \ V(Word32AtomicPairStore) \
V(Word32AtomicPairCompareExchange) \ V(Word32AtomicPairAdd) \
V(SignExtendWord8ToInt32) \ V(Word32AtomicPairSub) \
V(SignExtendWord16ToInt32) \ V(Word32AtomicPairAnd) \
V(SignExtendWord8ToInt64) \ V(Word32AtomicPairOr) \
V(SignExtendWord16ToInt64) \ V(Word32AtomicPairXor) \
V(SignExtendWord32ToInt64) \ V(Word32AtomicPairExchange) \
V(Word32AtomicPairCompareExchange) \
V(SignExtendWord8ToInt32) \
V(SignExtendWord16ToInt32) \
V(SignExtendWord8ToInt64) \
V(SignExtendWord16ToInt64) \
V(SignExtendWord32ToInt64) \
V(UnsafePointerAdd) V(UnsafePointerAdd)
#define MACHINE_SIMD_OP_LIST(V) \ #define MACHINE_SIMD_OP_LIST(V) \
......
...@@ -1745,6 +1745,12 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { ...@@ -1745,6 +1745,12 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kBitcastWordToTaggedSigned: case IrOpcode::kBitcastWordToTaggedSigned:
case IrOpcode::kChangeInt32ToInt64: case IrOpcode::kChangeInt32ToInt64:
case IrOpcode::kChangeUint32ToUint64: case IrOpcode::kChangeUint32ToUint64:
case IrOpcode::kChangeTaggedToCompressed:
case IrOpcode::kChangeTaggedPointerToCompressedPointer:
case IrOpcode::kChangeTaggedSignedToCompressedSigned:
case IrOpcode::kChangeCompressedToTagged:
case IrOpcode::kChangeCompressedPointerToTaggedPointer:
case IrOpcode::kChangeCompressedSignedToTaggedSigned:
case IrOpcode::kChangeInt32ToFloat64: case IrOpcode::kChangeInt32ToFloat64:
case IrOpcode::kChangeInt64ToFloat64: case IrOpcode::kChangeInt64ToFloat64:
case IrOpcode::kChangeUint32ToFloat64: case IrOpcode::kChangeUint32ToFloat64:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment