From 167aa8cd3f425aad14b6a3f355cca77311be1ca9 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 15 Sep 2011 21:11:45 +0200 Subject: [PATCH] i386.c (output_fp_compare): Return %v prefixed instruction mnemonics for TARGET_AVX. * config/i386/i386.c (output_fp_compare): Return %v prefixed instruction mnemonics for TARGET_AVX. * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in "type" attribute calculation. (*movdf_internal): Ditto. (*movsf_internal): Ditto. From-SVN: r178891 --- gcc/ChangeLog | 20 ++++++++++++++------ gcc/config/i386/i386.c | 13 ++++--------- gcc/config/i386/i386.md | 40 +++++++++++++++++++++++++++++++++++----- gcc/testsuite/ChangeLog | 2 +- 4 files changed, 54 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 453128369fe..17080c9dec0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-09-15 Uros Bizjak + + * config/i386/i386.c (output_fp_compare): Return %v prefixed + instruction mnemonics for TARGET_AVX. + + * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in + "type" attribute calculation. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + 2011-09-15 James Greenhalgh * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro. @@ -67,8 +77,7 @@ * config/arm/arm.c (arm_override_options): Add unaligned_access support. - (arm_file_start): Emit attribute for unaligned access as - appropriate. + (arm_file_start): Emit attribute for unaligned access as appropriate. * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD) (UNSPEC_UNALIGNED_STORE): Add constants for unspecs. (insv, extzv): Add unaligned-access support. @@ -156,7 +165,7 @@ * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos. 2011-09-13 Paul Brook - + * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. (ARM_TARGET2_DWARF_FORMAT): Provide default definition. * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define. @@ -175,7 +184,7 @@ * ginclude/unwind-arm-common.h: New file. 2011-09-13 Georg-Johann Lay - + PR target/50358 * config/avr/predicates.md (const_1_to_6_operand): New predicate. * config/avr/avr.md: (extend_s): New code attribute. @@ -279,8 +288,7 @@ PR tree-optimization/50343 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check - that the reduction is over an SSA name before checking its - definition. + that the reduction is over an SSA name before checking its definition. 2011-09-11 Richard Sandiford diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 38fea4efc9f..97580df9ad7 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -14900,21 +14900,16 @@ output_fp_compare (rtx insn, rtx *operands, bool eflags_p, bool unordered_p) if (is_sse) { - static const char ucomiss[] = "vucomiss\t{%1, %0|%0, %1}"; - static const char ucomisd[] = "vucomisd\t{%1, %0|%0, %1}"; - static const char comiss[] = "vcomiss\t{%1, %0|%0, %1}"; - static const char comisd[] = "vcomisd\t{%1, %0|%0, %1}"; - if (GET_MODE (operands[0]) == SFmode) if (unordered_p) - return &ucomiss[TARGET_AVX ? 0 : 1]; + return "%vucomiss\t{%1, %0|%0, %1}"; else - return &comiss[TARGET_AVX ? 0 : 1]; + return "%vcomiss\t{%1, %0|%0, %1}"; else if (unordered_p) - return &ucomisd[TARGET_AVX ? 0 : 1]; + return "%vucomisd\t{%1, %0|%0, %1}"; else - return &comisd[TARGET_AVX ? 0 : 1]; + return "%vcomisd\t{%1, %0|%0, %1}"; } gcc_assert (STACK_TOP_P (cmp_op0)); diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 52c57fa9b7c..017ab09acbf 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1483,7 +1483,8 @@ (unspec:HI [(reg:CCFP FPSR_REG)] UNSPEC_FNSTSW))] "TARGET_80387" "fnstsw\t%0" - [(set (attr "length") (symbol_ref "ix86_attr_length_address_default (insn) + 2")) + [(set (attr "length") + (symbol_ref "ix86_attr_length_address_default (insn) + 2")) (set_attr "mode" "SI") (set_attr "unit" "i387")]) @@ -1510,7 +1511,8 @@ (set_attr "mode" "SI")]) ;; Pentium Pro can do steps 1 through 3 in one go. -;; comi*, ucomi*, fcomi*, ficomi*,fucomi* (i387 instructions set condition codes) +;; comi*, ucomi*, fcomi*, ficomi*, fucomi* +;; (these i387 instructions set flags directly) (define_insn "*cmpfp_i_mixed" [(set (reg:CCFP FLAGS_REG) (compare:CCFP (match_operand 0 "register_operand" "f,x") @@ -3028,7 +3030,17 @@ gcc_unreachable(); } } - [(set_attr "type" "fmov,fmov,fmov,imov,imov,imov,multi,sselog1,ssemov,ssemov,ssemov,ssemov,ssemov") + [(set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4,5") + (const_string "imov") + (eq_attr "alternative" "6") + (const_string "multi") + (eq_attr "alternative" "7") + (const_string "sselog1") + ] + (const_string "ssemov"))) (set (attr "modrm") (if_then_else (and (eq_attr "alternative" "5") (eq_attr "type" "imov")) @@ -3158,7 +3170,15 @@ (if_then_else (eq_attr "alternative" "5,6,7,8") (const_string "sse2") (const_string "*"))) - (set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") + (set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4") + (const_string "multi") + (eq_attr "alternative" "5,9") + (const_string "sselog1") + ] + (const_string "ssemov"))) (set (attr "prefix") (if_then_else (eq_attr "alternative" "0,1,2,3,4") (const_string "orig") @@ -3272,7 +3292,17 @@ gcc_unreachable (); } } - [(set_attr "type" "fmov,fmov,fmov,imov,imov,sselog1,ssemov,ssemov,ssemov,mmxmov,mmxmov,mmxmov,ssemov,ssemov,mmxmov,mmxmov") + [(set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4") + (const_string "multi") + (eq_attr "alternative" "5") + (const_string "sselog1") + (eq_attr "alternative" "9,10,11,14,15") + (const_string "mmxmov") + ] + (const_string "ssemov"))) (set (attr "prefix") (if_then_else (eq_attr "alternative" "5,6,7,8,12,13") (const_string "maybe_vex") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0accd60a78f..3f23eab39c7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -78,7 +78,7 @@ 2011-09-11 Thomas Koenig PR fortran/50327 - * gfortran.dg/do_while_1.f90: New test. + * gfortran.dg/do_while_1.f90: New test. 2011-09-11 Janus Weil