junaire added a comment. In D116736#3230040 <https://reviews.llvm.org/D116736#3230040>, @fhahn wrote:
> LGTM, thanks! > >> The last __builtin_reduce_add will be separated into another one. > > Are you planning on putting up a patch for this one as well? What makes add a > bit different is that `‘llvm.vector.reduce.fadd.*’` can only perform > reductions either in the original order or in an unspecified order. For the > extension, we need a particular evaluation order (reduction tree adding > adjacent element pairs). Technically this order is required for all reduction > builtins, but for integers the order doesn't matter, same for min/max. Sorry about the late response. Yeah, I'm trying to work on this builtin too, but actually, I don't know if I can do this as all my previous work is like kind of boilerplate or something? I have read the whole discussion in the mailing list and the related LLVM IR reference, but I still get confused a little bit. So the difference of this builtin is because LLVM intrinsic declare it like: declare float @llvm.vector.reduce.fadd.v4f32(float %start_value, <4 x float> %a) declare double @llvm.vector.reduce.fadd.v2f64(double %start_value, <2 x double> %a) And it performs sequential reduction which is not what we want right? We need it to reduce like: [e3, e2, e1, e0] => (e3, e2) + (e1, e0) Does it mean we should do something like a for loop? or like recursive calls? or like changing the order of the elements in the vector? And another thing that confuses me is that `pad identity elements after the last element to widen the vector out to a power 2 `. According to the IR reference, is the neutral value just zero? The last confusing point is `%start_value`, we just simply consider it is `0`, isn't it? I would appreciate it if you can give me any hints, which I think is very helpful to my LLVM learning :-) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D116736/new/ https://reviews.llvm.org/D116736 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits