@@ -63,44 +63,57 @@ Value *VectorBuilder::createVectorInstruction(unsigned Opcode, Type *ReturnTy,
63
63
Value *VectorBuilder::createSimpleTargetReduction (RecurKind Kind, Type *ValTy,
64
64
ArrayRef<Value *> InstOpArray,
65
65
const Twine &Name) {
66
- auto GetForRecurKind = [](RecurKind Kind) {
67
- switch (Kind) {
68
- case RecurKind::Add:
69
- return Intrinsic::vp_reduce_add;
70
- case RecurKind::Mul:
71
- return Intrinsic::vp_reduce_mul;
72
- case RecurKind::And:
73
- return Intrinsic::vp_reduce_and;
74
- case RecurKind::Or:
75
- return Intrinsic::vp_reduce_or;
76
- case RecurKind::Xor:
77
- return Intrinsic::vp_reduce_xor;
78
- case RecurKind::FMulAdd:
79
- case RecurKind::FAdd:
80
- return Intrinsic::vp_reduce_fadd;
81
- case RecurKind::FMul:
82
- return Intrinsic::vp_reduce_fmul;
83
- case RecurKind::SMax:
84
- return Intrinsic::vp_reduce_smax;
85
- case RecurKind::SMin:
86
- return Intrinsic::vp_reduce_smin;
87
- case RecurKind::UMax:
88
- return Intrinsic::vp_reduce_umax;
89
- case RecurKind::UMin:
90
- return Intrinsic::vp_reduce_umin;
91
- case RecurKind::FMax:
92
- return Intrinsic::vp_reduce_fmax;
93
- case RecurKind::FMin:
94
- return Intrinsic::vp_reduce_fmin;
95
- case RecurKind::FMaximum:
96
- return Intrinsic::vp_reduce_fmaximum;
97
- case RecurKind::FMinimum:
98
- return Intrinsic::vp_reduce_fminimum;
99
- default :
100
- llvm_unreachable (" No VPIntrinsic for this reduction" );
101
- }
102
- };
103
- auto VPID = GetForRecurKind (Kind);
66
+ Intrinsic::ID VPID;
67
+ switch (Kind) {
68
+ case RecurKind::Add:
69
+ VPID = Intrinsic::vp_reduce_add;
70
+ break ;
71
+ case RecurKind::Mul:
72
+ VPID = Intrinsic::vp_reduce_mul;
73
+ break ;
74
+ case RecurKind::And:
75
+ VPID = Intrinsic::vp_reduce_and;
76
+ break ;
77
+ case RecurKind::Or:
78
+ VPID = Intrinsic::vp_reduce_or;
79
+ break ;
80
+ case RecurKind::Xor:
81
+ VPID = Intrinsic::vp_reduce_xor;
82
+ break ;
83
+ case RecurKind::FMulAdd:
84
+ case RecurKind::FAdd:
85
+ VPID = Intrinsic::vp_reduce_fadd;
86
+ break ;
87
+ case RecurKind::FMul:
88
+ VPID = Intrinsic::vp_reduce_fmul;
89
+ break ;
90
+ case RecurKind::SMax:
91
+ VPID = Intrinsic::vp_reduce_smax;
92
+ break ;
93
+ case RecurKind::SMin:
94
+ VPID = Intrinsic::vp_reduce_smin;
95
+ break ;
96
+ case RecurKind::UMax:
97
+ VPID = Intrinsic::vp_reduce_umax;
98
+ break ;
99
+ case RecurKind::UMin:
100
+ VPID = Intrinsic::vp_reduce_umin;
101
+ break ;
102
+ case RecurKind::FMax:
103
+ VPID = Intrinsic::vp_reduce_fmax;
104
+ break ;
105
+ case RecurKind::FMin:
106
+ VPID = Intrinsic::vp_reduce_fmin;
107
+ break ;
108
+ case RecurKind::FMaximum:
109
+ VPID = Intrinsic::vp_reduce_fmaximum;
110
+ break ;
111
+ case RecurKind::FMinimum:
112
+ VPID = Intrinsic::vp_reduce_fminimum;
113
+ break ;
114
+ default :
115
+ llvm_unreachable (" No VPIntrinsic for this reduction" );
116
+ }
104
117
return createVectorInstructionImpl (VPID, ValTy, InstOpArray, Name);
105
118
}
106
119
0 commit comments