| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/compilation-info.h" | 7 #include "src/compilation-info.h" |
| 8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
| 9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
| 10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
| (...skipping 1657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 break; | 1668 break; |
| 1669 #endif | 1669 #endif |
| 1670 case kS390_CmpFloat: | 1670 case kS390_CmpFloat: |
| 1671 __ cebr(i.InputDoubleRegister(0), i.InputDoubleRegister(1)); | 1671 __ cebr(i.InputDoubleRegister(0), i.InputDoubleRegister(1)); |
| 1672 break; | 1672 break; |
| 1673 case kS390_CmpDouble: | 1673 case kS390_CmpDouble: |
| 1674 __ cdbr(i.InputDoubleRegister(0), i.InputDoubleRegister(1)); | 1674 __ cdbr(i.InputDoubleRegister(0), i.InputDoubleRegister(1)); |
| 1675 break; | 1675 break; |
| 1676 case kS390_Tst32: | 1676 case kS390_Tst32: |
| 1677 if (HasRegisterInput(instr, 1)) { | 1677 if (HasRegisterInput(instr, 1)) { |
| 1678 __ AndP(r0, i.InputRegister(0), i.InputRegister(1)); | 1678 __ lr(r0, i.InputRegister(0)); |
| 1679 __ nr(r0, i.InputRegister(1)); |
| 1679 } else { | 1680 } else { |
| 1680 __ AndP(r0, i.InputRegister(0), i.InputImmediate(1)); | 1681 Operand opnd = i.InputImmediate(1); |
| 1682 if (is_uint16(opnd.immediate())) { |
| 1683 __ tmll(i.InputRegister(0), opnd); |
| 1684 } else { |
| 1685 __ lr(r0, i.InputRegister(0)); |
| 1686 __ nilf(r0, opnd); |
| 1687 } |
| 1681 } | 1688 } |
| 1682 __ LoadAndTestP_ExtendSrc(r0, r0); | |
| 1683 break; | 1689 break; |
| 1684 #if V8_TARGET_ARCH_S390X | |
| 1685 case kS390_Tst64: | 1690 case kS390_Tst64: |
| 1686 if (HasRegisterInput(instr, 1)) { | 1691 if (HasRegisterInput(instr, 1)) { |
| 1687 __ AndP(r0, i.InputRegister(0), i.InputRegister(1)); | 1692 __ AndP(r0, i.InputRegister(0), i.InputRegister(1)); |
| 1688 } else { | 1693 } else { |
| 1689 __ AndP(r0, i.InputRegister(0), i.InputImmediate(1)); | 1694 Operand opnd = i.InputImmediate(1); |
| 1695 if (is_uint16(opnd.immediate())) { |
| 1696 __ tmll(i.InputRegister(0), opnd); |
| 1697 } else { |
| 1698 __ AndP(r0, i.InputRegister(0), opnd); |
| 1699 } |
| 1690 } | 1700 } |
| 1691 break; | 1701 break; |
| 1692 #endif | |
| 1693 case kS390_Float64SilenceNaN: { | 1702 case kS390_Float64SilenceNaN: { |
| 1694 DoubleRegister value = i.InputDoubleRegister(0); | 1703 DoubleRegister value = i.InputDoubleRegister(0); |
| 1695 DoubleRegister result = i.OutputDoubleRegister(); | 1704 DoubleRegister result = i.OutputDoubleRegister(); |
| 1696 __ CanonicalizeNaN(result, value); | 1705 __ CanonicalizeNaN(result, value); |
| 1697 break; | 1706 break; |
| 1698 } | 1707 } |
| 1699 case kS390_Push: | 1708 case kS390_Push: |
| 1700 if (instr->InputAt(0)->IsFPRegister()) { | 1709 if (instr->InputAt(0)->IsFPRegister()) { |
| 1701 __ lay(sp, MemOperand(sp, -kDoubleSize)); | 1710 __ lay(sp, MemOperand(sp, -kDoubleSize)); |
| 1702 __ StoreDouble(i.InputDoubleRegister(0), MemOperand(sp)); | 1711 __ StoreDouble(i.InputDoubleRegister(0), MemOperand(sp)); |
| (...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2562 padding_size -= 2; | 2571 padding_size -= 2; |
| 2563 } | 2572 } |
| 2564 } | 2573 } |
| 2565 } | 2574 } |
| 2566 | 2575 |
| 2567 #undef __ | 2576 #undef __ |
| 2568 | 2577 |
| 2569 } // namespace compiler | 2578 } // namespace compiler |
| 2570 } // namespace internal | 2579 } // namespace internal |
| 2571 } // namespace v8 | 2580 } // namespace v8 |
| OLD | NEW |