Lines Matching defs:IP

252   /// Tries to infer the type of the \p ImmOpIdx -th operand of \p IP using \p
255 /// This is achieved by trying to find a named operand in \p IP that shares
261 PatternType inferImmediateType(const InstructionPattern &IP,
269 PatternType inferNamedOperandType(const InstructionPattern &IP,
386 const InstructionPattern &IP, unsigned ImmOpIdx,
389 const auto *CGP = dyn_cast<CodeGenInstructionPattern>(&IP);
410 const auto &Op = IP.getOperand(Idx);
415 if (PatternType InferTy = inferNamedOperandType(IP, Op.getOperandName(),
425 const InstructionPattern &IP, StringRef OpName,
722 const InstructionPattern &IP);
1078 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1079 if (!OTC.processMatchPattern(*IP))
1085 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1086 if (!OTC.processApplyPattern(*IP))
1096 if (auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1098 for (const auto &[Idx, Op] : enumerate(IP->operands())) {
1102 PrintNote("operand " + Twine(Idx) + " of '" + IP->getName() +
1170 const auto CheckVariadicOperands = [&](const InstructionPattern &IP,
1173 for (auto &Op : IP.operands()) {
1179 if (IsMatch && &Op != &IP.operands_back()) {
1180 PrintError("'" + IP.getInstName() +
1187 PrintError("'" + IP.getInstName() + "': " +
1193 if (HasVariadic && !IP.isVariadic()) {
1195 " operand on non-variadic instruction '" + IP.getInstName() +
1213 if (const auto IP = dyn_cast<InstructionPattern>(Pat)) {
1214 if (!CheckVariadicOperands(*IP, /*IsMatch=*/true))
1257 const auto *IP = dyn_cast<InstructionPattern>(Pat);
1258 if (!IP)
1261 if (!CheckVariadicOperands(*IP, /*IsMatch=*/false))
1271 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(IP)) {
1292 const auto *BIP = dyn_cast<BuiltinPattern>(IP);
1498 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1499 if (IP && !MatchOpTable.addPattern(IP, DiagnoseRedefMatch))
1504 auto *IP = dyn_cast<InstructionPattern>(Pat.get());
1505 if (IP && !ApplyOpTable.addPattern(IP, DiagnoseRedefApply))
1557 const InstructionPattern &IP) {
1558 auto StackTrace = PrettyStackTraceEmit(RuleDef, &IP);
1561 InstructionMatcher &IM = M.addInstructionMatcher(IP.getName());
1562 declareInstExpansion(CE, IM, IP.getName());
1570 if (const auto *CGP = dyn_cast<CodeGenInstructionPattern>(&IP)) {
1574 } else if (const auto *PFP = dyn_cast<PatFragPattern>(&IP)) {
1582 } else if (isa<BuiltinPattern>(&IP)) {
1810 if (const auto *IP = dyn_cast<InstructionPattern>(Pat.get())) {
1811 IP->reportUnreachable(PF.getLoc());