workaround for "error: more than 30 operands in 'asm'"?

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

 



Hi,

I'm working on taking PowerPC VMX code that uses altivec intrinsics
and rescheduling it with inline assembly. gcc is making some fairly
bad scheduling choices in with the code, resulting in code that is
running 4x slower then I was hoping for. I have a simplified version
working, but with the real version gcc is failing with: "error: more
than 30 operands in 'asm'". The code is using 28 vector registers and
6 serial registers.

The code is a mixture of setup code in C and only the inner loop is in
assembly, so it wouldn't be convenient to write this directly in
assembly. Also, because the code is highly pipelined (to overcome the
latency of the VMX floating point unit) it is a mess to split this up
into multiple asm() statements. Beyond recompiling gcc with a larger
operand count, is there a workaround for this problem?

I'm using gcc 4.2.2 and gas 2.18.

                                 Thanks,
                                 Clem

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux