From 2b01c3263e9ac407b5fbf43e0bff85c6fb6e97e8 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 22 Sep 1996 11:30:04 -0400 Subject: [PATCH] (convert_move): Replace explicit checks for FP extend ops with use of can_extend_p. (convert_move): Replace explicit checks for FP extend ops with use of can_extend_p. Add missing tests for FP trunc operations. From-SVN: r12771 --- gcc/expr.c | 146 ++++++++++++++--------------------------------------- 1 file changed, 39 insertions(+), 107 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 5713d6d2eac..ff1037558bf 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -611,115 +611,17 @@ convert_move (to, from, unsignedp) { rtx value; -#ifdef HAVE_extendqfhf2 - if (HAVE_extendqfhf2 && from_mode == QFmode && to_mode == HFmode) + if (GET_MODE_BITSIZE (from_mode) < GET_MODE_BITSIZE (to_mode)) { - emit_unop_insn (CODE_FOR_extendqfhf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendqfsf2 - if (HAVE_extendqfsf2 && from_mode == QFmode && to_mode == SFmode) - { - emit_unop_insn (CODE_FOR_extendqfsf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendqfdf2 - if (HAVE_extendqfdf2 && from_mode == QFmode && to_mode == DFmode) - { - emit_unop_insn (CODE_FOR_extendqfdf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendqfxf2 - if (HAVE_extendqfxf2 && from_mode == QFmode && to_mode == XFmode) - { - emit_unop_insn (CODE_FOR_extendqfxf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendqftf2 - if (HAVE_extendqftf2 && from_mode == QFmode && to_mode == TFmode) - { - emit_unop_insn (CODE_FOR_extendqftf2, to, from, UNKNOWN); - return; - } -#endif - -#ifdef HAVE_extendhftqf2 - if (HAVE_extendhftqf2 && from_mode == HFmode && to_mode == TQFmode) - { - emit_unop_insn (CODE_FOR_extendhftqf2, to, from, UNKNOWN); - return; - } -#endif - -#ifdef HAVE_extendhfsf2 - if (HAVE_extendhfsf2 && from_mode == HFmode && to_mode == SFmode) - { - emit_unop_insn (CODE_FOR_extendhfsf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendhfdf2 - if (HAVE_extendhfdf2 && from_mode == HFmode && to_mode == DFmode) - { - emit_unop_insn (CODE_FOR_extendhfdf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendhfxf2 - if (HAVE_extendhfxf2 && from_mode == HFmode && to_mode == XFmode) - { - emit_unop_insn (CODE_FOR_extendhfxf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendhftf2 - if (HAVE_extendhftf2 && from_mode == HFmode && to_mode == TFmode) - { - emit_unop_insn (CODE_FOR_extendhftf2, to, from, UNKNOWN); - return; - } -#endif - -#ifdef HAVE_extendsfdf2 - if (HAVE_extendsfdf2 && from_mode == SFmode && to_mode == DFmode) - { - emit_unop_insn (CODE_FOR_extendsfdf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendsfxf2 - if (HAVE_extendsfxf2 && from_mode == SFmode && to_mode == XFmode) - { - emit_unop_insn (CODE_FOR_extendsfxf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extendsftf2 - if (HAVE_extendsftf2 && from_mode == SFmode && to_mode == TFmode) - { - emit_unop_insn (CODE_FOR_extendsftf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extenddfxf2 - if (HAVE_extenddfxf2 && from_mode == DFmode && to_mode == XFmode) - { - emit_unop_insn (CODE_FOR_extenddfxf2, to, from, UNKNOWN); - return; - } -#endif -#ifdef HAVE_extenddftf2 - if (HAVE_extenddftf2 && from_mode == DFmode && to_mode == TFmode) - { - emit_unop_insn (CODE_FOR_extenddftf2, to, from, UNKNOWN); - return; + /* Try converting directly if the insn is supported. */ + if ((code = can_extend_p (to_mode, from_mode, 0)) + != CODE_FOR_nothing) + { + emit_unop_insn (code, to, from, UNKNOWN); + return; + } } -#endif - + #ifdef HAVE_trunchfqf2 if (HAVE_trunchfqf2 && from_mode == HFmode && to_mode == QFmode) { @@ -791,6 +693,36 @@ convert_move (to, from, unsignedp) return; } #endif + +#ifdef HAVE_truncsftqf2 + if (HAVE_truncsftqf2 && from_mode == SFmode && to_mode == TQFmode) + { + emit_unop_insn (CODE_FOR_truncsftqf2, to, from, UNKNOWN); + return; + } +#endif +#ifdef HAVE_truncdftqf2 + if (HAVE_truncdftqf2 && from_mode == DFmode && to_mode == TQFmode) + { + emit_unop_insn (CODE_FOR_truncdftqf2, to, from, UNKNOWN); + return; + } +#endif +#ifdef HAVE_truncxftqf2 + if (HAVE_truncxftqf2 && from_mode == XFmode && to_mode == TQFmode) + { + emit_unop_insn (CODE_FOR_truncxftqf2, to, from, UNKNOWN); + return; + } +#endif +#ifdef HAVE_trunctftqf2 + if (HAVE_trunctftqf2 && from_mode == TFmode && to_mode == TQFmode) + { + emit_unop_insn (CODE_FOR_trunctftqf2, to, from, UNKNOWN); + return; + } +#endif + #ifdef HAVE_truncdfsf2 if (HAVE_truncdfsf2 && from_mode == DFmode && to_mode == SFmode) { -- 2.30.2