| OLD | NEW |
| 1 //===- subzero/src/IceAssemblerX86BaseImpl.h - base x86 assembler -*- C++ -*-=// | 1 //===- subzero/src/IceAssemblerX86BaseImpl.h - base x86 assembler -*- C++ -*-=// |
| 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 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 emitRex(RexTypeIrrelevant, src, dst); | 1558 emitRex(RexTypeIrrelevant, src, dst); |
| 1559 emitUint8(0x0F); | 1559 emitUint8(0x0F); |
| 1560 emitUint8(0x70); | 1560 emitUint8(0x70); |
| 1561 static constexpr RelocOffsetT OffsetFromNextInstruction = 1; | 1561 static constexpr RelocOffsetT OffsetFromNextInstruction = 1; |
| 1562 emitOperand(gprEncoding(dst), src, OffsetFromNextInstruction); | 1562 emitOperand(gprEncoding(dst), src, OffsetFromNextInstruction); |
| 1563 assert(imm.is_uint8()); | 1563 assert(imm.is_uint8()); |
| 1564 emitUint8(imm.value()); | 1564 emitUint8(imm.value()); |
| 1565 } | 1565 } |
| 1566 | 1566 |
| 1567 template <typename TraitsType> | 1567 template <typename TraitsType> |
| 1568 void AssemblerX86Base<TraitsType>::punpckldq(Type, XmmRegister Dst, |
| 1569 XmmRegister Src) { |
| 1570 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1571 emitUint8(0x66); |
| 1572 emitRexRB(RexTypeIrrelevant, Dst, Src); |
| 1573 emitUint8(0x0F); |
| 1574 emitUint8(0x62); |
| 1575 emitXmmRegisterOperand(Dst, Src); |
| 1576 } |
| 1577 |
| 1578 template <typename TraitsType> |
| 1579 void AssemblerX86Base<TraitsType>::punpckldq(Type, XmmRegister Dst, |
| 1580 const Address &Src) { |
| 1581 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1582 emitUint8(0x66); |
| 1583 emitAddrSizeOverridePrefix(); |
| 1584 emitRex(RexTypeIrrelevant, Src, Dst); |
| 1585 emitUint8(0x0F); |
| 1586 emitUint8(0x62); |
| 1587 emitOperand(gprEncoding(Dst), Src); |
| 1588 } |
| 1589 |
| 1590 template <typename TraitsType> |
| 1568 void AssemblerX86Base<TraitsType>::shufps(Type /* Ty */, XmmRegister dst, | 1591 void AssemblerX86Base<TraitsType>::shufps(Type /* Ty */, XmmRegister dst, |
| 1569 XmmRegister src, | 1592 XmmRegister src, |
| 1570 const Immediate &imm) { | 1593 const Immediate &imm) { |
| 1571 AssemblerBuffer::EnsureCapacity ensured(&Buffer); | 1594 AssemblerBuffer::EnsureCapacity ensured(&Buffer); |
| 1572 emitRexRB(RexTypeIrrelevant, dst, src); | 1595 emitRexRB(RexTypeIrrelevant, dst, src); |
| 1573 emitUint8(0x0F); | 1596 emitUint8(0x0F); |
| 1574 emitUint8(0xC6); | 1597 emitUint8(0xC6); |
| 1575 emitXmmRegisterOperand(dst, src); | 1598 emitXmmRegisterOperand(dst, src); |
| 1576 assert(imm.is_uint8()); | 1599 assert(imm.is_uint8()); |
| 1577 emitUint8(imm.value()); | 1600 emitUint8(imm.value()); |
| (...skipping 1957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3535 (void)shifter; | 3558 (void)shifter; |
| 3536 if (Ty == IceType_i16) | 3559 if (Ty == IceType_i16) |
| 3537 emitOperandSizeOverride(); | 3560 emitOperandSizeOverride(); |
| 3538 emitRexB(Ty, operand.rm()); | 3561 emitRexB(Ty, operand.rm()); |
| 3539 emitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); | 3562 emitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); |
| 3540 emitOperand(rm, operand); | 3563 emitOperand(rm, operand); |
| 3541 } | 3564 } |
| 3542 | 3565 |
| 3543 } // end of namespace X86NAMESPACE | 3566 } // end of namespace X86NAMESPACE |
| 3544 } // end of namespace Ice | 3567 } // end of namespace Ice |
| OLD | NEW |