@@ -134,52 +134,43 @@ bool VPlanVerifier::verifyEVLRecipe(const VPInstruction &EVL) const {
134
134
}
135
135
return true ;
136
136
};
137
- for (const VPUser *U : EVL.users ()) {
138
- if (!TypeSwitch<const VPUser *, bool >(U)
139
- .Case <VPWidenIntrinsicRecipe>(
140
- [&](const VPWidenIntrinsicRecipe *S) {
141
- return VerifyEVLUse (*S, S->getNumOperands () - 1 );
142
- })
143
- .Case <VPWidenStoreEVLRecipe>([&](const VPWidenStoreEVLRecipe *S) {
144
- return VerifyEVLUse (*S, 2 );
145
- })
146
- .Case <VPWidenLoadEVLRecipe, VPReverseVectorPointerRecipe>(
147
- [&](const VPRecipeBase *R) { return VerifyEVLUse (*R, 1 ); })
148
- .Case <VPWidenEVLRecipe>([&](const VPWidenEVLRecipe *W) {
149
- return VerifyEVLUse (
150
- *W, Instruction::isUnaryOp (W->getOpcode ()) ? 1 : 2 );
151
- })
152
- .Case <VPReductionEVLRecipe>([&](const VPReductionEVLRecipe *R) {
153
- return VerifyEVLUse (*R, 2 );
154
- })
155
- .Case <VPScalarCastRecipe>(
156
- [&](const VPScalarCastRecipe *S) { return true ; })
157
- .Case <VPInstruction>([&](const VPInstruction *I) {
158
- if (I->getOpcode () != Instruction::Add) {
159
- errs ()
160
- << " EVL is used as an operand in non-VPInstruction::Add\n " ;
161
- return false ;
162
- }
163
- if (I->getNumUsers () != 1 ) {
164
- errs () << " EVL is used in VPInstruction:Add with multiple "
165
- " users\n " ;
166
- return false ;
167
- }
168
- if (!isa<VPEVLBasedIVPHIRecipe>(*I->users ().begin ())) {
169
- errs () << " Result of VPInstruction::Add with EVL operand is "
170
- " not used by VPEVLBasedIVPHIRecipe\n " ;
171
- return false ;
172
- }
173
- return true ;
174
- })
175
- .Default ([&](const VPUser *U) {
176
- errs () << " EVL has unexpected user\n " ;
177
- return false ;
178
- })) {
179
- return false ;
180
- }
181
- }
182
- return true ;
137
+ return all_of (EVL.users (), [&VerifyEVLUse](VPUser *U) {
138
+ return TypeSwitch<const VPUser *, bool >(U)
139
+ .Case <VPWidenIntrinsicRecipe>([&](const VPWidenIntrinsicRecipe *S) {
140
+ return VerifyEVLUse (*S, S->getNumOperands () - 1 );
141
+ })
142
+ .Case <VPWidenStoreEVLRecipe, VPReductionEVLRecipe>(
143
+ [&](const VPRecipeBase *S) { return VerifyEVLUse (*S, 2 ); })
144
+ .Case <VPWidenLoadEVLRecipe, VPReverseVectorPointerRecipe>(
145
+ [&](const VPRecipeBase *R) { return VerifyEVLUse (*R, 1 ); })
146
+ .Case <VPWidenEVLRecipe>([&](const VPWidenEVLRecipe *W) {
147
+ return VerifyEVLUse (*W,
148
+ Instruction::isUnaryOp (W->getOpcode ()) ? 1 : 2 );
149
+ })
150
+ .Case <VPScalarCastRecipe>(
151
+ [&](const VPScalarCastRecipe *S) { return VerifyEVLUse (*S, 0 ); })
152
+ .Case <VPInstruction>([&](const VPInstruction *I) {
153
+ if (I->getOpcode () != Instruction::Add) {
154
+ errs () << " EVL is used as an operand in non-VPInstruction::Add\n " ;
155
+ return false ;
156
+ }
157
+ if (I->getNumUsers () != 1 ) {
158
+ errs () << " EVL is used in VPInstruction:Add with multiple "
159
+ " users\n " ;
160
+ return false ;
161
+ }
162
+ if (!isa<VPEVLBasedIVPHIRecipe>(*I->users ().begin ())) {
163
+ errs () << " Result of VPInstruction::Add with EVL operand is "
164
+ " not used by VPEVLBasedIVPHIRecipe\n " ;
165
+ return false ;
166
+ }
167
+ return true ;
168
+ })
169
+ .Default ([&](const VPUser *U) {
170
+ errs () << " EVL has unexpected user\n " ;
171
+ return false ;
172
+ });
173
+ });
183
174
}
184
175
185
176
bool VPlanVerifier::verifyVPBasicBlock (const VPBasicBlock *VPBB) {
0 commit comments