diff options
author | Chris Lattner <sabre@nondot.org> | 2006-04-16 01:37:57 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-04-16 01:37:57 +0000 |
commit | f3f69decca93d2465957e5ebf1f64b20e2845967 (patch) | |
tree | 5f98afa5453fb0b01cc11072dcc608f2f65581af /lib/Target/PowerPC/README_ALTIVEC.txt | |
parent | 2efce0a589e2a688a1a06b5dc2ed0db32ae79924 (diff) | |
download | llvm-f3f69decca93d2465957e5ebf1f64b20e2845967.tar.gz llvm-f3f69decca93d2465957e5ebf1f64b20e2845967.tar.bz2 llvm-f3f69decca93d2465957e5ebf1f64b20e2845967.tar.xz |
Implement a TODO: have the legalizer canonicalize a bunch of operations to
one type (v4i32) so that we don't have to write patterns for each type, and
so that more CSE opportunities are exposed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27731 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/README_ALTIVEC.txt')
-rw-r--r-- | lib/Target/PowerPC/README_ALTIVEC.txt | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/lib/Target/PowerPC/README_ALTIVEC.txt b/lib/Target/PowerPC/README_ALTIVEC.txt index 3c928ad6bb..f5a7c17369 100644 --- a/lib/Target/PowerPC/README_ALTIVEC.txt +++ b/lib/Target/PowerPC/README_ALTIVEC.txt @@ -65,7 +65,7 @@ clobbered regs. //===----------------------------------------------------------------------===// -Implement passing/returning vectors by value. +Implement passing vectors by value. //===----------------------------------------------------------------------===// @@ -75,7 +75,7 @@ of C1/C2/C3, then a load and vperm of Variable. //===----------------------------------------------------------------------===// We currently codegen SCALAR_TO_VECTOR as a store of the scalar to a 16-byte -aligned stack slot, followed by a lve*x/vperm. We should probably just store it +aligned stack slot, followed by a load/vperm. We should probably just store it to a scalar stack slot, then use lvsl/vperm to load it. If the value is already in memory, this is a huge win. @@ -92,22 +92,6 @@ be constants. The verifier should enforce this constraint. //===----------------------------------------------------------------------===// -Instead of writting a pattern for type-agnostic operations (e.g. gen-zero, load, -store, and, ...) in every supported type, make legalize do the work. We should -have a canonical type that we want operations changed to (e.g. v4i32 for -build_vector) and legalize should change non-identical types to thse. This is -similar to what it does for operations that are only supported in some types, -e.g. x86 cmov (not supported on bytes). - -This would fix two problems: -1. Writing patterns multiple times. -2. Identical operations in different types are not getting CSE'd. - -We already do this for shuffle and build_vector. We need load,undef,and,or,xor, -etc. - -//===----------------------------------------------------------------------===// - Implement multiply for vector integer types, to avoid the horrible scalarized code produced by legalize. |