]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/rs6000/rs64.md
rs6000: New attributes for load/store: "sign_extend", "update" and "indexed"
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 7 May 2014 22:00:58 +0000 (00:00 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 7 May 2014 22:00:58 +0000 (00:00 +0200)
commitd839f53b7dfd86250420bce15382c98cbd43b4ec
treecd8a170e4a1bf065792be21e8461f7608f25a897
parentd3b4df0b173c3ad5f1e8f5d9f6a5df3518322129
rs6000: New attributes for load/store: "sign_extend", "update" and "indexed"

The new attributes replace the instruction types *_ext*, *_u, *_ux.

This simplifies all code that does not care about the addressing modes,
putting the burden on the code that does care (mostly the scheduling
descriptions for certain CPUs).

It fixes a few minor bugs in the process.

The "update" and "indexed" attributes are automatic for any insn that
has a MEM as operand 0 or 1.  Other insns have to set it manually, if
they do not like the default (which is "no").  Insns that are type
load/store/fpload/fpstore but have fewer than two operands need to set
it too, or the compiler will crash.  There are very few of those.

This tries not to change semantics anywhere; in particular, the string
and multiple instructions set both "update" and "indexed" (although
they are neither).

From-SVN: r210190
31 files changed:
gcc/ChangeLog
gcc/config/rs6000/40x.md
gcc/config/rs6000/440.md
gcc/config/rs6000/476.md
gcc/config/rs6000/601.md
gcc/config/rs6000/603.md
gcc/config/rs6000/6xx.md
gcc/config/rs6000/7450.md
gcc/config/rs6000/7xx.md
gcc/config/rs6000/8540.md
gcc/config/rs6000/a2.md
gcc/config/rs6000/cell.md
gcc/config/rs6000/dfp.md
gcc/config/rs6000/e300c2c3.md
gcc/config/rs6000/e500mc.md
gcc/config/rs6000/e500mc64.md
gcc/config/rs6000/e5500.md
gcc/config/rs6000/e6500.md
gcc/config/rs6000/mpc.md
gcc/config/rs6000/power4.md
gcc/config/rs6000/power5.md
gcc/config/rs6000/power6.md
gcc/config/rs6000/power7.md
gcc/config/rs6000/power8.md
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/rs64.md
gcc/config/rs6000/titan.md
gcc/config/rs6000/vsx.md
gcc/config/rs6000/xfpu.md