Lines Matching full:operator
5 #include "src/compiler/simplified-operator.h"
9 #include "src/compiler/operator.h"
20 std::ostream& operator<<(std::ostream& os, BaseTaggedness base_taggedness) {
57 bool operator==(BufferAccess lhs, BufferAccess rhs) {
62 bool operator!=(BufferAccess lhs, BufferAccess rhs) { return !(lhs == rhs); }
70 std::ostream& operator<<(std::ostream& os, BufferAccess access) {
83 BufferAccess const BufferAccessOf(const Operator* op) {
90 bool operator==(FieldAccess const& lhs, FieldAccess const& rhs) {
100 bool operator!=(FieldAccess const& lhs, FieldAccess const& rhs) {
114 std::ostream& operator<<(std::ostream& os, FieldAccess const& access) {
142 bool operator==(ElementAccess const& lhs, ElementAccess const& rhs) {
152 bool operator!=(ElementAccess const& lhs, ElementAccess const& rhs) {
166 std::ostream& operator<<(std::ostream& os, ElementAccess const& access) {
174 const FieldAccess& FieldAccessOf(const Operator* op) {
182 const ElementAccess& ElementAccessOf(const Operator* op) {
189 ExternalArrayType ExternalArrayTypeOf(const Operator* op) {
199 std::ostream& operator<<(std::ostream& os, CheckFloat64HoleMode mode) {
210 CheckFloat64HoleMode CheckFloat64HoleModeOf(const Operator* op) {
215 CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator* op) {
226 std::ostream& operator<<(std::ostream& os, CheckForMinusZeroMode mode) {
237 std::ostream& operator<<(std::ostream& os, CheckMapsFlags flags) {
247 bool operator==(CheckMapsParameters const& lhs,
252 bool operator!=(CheckMapsParameters const& lhs,
261 std::ostream& operator<<(std::ostream& os, CheckMapsParameters const& p) {
270 CheckMapsParameters const& CheckMapsParametersOf(Operator const* op) {
279 std::ostream& operator<<(std::ostream& os, CheckTaggedInputMode mode) {
290 CheckTaggedInputMode CheckTaggedInputModeOf(const Operator* op) {
295 std::ostream& operator<<(std::ostream& os, GrowFastElementsFlags flags) {
315 GrowFastElementsFlags GrowFastElementsFlagsOf(const Operator* op) {
320 bool operator==(ElementsTransition const& lhs, ElementsTransition const& rhs) {
326 bool operator!=(ElementsTransition const& lhs, ElementsTransition const& rhs) {
336 std::ostream& operator<<(std::ostream& os, ElementsTransition transition) {
349 ElementsTransition const& ElementsTransitionOf(const Operator* op) {
354 std::ostream& operator<<(std::ostream& os, NumberOperationHint hint) {
373 NumberOperationHint NumberOperationHintOf(const Operator* op) {
391 int ParameterCountOf(const Operator* op) {
397 PretenureFlag PretenureFlagOf(const Operator* op) {
402 UnicodeEncoding UnicodeEncodingOf(const Operator* op) {
408 V(BooleanNot, Operator::kNoProperties, 1, 0) \
409 V(NumberEqual, Operator::kCommutative, 2, 0) \
410 V(NumberLessThan, Operator::kNoProperties, 2, 0) \
411 V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \
412 V(NumberAdd, Operator::kCommutative, 2, 0) \
413 V(NumberSubtract, Operator::kNoProperties, 2, 0) \
414 V(NumberMultiply, Operator::kCommutative, 2, 0) \
415 V(NumberDivide, Operator::kNoProperties, 2, 0) \
416 V(NumberModulus, Operator::kNoProperties, 2, 0) \
417 V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \
418 V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \
419 V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \
420 V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \
421 V(NumberShiftRight, Operator::kNoProperties, 2, 0) \
422 V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \
423 V(NumberImul, Operator::kCommutative, 2, 0) \
424 V(NumberAbs, Operator::kNoProperties, 1, 0) \
425 V(NumberClz32, Operator::kNoProperties, 1, 0) \
426 V(NumberCeil, Operator::kNoProperties, 1, 0) \
427 V(NumberFloor, Operator::kNoProperties, 1, 0) \
428 V(NumberFround, Operator::kNoProperties, 1, 0) \
429 V(NumberAcos, Operator::kNoProperties, 1, 0) \
430 V(NumberAcosh, Operator::kNoProperties, 1, 0) \
431 V(NumberAsin, Operator::kNoProperties, 1, 0) \
432 V(NumberAsinh, Operator::kNoProperties, 1, 0) \
433 V(NumberAtan, Operator::kNoProperties, 1, 0) \
434 V(NumberAtan2, Operator::kNoProperties, 2, 0) \
435 V(NumberAtanh, Operator::kNoProperties, 1, 0) \
436 V(NumberCbrt, Operator::kNoProperties, 1, 0) \
437 V(NumberCos, Operator::kNoProperties, 1, 0) \
438 V(NumberCosh, Operator::kNoProperties, 1, 0) \
439 V(NumberExp, Operator::kNoProperties, 1, 0) \
440 V(NumberExpm1, Operator::kNoProperties, 1, 0) \
441 V(NumberLog, Operator::kNoProperties, 1, 0) \
442 V(NumberLog1p, Operator::kNoProperties, 1, 0) \
443 V(NumberLog10, Operator::kNoProperties, 1, 0) \
444 V(NumberLog2, Operator::kNoProperties, 1, 0) \
445 V(NumberMax, Operator::kNoProperties, 2, 0) \
446 V(NumberMin, Operator::kNoProperties, 2, 0) \
447 V(NumberPow, Operator::kNoProperties, 2, 0) \
448 V(NumberRound, Operator::kNoProperties, 1, 0) \
449 V(NumberSign, Operator::kNoProperties, 1, 0) \
450 V(NumberSin, Operator::kNoProperties, 1, 0) \
451 V(NumberSinh, Operator::kNoProperties, 1, 0) \
452 V(NumberSqrt, Operator::kNoProperties, 1, 0) \
453 V(NumberTan, Operator::kNoProperties, 1, 0) \
454 V(NumberTanh, Operator::kNoProperties, 1, 0) \
455 V(NumberTrunc, Operator::kNoProperties, 1, 0) \
456 V(NumberToBoolean, Operator::kNoProperties, 1, 0) \
457 V(NumberToInt32, Operator::kNoProperties, 1, 0) \
458 V(NumberToUint32, Operator::kNoProperties, 1, 0) \
459 V(NumberToUint8Clamped, Operator::kNoProperties, 1, 0) \
460 V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \
461 V(StringCharAt, Operator::kNoProperties, 2, 1) \
462 V(StringCharCodeAt, Operator
463 V(StringFromCharCode, Operator::kNoProperties, 1, 0) \
464 V(StringIndexOf, Operator::kNoProperties, 3, 0) \
465 V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \
466 V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \
467 V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \
468 V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \
469 V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \
470 V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \
471 V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \
472 V(ChangeTaggedToTaggedSigned, Operator::kNoProperties, 1, 0) \
473 V(ChangeFloat64ToTagged, Operator::kNoProperties, 1, 0) \
474 V(ChangeFloat64ToTaggedPointer, Operator::kNoProperties, 1, 0) \
475 V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \
476 V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \
477 V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \
478 V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \
479 V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \
480 V(TruncateTaggedToBit, Operator::kNoProperties, 1, 0) \
481 V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \
482 V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \
483 V(ObjectIsDetectableCallable, Operator::kNoProperties, 1, 0) \
484 V(ObjectIsNonCallable, Operator::kNoProperties, 1, 0) \
485 V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \
486 V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \
487 V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \
488 V(ObjectIsString, Operator::kNoProperties, 1, 0) \
489 V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \
490 V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \
491 V(ReferenceEqual, Operator::kCommutative, 2, 0) \
492 V(StringEqual, Operator::kCommutative, 2, 0) \
493 V(StringLessThan, Operator::kNoProperties, 2, 0) \
494 V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0)
528 struct Name##Operator final : public Operator { \
529 Name##Operator() \
530 : Operator(IrOpcode::k##Name, Operator::kPure | properties, #Name, \
533 Name##Operator k##Name;
538 struct Name##Operator final : public Operator { \
539 Name##Operator() \
540 : Operator(IrOpcode::k##Name, \
541 Operator::kFoldable | Operator::kNoThrow, #Name, \
544 Name##Operator k##Name;
552 Operator::kPure, "StringFromCodePoint", 1,
560 struct ArrayBufferWasNeuteredOperator final : public Operator {
562 : Operator(IrOpcode::kArrayBufferWasNeutered, Operator::kEliminatable,
573 Operator::kFoldable | Operator::kNoThrow, "CheckedInt32Mul", 2, 1,
587 Operator::kFoldable | Operator::kNoThrow, "CheckedFloat64ToInt32",
601 Operator::kFoldable | Operator::kNoThrow, "CheckedTaggedToInt32",
615 Operator::kFoldable | Operator::kNoThrow,
629 Operator::kFoldable | Operator::kNoThrow, "CheckFloat64Hole", 1,
642 Operator::kNoDeopt | Operator::kNoThrow | Operator::kNoWrite,
648 struct EnsureWritableFastElementsOperator final : public Operator {
650 : Operator( // --
652 Operator::kNoDeopt | Operator::kNoThrow, // flags
660 struct Name##Operator final : public Operator1<NumberOperationHint> { \
661 Name##Operator() \
663 IrOpcode::k##Name, Operator::kFoldable | Operator::kNoThrow, \
666 Name##Operator<NumberOperationHint::kSignedSmall> \
668 Name##Operator<NumberOperationHint::kSigned32> k##Name##Signed32Operator; \
669 Name##Operator<NumberOperationHint::kNumber> k##Name##NumberOperator; \
670 Name##Operator<NumberOperationHint::kNumberOrOddball> \
676 struct LoadBuffer##Type##Operator final : public Operator1<BufferAccess> { \
677 LoadBuffer##Type##Operator() \
680 Operator::kNoDeopt | Operator::kNoThrow | Operator::kNoWrite, \
684 struct StoreBuffer##Type##Operator final : public Operator1<BufferAccess> { \
685 StoreBuffer##Type##Operator() \
688 Operator::kNoDeopt | Operator::kNoRead | Operator::kNoThrow, \
692 LoadBuffer##Type##Operator kLoadBuffer##Type; \
693 StoreBuffer##Type##Operator kStoreBuffer##Type;
707 const Operator* SimplifiedOperatorBuilder::Name() { return &cache_.k##Name; }
713 const Operator* SimplifiedOperatorBuilder::CheckedInt32Mul(
725 const Operator* SimplifiedOperatorBuilder::CheckedFloat64ToInt32(
737 const Operator* SimplifiedOperatorBuilder::CheckedTaggedToInt32(
749 const Operator* SimplifiedOperatorBuilder::CheckedTaggedToFloat64(
761 const Operator* SimplifiedOperatorBuilder::CheckMaps(CheckMapsFlags flags,
766 Operator::kNoThrow | Operator::kNoWrite, // flags
772 const Operator* SimplifiedOperatorBuilder::CheckFloat64Hole(
784 const Operator* SimplifiedOperatorBuilder::EnsureWritableFastElements() {
788 const Operator* SimplifiedOperatorBuilder::MaybeGrowFastElements(
792 Operator::kNoThrow, // flags
798 const Operator* SimplifiedOperatorBuilder::TransitionElementsKind(
802 Operator::kNoDeopt | Operator::kNoThrow, // flags
808 const Operator
812 Operator::kEliminatable, // flags
818 const Operator* SimplifiedOperatorBuilder::NewRestParameterElements(
822 Operator::kEliminatable, // flags
828 const Operator* SimplifiedOperatorBuilder::Allocate(PretenureFlag pretenure) {
840 const Operator* SimplifiedOperatorBuilder::LoadBuffer(BufferAccess access) {
853 const Operator* SimplifiedOperatorBuilder::StoreBuffer(BufferAccess access) {
865 const Operator* SimplifiedOperatorBuilder::StringFromCodePoint(
878 const Operator* SimplifiedOperatorBuilder::Name(NumberOperationHint hint) { \
896 V(LoadField, FieldAccess, Operator::kNoWrite, 1, 1, 1) \
897 V(StoreField, FieldAccess, Operator::kNoRead, 2, 1, 0) \
898 V(LoadElement, ElementAccess, Operator::kNoWrite, 2, 1, 1) \
899 V(StoreElement, ElementAccess, Operator::kNoRead, 3, 1, 0) \
900 V(LoadTypedElement, ExternalArrayType, Operator::kNoWrite, 4, 1, 1) \
901 V(StoreTypedElement, ExternalArrayType, Operator::kNoRead, 5, 1, 0)
905 const Operator* SimplifiedOperatorBuilder::Name(const Type& access) { \
908 Operator::kNoDeopt | Operator::kNoThrow | properties, \