diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-10 19:19:32 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-10-10 19:19:32 -0400 |
commit | b9bcad654a75c6340f5080f31151363f751e1b18 (patch) | |
tree | 7f2b3bcf3080b9a738ceb3618c575f04bdedff1c | |
parent | a93738eb45d6c0fc40f067bb6b23346602a2d7d0 (diff) | |
download | gcc-b9bcad654a75c6340f5080f31151363f751e1b18.zip gcc-b9bcad654a75c6340f5080f31151363f751e1b18.tar.gz gcc-b9bcad654a75c6340f5080f31151363f751e1b18.tar.bz2 |
(convert_move): Add TImode conversions.
From-SVN: r8248
-rw-r--r-- | gcc/expr.c | 52 |
1 files changed, 52 insertions, 0 deletions
@@ -1199,6 +1199,58 @@ convert_move (to, from, unsignedp) return; } + if (from_mode == TImode && to_mode == DImode) + { +#ifdef HAVE_trunctidi2 + if (HAVE_trunctidi2) + { + emit_unop_insn (CODE_FOR_trunctidi2, to, from, UNKNOWN); + return; + } +#endif + convert_move (to, force_reg (from_mode, from), unsignedp); + return; + } + + if (from_mode == TImode && to_mode == SImode) + { +#ifdef HAVE_trunctisi2 + if (HAVE_trunctisi2) + { + emit_unop_insn (CODE_FOR_trunctisi2, to, from, UNKNOWN); + return; + } +#endif + convert_move (to, force_reg (from_mode, from), unsignedp); + return; + } + + if (from_mode == TImode && to_mode == HImode) + { +#ifdef HAVE_trunctihi2 + if (HAVE_trunctihi2) + { + emit_unop_insn (CODE_FOR_trunctihi2, to, from, UNKNOWN); + return; + } +#endif + convert_move (to, force_reg (from_mode, from), unsignedp); + return; + } + + if (from_mode == TImode && to_mode == QImode) + { +#ifdef HAVE_trunctiqi2 + if (HAVE_trunctiqi2) + { + emit_unop_insn (CODE_FOR_trunctiqi2, to, from, UNKNOWN); + return; + } +#endif + convert_move (to, force_reg (from_mode, from), unsignedp); + return; + } + /* Handle truncation of volatile memrefs, and so on; the things that couldn't be truncated directly, and for which there was no special instruction. */ |