OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/compiler/code-generator-impl.h" | 7 #include "src/compiler/code-generator-impl.h" |
8 #include "src/compiler/gap-resolver.h" | 8 #include "src/compiler/gap-resolver.h" |
9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
10 #include "src/compiler/node-properties-inl.h" | 10 #include "src/compiler/node-properties-inl.h" |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 break; | 268 break; |
269 case kX64Test: | 269 case kX64Test: |
270 ASSEMBLE_BINOP(testq); | 270 ASSEMBLE_BINOP(testq); |
271 break; | 271 break; |
272 case kX64Imul32: | 272 case kX64Imul32: |
273 if (HasImmediateInput(instr, 1)) { | 273 if (HasImmediateInput(instr, 1)) { |
274 RegisterOrOperand input = i.InputRegisterOrOperand(0); | 274 RegisterOrOperand input = i.InputRegisterOrOperand(0); |
275 if (input.type == kRegister) { | 275 if (input.type == kRegister) { |
276 __ imull(i.OutputRegister(), input.reg, i.InputImmediate(1)); | 276 __ imull(i.OutputRegister(), input.reg, i.InputImmediate(1)); |
277 } else { | 277 } else { |
278 __ movq(kScratchRegister, input.operand); | 278 __ imull(i.OutputRegister(), input.operand, i.InputImmediate(1)); |
279 __ imull(i.OutputRegister(), kScratchRegister, i.InputImmediate(1)); | |
280 } | 279 } |
281 } else { | 280 } else { |
282 RegisterOrOperand input = i.InputRegisterOrOperand(1); | 281 RegisterOrOperand input = i.InputRegisterOrOperand(1); |
283 if (input.type == kRegister) { | 282 if (input.type == kRegister) { |
284 __ imull(i.OutputRegister(), input.reg); | 283 __ imull(i.OutputRegister(), input.reg); |
285 } else { | 284 } else { |
286 __ imull(i.OutputRegister(), input.operand); | 285 __ imull(i.OutputRegister(), input.operand); |
287 } | 286 } |
288 } | 287 } |
289 break; | 288 break; |
290 case kX64Imul: | 289 case kX64Imul: |
291 if (HasImmediateInput(instr, 1)) { | 290 if (HasImmediateInput(instr, 1)) { |
292 RegisterOrOperand input = i.InputRegisterOrOperand(0); | 291 RegisterOrOperand input = i.InputRegisterOrOperand(0); |
293 if (input.type == kRegister) { | 292 if (input.type == kRegister) { |
294 __ imulq(i.OutputRegister(), input.reg, i.InputImmediate(1)); | 293 __ imulq(i.OutputRegister(), input.reg, i.InputImmediate(1)); |
295 } else { | 294 } else { |
296 __ movq(kScratchRegister, input.operand); | 295 __ imulq(i.OutputRegister(), input.operand, i.InputImmediate(1)); |
297 __ imulq(i.OutputRegister(), kScratchRegister, i.InputImmediate(1)); | |
298 } | 296 } |
299 } else { | 297 } else { |
300 RegisterOrOperand input = i.InputRegisterOrOperand(1); | 298 RegisterOrOperand input = i.InputRegisterOrOperand(1); |
301 if (input.type == kRegister) { | 299 if (input.type == kRegister) { |
302 __ imulq(i.OutputRegister(), input.reg); | 300 __ imulq(i.OutputRegister(), input.reg); |
303 } else { | 301 } else { |
304 __ imulq(i.OutputRegister(), input.operand); | 302 __ imulq(i.OutputRegister(), input.operand); |
305 } | 303 } |
306 } | 304 } |
307 break; | 305 break; |
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 } | 987 } |
990 | 988 |
991 | 989 |
992 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } | 990 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } |
993 | 991 |
994 #undef __ | 992 #undef __ |
995 | 993 |
996 } // namespace internal | 994 } // namespace internal |
997 } // namespace compiler | 995 } // namespace compiler |
998 } // namespace v8 | 996 } // namespace v8 |
OLD | NEW |