ManuelJBrito planned changes to this revision. ManuelJBrito added a comment.
Implementing the 128 to 512 casts by filling the rest of the vector with the same definition of a nondeterministic_value is not correct because : a = freeze poison v = <a, a> is not the same as v = freeze poison The only solution I'm seeing ,using the shufflevector, is doing the conversion in two steps: - build a 256 vector with the upper half being undefined( freeze poison) - build a 512 vector where the lower half is the previous 256 vector and the upper half being undefined I think this would require two shuffles which is unfortunate. This would ensure no miscompilations due to multiple uses of the same freeze undef/poison but would probably require some backend work to ensure the pattern is recognized to emit efficient assembly. Would this work ? @RKSimon @craig.topper Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D143287/new/ https://reviews.llvm.org/D143287 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits