On Mon, Mar 14, 2016 at 02:55:40PM -0500, Segher Boessenkool wrote: > On Mon, Mar 14, 2016 at 01:35:30PM -0600, Jeff Law wrote: > > >(define_insn "mov<mode>_hardfloat" > > > [(set (match_operand:FMOVE32 0 "nonimmediate_operand" > > > "=!r,!r,m,f,<f32_vsx>,<f32_vsx>,!r,<f32_lr>,<f32_lr2>,<f32_sm>,<f32_sm2>,<f32_av>,Z,?<f32_dm>,?r,*c*l,!r,*h") > > > (match_operand:FMOVE32 1 "input_operand" > > > "r,m,r,f,<f32_vsx>,j,j,<f32_lm>,<f32_lm2>,<f32_sr>,<f32_sr2>,Z,<f32_av>,r,<f32_dm>,r,h,0"))] > > > "(gpc_reg_operand (operands[0], <MODE>mode) > > > || gpc_reg_operand (operands[1], <MODE>mode)) > > > && (TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT)" > > We can get rid of the very many different mov patterns (or at least limit > it somewhat) by not doing a condition like this, instead using the > "enabled" attribute? > > > >The problem is you have count each alternative to get things to line up. > > > > > >One thing that I do when editing rs6000.md is make the columns line up > > >between > > >the different operands, and then edit it with a very wide emacs screen, for > > >example: > > You can split a string over multiple lines just fine, as well. That again > becomes unreadable if you need too many lines, of course :-( Yes you can split it over several lines, but that doesn't help much. Then you have (define_insn "mov<mode>_hardfloat" [(set (match_operand:FMOVE32 0 "nonimmediate_operand" "=!r, !r, m, f, <f32_vsx>, <f32_vsx>, !r, <f32_lr>, <f32_lr2>, <f32_sm>, <f32_sm2>, <f32_av>, Z, ?<f32_dm>, ?r, *c*l, !r, *h") (match_operand:FMOVE32 1 "input_operand" "r, m, r, f, <f32_vsx>, j, j, <f32_lm>, <f32_lm2>, <f32_sr>, <f32_sr2>, Z, <f32_av>, r, <f32_dm>, r, h, 0"))] "(gpc_reg_operand (operands[0], <MODE>mode) || gpc_reg_operand (operands[1], <MODE>mode)) && (TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_SINGLE_FLOAT)" ... And of course if we do add new syntax (or allow multiple moves), it will make it harder to backport things to older releases. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@xxxxxxxxxxxxxxxxxx, phone: +1 (978) 899-4797