llvm-project

Форк
0
/
CodeEmitter.cpp 
36 строк · 1.1 Кб
1
//===--------------------- CodeEmitter.cpp ----------------------*- C++ -*-===//
2
//
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
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements the CodeEmitter API.
10
//
11
//===----------------------------------------------------------------------===//
12

13
#include "llvm/MCA/CodeEmitter.h"
14

15
namespace llvm {
16
namespace mca {
17

18
CodeEmitter::EncodingInfo CodeEmitter::getOrCreateEncodingInfo(unsigned MCID) {
19
  EncodingInfo &EI = Encodings[MCID];
20
  if (EI.second)
21
    return EI;
22

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);
28

29
  EI.first = Code.size();
30
  MCE.encodeInstruction(Relaxed, Code, Fixups, STI);
31
  EI.second = Code.size() - EI.first;
32
  return EI;
33
}
34

35
} // namespace mca
36
} // namespace llvm
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.