The fcmp opcode has no defined behavior with NaN operands
in the comparisions handled in this patch. Thus, these
intrinsics can only be safe lowered to fcmp opcodes
when fast-math is enabled.
This also partially reverses the commit
"[X86] Use native IR for immediate values 0-7 of packed fp cmp builtins."
That commit lowered 4 SSE cmp builtins to fcmp opcodes, but with
this patch, that lowering is also dependent on the -ffast-math flag.
Affected AVX512 builtins (were not lowered to fcmp before):
Affected SSE builtins (were unconditionally lowered before):
At the same time, recognize predicates that result in
constants with all of the above intrinsics, that was only
handled in the case of the __builtin_ia32_cmpp[s|d]256 intrinsics.