moving v16sf reg with multiple sub-regs

2005-02-19 Thread Dylan Cuthbert
Hi there, I have implemented a move of a v16sf type like this because it is held by 4 v4sf registers: --- snip --- (define_expand "movv16sf" [(set (match_operand:V16SF 0 "nonimmediate_operand" "") (match_operand:V16SF 1 "general_operand" ""))] "" " if ((

Re: moving v16sf reg with multiple sub-regs

2005-02-21 Thread Dylan Cuthbert
this produces inefficient code. Any idea how I can get the same removal of redundant temporaries and still get the multiple instructions for each operation interspersed nicely? Dylan "Dylan Cuthbert" <[EMAIL PROTECTED]> wrote in message news:[E

Re: moving v16sf reg with multiple sub-regs

2005-02-22 Thread Dylan Cuthbert
d - something I was quite impressed by. Regards Dylan "James E Wilson" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Dylan Cuthbert wrote: asm( "some_instruction %0,%1,%2,%3" : "=&j" (blob): "j" (vec1), "j" (vec2), "j&quo

Re: moving v16sf reg with multiple sub-regs

2005-02-22 Thread Dylan Cuthbert
moving the v16sf "whole" so it doesn't need to be initialised and hence avoid the warning? Dylan "James E Wilson" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Dylan Cuthbert wrote: asm( "some_instruction %0,%1,%2,%3" : "=&j" (blo

Re: moving v16sf reg with multiple sub-regs

2005-02-22 Thread Dylan Cuthbert
ks Dylan "James E Wilson" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Dylan Cuthbert wrote: Is there someway I can flag the moves to say that is moving the v16sf "whole" so it doesn't need to be initialised and hence avoid the warning? See emit_no_

Re: moving v16sf reg with multiple sub-regs

2005-02-22 Thread Dylan Cuthbert
Ah, ok, sorry about that, I read it as being the equivalent of the whole operation. I'll throw op1 in there, thanks again. Dylan "James E Wilson" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Dylan Cuthbert wrote: For the last parameter (equiv) of emit_n

Re: moving v16sf reg with multiple sub-regs

2005-02-23 Thread Dylan Cuthbert
in message news:[EMAIL PROTECTED] "Dylan Cuthbert" <[EMAIL PROTECTED]> writes: emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 0 ), gen_rtx_MEM( V4SFmode, src_reg ) ); emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 16 ), gen_rtx_MEM( V4SFmode, plus_constant( src_reg, 16 ) ) );

Re: moving v16sf reg with multiple sub-regs

2005-02-23 Thread Dylan Cuthbert
"Richard Sandiford" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] "Dylan Cuthbert" <[EMAIL PROTECTED]> writes: emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 0 ), gen_rtx_MEM( V4SFmode, src_reg ) ); emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 16 ),

Re: moving v16sf reg with multiple sub-regs

2005-02-23 Thread Dylan Cuthbert
PROTECTED]> wrote in message news:[EMAIL PROTECTED] "Dylan Cuthbert" <[EMAIL PROTECTED]> writes: emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 0 ), gen_rtx_MEM( V4SFmode, src_reg ) ); emit_move_insn( gen_rtx_SUBREG (V4SFmode, op0, 16 ), gen_rtx_MEM(

Re: moving v16sf reg with multiple sub-regs

2005-02-23 Thread Dylan Cuthbert
Unless in gcc-world outermode has the meaning of innermode? (and vice versa) which.. from looking at some other source... perhaps it does.. :-/ "Dylan Cuthbert" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Ok, I think I found out why gen_subreg crashes here: