Mercurial > hg > CbC > CbC_gcc
diff gcc/config/arm/vfp.md @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/config/arm/vfp.md Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/config/arm/vfp.md Thu Oct 25 07:37:49 2018 +0900 @@ -1,5 +1,5 @@ ;; ARM VFP instruction patterns -;; Copyright (C) 2003-2017 Free Software Foundation, Inc. +;; Copyright (C) 2003-2018 Free Software Foundation, Inc. ;; Written by CodeSourcery. ;; ;; This file is part of GCC. @@ -304,9 +304,9 @@ ;; DImode moves (define_insn "*movdi_vfp" - [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,r,w,w, Uv") + [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,!r,w,w, Uv") (match_operand:DI 1 "di_operand" "r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))] - "TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune != TARGET_CPU_cortexa8 + "TARGET_32BIT && TARGET_HARD_FLOAT && ( register_operand (operands[0], DImode) || register_operand (operands[1], DImode)) && !(TARGET_NEON && CONST_INT_P (operands[1]) @@ -339,71 +339,25 @@ } " [(set_attr "type" "multiple,multiple,multiple,multiple,load_8,load_8,store_8,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") - (set (attr "length") (cond [(eq_attr "alternative" "1,4,5,6") (const_int 8) + (set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8) (eq_attr "alternative" "2") (const_int 12) (eq_attr "alternative" "3") (const_int 16) + (eq_attr "alternative" "4,5,6") + (symbol_ref "arm_count_output_move_double_insns (operands) * 4") (eq_attr "alternative" "9") (if_then_else (match_test "TARGET_VFP_SINGLE") (const_int 8) (const_int 4))] (const_int 4))) + (set_attr "predicable" "yes") (set_attr "arm_pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") + (set (attr "ce_count") (symbol_ref "get_attr_length (insn) / 4")) (set_attr "arch" "t2,any,any,any,a,t2,any,any,any,any,any,any")] ) -(define_insn "*movdi_vfp_cortexa8" - [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,!r,w,w, Uv") - (match_operand:DI 1 "di_operand" "r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))] - "TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune == TARGET_CPU_cortexa8 - && ( register_operand (operands[0], DImode) - || register_operand (operands[1], DImode)) - && !(TARGET_NEON && CONST_INT_P (operands[1]) - && neon_immediate_valid_for_move (operands[1], DImode, NULL, NULL))" - "* - switch (which_alternative) - { - case 0: - case 1: - case 2: - case 3: - return \"#\"; - case 4: - case 5: - case 6: - return output_move_double (operands, true, NULL); - case 7: - return \"vmov%?\\t%P0, %Q1, %R1\\t%@ int\"; - case 8: - return \"vmov%?\\t%Q0, %R0, %P1\\t%@ int\"; - case 9: - return \"vmov%?.f64\\t%P0, %P1\\t%@ int\"; - case 10: case 11: - return output_move_vfp (operands); - default: - gcc_unreachable (); - } - " - [(set_attr "type" "multiple,multiple,multiple,multiple,load_8,load_8,store_8,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") - (set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8) - (eq_attr "alternative" "2") (const_int 12) - (eq_attr "alternative" "3") (const_int 16) - (eq_attr "alternative" "4,5,6") - (symbol_ref - "arm_count_output_move_double_insns (operands) \ - * 4")] - (const_int 4))) - (set_attr "predicable" "yes") - (set_attr "arm_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") - (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") - (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") - (set (attr "ce_count") - (symbol_ref "get_attr_length (insn) / 4")) - (set_attr "arch" "t2,any,any,any,a,t2,any,any,any,any,any,any")] - ) - ;; HFmode moves (define_insn "*movhf_vfp_fp16" @@ -456,7 +410,10 @@ gcc_unreachable (); } } - [(set_attr "predicable" "yes, yes, no, yes, no, no, no, no, no, no") + [(set_attr "conds" "*, *, unconditional, *, unconditional, unconditional,\ + unconditional, unconditional, unconditional,\ + unconditional") + (set_attr "predicable" "yes, yes, no, yes, no, no, no, no, no, no") (set_attr "predicable_short_it" "no, no, no, yes,\ no, no, no, no,\ no, no") @@ -658,7 +615,6 @@ } " [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_mcr,f_mrc,fconsts,f_loads,f_stores,load_4,store_4,fmov,mov_reg") (set_attr "pool_range" "*,*,*,1018,*,4090,*,*,*") @@ -870,7 +826,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vabs%?.f32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffariths")] ) @@ -880,7 +835,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vabs%?.f64\\t%P0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffarithd")] ) @@ -892,7 +846,6 @@ vneg%?.f32\\t%0, %1 eor%?\\t%0, %1, #-2147483648" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffariths")] ) @@ -938,7 +891,6 @@ } " [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "length" "4,4,8") (set_attr "type" "ffarithd")] ) @@ -1007,7 +959,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vadd%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fadds")] ) @@ -1018,7 +969,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vadd%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "faddd")] ) @@ -1041,7 +991,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vsub%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fadds")] ) @@ -1052,7 +1001,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vsub%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "faddd")] ) @@ -1082,7 +1030,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vdiv%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") (set_attr "type" "fdivs")] ) @@ -1094,7 +1041,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vdiv%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") (set_attr "type" "fdivd")] ) @@ -1120,7 +1066,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vmul%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuls")] ) @@ -1131,7 +1076,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vmul%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuld")] ) @@ -1162,7 +1106,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && !flag_rounding_math" "vnmul%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuls")] ) @@ -1173,7 +1116,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vnmul%?.f32\\t%0, %1, %2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuls")] ) @@ -1185,7 +1127,6 @@ && !flag_rounding_math" "vnmul%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuld")] ) @@ -1196,7 +1137,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vnmul%?.f64\\t%P0, %P1, %P2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmuld")] ) @@ -1224,7 +1164,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vmla%?.f32\\t%0, %2, %3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacs")] ) @@ -1236,7 +1175,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vmla%?.f64\\t%P0, %P2, %P3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacd")] ) @@ -1260,7 +1198,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vnmls%?.f32\\t%0, %2, %3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacs")] ) @@ -1272,7 +1209,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vnmls%?.f64\\t%P0, %P2, %P3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacd")] ) @@ -1296,7 +1232,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vmls%?.f32\\t%0, %2, %3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacs")] ) @@ -1308,7 +1243,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vmls%?.f64\\t%P0, %P2, %P3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacd")] ) @@ -1335,7 +1269,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vnmla%?.f32\\t%0, %2, %3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacs")] ) @@ -1348,7 +1281,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vnmla%?.f64\\t%P0, %P2, %P3" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fmacd")] ) @@ -1386,7 +1318,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffma<vfp_type>")] ) @@ -1423,7 +1354,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffma<vfp_type>")] ) @@ -1446,7 +1376,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffma<vfp_type>")] ) @@ -1470,7 +1399,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA" "vfnma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "ffma<vfp_type>")] ) @@ -1483,7 +1411,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.f64.f32\\t%P0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1493,7 +1420,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.f32.f64\\t%0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1503,7 +1429,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FP16 || TARGET_VFP_FP16INST)" "vcvtb%?.f32.f16\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1513,7 +1438,6 @@ "TARGET_32BIT && TARGET_FP16_TO_DOUBLE" "vcvtb%?.f16.f64\\t%0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1523,7 +1447,6 @@ "TARGET_32BIT && TARGET_FP16_TO_DOUBLE" "vcvtb%?.f64.f16\\t%P0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1533,7 +1456,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FP16 || TARGET_VFP_FP16INST)" "vcvtb%?.f16.f32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvt")] ) @@ -1543,7 +1465,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vcvt%?.s32.f32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvtf2i")] ) @@ -1553,7 +1474,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.s32.f64\\t%0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvtf2i")] ) @@ -1564,7 +1484,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vcvt%?.u32.f32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvtf2i")] ) @@ -1574,7 +1493,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.u32.f64\\t%0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvtf2i")] ) @@ -1585,7 +1503,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vcvt%?.f32.s32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f")] ) @@ -1595,7 +1512,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.f64.s32\\t%P0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f")] ) @@ -1606,7 +1522,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vcvt%?.f32.u32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f")] ) @@ -1616,7 +1531,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vcvt%?.f64.u32\\t%P0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f")] ) @@ -1653,7 +1567,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT" "vsqrt%?.f32\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") (set_attr "type" "fsqrts")] ) @@ -1664,7 +1577,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "vsqrt%?.f64\\t%P0, %P1" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "arch" "*,armv6_or_vfpv3") (set_attr "type" "fsqrtd")] ) @@ -1756,7 +1668,6 @@ vcmp%?.f32\\t%0, %1 vcmp%?.f32\\t%0, #0" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fcmps")] ) @@ -1769,7 +1680,6 @@ vcmpe%?.f32\\t%0, %1 vcmpe%?.f32\\t%0, #0" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fcmps")] ) @@ -1782,7 +1692,6 @@ vcmp%?.f64\\t%P0, %P1 vcmp%?.f64\\t%P0, #0" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fcmpd")] ) @@ -1795,7 +1704,6 @@ vcmpe%?.f64\\t%P0, %P1 vcmpe%?.f64\\t%P0, #0" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "fcmpd")] ) @@ -1808,7 +1716,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" "vcvt%?.f32.<FCVTI32typename>\\t%0, %1, %v2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f")] ) @@ -1827,7 +1734,6 @@ vmov%?.f64\\t%P0, %1, %1\;vcvt%?.f64.<FCVTI32typename>\\t%P0, %P0, %v2" [(set_attr "predicable" "yes") (set_attr "ce_count" "2") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvti2f") (set_attr "length" "8")] ) @@ -1840,7 +1746,6 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" "vcvt%?.s32.f32\\t%0, %1, %v2" [(set_attr "predicable" "yes") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_cvtf2i")] ) @@ -1986,7 +1891,6 @@ "TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>" "vrint<vrint_variant>%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1" [(set_attr "predicable" "<vrint_predicable>") - (set_attr "predicable_short_it" "no") (set_attr "type" "f_rint<vfp_type>") (set_attr "conds" "<vrint_conds>")] ) @@ -1999,8 +1903,7 @@ "register_operand" "<F_constraint>")] VCVT)))] "TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>" "vcvt<vrint_variant>.<su>32.<V_if_elem>\\t%0, %<V_reg>1" - [(set_attr "predicable" "no") - (set_attr "conds" "unconditional") + [(set_attr "conds" "unconditional") (set_attr "type" "f_cvtf2i")] )