aboutsummaryrefslogtreecommitdiff
path: root/gcc/genmodes.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-11-29 15:28:08 +1030
committerAlan Modra <amodra@gcc.gnu.org>2018-11-29 15:28:08 +1030
commit8529a062e9f2b74733c3ada515e02b30380be7d6 (patch)
tree39133e9873150f86ddbf8923ac5b4c0fb05081a0 /gcc/genmodes.c
parentabf07e52b2f16ad1234bdb89b9c8b3d704b67b11 (diff)
downloadgcc-8529a062e9f2b74733c3ada515e02b30380be7d6.zip
gcc-8529a062e9f2b74733c3ada515e02b30380be7d6.tar.gz
gcc-8529a062e9f2b74733c3ada515e02b30380be7d6.tar.bz2
[RS6000] "G" and "H" constraints
The patch fixes two cases where the "G" and "H" constraints were used incorrectly. Their purpose is calculating insn lengths. Thus it never makes sense to put "GH" together or with "F" in an insn alternative. movdi_internal32 used "GHF" in an alternative so I replaced that with "F", and added length attributes for the insn, which were missing. There are some formatting changes too, to make alternatives line up with attributes. The FMOVE128 version of mov<mode>_softfloat also had "GHF" in an alternative, so "GH" is dropped and "F" moved to a separate alternative in order to get insn lengths correct. Well by correct I mean we need to choose the maximum insn length otherwise branches might not reach. Note the very large length for "F". I think it would be better to force soft-float long double constants to memory in 64-bit mode, but that's a patch for another day. * config/rs6000/constraints.md (G, H): Comment on purpose of constraint. Correct mode comments and "G" mode test. * config/rs6000/rs6000.md (movdi_internal32): Remove "GH" from alternative handling "F". Add length attr. Formatting. (mov<mode>_softfloat <FMOVE128>): Delete "GH" from alternative, and move "F" to separate alternative. Correct insn lengths. From-SVN: r266607
Diffstat (limited to 'gcc/genmodes.c')
0 files changed, 0 insertions, 0 deletions