]> gcc.gnu.org Git - gcc.git/commitdiff
neon.md (neon_type): Move to arm.md.
authorPaul Brook <paul@codesourcery.com>
Sat, 24 Jan 2009 00:10:30 +0000 (00:10 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Sat, 24 Jan 2009 00:10:30 +0000 (00:10 +0000)
2009-01-24  Paul Brook  <paul@codesourcery.com>

gcc/
* config/arm/neon.md (neon_type): Move to arm.md.
(neon_mov<VSTRUCT>): Add neon_type attribute.
* config/arm/arm.md (neon_type): Move to here.
(conds): Add "unconditioal" and use as default for NEON insns.

gcc/testsuite/
* gcc.target/arm/neon-cond-1.c: New test.

From-SVN: r143594

gcc/ChangeLog
gcc/config.gcc
gcc/config/arm/arm.md
gcc/config/arm/neon.md
gcc/testsuite/ChangeLog

index 6e8a60fc0c4de6f41fe004ff6feaacf738ebedd8..ad886c8f031f3e6e7bb64a7937cdc955ab72d5b6 100644 (file)
@@ -1,3 +1,10 @@
+2009-01-24  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/neon.md (neon_type): Move to arm.md.
+       (neon_mov<VSTRUCT>): Add neon_type attribute.
+       * config/arm/arm.md (neon_type): Move to here.
+       (conds): Add "unconditioal" and use as default for NEON insns.
+
 2009-01-24  Ben Elliston  <bje@au.ibm.com>
 
        * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
index aa224ae59df1fe1a35e6822d55a6a672ae96eef8..63bd62bb6532de79a47b9058f3dcbbd011ff0922 100644 (file)
@@ -760,7 +760,7 @@ arm*-*-eabi* | arm*-*-symbianelf* )
        tmake_file="arm/t-arm arm/t-arm-elf"
        case ${target} in
        arm*-*-eabi*)
-         tm_file="$tm_file arm/eabi.h"
+         tm_file="$tm_file arm/eabi.h arm/nocrt0.h"
          tmake_file="${tmake_file} arm/t-bpabi"
          extra_options="${extra_options} arm/eabi.opt"
          ;;
