|
LLVM 23.0.0git
|
This file contains the X86 implementation of the speculative execution side effect suppression mitigation. More...
#include "X86.h"#include "X86InstrInfo.h"#include "X86Subtarget.h"#include "llvm/ADT/Statistic.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/Pass.h"#include "llvm/Target/TargetMachine.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "x86-seses" |
Functions | |
| STATISTIC (NumLFENCEsInserted, "Number of lfence instructions inserted") | |
| static bool | hasConstantAddressingMode (const MachineInstr &MI) |
| bool | runX86SpeculativeExecutionSideEffectSuppression (MachineFunction &MF) |
Variables | |
| static cl::opt< bool > | EnableSpeculativeExecutionSideEffectSuppression ("x86-seses-enable-without-lvi-cfi", cl::desc("Force enable speculative execution side effect suppression. " "(Note: User must pass -mlvi-cfi in order to mitigate indirect " "branches and returns.)"), cl::init(false), cl::Hidden) |
| static cl::opt< bool > | OneLFENCEPerBasicBlock ("x86-seses-one-lfence-per-bb", cl::desc("Omit all lfences other than the first to be placed in a basic block."), cl::init(false), cl::Hidden) |
| static cl::opt< bool > | OnlyLFENCENonConst ("x86-seses-only-lfence-non-const", cl::desc("Only lfence before groups of terminators where at least one " "branch instruction has an input to the addressing mode that is a " "register other than %rip."), cl::init(false), cl::Hidden) |
| static cl::opt< bool > | OmitBranchLFENCEs ("x86-seses-omit-branch-lfences", cl::desc("Omit all lfences before branch instructions."), cl::init(false), cl::Hidden) |
This file contains the X86 implementation of the speculative execution side effect suppression mitigation.
This must be used with the -mlvi-cfi flag in order to mitigate indirect branches and returns.
Definition in file X86SpeculativeExecutionSideEffectSuppression.cpp.
| #define DEBUG_TYPE "x86-seses" |
Definition at line 28 of file X86SpeculativeExecutionSideEffectSuppression.cpp.
|
static |
Definition at line 83 of file X86SpeculativeExecutionSideEffectSuppression.cpp.
References MI.
Referenced by runX86SpeculativeExecutionSideEffectSuppression().
| bool runX86SpeculativeExecutionSideEffectSuppression | ( | MachineFunction & | MF | ) |
Definition at line 90 of file X86SpeculativeExecutionSideEffectSuppression.cpp.
References assert(), llvm::BuildMI(), llvm::dbgs(), llvm::dwarf_linker::DebugLoc, EnableSpeculativeExecutionSideEffectSuppression, llvm::X86Subtarget::getInstrInfo(), llvm::MachineFunction::getName(), llvm::TargetMachine::getOptLevel(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), hasConstantAddressingMode(), LLVM_DEBUG, MBB, MI, Modified, llvm::None, OmitBranchLFENCEs, OneLFENCEPerBasicBlock, OnlyLFENCENonConst, and TII.
Referenced by llvm::X86SpeculativeExecutionSideEffectSuppressionPass::run().
| STATISTIC | ( | NumLFENCEsInserted | , |
| "Number of lfence instructions inserted" | ) |
|
static |
Referenced by runX86SpeculativeExecutionSideEffectSuppression().
|
static |
Referenced by runX86SpeculativeExecutionSideEffectSuppression().
|
static |
Referenced by runX86SpeculativeExecutionSideEffectSuppression().
|
static |
Referenced by runX86SpeculativeExecutionSideEffectSuppression().