}")
(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>,<zero_fp>,<zero_fp>,<f32_lm>,<f32_lm2>,<f32_sr>,<f32_sr2>,Z,<f32_av>,r,<f32_dm>,r,h,0"))]
+ [(set (match_operand:FMOVE32 0 "nonimmediate_operand"
+ "=!r, <f32_lr>, <f32_lr2>, <f32_av>, m, <f32_sm>,
+ <f32_sm2>, Z, <f32_vsx>, !r, ?<f32_dm>, ?r,
+ f, <f32_vsx>, !r, *c*l, !r, *h")
+ (match_operand:FMOVE32 1 "input_operand"
+ "m, <f32_lm>, <f32_lm2>, Z, r, <f32_sr>,
+ <f32_sr2>, <f32_av>, <zero_fp>, <zero_fp>, r, <f32_dm>,
+ f, <f32_vsx>, r, 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)"
"@
- mr %0,%1
lwz%U1%X1 %0,%1
- stw%U0%X0 %1,%0
- fmr %0,%1
- xscpsgndp %x0,%x1,%x1
- xxlxor %x0,%x0,%x0
- li %0,0
<f32_li>
<f32_li2>
+ <f32_lv>
+ stw%U0%X0 %1,%0
<f32_si>
<f32_si2>
- <f32_lv>
<f32_sv>
+ xxlxor %x0,%x0,%x0
+ li %0,0
mtvsrwz %x0,%1
mfvsrwz %0,%x1
+ fmr %0,%1
+ xscpsgndp %x0,%x1,%x1
+ mr %0,%1
mt%0 %1
mf%1 %0
nop"
- [(set_attr "type" "*,load,store,fpsimple,fpsimple,veclogical,integer,fpload,fpload,fpstore,fpstore,fpload,fpstore,mffgpr,mftgpr,mtjmpr,mfjmpr,*")
- (set_attr "length" "4")])
+ [(set_attr "type" "load,fpload,fpload,fpload,store,fpstore,fpstore,fpstore,veclogical,integer,mffgpr,mftgpr,fpsimple,fpsimple,*,mtjmpr,mfjmpr,*")])
(define_insn "*mov<mode>_softfloat"
[(set (match_operand:FMOVE32 0 "nonimmediate_operand" "=r,cl,r,r,m,r,r,r,r,*h")