index 96e2f3b1bb38d17c70d32f75a100f78b5602460d..0acf257cb43c6afe00232783e3211012c3c71dad 100644 (file)
 ; initialized by arm_override_options() 
 (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
 
+;; Classification of NEON instructions for scheduling purposes.
+;; Do not set this attribute and the "type" attribute together in
+;; any one instruction pattern.
+(define_attr "neon_type"
+   "neon_int_1,\
+   neon_int_2,\
+   neon_int_3,\
+   neon_int_4,\
+   neon_int_5,\
+   neon_vqneg_vqabs,\
+   neon_vmov,\
+   neon_vaba,\
+   neon_vsma,\
+   neon_vaba_qqq,\
+   neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
+   neon_mul_qqq_8_16_32_ddd_32,\
+   neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,\
+   neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
+   neon_mla_qqq_8_16,\
+   neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,\
+   neon_mla_qqq_32_qqd_32_scalar,\
+   neon_mul_ddd_16_scalar_32_16_long_scalar,\
+   neon_mul_qqd_32_scalar,\
+   neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
+   neon_shift_1,\
+   neon_shift_2,\
+   neon_shift_3,\
+   neon_vshl_ddd,\
+   neon_vqshl_vrshl_vqrshl_qqq,\
+   neon_vsra_vrsra,\
+   neon_fp_vadd_ddd_vabs_dd,\
+   neon_fp_vadd_qqq_vabs_qq,\
+   neon_fp_vsum,\
+   neon_fp_vmul_ddd,\
+   neon_fp_vmul_qqd,\
+   neon_fp_vmla_ddd,\
+   neon_fp_vmla_qqq,\
+   neon_fp_vmla_ddd_scalar,\
+   neon_fp_vmla_qqq_scalar,\
+   neon_fp_vrecps_vrsqrts_ddd,\
+   neon_fp_vrecps_vrsqrts_qqq,\
+   neon_bp_simple,\
+   neon_bp_2cycle,\
+   neon_bp_3cycle,\
+   neon_ldr,\
+   neon_str,\
+   neon_vld1_1_2_regs,\
+   neon_vld1_3_4_regs,\
+   neon_vld2_2_regs_vld1_vld2_all_lanes,\
+   neon_vld2_4_regs,\
+   neon_vld3_vld4,\
+   neon_vst1_1_2_regs_vst2_2_regs,\
+   neon_vst1_3_4_regs,\
+   neon_vst2_4_regs_vst3_vst4,\
+   neon_vst3_vst4,\
+   neon_vld1_vld2_lane,\
+   neon_vld3_vld4_lane,\
+   neon_vst1_vst2_lane,\
+   neon_vst3_vst4_lane,\
+   neon_vld3_vld4_all_lanes,\
+   neon_mcr,\
+   neon_mcr_2_mcrr,\
+   neon_mrc,\
+   neon_mrrc,\
+   neon_ldm_2,\
+   neon_stm_2,\
+   none"
+ (const_string "none"))
+
 ; condition codes: this one is used by final_prescan_insn to speed up
 ; conditionalizing instructions.  It saves having to scan the rtl to see if
 ; it uses or alters the condition codes.
 ; JUMP_CLOB is used when the condition cannot be represented by a single
 ;   instruction (UNEQ and LTGT).  These cannot be predicated.
 ;
+; UNCONDITIONAL means the instions can not be conditionally executed.
+;
 ; NOCOND means that the condition codes are neither altered nor affect the
 ;   output of this insn
 
-(define_attr "conds" "use,set,clob,jump_clob,nocond"
+(define_attr "conds" "use,set,clob,jump_clob,unconditional,nocond"
        (if_then_else (eq_attr "type" "call")
         (const_string "clob")
-        (const_string "nocond")))
+        (if_then_else (eq_attr "neon_type" "none")
+         (const_string "nocond")
+         (const_string "unconditional"))))
 
 ; Predicable means that the insn can be conditionally executed based on
 ; an automatically added predicate (additional patterns are generated by 
index 8d10c1e5b421911443cb84ee1b5e187b8f206e86..dbbd209f79cc6d7222dcdfe720d14f44b5a9ddd0 100644 (file)
 ;; neon_type attribute definitions.
 (define_attr "vqh_mnem" "vadd,vmin,vmax" (const_string "vadd"))
 
-;; Classification of NEON instructions for scheduling purposes.
-;; Do not set this attribute and the "type" attribute together in
-;; any one instruction pattern.
-(define_attr "neon_type"
-   "neon_int_1,\
-   neon_int_2,\
-   neon_int_3,\
-   neon_int_4,\
-   neon_int_5,\
-   neon_vqneg_vqabs,\
-   neon_vmov,\
-   neon_vaba,\
-   neon_vsma,\
-   neon_vaba_qqq,\
-   neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
-   neon_mul_qqq_8_16_32_ddd_32,\
-   neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,\
-   neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
-   neon_mla_qqq_8_16,\
-   neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,\
-   neon_mla_qqq_32_qqd_32_scalar,\
-   neon_mul_ddd_16_scalar_32_16_long_scalar,\
-   neon_mul_qqd_32_scalar,\
-   neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
-   neon_shift_1,\
-   neon_shift_2,\
-   neon_shift_3,\
-   neon_vshl_ddd,\
-   neon_vqshl_vrshl_vqrshl_qqq,\
-   neon_vsra_vrsra,\
-   neon_fp_vadd_ddd_vabs_dd,\
-   neon_fp_vadd_qqq_vabs_qq,\
-   neon_fp_vsum,\
-   neon_fp_vmul_ddd,\
-   neon_fp_vmul_qqd,\
-   neon_fp_vmla_ddd,\
-   neon_fp_vmla_qqq,\
-   neon_fp_vmla_ddd_scalar,\
-   neon_fp_vmla_qqq_scalar,\
-   neon_fp_vrecps_vrsqrts_ddd,\
-   neon_fp_vrecps_vrsqrts_qqq,\
-   neon_bp_simple,\
-   neon_bp_2cycle,\
-   neon_bp_3cycle,\
-   neon_ldr,\
-   neon_str,\
-   neon_vld1_1_2_regs,\
-   neon_vld1_3_4_regs,\
-   neon_vld2_2_regs_vld1_vld2_all_lanes,\
-   neon_vld2_4_regs,\
-   neon_vld3_vld4,\
-   neon_vst1_1_2_regs_vst2_2_regs,\
-   neon_vst1_3_4_regs,\
-   neon_vst2_4_regs_vst3_vst4,\
-   neon_vst3_vst4,\
-   neon_vld1_vld2_lane,\
-   neon_vld3_vld4_lane,\
-   neon_vst1_vst2_lane,\
-   neon_vst3_vst4_lane,\
-   neon_vld3_vld4_all_lanes,\
-   neon_mcr,\
-   neon_mcr_2_mcrr,\
-   neon_mrc,\
-   neon_mrrc,\
-   neon_ldm_2,\
-   neon_stm_2,\
-   none"
- (const_string "none"))
-
-;; Predicates used for setting the above attribute.
+;; Predicates used for setting neon_type
 
 (define_mode_attr Is_float_mode [(V8QI "false") (V16QI "false")
                                 (V4HI "false") (V8HI "false")
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "length" "<V_slen>,<V_slen>,<V_slen>")])
+  [(set_attr "neon_type" "neon_int_1,neon_stm_2,neon_ldm_2")
+   (set_attr "length" "<V_slen>,<V_slen>,<V_slen>")])
 
 (define_split
   [(set (match_operand:EI 0 "s_register_operand" "")
index 6d266aefe400323ece5c73555ebb26a044cffcc7..ee4afc620d8eb0651d9a361cafbc84fc057b1be9 100644 (file)
@@ -1,3 +1,7 @@
+2009-01-24  Paul Brook  <paul@codesourcery.com>
+
+       * gcc.target/arm/neon-cond-1.c: New test.
+
 2008-01-23  Paolo Bonzini  <bonzini@gnu.org>
 
        PR tree-optimization/38932
This page took 0.089074 seconds and 5 git commands to generate.