tharunvk wrote: TypeLegalization gets kicked in before OperationLegalization for fp16. That's the reason clang would emit fpext/fptrunc sequences and convert fp16 to float
Also the current change generates pxor,vpxor,pand and vpand instead of xorps, andps, andps and vandps for O0 because : 1. In O3, Execution Dependency Fix pass gets kicked in(converts integer-domain insts to fp), but not for O0 2. Also instruction selector defaults to integer based XOR instead of floating point based for v8fp16 3. And to implement that we can bitcast v8f16 to v4f32 to trick the instruction selector Next suggestion to chose which path to take https://github.com/llvm/llvm-project/pull/189395 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
