Home | History | Annotate | Download | only in jit

Lines Matching defs:op1

91     unsigned op1 = currentInstruction[1].u.operand;
99 if (isOperandConstantImmediateInt(op1)) {
102 addJump(branch32(LessThanOrEqual, regT2, Imm32(getConstantOperand(op1).asInt32())), target);
104 emitLoad(op1, regT1, regT0);
108 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
122 emitBinaryDoubleOp(op_jnless, target, op1, op2, OperandTypes(), notInt32Op1, notInt32Op2, !isOperandConstantImmediateInt(op1), isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2));
128 unsigned op1 = currentInstruction[1].u.operand;
133 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
137 if (!isOperandConstantImmediateInt(op1)) {
141 if (isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2))
146 stubCall.addArgument(op1);
154 unsigned op1 = currentInstruction[1].u.operand;
162 if (isOperandConstantImmediateInt(op1)) {
165 addJump(branch32(GreaterThan, regT2, Imm32(getConstantOperand(op1).asInt32())), target);
167 emitLoad(op1, regT1, regT0);
171 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
185 emitBinaryDoubleOp(op_jless, target, op1, op2, OperandTypes(), notInt32Op1, notInt32Op2, !isOperandConstantImmediateInt(op1), isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2));
191 unsigned op1 = currentInstruction[1].u.operand;
196 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
200 if (!isOperandConstantImmediateInt(op1)) {
204 if (isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2))
209 stubCall.addArgument(op1);
217 unsigned op1 = currentInstruction[1].u.operand;
225 if (isOperandConstantImmediateInt(op1)) {
228 addJump(branch32(LessThan, regT2, Imm32(getConstantOperand(op1).asInt32())), target);
230 emitLoad(op1, regT1, regT0);
234 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
248 emitBinaryDoubleOp(op_jnlesseq, target, op1, op2, OperandTypes(), notInt32Op1, notInt32Op2, !isOperandConstantImmediateInt(op1), isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2));
254 unsigned op1 = currentInstruction[1].u.operand;
259 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
263 if (!isOperandConstantImmediateInt(op1)) {
267 if (isOperandConstantImmediateInt(op1) || !isOperandConstantImmediateInt(op2))
272 stubCall.addArgument(op1);
283 unsigned op1 = currentInstruction[2].u.operand;
287 emitLoad(op1, regT1, regT0);
290 emitStoreInt32(dst, regT0, dst == op1);
294 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
295 if (!isOperandConstantImmediateInt(op1))
299 emitStoreInt32(dst, regT0, dst == op1 || dst == op2);
305 unsigned op1 = currentInstruction[2].u.operand;
308 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
313 stubCall.addArgument(op1);
323 unsigned op1 = currentInstruction[2].u.operand;
327 emitLoad(op1, regT1, regT0);
330 emitStoreInt32(dst, regT0, dst == op1);
334 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
335 if (!isOperandConstantImmediateInt(op1))
339 emitStoreInt32(dst, regT0, dst == op1 || dst == op2);
345 unsigned op1 = currentInstruction[2].u.operand;
348 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
353 stubCall.addArgument(op1);
363 unsigned op1 = currentInstruction[2].u.operand;
368 if (getOperandConstantImmediateInt(op1, op2, op, constant)) {
376 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
380 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
386 unsigned op1 = currentInstruction[2].u.operand;
389 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
394 stubCall.addArgument(op1);
404 unsigned op1 = currentInstruction[2].u.operand;
409 if (getOperandConstantImmediateInt(op1, op2, op, constant)) {
417 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
421 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
427 unsigned op1 = currentInstruction[2].u.operand;
430 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
435 stubCall.addArgument(op1);
445 unsigned op1 = currentInstruction[2].u.operand;
450 if (getOperandConstantImmediateInt(op1, op2, op, constant)) {
458 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
462 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
468 unsigned op1 = currentInstruction[2].u.operand;
471 if (!isOperandConstantImmediateInt(op1) && !isOperandConstantImmediateInt(op2))
476 stubCall.addArgument(op1);
629 unsigned op1 = currentInstruction[2].u.operand;
635 stubCall.addArgument(op1);
646 if (getOperandConstantImmediateInt(op1, op2, op, constant)) {
647 emitAdd32Constant(dst, op, constant, op == op1 ? types.first() : types.second());
651 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
657 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
667 emitBinaryDoubleOp(op_add, dst, op1, op2, types, notInt32Op1, notInt32Op2);
701 unsigned op1 = currentInstruction[2].u.operand;
710 if (getOperandConstantImmediateInt(op1, op2, op, constant)) {
716 ResultType opType = op == op1 ? types.first() : types.second();
738 stubCall.addArgument(op1);
748 unsigned op1 = currentInstruction[2].u.operand;
756 emitSub32Constant(dst, op1, getConstantOperand(op2).asInt32(), types.first());
760 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
766 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
776 emitBinaryDoubleOp(op_sub, dst, op1, op2, types, notInt32Op1, notInt32Op2);
810 unsigned op1 = currentInstruction[2].u.operand;
837 stubCall.addArgument(op1);
842 void JIT::emitBinaryDoubleOp(OpcodeID opcodeID, unsigned dst, unsigned op1, unsigned op2, OperandTypes types, JumpList& notInt32Op1, JumpList& notInt32Op2, bool op1IsInRegisters, bool op2IsInRegisters)
847 // Double case 1: Op1 is not int32; Op2 is unknown.
852 // Verify Op1 is double.
875 emitLoadDouble(op1, fpRegT2);
880 emitLoadDouble(op1, fpRegT2);
885 emitLoadDouble(op1, fpRegT1);
890 emitLoadDouble(op1, fpRegT1);
895 emitLoadDouble(op1, fpRegT2);
899 emitLoadDouble(op1, fpRegT2);
903 emitLoadDouble(op1, fpRegT2);
915 // Double case 2: Op1 is int32; Op2 is not int32.
921 emitLoadPayload(op1, regT0);
976 op1 = currentInstruction[2].u.operand;
983 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
991 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
1001 emitBinaryDoubleOp(op_mul, dst, op1, op2, types, notInt32Op1, notInt32Op2);
1008 unsigned op1 = currentInstruction[2].u.operand;
1016 emitStoreInt32(dst, Imm32(0), (op1 == dst || op2 == dst));
1040 stubCall.addArgument(op1);
1050 unsigned op1 = currentInstruction[2].u.operand;
1065 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
1078 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
1087 emitBinaryDoubleOp(op_div, dst, op1, op2, types, notInt32Op1, notInt32Op2);
1094 unsigned op1 = currentInstruction[2].u.operand;
1111 stubCall.addArgument(op1);
1125 unsigned op1 = currentInstruction[2].u.operand;
1129 emitLoad(op1, X86Registers::edx, X86Registers::eax);
1135 emitLoad2(op1, X86Registers::edx, X86Registers::eax, op2, X86Registers::ebx, X86Registers::ecx);
1155 emitStoreInt32(dst, X86Registers::edx, (op1 == dst || op2 == dst));
1162 unsigned op1 = currentInstruction[2].u.operand;
1177 stubCall.addArgument(op1);
1187 unsigned op1 = currentInstruction[2].u.operand;
1191 emitLoad2(op1, regT1, regT0, op2, regT3, regT2);
1199 emitStoreInt32(dst, regT0, (op1 == dst || op2 == dst));
1202 stubCall.addArgument(op1);
1212 unsigned op1 = currentInstruction[2].u.operand;
1218 stubCall.addArgument(op1);
1235 unsigned op1 = currentInstruction[2].u.operand;
1238 emitGetVirtualRegisters(op1, regT0, op2, regT2);
1256 unsigned op1 = currentInstruction[2].u.operand;
1260 UNUSED_PARAM(op1);
1269 emitGetVirtualRegisters(op1, regT0, op2, regT2);
1282 unsigned op1 = currentInstruction[2].u.operand;
1287 emitGetVirtualRegister(op1, regT0);
1292 emitGetVirtualRegisters(op1, regT0, op2, regT2);
1303 emitJumpSlowCaseIfNotJSCell(regT0, op1);
1333 unsigned op1 = currentInstruction[2].u.operand;
1349 linkSlowCaseIfNotJSCell(iter, op1);
1355 // We're reloading op1 to regT0 as we can no longer guarantee that
1358 stubCall.addArgument(op1, regT0);
1373 unsigned op1 = currentInstruction[1].u.operand;
1383 emitGetVirtualRegister(op1, regT0);
1391 } else if (isOperandConstantImmediateInt(op1)) {
1395 int32_t op1imm = getConstantOperandImmediateInt(op1);
1397 int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
1401 emitGetVirtualRegisters(op1, regT0, op2, regT1);
1411 unsigned op1 = currentInstruction[1].u.operand;
1430 if (!m_codeBlock->isKnownNotImmediate(op1))
1449 if (!m_codeBlock->isKnownNotImmediate(op1))
1461 } else if (isOperandConstantImmediateInt(op1)) {
1478 int32_t op1imm = getConstantOperand(op1).asInt32();;
1497 stubCall.addArgument(op1, regT2);
1516 if (!m_codeBlock->isKnownNotImmediate(op1))
1538 if (!m_codeBlock->isKnownNotImmediate(op1))
1558 unsigned op1 = currentInstruction[1].u.operand;
1568 emitGetVirtualRegister(op1, regT0);
1576 } else if (isOperandConstantImmediateInt(op1)) {
1580 int32_t op1imm = getConstantOperandImmediateInt(op1);
1582 int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
1586 emitGetVirtualRegisters(op1, regT0, op2, regT1);
1596 unsigned op1 = currentInstruction[1].u.operand;
1615 if (!m_codeBlock->isKnownNotImmediate(op1))
1634 if (!m_codeBlock->isKnownNotImmediate(op1))
1646 } else if (isOperandConstantImmediateInt(op1)) {
1663 int32_t op1imm = getConstantOperand(op1).asInt32();
1682 stubCall.addArgument(op1, regT2);
1701 if (!m_codeBlock->isKnownNotImmediate(op1))
1723 if (!m_codeBlock->isKnownNotImmediate(op1))
1743 unsigned op1 = currentInstruction[1].u.operand;
1753 emitGetVirtualRegister(op1, regT0);
1761 } else if (isOperandConstantImmediateInt(op1)) {
1765 int32_t op1imm = getConstantOperandImmediateInt(op1);
1767 int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
1771 emitGetVirtualRegisters(op1, regT0, op2, regT1);
1781 unsigned op1 = currentInstruction[1].u.operand;
1800 if (!m_codeBlock->isKnownNotImmediate(op1))
1819 if (!m_codeBlock->isKnownNotImmediate(op1))
1831 } else if (isOperandConstantImmediateInt(op1)) {
1848 int32_t op1imm = getConstantOperand(op1).asInt32();;
1867 stubCall.addArgument(op1, regT2);
1886 if (!m_codeBlock->isKnownNotImmediate(op1))
1908 if (!m_codeBlock->isKnownNotImmediate(op1))
1929 unsigned op1 = currentInstruction[2].u.operand;
1932 if (isOperandConstantImmediateInt(op1)) {
1936 int32_t imm = getConstantOperandImmediateInt(op1);
1941 andPtr(Imm32(static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)))), regT0);
1944 emitGetVirtualRegister(op1, regT0);
1955 emitGetVirtualRegisters(op1, regT0, op2, regT1);
1965 unsigned op1 = currentInstruction[2].u.operand;
1969 if (isOperandConstantImmediateInt(op1)) {
1971 stubCall.addArgument(op1, regT2);
1981 stubCall.addArgument(op1, regT2);
2116 unsigned op1 = currentInstruction[2].u.operand;
2119 emitGetVirtualRegisters(op1, X86Registers::eax, op2, X86Registers::ecx);
2165 unsigned op1 = currentInstruction[2].u.operand;
2169 emitGetVirtualRegisters(op1, regT0, op2, regT2);
2180 stubCall.addArgument(op1, regT2);
2190 unsigned op1 = currentInstruction[2].u.operand;
2196 stubCall.addArgument(op1, regT2);
2212 void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned, unsigned op1, unsigned op2, OperandTypes)
2214 emitGetVirtualRegisters(op1, regT0, op2, regT1);
2229 void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned result, unsigned op1, unsigned op2, OperandTypes types, bool op1HasImmediateIntFastCase, bool op2HasImmediateIntFastCase)
2248 emitGetVirtualRegister(op1, regT0);
2253 emitGetVirtualRegister(op1, regT0);
2265 emitGetVirtualRegister(op1, regT1);
2321 unsigned op1 = currentInstruction[2].u.operand;
2327 stubCall.addArgument(op1, regT2);
2333 if (isOperandConstantImmediateInt(op1)) {
2336 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1)), regT0));
2339 emitGetVirtualRegister(op1, regT0);
2344 compileBinaryArithOp(op_add, result, op1, op2, types);
2352 unsigned op1 = currentInstruction[2].u.operand;
2359 bool op1HasImmediateIntFastCase = isOperandConstantImmediateInt(op1);
2361 compileBinaryArithOpSlowCase(op_add, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand), op1HasImmediateIntFastCase, op2HasImmediateIntFastCase);
2367 unsigned op1 = currentInstruction[2].u.operand;
2373 if (isOperandConstantImmediateInt(op1) && ((value = getConstantOperandImmediateInt(op1)) > 0)) {
2379 emitGetVirtualRegister(op1, regT0);
2384 compileBinaryArithOp(op_mul, result, op1, op2, types);
2392 unsigned op1 = currentInstruction[2].u.operand;
2396 bool op1HasImmediateIntFastCase = isOperandConstantImmediateInt(op1) && getConstantOperandImmediateInt(op1) > 0;
2398 compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand), op1HasImmediateIntFastCase, op2HasImmediateIntFastCase);
2404 unsigned op1 = currentInstruction[2].u.operand;
2408 if (isOperandConstantImmediateDouble(op1)) {
2409 emitGetVirtualRegister(op1, regT0);
2412 } else if (isOperandConstantImmediateInt(op1)) {
2413 emitLoadInt32ToDouble(op1, fpRegT0);
2415 emitGetVirtualRegister(op1, regT0);
2457 unsigned op1 = currentInstruction[2].u.operand;
2466 if (!isOperandConstantImmediateDouble(op1) && !isOperandConstantImmediateInt(op1)) {
2474 // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
2476 stubCall.addArgument(op1, regT2);
2484 unsigned op1 = currentInstruction[2].u.operand;
2488 compileBinaryArithOp(op_sub, result, op1, op2, types);
2495 unsigned op1 = currentInstruction[2].u.operand;
2499 compileBinaryArithOpSlowCase(op_sub, iter, result, op1, op2, types, false, false);
2563 // Check op1 is a number
2680 unsigned op1 = currentInstruction[2].u.operand;
2686 stubCall.addArgument(op1, regT2);
2692 if (isOperandConstantImmediateInt(op1)) {
2695 addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), regT0));
2699 emitGetVirtualRegister(op1, regT0);
2705 compileBinaryArithOp(op_add, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
2712 unsigned op1 = currentInstruction[2].u.operand;
2719 if (isOperandConstantImmediateInt(op1)) {
2722 sub32(Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), regT0);
2725 stubCall.addArgument(op1, regT2);
2740 op1, op2, types);
2747 unsigned op1 = currentInstruction[2].u.operand;
2752 if (isOperandConstantImmediateInt(op1) && ((value = getConstantOperandImmediateInt(op1)) > 0)) {
2761 emitGetVirtualRegister(op1, regT0);
2769 compileBinaryArithOp(op_mul, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
2775 unsigned op1 = currentInstruction[2].u.operand;
2778 if ((isOperandConstantImmediateInt(op1) && (getConstantOperandImmediateInt(op1) > 0))
2782 // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
2784 stubCall.addArgument(op1, regT2);
2788 compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));