1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 # =======================
7 # This file defines all LIR opcodes as well as LIR opcode class
8 # definitions. It is parsed by GenerateLIRFiles.py at build time to
9 # create LIROpsGenerated.h. Each opcode consists of a
10 # name and a set of attributes that are described below. Unless
11 # marked as required, attributes are optional.
17 # - opcode string: used as the name for LIR opcode.
21 # Used to decide to generate LIR boilerplate.
22 # - true (default): auto generate boilerplate for this LIR opcode
23 # - false: do not generate boilerplate for this LIR opcode
27 # Specifies the result type that is produced by this LIR instruction.
28 # The result type can be any of the following: WordSized, BoxedValue,
30 # - attribute not specified (default): there is no result produced
31 # by this LIR instruction
32 # - result type: sets result type for this LIR instruction
36 # A list of operands to the LIR node. Each operand will be
37 # passed into and set in the instruction's constructor. A simple getter
38 # will also be auto generated for the operand. Each operand in the
39 # following list is defined by its name and an type.
40 # The type can be WordSized, BoxedValue, or Int64.
48 # explicit LInstanceOfV(const LBoxAllocation& lhs, const LAllocation& rhs)
49 # : LInstructionHelper(classOpcode) {
50 # setBoxOperand(lhsIndex, lhs);
51 # setOperand(rhsIndex, rhs);
53 # const LAllocation* rhs() { return getOperand(0); }
55 # static const size_t lhsIndex = 0;
56 # static const size_t rhsIndex = BOX_PIECES;
58 # - attribute not specified (default): no code generated
59 # - list of operand names with their types: operand getters and setters
60 # are generated and passed into the constructor
64 # A list of non-LIR node arguments to the LIR op class constructor
65 # that are passed along with the operands. The arguments require
66 # both a name and a full type signature for each item in the list.
72 # For each argument a private variable declaration will be autogenerated
73 # in the LIR op class, as well as simple accessor for that variable. The
74 # above arguments list will result in the following declarations and
80 # size_t offset() const { return offset_; }
81 # MIRType type() const { return type_; }
83 # - attribute not specified (default): no code generated
84 # - argument list: argument names and their full type signature
88 # Specifies the number of temporary virtual registers, LDefinitions, used by
90 # - attribute not specified (default): number of temps is set to 0
91 # - number of LDefinition temps: sets number of temps max 15
95 # Used to define call instructions.
96 # - attribute not specified (default): no code generated
97 # - true: generates a call to setIsCall in the op's constructor
101 # If a LIR instruction corresponds one-to-one with a particular MIR
102 # instruction, this will generate a method that returns that MIR
104 # - attribute not specified (default): no code generated
105 # - true: generates a method to return MIR instruction
106 # - mir string: returns this specified MIR instruction
110 gen_boilerplate: false
113 gen_boilerplate: false
116 gen_boilerplate: false
119 gen_boilerplate: false
121 # Constant 32-bit integer.
123 result_type: WordSized
127 # Constant 64-bit integer.
135 result_type: WordSized
141 result_type: WordSized
147 result_type: WordSized
152 gen_boilerplate: false
154 - name: NurseryObject
155 result_type: WordSized
158 # Formal argument for a function, returning a box. Formal arguments are
159 # initially read from the stack.
161 result_type: BoxedValue
163 # Stack offset for a word-sized immutable input value to a frame.
165 result_type: WordSized
167 - name: IsConstructing
168 result_type: WordSized
171 gen_boilerplate: false
174 gen_boilerplate: false
176 - name: NewArrayDynamicLength
177 result_type: WordSized
184 result_type: WordSized
188 - name: NewTypedArray
189 result_type: WordSized
193 - name: NewTypedArrayDynamicLength
194 result_type: WordSized
200 - name: NewTypedArrayFromArray
201 result_type: WordSized
204 call_instruction: true
207 - name: NewTypedArrayFromArrayBuffer
208 result_type: WordSized
210 arrayBuffer: WordSized
211 byteOffset: BoxedValue
213 call_instruction: true
217 gen_boilerplate: false
219 - name: NewPlainObject
220 result_type: WordSized
224 - name: NewArrayObject
225 result_type: WordSized
229 # Allocates a new NamedLambdaObject.
231 # This instruction generates two possible instruction sets:
232 # (1) An inline allocation of the call object is attempted.
233 # (2) Otherwise, a callVM create a new object.
235 - name: NewNamedLambdaObject
236 result_type: WordSized
240 # Allocates a new CallObject.
242 # This instruction generates two possible instruction sets:
243 # (1) If the call object is extensible, this is a callVM to create the
245 # (2) Otherwise, an inline allocation of the call object is attempted.
247 - name: NewCallObject
248 result_type: WordSized
252 - name: NewStringObject
253 result_type: WordSized
259 - name: InitElemGetterSetter
264 call_instruction: true
267 # Takes in an Object and a Value.
272 call_instruction: true
274 - name: InitPropGetterSetter
278 call_instruction: true
281 - name: CheckOverRecursed
287 - name: WasmReinterpret
288 gen_boilerplate: false
290 - name: WasmReinterpretFromI64
291 gen_boilerplate: false
293 - name: WasmReinterpretToI64
294 gen_boilerplate: false
297 gen_boilerplate: false
300 gen_boilerplate: false
302 - name: InterruptCheck
305 - name: WasmInterruptCheck
311 result_type: WordSized
318 result_type: WordSized
324 result_type: WordSized
329 - name: TypeOfIsNonPrimitiveV
330 result_type: WordSized
336 - name: TypeOfIsNonPrimitiveO
337 result_type: WordSized
342 - name: TypeOfIsPrimitive
343 result_type: WordSized
349 result_type: WordSized
352 nextMethod: BoxedValue
353 call_instruction: true
355 - name: ToPropertyKeyCache
356 result_type: BoxedValue
361 # Allocate an object for |new| on the caller-side,
362 # when there is no templateObject or prototype known
364 result_type: BoxedValue
368 call_instruction: true
371 # Allocate a new arguments object for the frame.
372 - name: CreateArgumentsObject
373 result_type: WordSized
375 callObject: WordSized
377 call_instruction: true
380 - name: CreateInlinedArgumentsObject
381 gen_boilerplate: false
383 - name: GetInlinedArgument
384 gen_boilerplate: false
386 - name: GetInlinedArgumentHole
387 gen_boilerplate: false
389 # Get argument from arguments object.
390 - name: GetArgumentsObjectArg
391 result_type: BoxedValue
393 argsObject: WordSized
397 # Set argument on arguments object.
398 - name: SetArgumentsObjectArg
400 argsObject: WordSized
405 # Load an element from an arguments object.
406 - name: LoadArgumentsObjectArg
407 result_type: BoxedValue
409 argsObject: WordSized
413 # Load an element from an arguments object. Handles out-of-bounds accesses.
414 - name: LoadArgumentsObjectArgHole
415 result_type: BoxedValue
417 argsObject: WordSized
421 # Return true if the element exists in the arguments object.
422 - name: InArgumentsObjectArg
423 result_type: WordSized
425 argsObject: WordSized
429 # Return |arguments.length| unless it has been overridden.
430 - name: ArgumentsObjectLength
431 result_type: WordSized
433 argsObject: WordSized
435 # Create an array from an arguments object.
436 - name: ArrayFromArgumentsObject
437 result_type: WordSized
439 argsObject: WordSized
440 call_instruction: true
443 # Guard that the given flags are not set on the arguments object.
444 - name: GuardArgumentsObjectFlags
446 argsObject: WordSized
450 # If the Value is an Object, return unbox(Value).
451 # Otherwise, return the other Object.
452 - name: ReturnFromCtor
453 result_type: WordSized
458 - name: BoxNonStrictThis
459 result_type: WordSized
465 result_type: BoxedValue
468 call_instruction: true
471 # Writes a typed argument for a function call to the frame's argument vector.
476 # Index into frame-scope argument vector.
480 # Writes a typed argument for a function call to the frame's argument vector.
485 # Index into frame-scope argument vector.
489 gen_boilerplate: false
492 gen_boilerplate: false
495 gen_boilerplate: false
497 - name: CallDOMNative
498 gen_boilerplate: false
503 gen_boilerplate: false
505 - name: EncodeSnapshot
507 - name: UnreachableResultV
508 gen_boilerplate: false
510 - name: UnreachableResultT
511 result_type: WordSized
513 - name: GetDOMProperty
514 gen_boilerplate: false
516 - name: GetDOMMemberV
517 gen_boilerplate: false
519 - name: GetDOMMemberT
520 result_type: WordSized
525 - name: SetDOMProperty
526 gen_boilerplate: false
528 - name: LoadDOMExpandoValue
529 result_type: BoxedValue
534 - name: LoadDOMExpandoValueGuardGeneration
535 result_type: BoxedValue
540 - name: LoadDOMExpandoValueIgnoreGeneration
541 result_type: BoxedValue
546 - name: GuardDOMExpandoMissingOrGuardShape
552 - name: ApplyArgsGeneric
553 gen_boilerplate: false
556 gen_boilerplate: false
558 - name: ApplyArrayGeneric
559 gen_boilerplate: false
561 - name: ConstructArgsGeneric
562 gen_boilerplate: false
564 - name: ConstructArrayGeneric
565 gen_boilerplate: false
567 - name: TestIAndBranch
568 gen_boilerplate: false
570 - name: TestI64AndBranch
571 gen_boilerplate: false
573 - name: TestDAndBranch
574 gen_boilerplate: false
576 - name: TestFAndBranch
577 gen_boilerplate: false
579 - name: TestBIAndBranch
580 gen_boilerplate: false
582 - name: TestOAndBranch
583 gen_boilerplate: false
585 - name: TestVAndBranch
586 gen_boilerplate: false
589 gen_boilerplate: false
592 gen_boilerplate: false
594 - name: CompareI64AndBranch
595 gen_boilerplate: false
597 - name: CompareAndBranch
598 gen_boilerplate: false
601 result_type: WordSized
608 result_type: WordSized
614 - name: CompareDAndBranch
615 gen_boilerplate: false
617 - name: CompareFAndBranch
618 gen_boilerplate: false
621 result_type: WordSized
627 - name: CompareSInline
628 result_type: WordSized
632 constant: JSLinearString*
635 - name: CompareBigInt
636 result_type: WordSized
643 - name: CompareBigIntInt32
644 result_type: WordSized
651 - name: CompareBigIntDouble
652 result_type: WordSized
657 call_instruction: true
660 - name: CompareBigIntString
661 result_type: WordSized
665 call_instruction: true
668 - name: BitAndAndBranch
669 gen_boilerplate: false
671 # Takes a value and tests whether it is null, undefined, or is an object that
672 # emulates |undefined|, as determined by the JSCLASS_EMULATES_UNDEFINED class
673 # flag on unwrapped objects. See also js::EmulatesUndefined.
674 - name: IsNullOrLikeUndefinedV
675 result_type: WordSized
681 # Takes an object pointer and tests whether it is an object that emulates
682 # |undefined|, as above.
683 - name: IsNullOrLikeUndefinedT
684 result_type: WordSized
689 - name: IsNullOrLikeUndefinedAndBranchV
690 gen_boilerplate: false
692 - name: IsNullOrLikeUndefinedAndBranchT
693 gen_boilerplate: false
695 - name: SameValueDouble
696 result_type: WordSized
703 result_type: WordSized
708 # Not operation on an integer.
710 result_type: WordSized
714 # Not operation on an int64.
716 result_type: WordSized
720 # Not operation on a double.
722 result_type: WordSized
727 # Not operation on a float32.
729 result_type: WordSized
734 # Not operation on a BigInt.
736 result_type: WordSized
741 # Boolean complement operation on an object.
743 result_type: WordSized
748 # Boolean complement operation on a value.
750 result_type: WordSized
757 gen_boilerplate: false
760 gen_boilerplate: false
763 gen_boilerplate: false
766 gen_boilerplate: false
769 gen_boilerplate: false
772 gen_boilerplate: false
774 - name: SignExtendInt32
775 result_type: WordSized
779 mode: MSignExtendInt32::Mode
781 - name: SignExtendInt64
782 gen_boilerplate: false
785 gen_boilerplate: false
788 gen_boilerplate: false
793 call_instruction: true
796 gen_boilerplate: false
799 gen_boilerplate: false
802 gen_boilerplate: false
805 gen_boilerplate: false
808 gen_boilerplate: false
810 # Negative of integer
812 result_type: WordSized
816 # Negative of an int64
824 result_type: WordSized
828 # Negative of float32
830 result_type: WordSized
834 # Absolute value of an integer.
836 result_type: WordSized
841 # Absolute value of a double.
843 result_type: WordSized
847 # Absolute value of a float32.
849 result_type: WordSized
854 gen_boilerplate: false
857 gen_boilerplate: false
859 # Count leading zeroes on an int32.
861 result_type: WordSized
866 # Count leading zeroes on an int64.
873 # Count trailing zeroes on an int32.
875 result_type: WordSized
880 # Count trailing zeroes on an int64.
887 # Count population on an int32.
889 result_type: WordSized
895 # Count population on an int64.
904 result_type: WordSized
909 result_type: WordSized
914 gen_boilerplate: false
917 gen_boilerplate: false
919 # Double raised to an integer power.
921 result_type: WordSized
926 call_instruction: true
928 # Integer raised to an integer power.
930 result_type: WordSized
937 # Double raised to a double power.
939 result_type: WordSized
944 call_instruction: true
946 # Constant of a power of two raised to an integer power.
948 result_type: WordSized
954 # Sign value of an integer.
956 result_type: WordSized
960 # Sign value of an integer.
962 result_type: WordSized
966 # Sign value of a double with expected int32 result.
968 result_type: WordSized
973 - name: MathFunctionD
974 gen_boilerplate: false
976 - name: MathFunctionF
977 gen_boilerplate: false
980 gen_boilerplate: false
983 gen_boilerplate: false
986 gen_boilerplate: false
989 gen_boilerplate: false
992 gen_boilerplate: false
995 gen_boilerplate: false
998 gen_boilerplate: false
1001 gen_boilerplate: false
1004 gen_boilerplate: false
1006 - name: WasmBuiltinModD
1007 result_type: WordSized
1012 call_instruction: true
1016 gen_boilerplate: false
1019 gen_boilerplate: false
1022 gen_boilerplate: false
1025 gen_boilerplate: false
1028 gen_boilerplate: false
1031 gen_boilerplate: false
1033 - name: BigIntBitAnd
1034 gen_boilerplate: false
1037 gen_boilerplate: false
1039 - name: BigIntBitXor
1040 gen_boilerplate: false
1043 gen_boilerplate: false
1046 gen_boilerplate: false
1048 - name: BigIntIncrement
1049 gen_boilerplate: false
1051 - name: BigIntDecrement
1052 gen_boilerplate: false
1054 - name: BigIntNegate
1055 gen_boilerplate: false
1057 - name: BigIntBitNot
1058 gen_boilerplate: false
1060 # Adds two string, returning a string.
1062 result_type: WordSized
1068 # Get uint16 character code from a string.
1070 result_type: WordSized
1076 # Convert uint16 character code to a string.
1077 - name: FromCharCode
1078 result_type: WordSized
1082 # Convert uint32 code point to a string.
1083 - name: FromCodePoint
1084 result_type: WordSized
1086 codePoint: WordSized
1089 # Calls the ToLowerCase or ToUpperCase case conversion function.
1090 - name: StringConvertCase
1091 result_type: WordSized
1094 call_instruction: true
1098 result_type: WordSized
1101 separator: WordSized
1102 call_instruction: true
1106 result_type: WordSized
1114 - name: Int32ToDouble
1115 result_type: WordSized
1119 - name: Float32ToDouble
1120 result_type: WordSized
1124 - name: DoubleToFloat32
1125 result_type: WordSized
1129 - name: Int32ToFloat32
1130 result_type: WordSized
1134 # Convert a value to a double.
1135 - name: ValueToDouble
1136 result_type: WordSized
1141 # Convert a value to a float32.
1142 - name: ValueToFloat32
1143 result_type: WordSized
1148 - name: ValueToInt32
1149 gen_boilerplate: false
1151 # Convert a value to a BigInt.
1152 - name: ValueToBigInt
1153 result_type: WordSized
1158 # Convert a double to an int32.
1159 # Input: floating-point Register
1160 # Output: 32-bit integer
1161 # Bailout: if the double cannot be converted to an integer.
1162 - name: DoubleToInt32
1163 result_type: WordSized
1166 mir_op: ToNumberInt32
1168 # Convert a float32 to an int32.
1169 # Input: floating-point Register
1170 # Output: 32-bit integer
1171 # Bailout: if the float32 cannot be converted to an integer.
1172 - name: Float32ToInt32
1173 result_type: WordSized
1176 mir_op: ToNumberInt32
1178 # Truncates a double to an int32.
1179 # Input: floating-point Register
1180 # Output: 32-bit integer
1181 # Bailout: if the double when converted to an integer exceeds the int32
1182 # bounds. No bailout for NaN or negative zero.
1183 - name: DoubleToIntegerInt32
1184 result_type: WordSized
1187 mir_op: ToIntegerInt32
1189 # Truncates a float to an int32.
1190 # Input: floating-point Register
1191 # Output: 32-bit integer
1192 # Bailout: if the double when converted to an integer exceeds the int32
1193 # bounds. No bailout for NaN or negative zero.
1194 - name: Float32ToIntegerInt32
1195 result_type: WordSized
1198 mir_op: ToIntegerInt32
1200 # Convert a double to a truncated int32.
1201 # Input: floating-point Register
1202 # Output: 32-bit integer
1203 - name: TruncateDToInt32
1204 result_type: WordSized
1208 mir_op: TruncateToInt32
1210 # Convert a double to a truncated int32 with tls offset because we need it for
1211 # the slow ool path.
1212 - name: WasmBuiltinTruncateDToInt32
1213 result_type: WordSized
1218 mir_op: WasmBuiltinTruncateToInt32
1220 # Convert a float32 to a truncated int32.
1221 # Input: floating-point Register
1222 # Output: 32-bit integer
1223 - name: TruncateFToInt32
1224 result_type: WordSized
1228 mir_op: TruncateToInt32
1230 # Convert a float32 to a truncated int32 with tls offset because we need it for
1231 # the slow ool path.
1232 - name: WasmBuiltinTruncateFToInt32
1233 result_type: WordSized
1238 mir_op: WasmBuiltinTruncateToInt32
1240 - name: WasmTruncateToInt32
1241 result_type: WordSized
1246 - name: WrapInt64ToInt32
1247 result_type: WordSized
1252 - name: ExtendInt32ToInt64
1258 # Convert a boolean value to a string.
1259 - name: BooleanToString
1260 result_type: WordSized
1265 # Convert an integer hosted on one definition to a string with a function call.
1267 result_type: WordSized
1272 # Convert a double hosted on one definition to a string with a function call.
1273 - name: DoubleToString
1274 result_type: WordSized
1280 # Convert a primitive to a string with a function call.
1281 - name: ValueToString
1282 result_type: WordSized
1289 gen_boilerplate: false
1292 result_type: WordSized
1299 gen_boilerplate: false
1301 # Materialize a Value stored in an interpreter frame for OSR.
1303 result_type: BoxedValue
1308 # Materialize a JSObject env chain stored in an interpreter frame for OSR.
1309 - name: OsrEnvironmentChain
1310 result_type: WordSized
1315 # Materialize a JSObject env chain stored in an interpreter frame for OSR.
1316 - name: OsrReturnValue
1317 result_type: BoxedValue
1322 - name: OsrArgumentsObject
1323 result_type: WordSized
1329 result_type: WordSized
1333 - name: RegExpMatcher
1334 result_type: BoxedValue
1338 lastIndex: WordSized
1339 call_instruction: true
1342 - name: RegExpSearcher
1343 result_type: WordSized
1347 lastIndex: WordSized
1348 call_instruction: true
1351 - name: RegExpTester
1352 result_type: WordSized
1356 lastIndex: WordSized
1357 call_instruction: true
1360 - name: RegExpPrototypeOptimizable
1361 result_type: WordSized
1367 - name: RegExpInstanceOptimizable
1368 result_type: WordSized
1375 - name: GetFirstDollarIndex
1376 result_type: WordSized
1381 - name: StringReplace
1382 result_type: WordSized
1386 replacement: WordSized
1387 call_instruction: true
1390 - name: BinaryValueCache
1391 result_type: BoxedValue
1395 # Takes two temps: these are intended to be FloatReg0 and FloatReg1
1396 # to allow the actual cache code to safely clobber those values without
1401 - name: BinaryBoolCache
1402 result_type: WordSized
1406 # Takes two temps: these are intendend to be FloatReg0 and FloatReg1
1407 # To allow the actual cache code to safely clobber those values without
1413 result_type: BoxedValue
1418 - name: ModuleMetadata
1419 result_type: WordSized
1420 call_instruction: true
1423 - name: DynamicImport
1424 result_type: WordSized
1426 specifier: BoxedValue
1428 call_instruction: true
1432 result_type: WordSized
1434 environmentChain: WordSized
1439 result_type: WordSized
1441 environmentChain: WordSized
1442 newTarget: BoxedValue
1446 - name: FunctionWithProto
1447 result_type: WordSized
1450 prototype: WordSized
1451 call_instruction: true
1455 result_type: WordSized
1459 call_instruction: true
1462 - name: KeepAliveObject
1466 # Load the "slots" member out of a JSObject.
1467 # Input: JSObject pointer
1468 # Output: slots pointer
1470 result_type: WordSized
1474 # Load the "elements" member out of a JSObject.
1475 # Input: JSObject pointer
1476 # Output: elements pointer
1478 result_type: WordSized
1483 # Load the initialized length from an elements header.
1484 - name: InitializedLength
1485 result_type: WordSized
1489 # Store to the initialized length in an elements header. Note the input is an
1490 # *index*, one less than the desired initialized length.
1491 - name: SetInitializedLength
1496 # Load the length from an elements header.
1498 result_type: WordSized
1502 # Store to the length in an elements header. Note the input is an *index*,
1503 # one less than the desired length.
1504 - name: SetArrayLength
1509 # Load the "length" property of a function.
1510 - name: FunctionLength
1511 result_type: WordSized
1515 # Load the "name" property of a function.
1516 - name: FunctionName
1517 result_type: WordSized
1521 - name: GetNextEntryForIterator
1522 result_type: WordSized
1529 - name: ArrayBufferByteLength
1530 result_type: WordSized
1534 - name: ArrayBufferViewLength
1535 result_type: WordSized
1540 # Read the byteOffset of an array buffer view.
1541 - name: ArrayBufferViewByteOffset
1542 result_type: WordSized
1546 # Load an array buffer view's elements vector.
1547 - name: ArrayBufferViewElements
1548 result_type: WordSized
1552 # Return the element size of a typed array.
1553 - name: TypedArrayElementSize
1554 result_type: WordSized
1558 - name: GuardHasAttachedArrayBuffer
1563 # Double to IntPtr, eligible for accessing into a TypedArray or DataView. If
1564 # the index isn't exactly representable as an IntPtr, depending on the
1565 # supportOOB flag on the MIR instruction, either bail out or produce an IntPtr
1566 # which is equivalent to an OOB access.
1567 - name: GuardNumberToIntPtrIndex
1568 result_type: WordSized
1573 # Bailout if index >= length.
1580 - name: BoundsCheckRange
1581 gen_boilerplate: false
1583 # Bailout if index < minimum.
1584 - name: BoundsCheckLower
1589 - name: SpectreMaskIndex
1590 result_type: WordSized
1596 - name: LoadElementV
1597 gen_boilerplate: false
1600 result_type: WordSized
1604 initLength: WordSized
1607 - name: GuardElementNotHole
1612 - name: LoadElementHole
1613 gen_boilerplate: false
1615 - name: StoreElementV
1616 gen_boilerplate: false
1618 - name: StoreElementT
1619 gen_boilerplate: false
1621 - name: StoreHoleValueElement
1626 # Like LStoreElementV, but supports indexes >= initialized length.
1627 - name: StoreElementHoleV
1634 mir_op: StoreElementHole
1636 # Like LStoreElementT, but supports indexes >= initialized length.
1637 - name: StoreElementHoleT
1644 mir_op: StoreElementHole
1646 - name: ArrayPopShift
1647 gen_boilerplate: false
1650 result_type: WordSized
1658 result_type: WordSized
1664 call_instruction: true
1668 result_type: WordSized
1671 separator: WordSized
1673 call_instruction: true
1676 - name: LoadUnboxedScalar
1677 result_type: WordSized
1684 - name: LoadUnboxedBigInt
1685 gen_boilerplate: false
1687 - name: LoadDataViewElement
1688 gen_boilerplate: false
1690 - name: LoadTypedArrayElementHole
1691 result_type: BoxedValue
1698 - name: LoadTypedArrayElementHoleBigInt
1699 gen_boilerplate: false
1701 - name: StoreUnboxedScalar
1708 - name: StoreUnboxedBigInt
1709 gen_boilerplate: false
1711 - name: StoreDataViewElement
1712 gen_boilerplate: false
1714 - name: StoreTypedArrayElementHole
1723 - name: StoreTypedArrayElementHoleBigInt
1724 gen_boilerplate: false
1726 - name: AtomicIsLockFree
1727 result_type: WordSized
1731 - name: CompareExchangeTypedArrayElement
1732 gen_boilerplate: false
1734 - name: AtomicExchangeTypedArrayElement
1735 gen_boilerplate: false
1737 - name: AtomicTypedArrayElementBinop
1738 gen_boilerplate: false
1740 - name: AtomicTypedArrayElementBinopForEffect
1741 gen_boilerplate: false
1743 - name: AtomicLoad64
1744 gen_boilerplate: false
1746 - name: AtomicStore64
1747 gen_boilerplate: false
1749 - name: CompareExchangeTypedArrayElement64
1750 gen_boilerplate: false
1752 - name: AtomicExchangeTypedArrayElement64
1753 gen_boilerplate: false
1755 - name: AtomicTypedArrayElementBinop64
1756 gen_boilerplate: false
1758 - name: AtomicTypedArrayElementBinopForEffect64
1759 gen_boilerplate: false
1761 - name: EffectiveAddress
1762 result_type: WordSized
1768 - name: ClampIToUint8
1769 result_type: WordSized
1773 - name: ClampDToUint8
1774 result_type: WordSized
1779 - name: ClampVToUint8
1780 result_type: WordSized
1784 mir_op: ClampToUint8
1786 # Load a boxed value from an object's fixed slot.
1787 - name: LoadFixedSlotV
1788 result_type: BoxedValue
1791 mir_op: LoadFixedSlot
1793 # Load a typed value from an object's fixed slot.
1794 - name: LoadFixedSlotT
1795 result_type: WordSized
1798 mir_op: LoadFixedSlot
1800 - name: LoadFixedSlotAndUnbox
1801 result_type: WordSized
1806 - name: LoadDynamicSlotAndUnbox
1807 result_type: WordSized
1812 - name: LoadElementAndUnbox
1813 result_type: WordSized
1819 - name: AddAndStoreSlot
1826 - name: AllocateAndStoreSlot
1831 call_instruction: true
1834 - name: AddSlotAndCallAddPropHook
1838 call_instruction: true
1841 # Store a boxed value to an object's fixed slot.
1842 - name: StoreFixedSlotV
1846 mir_op: StoreFixedSlot
1848 # Store a typed value to an object's fixed slot.
1849 - name: StoreFixedSlotT
1853 mir_op: StoreFixedSlot
1855 # Note, Name ICs always return a Value. There are no V/T variants.
1856 - name: GetNameCache
1857 result_type: BoxedValue
1863 - name: CallGetIntrinsicValue
1864 result_type: BoxedValue
1865 call_instruction: true
1868 - name: GetPropSuperCache
1869 result_type: BoxedValue
1872 receiver: BoxedValue
1876 # Patchable jump to stubs generated for a GetProperty cache, which loads a
1878 - name: GetPropertyCache
1879 result_type: BoxedValue
1885 - name: BindNameCache
1886 result_type: WordSized
1888 environmentChain: WordSized
1893 result_type: WordSized
1895 environmentChain: WordSized
1898 # Load a value from an object's dslots or a slots vector.
1899 - name: LoadDynamicSlotV
1900 result_type: BoxedValue
1903 mir_op: LoadDynamicSlot
1905 # Store a value to an object's dslots or a slots vector.
1906 - name: StoreDynamicSlotV
1910 mir_op: StoreDynamicSlot
1912 # Store a typed value to an object's dslots or a slots vector. This has a
1913 # few advantages over LStoreDynamicSlotV:
1914 # 1) We can bypass storing the type tag if the slot has the same type as
1916 # 2) Better Register allocation: we can store constants and FP regs directly
1917 # without requiring a second Register for the value.
1918 - name: StoreDynamicSlotT
1922 mir_op: StoreDynamicSlot
1924 # Read length field of a JSString*.
1925 - name: StringLength
1926 result_type: WordSized
1930 # Take the floor of a double precision number and converts it to an int32.
1931 # Implements Math.floor().
1933 result_type: WordSized
1937 # Take the floor of a single precision number and converts it to an int32.
1938 # Implements Math.floor().
1940 result_type: WordSized
1944 # Take the ceiling of a double precision number and converts it to an int32.
1945 # Implements Math.ceil().
1947 result_type: WordSized
1951 # Take the ceiling of a single precision number and converts it to an int32.
1952 # Implements Math.ceil().
1954 result_type: WordSized
1958 # Round a double precision number and converts it to an int32.
1959 # Implements Math.round().
1961 result_type: WordSized
1967 # Round a single precision number and converts it to an int32.
1968 # Implements Math.round().
1970 result_type: WordSized
1976 # Truncates a double precision number and converts it to an int32.
1977 # Implements Math.trunc().
1979 result_type: WordSized
1983 # Truncates a single precision number and converts it to an int32.
1984 # Implements Math.trunc().
1986 result_type: WordSized
1990 # Rounds a double precision number accordingly to mir()->roundingMode(),
1991 # and keeps a double output.
1993 result_type: WordSized
1998 # Rounds a single precision number accordingly to mir()->roundingMode(),
1999 # and keeps a single output.
2001 result_type: WordSized
2006 # Load a function's call environment.
2007 - name: FunctionEnvironment
2008 result_type: WordSized
2013 result_type: WordSized
2017 - name: HomeObjectSuperBase
2018 result_type: BoxedValue
2020 homeObject: WordSized
2022 - name: NewLexicalEnvironmentObject
2023 result_type: WordSized
2025 enclosing: WordSized
2026 call_instruction: true
2029 - name: CopyLexicalEnvironmentObject
2030 result_type: WordSized
2033 call_instruction: true
2036 - name: NewClassBodyEnvironmentObject
2037 result_type: WordSized
2039 enclosing: WordSized
2040 call_instruction: true
2043 - name: CallSetElement
2048 call_instruction: true
2051 - name: CallDeleteProperty
2052 result_type: WordSized
2055 call_instruction: true
2056 mir_op: DeleteProperty
2058 - name: CallDeleteElement
2059 result_type: WordSized
2063 call_instruction: true
2064 mir_op: DeleteElement
2066 - name: ValueToIterator
2067 result_type: WordSized
2070 call_instruction: true
2071 mir_op: ValueToIterator
2073 # Patchable jump to stubs generated for a SetProperty cache.
2074 - name: SetPropertyCache
2079 # Takes an additional temp: this is intendend to be FloatReg0 to allow the
2080 # actual cache code to safely clobber that value without save and restore.
2084 - name: GetIteratorCache
2085 result_type: WordSized
2091 - name: OptimizeSpreadCallCache
2092 result_type: BoxedValue
2098 - name: IteratorMore
2099 result_type: BoxedValue
2105 - name: IsNoIterAndBranch
2106 gen_boilerplate: false
2114 # Read the number of actual arguments.
2115 - name: ArgumentsLength
2116 result_type: WordSized
2118 # Load a value from the actual arguments.
2119 - name: GetFrameArgument
2120 result_type: BoxedValue
2124 # Load a value from the actual arguments.
2125 # Returns undefined if |index| is larger-or-equals to |length|. Bails out if
2126 # |index| is negative.
2127 - name: GetFrameArgumentHole
2128 result_type: BoxedValue
2134 # Create the rest parameter.
2136 result_type: WordSized
2138 numActuals: WordSized
2140 call_instruction: true
2143 - name: Int32ToIntPtr
2144 result_type: WordSized
2149 - name: NonNegativeIntPtrToInt32
2150 result_type: WordSized
2154 - name: IntPtrToDouble
2155 result_type: WordSized
2159 - name: AdjustDataViewLength
2160 result_type: WordSized
2165 # Convert a Boolean to an Int64, following ToBigInt.
2166 - name: BooleanToInt64
2172 # Convert a String to an Int64, following ToBigInt.
2173 - name: StringToInt64
2179 # Simulate ToBigInt on a Value and produce a matching Int64.
2180 - name: ValueToInt64
2187 # Truncate a BigInt to an unboxed int64.
2188 - name: TruncateBigIntToInt64
2194 # Create a new BigInt* from an unboxed int64.
2195 - name: Int64ToBigInt
2196 result_type: WordSized
2202 # Generational write barrier used when writing an object to another object.
2203 - name: PostWriteBarrierO
2208 mir_op: PostWriteBarrier
2210 # Generational write barrier used when writing a string to an object.
2211 - name: PostWriteBarrierS
2216 mir_op: PostWriteBarrier
2218 # Generational write barrier used when writing a BigInt to an object.
2219 - name: PostWriteBarrierBI
2224 mir_op: PostWriteBarrier
2226 # Generational write barrier used when writing a value to another object.
2227 - name: PostWriteBarrierV
2232 mir_op: PostWriteBarrier
2234 # Generational write barrier used when writing an object to another object's
2236 - name: PostWriteElementBarrierO
2242 mir_op: PostWriteElementBarrier
2244 # Generational write barrier used when writing a string to an object's
2246 - name: PostWriteElementBarrierS
2252 mir_op: PostWriteElementBarrier
2254 # Generational write barrier used when writing a BigInt to an object's
2256 - name: PostWriteElementBarrierBI
2262 mir_op: PostWriteElementBarrier
2264 # Generational write barrier used when writing a value to another object's
2266 - name: PostWriteElementBarrierV
2272 mir_op: PostWriteElementBarrier
2274 # Guard against an object's identity.
2275 - name: GuardObjectIdentity
2281 # Guard against an function's identity.
2282 - name: GuardSpecificFunction
2287 - name: GuardSpecificAtom
2293 - name: GuardSpecificSymbol
2298 - name: GuardStringToIndex
2299 result_type: WordSized
2303 - name: GuardStringToInt32
2304 result_type: WordSized
2309 - name: GuardStringToDouble
2310 result_type: WordSized
2316 result_type: WordSized
2328 - name: GuardNullProto
2333 - name: GuardIsNativeObject
2338 - name: GuardIsProxy
2343 - name: GuardIsNotProxy
2348 - name: GuardIsNotDOMProxy
2354 result_type: BoxedValue
2358 call_instruction: true
2361 - name: ProxyGetByValue
2362 result_type: BoxedValue
2366 call_instruction: true
2368 - name: ProxyHasProp
2369 result_type: BoxedValue
2373 call_instruction: true
2381 call_instruction: true
2384 - name: ProxySetByValue
2389 call_instruction: true
2392 - name: CallSetArrayLength
2396 call_instruction: true
2399 - name: MegamorphicLoadSlot
2400 result_type: BoxedValue
2404 call_instruction: true
2407 - name: MegamorphicLoadSlotByValue
2408 result_type: BoxedValue
2413 call_instruction: true
2416 - name: MegamorphicStoreSlot
2417 result_type: BoxedValue
2422 call_instruction: true
2425 - name: MegamorphicHasProp
2426 result_type: WordSized
2431 call_instruction: true
2434 - name: GuardIsNotArrayBufferMaybeShared
2439 - name: GuardIsTypedArray
2444 - name: GuardNoDenseElements
2450 result_type: WordSized
2458 result_type: WordSized
2464 - name: CheckPrivateFieldCache
2465 result_type: WordSized
2471 - name: NewPrivateName
2472 result_type: WordSized
2473 call_instruction: true
2477 result_type: WordSized
2484 result_type: WordSized
2490 - name: InstanceOfCache
2491 gen_boilerplate: false
2494 result_type: WordSized
2500 result_type: WordSized
2506 - name: IsConstructor
2507 result_type: WordSized
2512 - name: IsCrossRealmArrayConstructor
2513 result_type: WordSized
2518 result_type: WordSized
2524 result_type: WordSized
2530 - name: IsTypedArray
2531 result_type: WordSized
2537 result_type: WordSized
2542 - name: IsObjectAndBranch
2543 gen_boilerplate: false
2545 - name: IsNullOrUndefined
2546 result_type: WordSized
2551 - name: IsNullOrUndefinedAndBranch
2552 gen_boilerplate: false
2555 result_type: WordSized
2560 - name: GuardToClass
2561 result_type: WordSized
2567 - name: GuardToFunction
2568 result_type: WordSized
2574 - name: ObjectClassToString
2575 result_type: WordSized
2579 call_instruction: true
2583 gen_boilerplate: false
2585 - name: WasmSelectI64
2586 gen_boilerplate: false
2588 - name: WasmCompareAndSelect
2589 gen_boilerplate: false
2591 - name: WasmAddOffset
2592 result_type: WordSized
2597 - name: WasmAddOffset64
2601 mir_op: WasmAddOffset
2603 - name: WasmBoundsCheck
2604 result_type: WordSized
2607 boundsCheckLimit: WordSized
2610 - name: WasmBoundsCheck64
2611 gen_boilerplate: false
2613 - name: WasmExtendU32Index
2614 result_type: WordSized
2619 - name: WasmWrapU32Index
2620 result_type: WordSized
2625 - name: WasmAlignmentCheck
2630 - name: WasmAlignmentCheck64
2633 mir_op: WasmAlignmentCheck
2636 result_type: WordSized
2641 - name: WasmLoadTls64
2647 - name: WasmHeapBase
2648 result_type: WordSized
2654 gen_boilerplate: false
2657 gen_boilerplate: false
2660 gen_boilerplate: false
2662 - name: WasmStoreI64
2663 gen_boilerplate: false
2665 - name: AsmJSLoadHeap
2666 result_type: WordSized
2669 boundsCheckLimit: WordSized
2670 memoryBase: WordSized
2673 - name: AsmJSStoreHeap
2674 result_type: WordSized
2678 boundsCheckLimit: WordSized
2679 memoryBase: WordSized
2682 - name: WasmCompareExchangeHeap
2683 gen_boilerplate: false
2687 - name: WasmAtomicExchangeHeap
2688 gen_boilerplate: false
2690 - name: WasmAtomicBinopHeap
2691 gen_boilerplate: false
2693 - name: WasmAtomicBinopHeapForEffect
2694 gen_boilerplate: false
2696 - name: WasmLoadSlot
2697 result_type: WordSized
2699 containerRef: WordSized
2704 - name: WasmLoadSlotI64
2707 containerRef: WordSized
2711 - name: WasmStoreSlot
2714 containerRef: WordSized
2719 - name: WasmStoreSlotI64
2722 containerRef: WordSized
2726 - name: WasmDerivedPointer
2727 gen_boilerplate: false
2729 - name: WasmStoreRef
2732 valueAddr: WordSized
2737 - name: WasmParameter
2738 result_type: WordSized
2740 - name: WasmParameterI64
2741 gen_boilerplate: false
2748 - name: WasmReturnI64
2753 - name: WasmReturnVoid
2757 - name: WasmStackArg
2762 - name: WasmStackArgI64
2765 mir_op: WasmStackArg
2767 - name: WasmNullConstant
2768 result_type: WordSized
2771 gen_boilerplate: false
2773 - name: WasmRegisterResult
2774 gen_boilerplate: false
2776 - name: WasmRegisterPairResult
2777 gen_boilerplate: false
2779 - name: WasmStackResultArea
2780 result_type: WordSized
2784 - name: WasmStackResult
2785 gen_boilerplate: false
2787 - name: WasmStackResult64
2788 gen_boilerplate: false
2790 - name: AssertRangeI
2791 gen_boilerplate: false
2793 - name: AssertRangeD
2794 gen_boilerplate: false
2796 - name: AssertRangeF
2797 gen_boilerplate: false
2799 - name: AssertRangeV
2800 gen_boilerplate: false
2813 - name: AssertResultT
2817 - name: AssertResultV
2826 - name: GuardNullOrUndefined
2831 - name: GuardIsNotObject
2836 - name: GuardFunctionFlags
2841 - name: GuardFunctionIsNonBuiltinCtor
2846 - name: GuardFunctionKind
2852 - name: GuardFunctionScript
2857 - name: IncrementWarmUpCounter
2861 - name: LexicalCheck
2866 - name: ThrowRuntimeLexicalError
2867 call_instruction: true
2871 call_instruction: true
2874 - name: GlobalDeclInstantiation
2877 - name: MemoryBarrier
2878 gen_boilerplate: false
2882 call_instruction: true
2885 result_type: BoxedValue
2887 - name: ArrowNewTarget
2888 result_type: BoxedValue
2893 gen_boilerplate: false
2896 result_type: BoxedValue
2898 returnValue: BoxedValue
2899 thisValue: BoxedValue
2902 result_type: WordSized
2907 - name: CheckObjCoercible
2911 - name: CheckClassHeritage
2913 heritage: BoxedValue
2920 - name: CheckThisReinit
2922 thisValue: BoxedValue
2925 result_type: WordSized
2928 environmentChain: WordSized
2929 argsObject: WordSized
2930 call_instruction: true
2933 - name: AsyncResolve
2934 result_type: WordSized
2936 generator: WordSized
2937 valueOrReason: BoxedValue
2938 call_instruction: true
2942 result_type: WordSized
2945 generator: WordSized
2946 call_instruction: true
2949 - name: CanSkipAwait
2950 result_type: WordSized
2953 call_instruction: true
2956 - name: MaybeExtractAwaitValue
2957 result_type: BoxedValue
2961 call_instruction: true
2964 - name: DebugCheckSelfHosted
2967 call_instruction: true
2969 - name: FinishBoundFunctionInit
2976 - name: IsPackedArray
2977 result_type: WordSized
2982 - name: GuardArrayIsPacked
2988 - name: GetPrototypeOf
2989 result_type: BoxedValue
2993 - name: ObjectWithProto
2994 result_type: WordSized
2996 prototype: BoxedValue
2997 call_instruction: true
2999 - name: ObjectStaticProto
3000 result_type: WordSized
3004 - name: BuiltinObject
3005 result_type: WordSized
3006 call_instruction: true
3009 - name: SuperFunction
3010 result_type: BoxedValue
3015 - name: InitHomeObject
3016 result_type: WordSized
3019 homeObject: BoxedValue
3021 - name: IsTypedArrayConstructor
3022 result_type: WordSized
3026 - name: LoadValueTag
3027 result_type: WordSized
3031 - name: GuardTagNotEqual
3036 - name: LoadWrapperTarget
3037 result_type: WordSized
3041 - name: GuardHasGetterSetter
3045 call_instruction: true
3048 - name: GuardIsExtensible
3053 - name: GuardInt32IsNonNegative
3057 - name: GuardIndexGreaterThanDenseInitLength
3063 - name: GuardIndexIsValidUpdateOrAdd
3069 - name: CallAddOrUpdateSparseElement
3074 call_instruction: true
3077 - name: CallGetSparseElement
3078 result_type: BoxedValue
3082 call_instruction: true
3084 - name: CallNativeGetElement
3085 result_type: BoxedValue
3089 call_instruction: true
3091 - name: CallObjectHasSparseElement
3092 result_type: WordSized
3097 call_instruction: true
3099 - name: BigIntAsIntN
3100 result_type: WordSized
3104 call_instruction: true
3106 - name: BigIntAsIntN64
3107 gen_boilerplate: false
3109 - name: BigIntAsIntN32
3110 gen_boilerplate: false
3112 - name: GuardNonGCThing
3116 - name: ToHashableNonGCThing
3117 result_type: BoxedValue
3122 - name: ToHashableString
3123 result_type: WordSized
3127 - name: ToHashableValue
3128 result_type: BoxedValue
3133 - name: HashNonGCThing
3134 result_type: WordSized
3140 result_type: WordSized
3146 result_type: WordSized
3151 result_type: WordSized
3157 result_type: WordSized
3159 setObject: WordSized
3164 result_type: WordSized
3166 setObject: WordSized
3170 - name: SetObjectHasNonBigInt
3171 result_type: WordSized
3173 setObject: WordSized
3178 - name: SetObjectHasBigInt
3179 result_type: WordSized
3181 setObject: WordSized
3186 - name: SetObjectHasValue
3187 result_type: WordSized
3189 setObject: WordSized
3194 - name: SetObjectHasValueVMCall
3195 result_type: WordSized
3196 call_instruction: true
3198 setObject: WordSized
3201 - name: MapObjectHasNonBigInt
3202 result_type: WordSized
3204 mapObject: WordSized
3209 - name: MapObjectHasBigInt
3210 result_type: WordSized
3212 mapObject: WordSized
3217 - name: MapObjectHasValue
3218 result_type: WordSized
3220 mapObject: WordSized
3225 - name: MapObjectHasValueVMCall
3226 result_type: WordSized
3227 call_instruction: true
3229 mapObject: WordSized
3232 - name: MapObjectGetNonBigInt
3233 result_type: BoxedValue
3235 mapObject: WordSized
3240 - name: MapObjectGetBigInt
3241 result_type: BoxedValue
3243 mapObject: WordSized
3248 - name: MapObjectGetValue
3249 result_type: BoxedValue
3251 mapObject: WordSized
3256 - name: MapObjectGetValueVMCall
3257 result_type: BoxedValue
3258 call_instruction: true
3260 mapObject: WordSized
3263 - name: BigIntAsUintN
3264 result_type: WordSized
3268 call_instruction: true
3270 - name: BigIntAsUintN64
3271 gen_boilerplate: false
3273 - name: BigIntAsUintN32
3274 gen_boilerplate: false
3276 - name: IonToWasmCall
3277 gen_boilerplate: false
3279 - name: IonToWasmCallV
3280 gen_boilerplate: false
3282 - name: IonToWasmCallI64
3283 gen_boilerplate: false
3285 - name: WasmBoxValue
3286 result_type: WordSized
3290 - name: WasmAnyRefFromJSObject
3291 result_type: WordSized
3297 result_type: WordSized
3299 simd128: SimdConstant
3301 - name: WasmTernarySimd128
3302 gen_boilerplate: false
3304 - name: WasmBinarySimd128
3305 gen_boilerplate: false
3307 - name: WasmBinarySimd128WithConstant
3308 gen_boilerplate: false
3310 - name: WasmVariableShiftSimd128
3311 gen_boilerplate: false
3313 - name: WasmConstantShiftSimd128
3314 gen_boilerplate: false
3316 - name: WasmSignReplicationSimd128
3317 gen_boilerplate: false
3319 - name: WasmShuffleSimd128
3320 gen_boilerplate: false
3322 - name: WasmPermuteSimd128
3323 gen_boilerplate: false
3325 - name: WasmReplaceLaneSimd128
3326 gen_boilerplate: false
3328 - name: WasmReplaceInt64LaneSimd128
3329 gen_boilerplate: false
3331 - name: WasmScalarToSimd128
3332 gen_boilerplate: false
3334 - name: WasmInt64ToSimd128
3335 gen_boilerplate: false
3337 - name: WasmUnarySimd128
3338 gen_boilerplate: false
3340 - name: WasmReduceSimd128
3341 gen_boilerplate: false
3343 - name: WasmReduceAndBranchSimd128
3344 gen_boilerplate: false
3346 - name: WasmReduceSimd128ToInt64
3347 gen_boilerplate: false
3349 - name: WasmLoadLaneSimd128
3350 gen_boilerplate: false
3352 - name: WasmStoreLaneSimd128
3353 gen_boilerplate: false
3356 gen_boilerplate: false
3358 - name: UnboxFloatingPoint
3359 gen_boilerplate: false
3361 - name: WasmUint32ToDouble
3362 gen_boilerplate: false
3364 - name: WasmUint32ToFloat32
3365 gen_boilerplate: false
3368 gen_boilerplate: false
3371 gen_boilerplate: false
3374 gen_boilerplate: false
3377 gen_boilerplate: false
3380 gen_boilerplate: false
3382 - name: TableSwitchV
3383 gen_boilerplate: false
3386 gen_boilerplate: false
3388 - name: WasmExceptionDataPointer
3389 gen_boilerplate: false
3391 - name: WasmExceptionRefsPointer
3392 gen_boilerplate: false
3394 - name: WasmLoadExceptionRefsValue
3395 gen_boilerplate: false
3397 #ifdef JS_CODEGEN_X86
3398 - name: BoxFloatingPoint
3399 gen_boilerplate: false
3402 gen_boilerplate: false
3404 - name: UDivOrModI64
3405 gen_boilerplate: false
3407 - name: DivOrModConstantI
3408 gen_boilerplate: false
3411 gen_boilerplate: false
3413 - name: UDivOrModConstant
3414 gen_boilerplate: false
3416 - name: WasmTruncateToInt64
3417 gen_boilerplate: false
3419 - name: Int64ToFloatingPoint
3420 gen_boilerplate: false
3422 - name: WasmAtomicLoadI64
3423 gen_boilerplate: false
3425 - name: WasmAtomicStoreI64
3426 gen_boilerplate: false
3428 - name: WasmCompareExchangeI64
3429 gen_boilerplate: false
3431 - name: WasmAtomicBinopI64
3432 gen_boilerplate: false
3434 - name: WasmAtomicExchangeI64
3435 gen_boilerplate: false
3438 #ifdef JS_CODEGEN_X64
3440 gen_boilerplate: false
3442 - name: UDivOrModI64
3443 gen_boilerplate: false
3445 - name: DivOrModConstantI
3446 gen_boilerplate: false
3449 gen_boilerplate: false
3451 - name: UDivOrModConstant
3452 gen_boilerplate: false
3454 - name: WasmTruncateToInt64
3455 gen_boilerplate: false
3457 - name: Int64ToFloatingPoint
3458 gen_boilerplate: false
3461 #ifdef JS_CODEGEN_ARM
3462 - name: BoxFloatingPoint
3463 gen_boilerplate: false
3466 gen_boilerplate: false
3468 - name: UDivOrModI64
3469 gen_boilerplate: false
3472 gen_boilerplate: false
3475 gen_boilerplate: false
3478 gen_boilerplate: false
3481 gen_boilerplate: false
3484 gen_boilerplate: false
3486 - name: SoftUDivOrMod
3487 gen_boilerplate: false
3489 - name: Int64ToFloatingPointCall
3490 gen_boilerplate: false
3492 - name: WasmTruncateToInt64
3493 gen_boilerplate: false
3495 - name: WasmAtomicLoadI64
3496 gen_boilerplate: false
3498 - name: WasmAtomicStoreI64
3499 gen_boilerplate: false
3501 - name: WasmCompareExchangeI64
3502 gen_boilerplate: false
3504 - name: WasmAtomicBinopI64
3505 gen_boilerplate: false
3507 - name: WasmAtomicExchangeI64
3508 gen_boilerplate: false
3511 #ifdef JS_CODEGEN_ARM64
3513 gen_boilerplate: false
3515 - name: UDivOrModI64
3516 gen_boilerplate: false
3518 - name: DivConstantI
3519 gen_boilerplate: false
3521 - name: UDivConstantI
3522 gen_boilerplate: false
3525 gen_boilerplate: false
3528 gen_boilerplate: false
3531 gen_boilerplate: false
3533 - name: WasmTruncateToInt64
3534 gen_boilerplate: false
3536 - name: Int64ToFloatingPoint
3537 gen_boilerplate: false
3540 #ifdef JS_CODEGEN_MIPS32
3541 - name: BoxFloatingPoint
3542 gen_boilerplate: false
3545 gen_boilerplate: false
3547 - name: UDivOrModI64
3548 gen_boilerplate: false
3551 gen_boilerplate: false
3554 gen_boilerplate: false
3556 - name: WasmTruncateToInt64
3557 gen_boilerplate: false
3559 - name: Int64ToFloatingPoint
3560 gen_boilerplate: false
3562 - name: WasmUnalignedLoad
3563 gen_boilerplate: false
3565 - name: WasmUnalignedLoadI64
3566 gen_boilerplate: false
3568 - name: WasmUnalignedStore
3569 gen_boilerplate: false
3571 - name: WasmUnalignedStoreI64
3572 gen_boilerplate: false
3574 - name: WasmAtomicLoadI64
3575 gen_boilerplate: false
3577 - name: WasmAtomicStoreI64
3578 gen_boilerplate: false
3580 - name: WasmCompareExchangeI64
3581 gen_boilerplate: false
3583 - name: WasmAtomicBinopI64
3584 gen_boilerplate: false
3586 - name: WasmAtomicExchangeI64
3587 gen_boilerplate: false
3590 #ifdef JS_CODEGEN_MIPS64
3592 gen_boilerplate: false
3595 gen_boilerplate: false
3597 - name: UDivOrModI64
3598 gen_boilerplate: false
3601 gen_boilerplate: false
3603 - name: WasmTruncateToInt64
3604 gen_boilerplate: false
3606 - name: Int64ToFloatingPoint
3607 gen_boilerplate: false
3609 - name: WasmUnalignedLoad
3610 gen_boilerplate: false
3612 - name: WasmUnalignedLoadI64
3613 gen_boilerplate: false
3615 - name: WasmUnalignedStore
3616 gen_boilerplate: false
3618 - name: WasmUnalignedStoreI64
3619 gen_boilerplate: false
3621 - name: WasmCompareExchangeI64
3622 gen_boilerplate: false
3624 - name: WasmAtomicBinopI64
3625 gen_boilerplate: false
3627 - name: WasmAtomicExchangeI64
3628 gen_boilerplate: false