[PATCH] D49280: [X86] Remove isel patterns for MOVSS/MOVSD ISD opcodes with integer types.
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 16 13:47:30 PDT 2018
RKSimon added a comment.
In https://reviews.llvm.org/D49280#1163872, @greened wrote:
> In https://reviews.llvm.org/D49280#1163648, @RKSimon wrote:
>
> > In https://reviews.llvm.org/D49280#1162909, @craig.topper wrote:
> >
> > > Which microarchitecture cares about switching PD/PS? To my knowledge, no Intel architecture cares. Do any of the AMD architectures care?
> >
> >
> > It tends to be only the 'weird mixture' PS/PD domain shifts that cause a stall: VADDPS then VMULPD, that kind of thing - shuffles and bitops tend to be more forgiving (and more easy to fix.)
>
>
> The AMD 17h Optimization Guide has this to say:
>
> "Try to use consistent data types for instructions operating on the same data. For example, use
> VANDPS, VMAXPS, and so on when consuming the output of MULPS."
>
> The inclusion of VANDPS in that list makes me think all such domain crossings may incur a penalty.
> I have not seen an explicit list anywhere of what is and is not bad. A VADDPD feeding a VANDPS
> is probably not a programming error but it would incur a penalty.
We do our hardest to keep to the same domain already - like I said on PR38157 bitops and (some) unpacks/shuffles are already handled but we can always do more (patches welcome!).
================
Comment at: test/CodeGen/X86/oddshuffles.ll:1332
+; SSE2-NEXT: movups %xmm7, 16(%rcx)
+; SSE2-NEXT: movups %xmm1, (%rcx)
; SSE2-NEXT: retq
----------------
TBH, this would be better if we stayed purely in the float domain.
Repository:
rL LLVM
https://reviews.llvm.org/D49280
More information about the llvm-commits
mailing list