| OLD | NEW |
| 1 //===- subzero/src/IceAssemblerX8632.cpp - Assembler for x86-32 ----------===// | 1 //===- subzero/src/IceAssemblerX8632.cpp - Assembler for x86-32 ----------===// |
| 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 3 // for details. All rights reserved. Use of this source code is governed by a | 3 // for details. All rights reserved. Use of this source code is governed by a |
| 4 // BSD-style license that can be found in the LICENSE file. | 4 // BSD-style license that can be found in the LICENSE file. |
| 5 // | 5 // |
| 6 // Modified by the Subzero authors. | 6 // Modified by the Subzero authors. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // The Subzero Code Generator | 10 // The Subzero Code Generator |
| (...skipping 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1752 AssemblerBuffer::EnsureCapacity ensured(&Buffer); | 1752 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1753 if (isByteSizedArithType(Ty)) { | 1753 if (isByteSizedArithType(Ty)) { |
| 1754 emitComplexI8(0, Operand(reg), imm); | 1754 emitComplexI8(0, Operand(reg), imm); |
| 1755 return; | 1755 return; |
| 1756 } | 1756 } |
| 1757 if (Ty == IceType_i16) | 1757 if (Ty == IceType_i16) |
| 1758 emitOperandSizeOverride(); | 1758 emitOperandSizeOverride(); |
| 1759 emitComplex(Ty, 0, Operand(reg), imm); | 1759 emitComplex(Ty, 0, Operand(reg), imm); |
| 1760 } | 1760 } |
| 1761 | 1761 |
| 1762 void AssemblerX8632::add(Type Ty, const Address &address, GPRRegister reg) { |
| 1763 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1764 if (Ty == IceType_i16) |
| 1765 emitOperandSizeOverride(); |
| 1766 if (isByteSizedArithType(Ty)) |
| 1767 emitUint8(0x00); |
| 1768 else |
| 1769 emitUint8(0x01); |
| 1770 emitOperand(reg, address); |
| 1771 } |
| 1772 |
| 1773 void AssemblerX8632::add(Type Ty, const Address &address, |
| 1774 const Immediate &imm) { |
| 1775 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1776 if (isByteSizedArithType(Ty)) { |
| 1777 emitComplexI8(0, address, imm); |
| 1778 return; |
| 1779 } |
| 1780 if (Ty == IceType_i16) |
| 1781 emitOperandSizeOverride(); |
| 1782 emitComplex(Ty, 0, address, imm); |
| 1783 } |
| 1784 |
| 1762 void AssemblerX8632::adc(Type Ty, GPRRegister dst, GPRRegister src) { | 1785 void AssemblerX8632::adc(Type Ty, GPRRegister dst, GPRRegister src) { |
| 1763 AssemblerBuffer::EnsureCapacity ensured(&Buffer); | 1786 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1764 if (Ty == IceType_i16) | 1787 if (Ty == IceType_i16) |
| 1765 emitOperandSizeOverride(); | 1788 emitOperandSizeOverride(); |
| 1766 if (isByteSizedArithType(Ty)) | 1789 if (isByteSizedArithType(Ty)) |
| 1767 emitUint8(0x12); | 1790 emitUint8(0x12); |
| 1768 else | 1791 else |
| 1769 emitUint8(0x13); | 1792 emitUint8(0x13); |
| 1770 emitRegisterOperand(dst, src); | 1793 emitRegisterOperand(dst, src); |
| 1771 } | 1794 } |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2600 assert(shifter == RegX8632::Encoded_Reg_ecx); | 2623 assert(shifter == RegX8632::Encoded_Reg_ecx); |
| 2601 (void)shifter; | 2624 (void)shifter; |
| 2602 if (Ty == IceType_i16) | 2625 if (Ty == IceType_i16) |
| 2603 emitOperandSizeOverride(); | 2626 emitOperandSizeOverride(); |
| 2604 emitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); | 2627 emitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); |
| 2605 emitOperand(rm, operand); | 2628 emitOperand(rm, operand); |
| 2606 } | 2629 } |
| 2607 | 2630 |
| 2608 } // end of namespace X8632 | 2631 } // end of namespace X8632 |
| 2609 } // end of namespace Ice | 2632 } // end of namespace Ice |
| OLD | NEW |