[PATCH] D45616: [X86] Lower _mm[256|512]_cmp[.]_mask intrinsics to native llvm IR

2018-11-07 Thread Nikita Astafev via Phabricator via cfe-commits
nastafev added a comment.

Hello. It seems you were well aware that you are changing the semantics of FP 
operation here by ignoring the signaling/quiet portion of the immediate. But 
what shall the user do now? There was no way to force quiet FP comparison 
behavior in C language, so intrinsics and reliance on quiet compare (and SAE 
bit in AVX512) were natural way of forcing it. And now you are taking them out. 
Is there a switch that could prevent this optimization? I think it could be 
more tolerable if you only did this under fast-math.


Repository:
  rC Clang

https://reviews.llvm.org/D45616



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D45616: [X86] Lower _mm[256|512]_cmp[.]_mask intrinsics to native llvm IR

2018-11-07 Thread Nikita Astafev via Phabricator via cfe-commits
nastafev added a comment.

>   can trigger arbitrary floating-point exceptions anywhere in your code

I believe this statement reflects the current state of many compilers on the 
market, I guess I just don't see the reason why making things worse. It seems 
the original intent of the commit was to add support for masked compares, and 
that could have been achieved without breaking what already worked.

I hope the patch is ultimately helping some performance optimization, but it is 
breaking the original intent of some legitimate programs that worked before, 
and introduces correctness regression. So to me it must be at least guarded by 
a flip-switch.

The reference to constrained floating-point intrinsics work is relevant, but it 
will obviously take time and extra effort to enable and then to unbreak all the 
cases that are made broken here. Instead one could postpone lowering of the 
particular instructions until it was possible without violation of the 
semantics...


Repository:
  rC Clang

https://reviews.llvm.org/D45616



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D45616: [X86] Lower _mm[256|512]_cmp[.]_mask intrinsics to native llvm IR

2018-11-08 Thread Nikita Astafev via Phabricator via cfe-commits
nastafev added a comment.

Thanks, I agree with @andrew.w.kaylor and his interpretation.
I was trying to convey the message that the programmer operating with 
intrinsics relies on the semantics they carry because there's no other way to 
express that semantics. Re-optimizing what's already optimized (hand-written 
code with intrinsics) may be nice, but not critical in his (my) view, whereas 
violating semantics defeats the purpose - I could have written that same loop 
around generic compare myself if that was enough for my purposes. I would not 
insist on the way you resolve this, this is not urgent, but I do believe this 
is a regression and it deserves a fix.


Repository:
  rC Clang

https://reviews.llvm.org/D45616



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits