[PATCH] D55600: [TargetLowering] Add ISD::OR + ISD::XOR handling to SimplifyDemandedVectorElts
Andrea Di Biagio via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 12 10:03:29 PST 2018
andreadb added inline comments.
================
Comment at: test/CodeGen/X86/known-bits-vector.ll:173-177
+; X64-NEXT: vandps {{.*}}(%rip), %xmm0, %xmm0
+; X64-NEXT: vorps {{.*}}(%rip), %xmm0, %xmm0
+; X64-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[2,2,3,3]
+; X64-NEXT: vcvtdq2ps %xmm0, %xmm0
; X64-NEXT: retq
----------------
We lose the ability to fold this entire computation into a constant.
After the AND+OR sequence, element 2 and 3 of %xmm0 are known at compile time (i.e. those are both value `65535`).
The vector permute can therefore be folded away. And we can perform the int2fp conversion at compile time. Effectively folding away the entire computation into a load from constant pool.
To be fair, we could even shrink the constant pool entry by using a vbroadcastss instead of a vmovaps (on AVX).
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55600/new/
https://reviews.llvm.org/D55600
More information about the llvm-commits
mailing list