RE: [ixp1200] ixp1200 absolute register programming problem
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@intel.com NOT SPEAKING FOR INTEL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -----Original Message----- From: xtan@mail [mailto:xtan@csnet1.cs.tsinghua.edu.cn] Sent: Thursday, August 22, 2002 6:27 PM To: ixp1200@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.
participants (1)
-
Johnson, Erik J