[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [openrisc] DSP instructions assembler error



This is not a bug. You used asm directive incorrectly.
You directly assigned registers to instructions, so gcc treats string 
"lv.add.h  r3,r4,r6" as an instruction. If you would write "sdsdsagfdht643" 
it would directly copy it to .S file, but in the latter case assembler would 
complain. You should either use "volatile" keyword, if the instruction should 
not be moved, or assign registers outside asm keyword, or at least assign 
constrained register to instruction. See gcc manual for more info.

Marko

On Friday 13 September 2002 18:05, Damjan Lampret wrote:
> This looks like a bug. We need a few days to check out, meanwhile you can
> also try to find this bug.
>
> regards,
> Damjan
>
> ----- Original Message -----
> From: <javier_castillo_villar@yahoo.es>
> To: <openrisc@opencores.org>
> Sent: Friday, September 13, 2002 8:37 PM
> Subject: [openrisc] DSP instructions assembler error
>
> > I am attempting to assemble dsp instructions with the port of binutils
> > but when I attemp to assemble a dsp instruction wich contains a _ the
> > assembler fails.
> >
> > For example this program:
> >
> > main(){
> >
> >    int i;
> >    i=5;
> >    i=i+6;
> >
> >    asm("lv.add.h  r3,r4,r6");
> >
> > }
> >
> > with the orden or32-uclinux-gcc -S suma.c generate:
> >
> > l.addi   r1,r1,-8
> > l.sw     0(r1),r2
> > l.addi   r2,r1,8
> > l.addi  r3,r0,5 # move immediate
> > l.sw    -4(r2),r3
> > l.lwz    r3,-4(r2) # SI load
> > l.addi  r3,r3,6
> > l.sw    -4(r2),r3
> > lv.add.h  r3,r4,r6    ************* THE ORDER IN ASM
> > l.addi  r11,r3,0 # move reg to reg
> > l.lwz    r2,0(r1)
> > l.jr  r9
> > l.addi   r1,r1,8
> >
> > And writing or32-uclinux-as suma.s assemble without errors. If I use a
> > DSP instruction with a _ like lv.cmp_le.b in this code:
> >
> > main(){
> >
> >    int i;
> >    i=5;
> >    i=i+6;
> >
> >    asm("lv.cmp_le.b  r3,r4,r6");
> >
> > }
> >
> > I obtain a similar result in asm
> >
> > l.addi   r1,r1,-8
> > l.sw     0(r1),r2
> > l.addi   r2,r1,8
> > l.addi  r3,r0,5 # move immediate
> > l.sw    -4(r2),r3
> > l.lwz    r3,-4(r2) # SI load
> > l.addi  r3,r3,6
> > l.sw    -4(r2),r3
> > lv.cmp_le.b  r3,r4,r6    **************THE ORDER I ADD
> > l.addi  r11,r3,0 # move reg to reg
> > l.lwz    r2,0(r1)
> > l.jr  r9
> > l.addi   r1,r1,8
> >
> >
> > But when I try to assemble it says:
> >
> > suma.s:19 Error: unknow opcode1: 'lv.cmp_le.b r3,r4,r6'
> >
> > I look at /binutils/opcodes/or32.c and these instructions are added to.
> >
> >
> > I attempt to use all the DSP isntructions with an _ in his opcode and
> > noone assemble but the ones that dont have a _ works well.
> >
> >
> > Is this a bug or maybe I am doing something wrong?
> >
> > Thanks
> >
> >
> >
> > --
> > To unsubscribe from openrisc mailing list please visit
>
> http://www.opencores.org/mailinglists.shtml

--
To unsubscribe from openrisc mailing list please visit http://www.opencores.org/mailinglists.shtml