fix arm thumb mode assembly
This commit is contained in:
parent
24dcddb216
commit
45859e97bf
@ -318,6 +318,36 @@ __asm__( \
|
||||
#define LOOP_START \
|
||||
mu = c[x] * mp
|
||||
|
||||
|
||||
#ifdef __thumb__
|
||||
|
||||
#define INNERMUL \
|
||||
__asm__( \
|
||||
" LDR r0,%1 \n\t" \
|
||||
" ADDS r0,r0,%0 \n\t" \
|
||||
" ITE CS \n\t" \
|
||||
" MOVCS %0,#1 \n\t" \
|
||||
" MOVCC %0,#0 \n\t" \
|
||||
" UMLAL r0,%0,%3,%4 \n\t" \
|
||||
" STR r0,%1 \n\t" \
|
||||
:"=r"(cy),"=m"(_c[0]):"0"(cy),"r"(mu),"r"(*tmpm++),"m"(_c[0]):"r0","cc");
|
||||
|
||||
#define PROPCARRY \
|
||||
__asm__( \
|
||||
" LDR r0,%1 \n\t" \
|
||||
" ADDS r0,r0,%0 \n\t" \
|
||||
" STR r0,%1 \n\t" \
|
||||
" ITE CS \n\t" \
|
||||
" MOVCS %0,#1 \n\t" \
|
||||
" MOVCC %0,#0 \n\t" \
|
||||
:"=r"(cy),"=m"(_c[0]):"0"(cy),"m"(_c[0]):"r0","cc");
|
||||
|
||||
|
||||
/* TAO thumb mode uses ite (if then else) to detect carry directly
|
||||
* fixed unmatched constraint warning by changing 1 to m */
|
||||
|
||||
#else /* __thumb__ */
|
||||
|
||||
#define INNERMUL \
|
||||
__asm__( \
|
||||
" LDR r0,%1 \n\t" \
|
||||
@ -337,6 +367,8 @@ __asm__( \
|
||||
" MOVCC %0,#0 \n\t" \
|
||||
:"=r"(cy),"=m"(_c[0]):"0"(cy),"1"(_c[0]):"r0","cc");
|
||||
|
||||
#endif /* __thumb__ */
|
||||
|
||||
#elif defined(TFM_PPC32)
|
||||
|
||||
/* PPC32 */
|
||||
@ -725,9 +757,11 @@ __asm__( \
|
||||
|
||||
#define SQRADDSC(i, j) \
|
||||
__asm__( \
|
||||
" UMULL %0,%1,%6,%7 \n\t" \
|
||||
" UMULL %0,%1,%3,%4 \n\t" \
|
||||
" SUB %2,%2,%2 \n\t" \
|
||||
:"=r"(sc0), "=r"(sc1), "=r"(sc2) : "0"(sc0), "1"(sc1), "2"(sc2), "r"(i), "r"(j) : "cc");
|
||||
:"=r"(sc0), "=r"(sc1), "=r"(sc2) : "r"(i), "r"(j) : "cc");
|
||||
|
||||
/* TAO removed sc0,1,2 as input to remove warning so %6,%7 become %3,%4 */
|
||||
|
||||
#define SQRADDAC(i, j) \
|
||||
__asm__( \
|
||||
|
Loading…
Reference in New Issue
Block a user