LLVM 23.0.0git
AArch64AdvSIMDScalarPass.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "aarch64-simd-scalar"
#define AARCH64_ADVSIMD_NAME   "AdvSIMD Scalar Operation Optimization"

Functions

 STATISTIC (NumScalarInsnsUsed, "Number of scalar instructions used")
 STATISTIC (NumCopiesDeleted, "Number of cross-class copies deleted")
 STATISTIC (NumCopiesInserted, "Number of cross-class copies inserted")
 INITIALIZE_PASS (AArch64AdvSIMDScalarLegacy, "aarch64-simd-scalar", AARCH64_ADVSIMD_NAME, false, false) PreservedAnalyses AArch64AdvSIMDScalarPass
static bool isGPR64 (unsigned Reg, unsigned SubReg, const MachineRegisterInfo *MRI)
static bool isFPR64 (unsigned Reg, unsigned SubReg, const MachineRegisterInfo *MRI)
static MachineOperandgetSrcFromCopy (MachineInstr *MI, const MachineRegisterInfo *MRI, unsigned &SubReg)
static unsigned getTransformOpcode (unsigned Opc)
static bool isTransformable (const MachineInstr &MI)
static MachineInstrinsertCopy (const TargetInstrInfo *TII, MachineInstr &MI, unsigned Dst, unsigned Src, bool IsKill)

Variables

static cl::opt< boolTransformAll ("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden)

Macro Definition Documentation

◆ AARCH64_ADVSIMD_NAME

#define AARCH64_ADVSIMD_NAME   "AdvSIMD Scalar Operation Optimization"

Definition at line 62 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by INITIALIZE_PASS().

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-simd-scalar"

Definition at line 49 of file AArch64AdvSIMDScalarPass.cpp.

Function Documentation

◆ getSrcFromCopy()

MachineOperand * getSrcFromCopy ( MachineInstr * MI,
const MachineRegisterInfo * MRI,
unsigned & SubReg )
static

Definition at line 141 of file AArch64AdvSIMDScalarPass.cpp.

References isFPR64(), isGPR64(), and MI.

◆ getTransformOpcode()

unsigned getTransformOpcode ( unsigned Opc)
static

Definition at line 178 of file AArch64AdvSIMDScalarPass.cpp.

References Opc.

Referenced by isTransformable().

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( AArch64AdvSIMDScalarLegacy ,
"aarch64-simd-scalar" ,
AARCH64_ADVSIMD_NAME ,
false ,
false  )

◆ insertCopy()

◆ isFPR64()

◆ isGPR64()

◆ isTransformable()

bool isTransformable ( const MachineInstr & MI)
static

Definition at line 198 of file AArch64AdvSIMDScalarPass.cpp.

References getTransformOpcode(), MI, and Opc.

◆ STATISTIC() [1/3]

STATISTIC ( NumCopiesDeleted ,
"Number of cross-class copies deleted"  )

◆ STATISTIC() [2/3]

STATISTIC ( NumCopiesInserted ,
"Number of cross-class copies inserted"  )

◆ STATISTIC() [3/3]

STATISTIC ( NumScalarInsnsUsed ,
"Number of scalar instructions used"  )

Variable Documentation

◆ TransformAll

cl::opt< bool > TransformAll("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden) ( "aarch64-simd-scalar-force-all" ,
cl::desc("Force use of AdvSIMD scalar instructions everywhere") ,
cl::init(false) ,
cl::Hidden  )
static