Lines Matching refs:CB
41 static void emitByte(uint8_t C, SmallVectorImpl<char> &CB) { CB.push_back(C); } in emitByte() argument
295 void emit(SmallVectorImpl<char> &CB) const { in emit()
303 emitByte(0x40 | W << 3 | R << 2 | X << 1 | B, CB); in emit()
306 emitByte(0xD5, CB); in emit()
309 CB); in emit()
312 emitByte(0xC5, CB); in emit()
313 emitByte(((~R) & 1) << 7 | LastPayload, CB); in emit()
317 emitByte(Kind == VEX3 ? 0xC4 : 0x8F, CB); in emit()
318 emitByte(FirstPayload | VEX_5M, CB); in emit()
319 emitByte(W << 7 | LastPayload, CB); in emit()
323 emitByte(0x62, CB); in emit()
324 emitByte(FirstPayload | ((~R2) & 0x1) << 4 | B2 << 3 | VEX_5M, CB); in emit()
326 CB); in emit()
329 CB); in emit()
346 void emitPrefix(const MCInst &MI, SmallVectorImpl<char> &CB,
349 void encodeInstruction(const MCInst &MI, SmallVectorImpl<char> &CB,
360 SmallVectorImpl<char> &CB,
364 SmallVectorImpl<char> &CB) const;
367 SmallVectorImpl<char> &CB) const;
371 SmallVectorImpl<char> &CB,
378 SmallVectorImpl<char> &CB) const;
382 SmallVectorImpl<char> &CB) const;
385 SmallVectorImpl<char> &CB) const;
389 SmallVectorImpl<char> &CB) const;
393 SmallVectorImpl<char> &CB) const;
404 SmallVectorImpl<char> &CB) { in emitConstant() argument
407 emitByte(Val & 255, CB); in emitConstant()
519 SmallVectorImpl<char> &CB, in emitImmediate() argument
528 emitConstant(DispOp.getImm() + ImmOffset, Size, CB); in emitImmediate()
551 ImmOffset = static_cast<int>(CB.size() - StartByte); in emitImmediate()
590 Fixups.push_back(MCFixup::create(static_cast<uint32_t>(CB.size() - StartByte), in emitImmediate()
592 emitConstant(0, Size, CB); in emitImmediate()
597 SmallVectorImpl<char> &CB) const { in emitRegModRMByte()
598 emitByte(modRMByte(3, RegOpcodeFld, getX86RegNum(ModRMReg)), CB); in emitRegModRMByte()
602 SmallVectorImpl<char> &CB) const { in emitSIBByte()
604 emitByte(modRMByte(SS, Index, Base), CB); in emitSIBByte()
609 PrefixKind Kind, uint64_t StartByte, SmallVectorImpl<char> &CB, in emitMemModRMByte() argument
625 emitByte(modRMByte(0, RegOpcodeField, 5), CB); in emitMemModRMByte()
687 emitImmediate(Disp, MI.getLoc(), 4, MCFixupKind(FixupKind), StartByte, CB, in emitMemModRMByte()
737 emitByte(modRMByte(0, RegOpcodeField, RMfield), CB); in emitMemModRMByte()
741 emitByte(modRMByte(1, RegOpcodeField, RMfield), CB); in emitMemModRMByte()
742 emitImmediate(Disp, MI.getLoc(), 1, FK_Data_1, StartByte, CB, Fixups); in emitMemModRMByte()
746 emitByte(modRMByte(2, RegOpcodeField, RMfield), CB); in emitMemModRMByte()
750 emitByte(modRMByte(0, RegOpcodeField, 6), CB); in emitMemModRMByte()
754 emitImmediate(Disp, MI.getLoc(), 2, FK_Data_2, StartByte, CB, Fixups); in emitMemModRMByte()
771 emitByte(modRMByte(0, RegOpcodeField, 5), CB); in emitMemModRMByte()
772 emitImmediate(Disp, MI.getLoc(), 4, FK_Data_4, StartByte, CB, Fixups); in emitMemModRMByte()
783 emitByte(modRMByte(0, RegOpcodeField, BaseRegNo), CB); in emitMemModRMByte()
794 emitByte(modRMByte(0, RegOpcodeField, BaseRegNo), CB); in emitMemModRMByte()
807 emitByte(modRMByte(1, RegOpcodeField, BaseRegNo), CB); in emitMemModRMByte()
808 emitImmediate(Disp, MI.getLoc(), 1, FK_Data_1, StartByte, CB, Fixups, in emitMemModRMByte()
817 emitByte(modRMByte(2, RegOpcodeField, BaseRegNo), CB); in emitMemModRMByte()
821 emitImmediate(Disp, MI.getLoc(), 4, MCFixupKind(FixupKind), StartByte, CB, in emitMemModRMByte()
837 emitByte(modRMByte(0, RegOpcodeField, 4), CB); in emitMemModRMByte()
846 emitByte(modRMByte(0, RegOpcodeField, 4), CB); in emitMemModRMByte()
852 emitByte(modRMByte(1, RegOpcodeField, 4), CB); in emitMemModRMByte()
856 emitByte(modRMByte(2, RegOpcodeField, 4), CB); in emitMemModRMByte()
866 emitSIBByte(SS, IndexRegNo, BaseRegNo, CB); in emitMemModRMByte()
870 emitImmediate(Disp, MI.getLoc(), 1, FK_Data_1, StartByte, CB, Fixups, in emitMemModRMByte()
874 StartByte, CB, Fixups); in emitMemModRMByte()
883 SmallVectorImpl<char> &CB) const { in emitPrefixImpl()
890 emitSegmentOverridePrefix(MemoryOperand + X86::AddrSegmentReg, MI, CB); in emitPrefixImpl()
896 emitByte(0xF3, CB); in emitPrefixImpl()
898 emitByte(0xF2, CB); in emitPrefixImpl()
903 emitByte(0x67, CB); in emitPrefixImpl()
912 emitSegmentOverridePrefix(2, MI, CB); in emitPrefixImpl()
919 emitSegmentOverridePrefix(1, MI, CB); in emitPrefixImpl()
929 emitSegmentOverridePrefix(1, MI, CB); in emitPrefixImpl()
937 ? emitVEXOpcodePrefix(MemoryOperand, MI, STI, CB) in emitPrefixImpl()
938 : emitOpcodePrefix(MemoryOperand, MI, STI, CB); in emitPrefixImpl()
957 SmallVectorImpl<char> &CB) const { in emitVEXOpcodePrefix()
1321 Prefix.emit(CB); in emitVEXOpcodePrefix()
1333 SmallVectorImpl<char> &CB) const { in emitREXPrefix()
1442 Prefix.emit(CB); in emitREXPrefix()
1448 unsigned SegOperand, const MCInst &MI, SmallVectorImpl<char> &CB) const { in emitSegmentOverridePrefix()
1451 emitByte(X86::getSegmentOverridePrefixForReg(Reg), CB); in emitSegmentOverridePrefix()
1462 SmallVectorImpl<char> &CB) const { in emitOpcodePrefix()
1469 emitByte(0x66, CB); in emitOpcodePrefix()
1473 emitByte(0xF0, CB); in emitOpcodePrefix()
1477 emitByte(0x3E, CB); in emitOpcodePrefix()
1481 emitByte(0x66, CB); in emitOpcodePrefix()
1484 emitByte(0xF3, CB); in emitOpcodePrefix()
1487 emitByte(0xF2, CB); in emitOpcodePrefix()
1494 PrefixKind Kind = emitREXPrefix(MemOperand, MI, STI, CB); in emitOpcodePrefix()
1506 emitByte(0x0F, CB); in emitOpcodePrefix()
1512 emitByte(0x38, CB); in emitOpcodePrefix()
1515 emitByte(0x3A, CB); in emitOpcodePrefix()
1522 void X86MCCodeEmitter::emitPrefix(const MCInst &MI, SmallVectorImpl<char> &CB, in emitPrefix() argument
1534 emitPrefixImpl(CurOp, MI, STI, CB); in emitPrefix()
1538 SmallVectorImpl<char> &CB, const MCSubtargetInfo &STI) { in emitPrefix() argument
1539 static_cast<X86MCCodeEmitter &>(MCE).emitPrefix(MI, CB, STI); in emitPrefix()
1543 SmallVectorImpl<char> &CB, in encodeInstruction() argument
1557 uint64_t StartByte = CB.size(); in encodeInstruction()
1559 PrefixKind Kind = emitPrefixImpl(CurOp, MI, STI, CB); in encodeInstruction()
1593 emitByte(BaseOpcode, CB); in encodeInstruction()
1602 emitByte(BaseOpcode + OpcodeOffset, CB); in encodeInstruction()
1609 MCFixupKind(X86::reloc_branch_4byte_pcrel), StartByte, CB, in encodeInstruction()
1614 emitByte(BaseOpcode, CB); in encodeInstruction()
1617 StartByte, CB, Fixups); in encodeInstruction()
1621 emitByte(BaseOpcode, CB); in encodeInstruction()
1624 StartByte, CB, Fixups); in encodeInstruction()
1626 CB, Fixups); in encodeInstruction()
1629 emitByte(BaseOpcode, CB); in encodeInstruction()
1632 StartByte, CB, Fixups); in encodeInstruction()
1634 CB, Fixups); in encodeInstruction()
1638 emitByte(BaseOpcode + getX86RegNum(MI.getOperand(CurOp++)), CB); in encodeInstruction()
1642 emitByte(BaseOpcode, CB); in encodeInstruction()
1654 getX86RegNum(MI.getOperand(SrcRegNum)), CB); in encodeInstruction()
1662 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1664 getX86RegNum(MI.getOperand(SecondOp)), CB); in encodeInstruction()
1669 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1672 Kind, StartByte, CB, Fixups, STI, false); in encodeInstruction()
1678 emitByte(BaseOpcode, CB); in encodeInstruction()
1692 Kind, StartByte, CB, Fixups, STI, ForceSIB); in encodeInstruction()
1701 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1703 Kind, StartByte, CB, Fixups, STI); in encodeInstruction()
1707 emitByte(BaseOpcode, CB); in encodeInstruction()
1720 getX86RegNum(MI.getOperand(CurOp)), CB); in encodeInstruction()
1730 emitByte(BaseOpcode, CB); in encodeInstruction()
1734 getX86RegNum(MI.getOperand(CurOp)), CB); in encodeInstruction()
1740 emitByte(BaseOpcode, CB); in encodeInstruction()
1751 getX86RegNum(MI.getOperand(CurOp)), CB); in encodeInstruction()
1762 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1765 getX86RegNum(MI.getOperand(FirstOp)), CB); in encodeInstruction()
1781 emitByte(BaseOpcode, CB); in encodeInstruction()
1785 TSFlags, Kind, StartByte, CB, Fixups, STI, ForceSIB); in encodeInstruction()
1794 emitByte(BaseOpcode, CB); in encodeInstruction()
1797 TSFlags, Kind, StartByte, CB, Fixups, STI); in encodeInstruction()
1811 emitByte(BaseOpcode, CB); in encodeInstruction()
1814 TSFlags, Kind, StartByte, CB, Fixups, STI); in encodeInstruction()
1826 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1829 TSFlags, Kind, StartByte, CB, Fixups, STI); in encodeInstruction()
1837 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1838 emitRegModRMByte(MI.getOperand(RegOp), 0, CB); in encodeInstruction()
1855 emitByte(BaseOpcode, CB); in encodeInstruction()
1857 (Form == X86II::MRMXr) ? 0 : Form - X86II::MRM0r, CB); in encodeInstruction()
1860 emitByte(BaseOpcode, CB); in encodeInstruction()
1861 emitByte(modRMByte(3, getX86RegNum(MI.getOperand(CurOp++)), 0), CB); in encodeInstruction()
1869 emitByte(BaseOpcode + CC, CB); in encodeInstruction()
1871 emitMemModRMByte(MI, FirstMemOp, 0, TSFlags, Kind, StartByte, CB, Fixups, in encodeInstruction()
1889 emitByte(BaseOpcode, CB); in encodeInstruction()
1892 Kind, StartByte, CB, Fixups, STI); in encodeInstruction()
1904 emitByte(BaseOpcode, CB); in encodeInstruction()
1905 emitByte(0xC0 + ((Form - X86II::MRM0X) << 3), CB); in encodeInstruction()
1972 emitByte(BaseOpcode, CB); in encodeInstruction()
1973 emitByte(0xC0 + Form - X86II::MRM_C0, CB); in encodeInstruction()
1988 StartByte, CB, Fixups); in encodeInstruction()
1999 StartByte, CB, Fixups); in encodeInstruction()
2006 emitByte(X86II::getBaseOpcodeFor(TSFlags), CB); in encodeInstruction()
2008 if (CB.size() - StartByte > 15) in encodeInstruction()