diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-21 20:00:10 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-12-21 20:00:10 +0000 |
commit | 081abbb164cceea0ff5b70d1557f2cf31198f5b9 (patch) | |
tree | 9b712808d6be653cbd6b052d85fa932a9714d3c7 /llvm/lib/ExecutionEngine | |
parent | b0761a0c1ba8ec77d3704d2450d481bc25e60a9d (diff) | |
download | bcm5719-llvm-081abbb164cceea0ff5b70d1557f2cf31198f5b9.tar.gz bcm5719-llvm-081abbb164cceea0ff5b70d1557f2cf31198f5b9.zip |
[X86][SSE] Improve lowering of vXi64 multiplies
As mentioned on PR30845, we were performing our vXi64 multiplication as:
AloBlo = pmuludq(a, b);
AloBhi = pmuludq(a, psrlqi(b, 32));
AhiBlo = pmuludq(psrlqi(a, 32), b);
return AloBlo + psllqi(AloBhi, 32)+ psllqi(AhiBlo, 32);
when we could avoid one of the upper shifts with:
AloBlo = pmuludq(a, b);
AloBhi = pmuludq(a, psrlqi(b, 32));
AhiBlo = pmuludq(psrlqi(a, 32), b);
return AloBlo + psllqi(AloBhi + AhiBlo, 32);
This matches the lowering on gcc/icc.
Differential Revision: https://reviews.llvm.org/D27756
llvm-svn: 290267
Diffstat (limited to 'llvm/lib/ExecutionEngine')
0 files changed, 0 insertions, 0 deletions