Lines Matching defs:R
20 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPBlendRecipe *R) {
21 Type *ResTy = inferScalarType(R->getIncomingValue(0));
22 for (unsigned I = 1, E = R->getNumIncomingValues(); I != E; ++I) {
23 VPValue *Inc = R->getIncomingValue(I);
31 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPInstruction *R) {
34 auto SetResultTyFromOp = [this, R]() {
35 Type *ResTy = inferScalarType(R->getOperand(0));
36 for (unsigned Op = 1; Op != R->getNumOperands(); ++Op) {
37 VPValue *OtherV = R->getOperand(Op);
45 unsigned Opcode = R->getOpcode();
51 Type *ResTy = inferScalarType(R->getOperand(1));
52 VPValue *OtherV = R->getOperand(2);
60 return inferScalarType(R->getOperand(1));
65 Type *BaseTy = inferScalarType(R->getOperand(0));
74 return inferScalarType(R->getOperand(0));
84 R->getVPSingleValue()->dump();
89 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPWidenRecipe *R) {
90 unsigned Opcode = R->getOpcode();
113 Type *ResTy = inferScalarType(R->getOperand(0));
114 assert(ResTy == inferScalarType(R->getOperand(1)) &&
116 CachedTypes[R->getOperand(1)] = ResTy;
121 return inferScalarType(R->getOperand(0));
129 R->getVPSingleValue()->dump();
134 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPWidenCallRecipe *R) {
135 auto &CI = *cast<CallInst>(R->getUnderlyingInstr());
139 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPWidenMemoryRecipe *R) {
140 assert((isa<VPWidenLoadRecipe>(R) || isa<VPWidenLoadEVLRecipe>(R)) &&
142 return cast<LoadInst>(&R->getIngredient())->getType();
145 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPWidenSelectRecipe *R) {
146 Type *ResTy = inferScalarType(R->getOperand(1));
147 VPValue *OtherV = R->getOperand(2);
154 Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPReplicateRecipe *R) {
155 switch (R->getUnderlyingInstr()->getOpcode()) {
157 unsigned CallIdx = R->getNumOperands() - (R->isPredicated() ? 2 : 1);
158 return cast<Function>(R->getOperand(CallIdx)->getLiveInIRValue())
179 Type *ResTy = inferScalarType(R->getOperand(0));
180 assert(ResTy == inferScalarType(R->getOperand(1)) &&
182 CachedTypes[R->getOperand(1)] = ResTy;
186 Type *ResTy = inferScalarType(R->getOperand(1));
187 assert(ResTy == inferScalarType(R->getOperand(2)) &&
189 CachedTypes[R->getOperand(2)] = ResTy;
210 return R->getUnderlyingInstr()->getType();
214 return inferScalarType(R->getOperand(0));
216 return cast<LoadInst>(R->getUnderlyingInstr())->getType();
228 R->getVPSingleValue()->dump();
250 [this](const auto *R) {
255 return inferScalarType(R->getStartValue());
258 [](const auto *R) { return R->getScalarType(); })
261 VPWidenCanonicalIVRecipe>([this](const VPRecipeBase *R) {
262 return inferScalarType(R->getOperand(0));
266 [this](const auto *R) { return inferScalarTypeForRecipe(R); })
267 .Case<VPInterleaveRecipe>([V](const VPInterleaveRecipe *R) {
272 [](const VPWidenCastRecipe *R) { return R->getResultType(); })
274 [](const VPScalarCastRecipe *R) { return R->getResultType(); })
275 .Case<VPExpandSCEVRecipe>([](const VPExpandSCEVRecipe *R) {
276 return R->getSCEV()->getType();
278 .Case<VPReductionRecipe>([this](const auto *R) {
279 return inferScalarType(R->getChainOp());
293 for (VPRecipeBase &R : *VPBB) {
294 auto *RepR = dyn_cast<VPReplicateRecipe>(&R);