summaryrefslogtreecommitdiff
path: root/gcc/longlong.h
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-09-22 22:27:09 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-09-22 22:27:09 +0000
commit77169e561294e0496a5b4289974f6f417f42d1e6 (patch)
tree1bb1a0c7ed974b290958d7ab84cf473ef3fc2012 /gcc/longlong.h
parent704f5b3d2fe658cf86aa12bba1af57674525be67 (diff)
downloadgcc-77169e561294e0496a5b4289974f6f417f42d1e6.tar.gz
(pyr umul_ppmm): Use code `R' for REG.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10390 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/longlong.h')
-rw-r--r--gcc/longlong.h25
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/longlong.h b/gcc/longlong.h
index 9c39e98d16c..36b853d15f2 100644
--- a/gcc/longlong.h
+++ b/gcc/longlong.h
@@ -1,5 +1,5 @@
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
- Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
This definition file is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
@@ -730,20 +730,17 @@
"g" ((USItype)(bh)), \
"1" ((USItype)(al)), \
"g" ((USItype)(bl)))
-/* This insn doesn't work on ancient pyramids. */
+/* This insn works on Pyramids with AP, XP, or MI CPUs, but not with SP. */
#define umul_ppmm(w1, w0, u, v) \
- ({union { \
- UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- __xx.__i.__l = u; \
- __asm__ ("uemul %3,%0" \
- : "=r" (__xx.__i.__h), \
- "=r" (__xx.__i.__l) \
- : "1" (__xx.__i.__l), \
+ ({union {UDItype __ll; \
+ struct {USItype __h, __l;} __i; \
+ } __xx; \
+ __asm__ ("movw %1,%R0
+ uemul %2,%0" \
+ : "=&r" (__xx.__ll) \
+ : "g" ((USItype) (u)), \
"g" ((USItype)(v))); \
- (w1) = __xx.__i.__h; \
- (w0) = __xx.__i.__l;})
+ (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
#endif /* __pyr__ */
#if defined (__ibm032__) /* RT/ROMP */
@@ -1172,7 +1169,7 @@ extern const UQItype __clz_tab[];
} \
else \
{ \
- for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \
+ for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \
if (((__xr >> __a) & 0xff) != 0) \
break; \
} \