OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1252 } else { | 1252 } else { |
1253 // Test the non-zero operand for negative sign. | 1253 // Test the non-zero operand for negative sign. |
1254 __ or_(ToRegister(instr->temp()), ToOperand(right)); | 1254 __ or_(ToRegister(instr->temp()), ToOperand(right)); |
1255 DeoptimizeIf(sign, instr->environment()); | 1255 DeoptimizeIf(sign, instr->environment()); |
1256 } | 1256 } |
1257 __ bind(&done); | 1257 __ bind(&done); |
1258 } | 1258 } |
1259 } | 1259 } |
1260 | 1260 |
1261 | 1261 |
| 1262 void LCodeGen::DoMultiplyAddD(LMultiplyAddD* instr) { |
| 1263 XMMRegister a = ToDoubleRegister(instr->a()); |
| 1264 XMMRegister b = ToDoubleRegister(instr->b()); |
| 1265 XMMRegister c = ToDoubleRegister(instr->c()); |
| 1266 |
| 1267 // This is computed in-place. |
| 1268 ASSERT(a.is(ToDoubleRegister(instr->result()))); |
| 1269 |
| 1270 __ mulsd(a, b); |
| 1271 __ addsd(a, c); |
| 1272 } |
| 1273 |
| 1274 |
1262 void LCodeGen::DoBitI(LBitI* instr) { | 1275 void LCodeGen::DoBitI(LBitI* instr) { |
1263 LOperand* left = instr->left(); | 1276 LOperand* left = instr->left(); |
1264 LOperand* right = instr->right(); | 1277 LOperand* right = instr->right(); |
1265 ASSERT(left->Equals(instr->result())); | 1278 ASSERT(left->Equals(instr->result())); |
1266 ASSERT(left->IsRegister()); | 1279 ASSERT(left->IsRegister()); |
1267 | 1280 |
1268 if (right->IsConstantOperand()) { | 1281 if (right->IsConstantOperand()) { |
1269 int right_operand = ToInteger32(LConstantOperand::cast(right)); | 1282 int right_operand = ToInteger32(LConstantOperand::cast(right)); |
1270 switch (instr->op()) { | 1283 switch (instr->op()) { |
1271 case Token::BIT_AND: | 1284 case Token::BIT_AND: |
(...skipping 4303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5575 FixedArray::kHeaderSize - kPointerSize)); | 5588 FixedArray::kHeaderSize - kPointerSize)); |
5576 __ bind(&done); | 5589 __ bind(&done); |
5577 } | 5590 } |
5578 | 5591 |
5579 | 5592 |
5580 #undef __ | 5593 #undef __ |
5581 | 5594 |
5582 } } // namespace v8::internal | 5595 } } // namespace v8::internal |
5583 | 5596 |
5584 #endif // V8_TARGET_ARCH_IA32 | 5597 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |