summaryrefslogtreecommitdiffstats
path: root/libcxx/include/mutex
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-12-08 14:36:51 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2014-12-08 14:36:51 +0000
commit64bc246f3feb7eb672ba53860c0c1a98c29f0e48 (patch)
tree04731d0e79397f5b73b954775fc9dda4f8ad91d9 /libcxx/include/mutex
parent3519da82b83a7517d3be6b75d8256bfd8e24efbd (diff)
downloadbcm5719-llvm-64bc246f3feb7eb672ba53860c0c1a98c29f0e48.tar.gz
bcm5719-llvm-64bc246f3feb7eb672ba53860c0c1a98c29f0e48.zip
[X86] Improved lowering of packed v8i16 vector shifts by non-constant count.
Before this patch, the backend sub-optimally expanded the non-constant shift count of a v8i16 shift into a sequence of two 'movd' plus 'movzwl'. With this patch the backend checks if the target features sse4.1. If so, then it lets the shuffle legalizer deal with the expansion of the shift amount. Example: ;; define <8 x i16> @test(<8 x i16> %A, <8 x i16> %B) { %shamt = shufflevector <8 x i16> %B, <8 x i16> undef, <8 x i32> zeroinitializer %shl = shl <8 x i16> %A, %shamt ret <8 x i16> %shl } ;; Before (with -mattr=+avx): vmovd %xmm1, %eax movzwl %ax, %eax vmovd %eax, %xmm1 vpsllw %xmm1, %xmm0, %xmm0 retq Now: vpxor %xmm2, %xmm2, %xmm2 vpblendw $1, %xmm1, %xmm2, %xmm1 vpsllw %xmm1, %xmm0, %xmm0 retq llvm-svn: 223660
Diffstat (limited to 'libcxx/include/mutex')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud