summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/sync.md
diff options
context:
space:
mode:
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2016-08-08 09:05:16 +0000
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2016-08-08 09:05:16 +0000
commit5433a785b523721f554f37b4629aac4710954b2f (patch)
treeaa3164c0f78340a45e3a0f25a83af3f0043aabdb /gcc/config/rs6000/sync.md
parent9da84a5449ad04e66707d10f477453f89d1f70fa (diff)
downloadgcc-5433a785b523721f554f37b4629aac4710954b2f.tar.gz
[RS6000] PR72802 part 1, fix constraints for lxssp/stxssp
We can't use "o" constraint for lsxxp/stxssp since those insns have a DS-form offset field, ie. the bottom two bits of the offset must be 0. So use "wY" instead, but that leads to finding another problem. mem_operand_gpr is only suitable for gpr loads/stores since it does not enforce multiple-of-4 offsets when -m32. So "wY" can't use mem_operand_gpr, and the vsx tests in mem_operand_gpr are bogus. I've deleted offsettable_mem_14bit_operand because it wasn't used anywhere but in the wY constraint. Note also that the new wY constraint doesn't use memory_operand because that is redundant in a constraint, having already been tested in the predicate. PR target/72802 * config/rs6000/rs6000.c (mem_operand_gpr): Remove vsx dform test. (mem_operand_ds_form): New predicate. * config/rs6000/rs6000-protos.h (mem_operand_ds_form): Declare. * config/rs6000/constraints.md (wY): Use mem_operand_df_form. * config/rs6000/predicates.md (offsettable_mem_14bit_operand): Delete. * config/rs6000/rs6000.md (f32_lm2, f32_sm2): Use wY for SF. (extendsfdf2_fpr): Replace o constraint with wY. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239233 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/sync.md')
0 files changed, 0 insertions, 0 deletions