aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mpi
diff options
context:
space:
mode:
authorStefan Agner <stefan@agner.ch>2017-08-07 13:31:20 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2017-08-17 04:53:31 -0400
commitdea632cadd129d1901efde6b1167a6250b2157fb (patch)
tree669bf9f93a2f3a59bc6d6834188544f0eb557d5b /lib/mpi
parent67adc432f424063cb82dfcb56fa883c7d8f7e9e5 (diff)
lib/mpi: fix build with clang
Use just @ to denote comments which works with gcc and clang. Otherwise clang reports an escape sequence error: error: invalid % escape in inline assembly string Use %0-%3 as operand references, this avoids: error: invalid operand in inline asm: 'umull ${1:r}, ${0:r}, ${2:r}, ${3:r}' Also remove superfluous casts on output operands to avoid warnings such as: warning: invalid use of a cast in an inline asm context requiring an l-value Signed-off-by: Stefan Agner <stefan@agner.ch> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'lib/mpi')
-rw-r--r--lib/mpi/longlong.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h
index 93336502af08..57fd45ab7af1 100644
--- a/lib/mpi/longlong.h
+++ b/lib/mpi/longlong.h
@@ -176,8 +176,8 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);
176#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ 176#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
177 __asm__ ("adds %1, %4, %5\n" \ 177 __asm__ ("adds %1, %4, %5\n" \
178 "adc %0, %2, %3" \ 178 "adc %0, %2, %3" \
179 : "=r" ((USItype)(sh)), \ 179 : "=r" (sh), \
180 "=&r" ((USItype)(sl)) \ 180 "=&r" (sl) \
181 : "%r" ((USItype)(ah)), \ 181 : "%r" ((USItype)(ah)), \
182 "rI" ((USItype)(bh)), \ 182 "rI" ((USItype)(bh)), \
183 "%r" ((USItype)(al)), \ 183 "%r" ((USItype)(al)), \
@@ -185,15 +185,15 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);
185#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ 185#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
186 __asm__ ("subs %1, %4, %5\n" \ 186 __asm__ ("subs %1, %4, %5\n" \
187 "sbc %0, %2, %3" \ 187 "sbc %0, %2, %3" \
188 : "=r" ((USItype)(sh)), \ 188 : "=r" (sh), \
189 "=&r" ((USItype)(sl)) \ 189 "=&r" (sl) \
190 : "r" ((USItype)(ah)), \ 190 : "r" ((USItype)(ah)), \
191 "rI" ((USItype)(bh)), \ 191 "rI" ((USItype)(bh)), \
192 "r" ((USItype)(al)), \ 192 "r" ((USItype)(al)), \
193 "rI" ((USItype)(bl))) 193 "rI" ((USItype)(bl)))
194#if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__ 194#if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__
195#define umul_ppmm(xh, xl, a, b) \ 195#define umul_ppmm(xh, xl, a, b) \
196 __asm__ ("%@ Inlined umul_ppmm\n" \ 196 __asm__ ("@ Inlined umul_ppmm\n" \
197 "mov %|r0, %2, lsr #16 @ AAAA\n" \ 197 "mov %|r0, %2, lsr #16 @ AAAA\n" \
198 "mov %|r2, %3, lsr #16 @ BBBB\n" \ 198 "mov %|r2, %3, lsr #16 @ BBBB\n" \
199 "bic %|r1, %2, %|r0, lsl #16 @ aaaa\n" \ 199 "bic %|r1, %2, %|r0, lsl #16 @ aaaa\n" \
@@ -206,19 +206,19 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);
206 "addcs %|r2, %|r2, #65536\n" \ 206 "addcs %|r2, %|r2, #65536\n" \
207 "adds %1, %|r1, %|r0, lsl #16\n" \ 207 "adds %1, %|r1, %|r0, lsl #16\n" \
208 "adc %0, %|r2, %|r0, lsr #16" \ 208 "adc %0, %|r2, %|r0, lsr #16" \
209 : "=&r" ((USItype)(xh)), \ 209 : "=&r" (xh), \
210 "=r" ((USItype)(xl)) \ 210 "=r" (xl) \
211 : "r" ((USItype)(a)), \ 211 : "r" ((USItype)(a)), \
212 "r" ((USItype)(b)) \ 212 "r" ((USItype)(b)) \
213 : "r0", "r1", "r2") 213 : "r0", "r1", "r2")
214#else 214#else
215#define umul_ppmm(xh, xl, a, b) \ 215#define umul_ppmm(xh, xl, a, b) \
216 __asm__ ("%@ Inlined umul_ppmm\n" \ 216 __asm__ ("@ Inlined umul_ppmm\n" \
217 "umull %r1, %r0, %r2, %r3" \ 217 "umull %1, %0, %2, %3" \
218 : "=&r" ((USItype)(xh)), \ 218 : "=&r" (xh), \
219 "=&r" ((USItype)(xl)) \ 219 "=&r" (xl) \
220 : "r" ((USItype)(a)), \ 220 : "r" ((USItype)(a)), \
221 "r" ((USItype)(b)) \ 221 "r" ((USItype)(b)) \
222 : "r0", "r1") 222 : "r0", "r1")
223#endif 223#endif
224#define UMUL_TIME 20 224#define UMUL_TIME 20