1 //===--------------------- CodeEmitter.cpp ----------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file implements the CodeEmitter API.
11 //===----------------------------------------------------------------------===//
13 #include "llvm/MCA/CodeEmitter.h"
18 CodeEmitter::EncodingInfo
CodeEmitter::getOrCreateEncodingInfo(unsigned MCID
) {
19 EncodingInfo
&EI
= Encodings
[MCID
];
23 SmallVector
<llvm::MCFixup
, 2> Fixups
;
24 const MCInst
&Inst
= Sequence
[MCID
];
25 MCInst
Relaxed(Sequence
[MCID
]);
26 if (MAB
.mayNeedRelaxation(Inst
, STI
))
27 MAB
.relaxInstruction(Relaxed
, STI
);
29 EI
.first
= Code
.size();
30 MCE
.encodeInstruction(Relaxed
, Code
, Fixups
, STI
);
31 EI
.second
= Code
.size() - EI
.first
;