This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
At any optimisation level, -O{s,1,2,3}, the assembly now looks like:
00000000<my_vstmia>: 0: ecac8b10 vstmia ip!, {d8-d15} 4: ecac8b10 vstmia ip!, {d8-d15} 8: e12fff1e bx lr
So yes, the stc and the vstmia opcodes in the code snippet above are both encoded into the same assembly instruction. But still, it does not tell whether it's due to 'as' being smart, or the two opcodes actually being the same in that situation...
Bits STC VSTM ---- --- ---- 27-25 b110 b110 19-16 Rn == IP Rn == IP 15-12 CRd == 8 Vd == d8 == 8 11-08 coproc == 11 b1011 (A1 encoding) 07-00 64 >> 2 == 16 16 (twice the number of regs)
---8<--- #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ # ifdef __VFP_FP__ /* Store the VFP registers. */ /* Following instruction is fstmiax ip!, {d8-d15}. */ stc p11, cr8, [r12], #68 /* Store the floating-point status register. */ /* Following instruction is fmrx r2, fpscr. */ mrc p10, 7, r2, cr1, cr0, 0 str r2, [ip], #4 ---8<---
UCLIBC_HAS_FLOATS=y # UCLIBC_HAS_FPU is not set UCLIBC_HAS_SOFT_FLOAT=y
Thanks, Mircea
-- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |