Lines Matching refs:Instr
61 static const char *isInvalidMemoryInstr(const Instruction &Instr) { in isInvalidMemoryInstr() argument
62 switch (Instr.Description.TSFlags & X86II::FormMask) { in isInvalidMemoryInstr()
161 return (Instr.Description.Opcode == X86::POP16r || in isInvalidMemoryInstr()
162 Instr.Description.Opcode == X86::POP32r || in isInvalidMemoryInstr()
163 Instr.Description.Opcode == X86::PUSH16r || in isInvalidMemoryInstr()
164 Instr.Description.Opcode == X86::PUSH32r) in isInvalidMemoryInstr()
196 static const char *isInvalidOpcode(const Instruction &Instr) { in isInvalidOpcode() argument
197 const auto OpcodeName = Instr.Name; in isInvalidOpcode()
198 if ((Instr.Description.TSFlags & X86II::FormMask) == X86II::Pseudo) in isInvalidOpcode()
204 switch (Instr.Description.Opcode) { in isInvalidOpcode()
219 if (const auto reason = isInvalidMemoryInstr(Instr)) in isInvalidOpcode()
222 for (const Operand &Op : Instr.Operands) in isInvalidOpcode()
228 for (const Operand &Op : Instr.Operands) in isInvalidOpcode()
235 static unsigned getX86FPFlags(const Instruction &Instr) { in getX86FPFlags() argument
236 return Instr.Description.TSFlags & X86II::FPTypeMask; in getX86FPFlags()
250 const Instruction &Instr, const BitVector &ForbiddenRegisters, in generateLEATemplatesCommon() argument
254 assert(Instr.Operands.size() == 6 && "invalid LEA"); in generateLEATemplatesCommon()
255 assert(X86II::getMemoryOperandNo(Instr.Description.TSFlags) == 1 && in generateLEATemplatesCommon()
262 Instr.Operands[kDestOp].getRegisterAliasing().sourceBits(); in generateLEATemplatesCommon()
265 Instr.Operands[kBaseOp].getRegisterAliasing().sourceBits(); in generateLEATemplatesCommon()
268 Instr.Operands[kIndexOp].getRegisterAliasing().sourceBits(); in generateLEATemplatesCommon()
278 InstructionTemplate IT(&Instr); in generateLEATemplatesCommon()
327 const Instruction &Instr = Variant.getInstr(); in generateCodeTemplates() local
329 if (const auto reason = isInvalidOpcode(Instr)) in generateCodeTemplates()
333 const auto Opcode = Instr.Description.getOpcode(); in generateCodeTemplates()
336 Instr, ForbiddenRegisters, State, Opts, in generateCodeTemplates()
346 if (Instr.hasMemoryOperands()) in generateCodeTemplates()
350 switch (getX86FPFlags(Instr)) { in generateCodeTemplates()
387 const Instruction &Instr = Variant.getInstr(); in generateCodeTemplates() local
389 if (const auto reason = isInvalidOpcode(Instr)) in generateCodeTemplates()
393 const auto Opcode = Instr.Description.getOpcode(); in generateCodeTemplates()
396 Instr, ForbiddenRegisters, State, Opts, in generateCodeTemplates()
407 switch (getX86FPFlags(Instr)) { in generateCodeTemplates()
696 Error randomizeTargetMCOperand(const Instruction &Instr, const Variable &Var,
716 bool allowAsBackToBack(const Instruction &Instr) const override { in allowAsBackToBack()
717 const unsigned Opcode = Instr.Description.Opcode; in allowAsBackToBack()
718 return !isInvalidOpcode(Instr) && Opcode != X86::LEA64r && in allowAsBackToBack()
723 generateInstructionVariants(const Instruction &Instr,
812 const Instruction &Instr, const Variable &Var, MCOperand &AssignedValue, in randomizeTargetMCOperand() argument
814 const Operand &Op = Instr.getPrimaryOperand(Var); in randomizeTargetMCOperand()
909 const Instruction &Instr, unsigned MaxConfigsPerOpcode) const { in generateInstructionVariants() argument
912 VariableChoices.resize(Instr.Variables.size()); in generateInstructionVariants()
913 for (auto I : llvm::zip(Instr.Variables, VariableChoices)) { in generateInstructionVariants()
917 switch (Instr.getPrimaryOperand(Var).getExplicitOperandInfo().OperandType) { in generateInstructionVariants()
937 return ExegesisTarget::generateInstructionVariants(Instr, in generateInstructionVariants()
950 Variants.emplace_back(&Instr); in generateInstructionVariants()