aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-27 08:49:19 +0000
committerRichard Stallman <rms@gnu.org>1993-03-27 08:49:19 +0000
commit6ac2ba936e54e9f0f934bb39e5672cc186e2af09 (patch)
treed6d7721401174a7eecd0d97de01cfb3da721f31f /gcc
parentae698e41edea77e25cb7e74ea60cd47de672a858 (diff)
downloadgcc-6ac2ba936e54e9f0f934bb39e5672cc186e2af09.zip
gcc-6ac2ba936e54e9f0f934bb39e5672cc186e2af09.tar.gz
gcc-6ac2ba936e54e9f0f934bb39e5672cc186e2af09.tar.bz2
(S_MODES, D_MODES, T_MODES):
Accept only those complex modes that are small enough. Rewrite to make the expressions simpler. From-SVN: r3890
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 2f41b9a..1d132c7 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -1924,18 +1924,20 @@ output_scc_insn (operands, insn)
| (1 << (int) CCFPmode) | (1 << (int) CCFPEmode))
/* Modes for single-word (and smaller) quantities. */
-#define S_MODES \
- (~C_MODES \
- & ~ ((1 << (int) DImode) | (1 << (int) TImode) \
- | (1 << (int) DFmode) | (1 << (int) TFmode)))
+#define S_MODES \
+ ((1 << (int) QImode) | (1 << (int) HImode) | (1 << (int) SImode) \
+ | (1 << (int) QFmode) | (1 << (int) HFmode) | (1 << (int) SFmode) \
+ | (1 << (int) CQImode) | (1 << (int) CHImode))
/* Modes for double-word (and smaller) quantities. */
-#define D_MODES \
- (~C_MODES \
- & ~ ((1 << (int) TImode) | (1 << (int) TFmode)))
+#define D_MODES \
+ (S_MODES | (1 << (int) DImode) | (1 << (int) DFmode) \
+ | (1 << (int) CSImode) | (1 << (int) SCmode))
/* Modes for quad-word quantities. */
-#define T_MODES (~C_MODES)
+#define T_MODES \
+ (D_MODES | (1 << (int) TImode) | (1 << (int) TFmode) \
+ | (1 << (int) DCmode) | (1 << (int) CDImode))
/* Modes for single-float quantities. We must allow any single word or
smaller quantity. This is because the fix/float conversion instructions