[ixp1200] ixp1200 absolute register programming problem

Johnson, Erik J erik.j.johnson at intel.com
Fri Aug 23 11:47:24 EDT 2002


The problem is not in the compiler, the problem is that an absolute register
is not allowed with either a shift specifier (alu_shf) or an immediate
operand.  So the real problem is with the 1.  The documentation is
misleading, but if you read after the example in the alu[] instruction
documentation, this restriction is hinted at.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Erik J. Johnson
Intel Research & Development
erik.j.johnson at intel.com
NOT SPEAKING FOR INTEL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


-----Original Message-----
From: xtan at mail [mailto:xtan at csnet1.cs.tsinghua.edu.cn] 
Sent: Thursday, August 22, 2002 6:27 PM
To: ixp1200 at CS.Princeton.EDU
Subject: [ixp1200] ixp1200 absolute register programming problem


Hello everybody:
         Here is an absolute register programming problem that I encountered
with IXP1200 C (asm) compiler. The detail code goes here:

__declspec(shared gp_reg) a;

void main()
{
     __asm alu[a, 1, +, a];
}

The compiler will report an error: (0): error :  #0: Inst has bad operands
(d:\cvs\uc\ixp1200\uEngineC\pdev\ixp_cg\ixpasm.c, line 2109)

While the IXP programming guide said the B operand and the dest_reg could
use absolute register leaving A operand a immediate data.

Is there anything wrong with my syntax or it is just a compiler bug?

Besides, using global absolute register is convenient in the communications
between threads, but this failure will lead to an exaggerate code generation
which dramatically decrease the performance.

I will very appreciate if anyone could help me.

Zhanxi Tan
Dep. of CS Tsinghua Univ.



More information about the ixp1200 mailing list