diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2011-07-15 22:24:33 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2011-07-15 22:24:33 +0000 |
commit | 8df9cfc2799075501c9960ff41859b224944fd0f (patch) | |
tree | d0f03519fdddcc8ae9978c1629da276ed3efe615 /llvm/lib/CodeGen/EdgeBundles.cpp | |
parent | 1fe1377e65641733e89feecc8d6778b5f478d7a6 (diff) | |
download | bcm5719-llvm-8df9cfc2799075501c9960ff41859b224944fd0f.tar.gz bcm5719-llvm-8df9cfc2799075501c9960ff41859b224944fd0f.zip |
Fix a couple of things:
1) Make non-legal 256-bit loads to be promoted to v4i64. This lets us
canonize the loads and handle things the same way we use to handle
for 128-bit registers. Despite of what one of the removed comments
explained, the load promotion would not mess with VPERM, it's only a
matter of doing the appropriate bitcasts when this instructions comes
to be introduced. Also make LOAD v8i32 legal.
2) Doing 1) exposed two bugs:
- v4i64 was being promoted to itself for several opcodes (introduced
in r124447 by David Greene) causing endless recursion and the stack to
explode.
- there was no support for allOnes BUILD_VECTORs and ANDNP would fail to
match because it was generating early target constant pools during
lowering.
3) The testcases are already checked-in, doing 1) exposed the
bugs in the current testcases.
4) Tidy up code to be more clear and explicit about AVX.
llvm-svn: 135313
Diffstat (limited to 'llvm/lib/CodeGen/EdgeBundles.cpp')
0 files changed, 0 insertions, 0 deletions