diff mbox

[AArch64,AArch32,Insn,classification,refactoring,6/N] Remove "neon_type" attribute

Message ID 20130905090250.GA15984@arm.com
State New
Headers show

Commit Message

James Greenhalgh Sept. 5, 2013, 9:02 a.m. UTC
*PING*

Thanks,
James

On Mon, Aug 19, 2013 at 01:46:11PM +0100, James Greenhalgh wrote:
> 
> Hi,
> 
> This patch does two things:
> 
> 1. Moves all the "neon_type" attribute values in the ARM backend into
> "type", and removes "neon_type".
> 
> 2. Splits type f_2_r and r_2_f to enable them to be used in a similar
> way as neon_mcr et. al.
> 
> The patch is principally a series of substitutions implementing the
> above goal. I'm sorry that it is so long, but we touch every single
> Neon pattern, and all neon-capable pipelines.
> 
> Tested on aarch64-none-elf, bootstrapped on a chromebook, tested on
> arm-none-eabi and sanity checked code output with no obvious regressions.
> 
> Is this OK to go in to trunk?
> 
> Thanks,
> James
> 
> -----
> 2013-08-19  James Greenhalgh  <james.greenhalgh@arm.com>
>             Sofiane Naci <sofiane.naci@arm.com>
> 
>         * config/aarch64/aarch64.md
>         (*movti_aarch64): Rename r_2_f and f_2_r.
>         (*movsf_aarch64): Likewise.
>         (*movdf_aarch64): Likewise.
>         (*movtf_aarch64): Likewise.
>         (aarch64_movdi_<mode>low): Likewise.
>         (aarch64_movdi_<mode>high): Likewise.
>         (aarch64_mov<mode>high_di): Likewise.
>         (aarch64_mov<mode>low_di): Likewise.
>         (aarch64_movtilow_tilow): Likewise.
>         * config/arm/arm.c (cortexa7_older_only): Update for attribute change.
>         * config/arm/arm.md (attribute "neon_type"): Delete.  Move attribute
>         values to config/arm/types.md
>         (attribute "conds"): Update for attribute change.
>         (anddi3_insn): Likewise.
>         (iordi3_insn): Likewise.
>         (xordi3_insn): Likewise.
>         (one_cmpldi2): Likewise.
>         * config/arm/arm1020e.md (v10_c2v): Update for attribute change.
>         (v10_v2c): Likewise.
>         * config/arm/cortex-a15-neon.md (cortex_a15_neon_int_1): Update for
>         attribute change.
>         (cortex_a15_neon_int_2): Likewise.
>         (cortex_a15_neon_int_3): Likewise.
>         (cortex_a15_neon_int_4): Likewise.
>         (cortex_a15_neon_int_5): Likewise.
>         (cortex_a15_neon_vqneg_vqabs): Likewise.
>         (cortex_a15_neon_vmov): Likewise.
>         (cortex_a15_neon_vaba): Likewise.
>         (cortex_a15_neon_vaba_qqq): Likewise.
>         (cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise.
>         (cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_\
>         scalar_64_32_long_scalar): Likewise.
>         (cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a15_neon_mla_qqq_8_16): Likewise.
>         (cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
>         lotype_qdd_64_32_long): Likewise.
>         (cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise.
>         (cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
>         (cortex_a15_neon_mul_qqd_32_scalar): Likewise.
>         (cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
>         (cortex_a15_neon_shift_1): Likewise.
>         (cortex_a15_neon_shift_2): Likewise.
>         (cortex_a15_neon_shift_3): Likewise.
>         (cortex_a15_neon_vshl_ddd): Likewise.
>         (cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
>         (cortex_a15_neon_vsra_vrsra): Likewise.
>         (cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise.
>         (cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise.
>         (cortex_a15_neon_fp_vmul_ddd): Likewise.
>         (cortex_a15_neon_fp_vmul_qqd): Likewise.
>         (cortex_a15_neon_fp_vmla_ddd): Likewise.
>         (cortex_a15_neon_fp_vmla_qqq): Likewise.
>         (cortex_a15_neon_fp_vmla_ddd_scalar): Likewise.
>         (cortex_a15_neon_fp_vmla_qqq_scalar): Likewise.
>         (cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise.
>         (cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise.
>         (cortex_a15_neon_bp_simple): Likewise.
>         (cortex_a15_neon_bp_2cycle): Likewise.
>         (cortex_a15_neon_bp_3cycle): Likewise.
>         (cortex_a15_neon_vld1_1_2_regs): Likewise.
>         (cortex_a15_neon_vld1_3_4_regs): Likewise.
>         (cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
>         (cortex_a15_neon_vld2_4_regs): Likewise.
>         (cortex_a15_neon_vld3_vld4): Likewise.
>         (cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
>         (cortex_a15_neon_vst1_3_4_regs): Likewise.
>         (cortex_a15_neon_vst2_4_regs_vst3_vst4): Likewise.
>         (cortex_a15_neon_vst3_vst4): Likewise.
>         (cortex_a15_neon_vld1_vld2_lane): Likewise.
>         (cortex_a15_neon_vld3_vld4_lane" 10
>         (cortex_a15_neon_vst1_vst2_lane): Likewise.
>         (cortex_a15_neon_vst3_vst4_lane): Likewise.
>         (cortex_a15_neon_vld3_vld4_all_lanes): Likewise.
>         (cortex_a15_neon_ldm_2): Likewise.0
>         (cortex_a15_neon_stm_2): Likewise.
>         (cortex_a15_neon_mcr): Likewise.
>         (cortex_a15_neon_mcr_2_mcrr): Likewise.
>         (cortex_a15_neon_mrc): Likewise.
>         (cortex_a15_neon_mrrc): Likewise.
>         * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute change.
>         (cortex_a15_alu_shift): Likewise.
>         (cortex_a15_alu_shift_reg): Likewise.
>         (cortex_a15_mult32): Likewise.
>         (cortex_a15_mult64): Likewise.
>         (cortex_a15_block): Likewise.
>         (cortex_a15_branch): Likewise.
>         (cortex_a15_load1): Likewise.
>         (cortex_a15_load3): Likewise.
>         (cortex_a15_store1): Likewise.
>         (cortex_a15_store3): Likewise.
>         (cortex_a15_call): Likewise.
>         * config/arm/cortex-a5.md (cortex_a5_r2f): Update for attribute change.
>         (cortex_a5_f2r): Likewise.
>         * config/arm/cortex-a53.md (cortex_a53_r2f): Update for attribute change.
>         (cortex_a53_f2r): Likewise.
>         * config/arm/cortex-a7.md
>         (cortex_a7_branch): Update for attribute change.
>         (cortex_a7_call): Likewise.
>         (cortex_a7_alu_imm): Likewise.
>         (cortex_a7_alu_reg): Likewise.
>         (cortex_a7_alu_shift): Likewise.
>         (cortex_a7_mul): Likewise.
>         (cortex_a7_load1): Likewise.
>         (cortex_a7_store1): Likewise.
>         (cortex_a7_load2): Likewise.
>         (cortex_a7_store2): Likewise.
>         (cortex_a7_load3): Likewise.
>         (cortex_a7_store3): Likewise.
>         (cortex_a7_load4): Likewise.
>         (cortex_a7_store4): Likewise.
>         (cortex_a7_fpalu): Likewise.
>         (cortex_a7_fconst): Likewise.
>         (cortex_a7_fpmuls): Likewise.
>         (cortex_a7_neon_mul): Likewise.
>         (cortex_a7_fpmacs): Likewise.
>         (cortex_a7_neon_mla: Likewise.
>         (cortex_a7_fpmuld: Likewise.
>         (cortex_a7_fpmacd: Likewise.
>         (cortex_a7_fpfmad: Likewise.
>         (cortex_a7_fdivs: Likewise.
>         (cortex_a7_fdivd: Likewise.
>         (cortex_a7_r2f: Likewise.
>         (cortex_a7_f2r: Likewise.
>         (cortex_a7_f_flags: Likewise.
>         (cortex_a7_f_loads: Likewise.
>         (cortex_a7_f_loadd: Likewise.
>         (cortex_a7_f_stores: Likewise.
>         (cortex_a7_f_stored: Likewise.
>         (cortex_a7_neon): Likewise.
>         * config/arm/cortex-a8-neon.md
>         (cortex_a8_neon_mrc): Update for attribute change.
>         (cortex_a8_neon_mrrc): Likewise.
>         (cortex_a8_neon_int_1): Likewise.
>         (cortex_a8_neon_int_2): Likewise.
>         (cortex_a8_neon_int_3): Likewise.
>         (cortex_a8_neon_int_4): Likewise.
>         (cortex_a8_neon_int_5): Likewise.
>         (cortex_a8_neon_vqneg_vqabs): Likewise.
>         (cortex_a8_neon_vmov): Likewise.
>         (cortex_a8_neon_vaba): Likewise.
>         (cortex_a8_neon_vaba_qqq): Likewise.
>         (cortex_a8_neon_vsma): Likewise.
>         (cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise.
>         (cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar):
>         Likewise.
>         (cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a8_neon_mla_qqq_8_16): Likewise.
>         (cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
>         long_scalar_qdd_64_32_long): Likewise.
>         (cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise.
>         (cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
>         (cortex_a8_neon_mul_qqd_32_scalar): Likewise.
>         (cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
>         (cortex_a8_neon_shift_1): Likewise.
>         (cortex_a8_neon_shift_2): Likewise.
>         (cortex_a8_neon_shift_3): Likewise.
>         (cortex_a8_neon_vshl_ddd): Likewise.
>         (cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
>         (cortex_a8_neon_vsra_vrsra): Likewise.
>         (cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise.
>         (cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise.
>         (cortex_a8_neon_fp_vsum): Likewise.
>         (cortex_a8_neon_fp_vmul_ddd): Likewise.
>         (cortex_a8_neon_fp_vmul_qqd): Likewise.
>         (cortex_a8_neon_fp_vmla_ddd): Likewise.
>         (cortex_a8_neon_fp_vmla_qqq): Likewise.
>         (cortex_a8_neon_fp_vmla_ddd_scalar): Likewise.
>         (cortex_a8_neon_fp_vmla_qqq_scalar): Likewise.
>         (cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise.
>         (cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise.
>         (cortex_a8_neon_bp_simple): Likewise.
>         (cortex_a8_neon_bp_2cycle): Likewise.
>         (cortex_a8_neon_bp_3cycle): Likewise.
>         (cortex_a8_neon_ldr): Likewise.
>         (cortex_a8_neon_str): Likewise.
>         (cortex_a8_neon_vld1_1_2_regs): Likewise.
>         (cortex_a8_neon_vld1_3_4_regs): Likewise.
>         (cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
>         (cortex_a8_neon_vld2_4_regs): Likewise.
>         (cortex_a8_neon_vld3_vld4): Likewise.
>         (cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
>         (cortex_a8_neon_vst1_3_4_regs): Likewise.
>         (cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise.
>         (cortex_a8_neon_vst3_vst4): Likewise.
>         (cortex_a8_neon_vld1_vld2_lane): Likewise.
>         (cortex_a8_neon_vld3_vld4_lane): Likewise.
>         (cortex_a8_neon_vst1_vst2_lane): Likewise.
>         (cortex_a8_neon_vst3_vst4_lane): Likewise.
>         (cortex_a8_neon_vld3_vld4_all_lanes): Likewise.
>         (cortex_a8_neon_mcr): Likewise.
>         (cortex_a8_neon_mcr_2_mcrr): Likewise.
>         * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change.
>         * config/arm/cortex-a9-neon.md (ca9_neon_mrc): Update for attribute change.
>         (ca9_neon_mrrc): Likewise.
>         (cortex_a9_neon_int_1): Likewise.
>         (cortex_a9_neon_int_2): Likewise.
>         (cortex_a9_neon_int_3): Likewise.
>         (cortex_a9_neon_int_4): Likewise.
>         (cortex_a9_neon_int_5): Likewise.
>         (cortex_a9_neon_vqneg_vqabs): Likewise.
>         (cortex_a9_neon_vmov): Likewise.
>         (cortex_a9_neon_vaba): Likewise.
>         (cortex_a9_neon_vaba_qqq): Likewise.
>         (cortex_a9_neon_vsma): Likewise.
>         (cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise.
>         (cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar):
>         Likewise.
>         (cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
>         (cortex_a9_neon_mla_qqq_8_16): Likewise.
>         (cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
>         long_scalar_qdd_64_32_long): Likewise.
>         (cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise.
>         (cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
>         (cortex_a9_neon_mul_qqd_32_scalar): Likewise.
>         (cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
>         (cortex_a9_neon_shift_1): Likewise.
>         (cortex_a9_neon_shift_2): Likewise.
>         (cortex_a9_neon_shift_3): Likewise.
>         (cortex_a9_neon_vshl_ddd): Likewise.
>         (cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
>         (cortex_a9_neon_vsra_vrsra): Likewise.
>         (cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise.
>         (cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise.
>         (cortex_a9_neon_fp_vsum): Likewise.
>         (cortex_a9_neon_fp_vmul_ddd): Likewise.
>         (cortex_a9_neon_fp_vmul_qqd): Likewise.
>         (cortex_a9_neon_fp_vmla_ddd): Likewise.
>         (cortex_a9_neon_fp_vmla_qqq): Likewise.
>         (cortex_a9_neon_fp_vmla_ddd_scalar): Likewise.
>         (cortex_a9_neon_fp_vmla_qqq_scalar): Likewise.
>         (cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise.
>         (cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise.
>         (cortex_a9_neon_bp_simple): Likewise.
>         (cortex_a9_neon_bp_2cycle): Likewise.
>         (cortex_a9_neon_bp_3cycle): Likewise.
>         (cortex_a9_neon_ldr): Likewise.
>         (cortex_a9_neon_str): Likewise.
>         (cortex_a9_neon_vld1_1_2_regs): Likewise.
>         (cortex_a9_neon_vld1_3_4_regs): Likewise.
>         (cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
>         (cortex_a9_neon_vld2_4_regs): Likewise.
>         (cortex_a9_neon_vld3_vld4): Likewise.
>         (cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
>         (cortex_a9_neon_vst1_3_4_regs): Likewise.
>         (cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise.
>         (cortex_a9_neon_vst3_vst4): Likewise.
>         (cortex_a9_neon_vld1_vld2_lane): Likewise.
>         (cortex_a9_neon_vld3_vld4_lane): Likewise.
>         (cortex_a9_neon_vst1_vst2_lane): Likewise.
>         (cortex_a9_neon_vst3_vst4_lane): Likewise.
>         (cortex_a9_neon_vld3_vld4_all_lanes): Likewise.
>         (cortex_a9_neon_mcr): Likewise.
>         (cortex_a9_neon_mcr_2_mcrr): Likewise.
>         * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change.
>         (cortex_a9_fps): Likewise.
>         * config/arm/cortex-m4-fpu.md (cortex_m4_vmov_2): Update for attribute
>         change.
>         (cortex_m4_fmuls): Likewise.
>         * config/arm/cortex-r4f.md (cortex_r4_mcr): Update for attribute change.
>         (cortex_r4_mrc): Likewise.
>         * config/arm/iterators.md: Update comment referring to neon_type.
>         * config/arm/iwmmxt.md
>         (iwmmxt_arm_movdi): Update for attribute change.
>         (iwmmxt_movsi_insn): Likewise.
>         * config/arm/marvell-pj4.md
>         (pj4_vfp_to_core): Update for attribute change.
>         (pj4_core_to_vfp): Likewise.
>         * config/arm/neon-schedgen.ml (emit_insn_reservations): Update for
>         attribute change.
>         * config/arm/neon.md (neon_mov<mode>): Update for attribute changes.
>         (movmisalign<mode>_neon_store): Likewise.
>         (movmisalign<mode>_neon_load): Likewise.
>         (vec_set<mode>_internal): Likewise.
>         (vec_setv2di_internal): Likewise.
>         (vec_extract<mode>): Likewise.
>         (vec_extractv2di): Likewise.
>         (add<mode>3_neon): Likewise.
>         (adddi3_neon): Likewise.
>         (sub<mode>3_neon): Likewise.
>         (subdi3_neon): Likewise.
>         (mul<mode>3_neon): Likewise.
>         (mul<mode>3add<mode>_neon): Likewise.
>         (mul<mode>3neg<mode>add<mode>_neon): Likewise.
>         (fma<VCVTF:mode>4)): Likewise.
>         (fma<VCVTF:mode>4_intrinsic): Likewise.
>         (fmsub<VCVTF:mode>4)): Likewise.
>         (fmsub<VCVTF:mode>4_intrinsic): Likewise.
>         (neon_vrint<NEON_VRINT:nvrint_variant><VCVTF:mode>): Likewise.
>         (ior<mode>3): Likewise.
>         (and<mode>3): Likewise.
>         (anddi3_neon): Likewise.
>         (orn<mode>3_neon): Likewise.
>         (orndi3_neon): Likewise.
>         (bic<mode>3_neon): Likewise.
>         (bicdi3_neon): Likewise.
>         (xor<mode>3): Likewise.
>         (one_cmpl<mode>2): Likewise.
>         (abs<mode>2): Likewise.
>         (neg<mode>2): Likewise.
>         (umin<mode>3_neon): Likewise.
>         (umax<mode>3_neon): Likewise.
>         (smin<mode>3_neon): Likewise.
>         (smax<mode>3_neon): Likewise.
>         (vashl<mode>3): Likewise.
>         (vashr<mode>3_imm): Likewise.
>         (vlshr<mode>3_imm): Likewise.
>         (ashl<mode>3_signed): Likewise.
>         (ashl<mode>3_unsigned): Likewise.
>         (neon_load_count): Likewise.
>         (ashldi3_neon_noclobber): Likewise.
>         (signed_shift_di3_neon): Likewise.
>         (unsigned_shift_di3_neon): Likewise.
>         (ashrdi3_neon_imm_noclobber): Likewise.
>         (lshrdi3_neon_imm_noclobber): Likewise.
>         (widen_ssum<mode>3): Likewise.
>         (widen_usum<mode>3): Likewise.
>         (quad_halves_<code>v4si): Likewise.
>         (quad_halves_<code>v4sf): Likewise.
>         (quad_halves_<code>v8hi): Likewise.
>         (quad_halves_<code>v16qi): Likewise.
>         (reduc_splus_v2di): Likewise.
>         (neon_vpadd_internal<mode>): Likewise.
>         (neon_vpsmin<mode>): Likewise.
>         (neon_vpsmax<mode>): Likewise.
>         (neon_vpumin<mode>): Likewise.
>         (neon_vpumax<mode>): Likewise.
>         (ss_add<mode>_neon): Likewise.
>         (us_add<mode>_neon): Likewise.
>         (ss_sub<mode>_neon): Likewise.
>         (us_sub<mode>_neon): Likewise.
>         (neon_vadd<mode>_unspec): Likewise.
>         (neon_vaddl<mode>): Likewise.
>         (neon_vaddw<mode>): Likewise.
>         (neon_vhadd<mode>): Likewise.
>         (neon_vqadd<mode>): Likewise.
>         (neon_vaddhn<mode>): Likewise.
>         (neon_vmul<mode>): Likewise.
>         (neon_vmla<mode>): Likewise.
>         (neon_vmlal<mode>): Likewise.
>         (neon_vmls<mode>): Likewise.
>         (neon_vmlsl<mode>): Likewise.
>         (neon_vqdmulh<mode>): Likewise.
>         (neon_vqdmlal<mode>): Likewise.
>         (neon_vqdmlsl<mode>): Likewise.
>         (neon_vmull<mode>): Likewise.
>         (neon_vqdmull<mode>): Likewise.
>         (neon_vsub<mode>_unspec): Likewise.
>         (neon_vsubl<mode>): Likewise.
>         (neon_vsubw<mode>): Likewise.
>         (neon_vqsub<mode>): Likewise.
>         (neon_vhsub<mode>): Likewise.
>         (neon_vsubhn<mode>): Likewise.
>         (neon_vceq<mode>): Likewise.
>         (neon_vcge<mode>): Likewise.
>         (neon_vcgeu<mode>): Likewise.
>         (neon_vcgt<mode>): Likewise.
>         (neon_vcgtu<mode>): Likewise.
>         (neon_vcle<mode>): Likewise.
>         (neon_vclt<mode>): Likewise.
>         (neon_vcage<mode>): Likewise.
>         (neon_vcagt<mode>): Likewise.
>         (neon_vtst<mode>): Likewise.
>         (neon_vabd<mode>): Likewise.
>         (neon_vabdl<mode>): Likewise.
>         (neon_vaba<mode>): Likewise.
>         (neon_vabal<mode>): Likewise.
>         (neon_vmax<mode>): Likewise.
>         (neon_vmin<mode>): Likewise.
>         (neon_vpaddl<mode>): Likewise.
>         (neon_vpadal<mode>): Likewise.
>         (neon_vpmax<mode>): Likewise.
>         (neon_vpmin<mode>): Likewise.
>         (neon_vrecps<mode>): Likewise.
>         (neon_vrsqrts<mode>): Likewise.
>         (neon_vqabs<mode>): Likewise.
>         (neon_vqneg<mode>): Likewise.
>         (neon_vcls<mode>): Likewise.
>         (clz<mode>2): Likewise.
>         (popcount<mode>2): Likewise.
>         (neon_vrecpe): Likewise.
>         (neon_vrsqrte): Likewise.
>         (neon_vget_lane<mode>_sext_internal): Likewise.
>         (neon_vget_lane<mode>_zext_internal): Likewise.
>         (neon_vdup_n<mode>): Likewise.
>         (neon_vdup_nv2di): Likewise.
>         (neon_vdpu_lane<mode>_internal): Likewise.
>         (neon_vswp<mode>): Likewise.
>         (float<mode><V_cvtto>2): Likewise.
>         (floatuns<mode><V_cvtto>2): Likewise.
>         (fix_trunc<mode><V_cvtto>)2): Likewise
>         (fixuns_trunc<mode><V_cvtto)2): Likewise.
>         (neon_vcvt<mode>): Likewise.
>         (neon_vcvtv4sfv4hf): Likewise.
>         (neon_vcvtv4hfv4sf): Likewise.
>         (neon_vcvt_n<mode>): Likewise.
>         (neon_vmovn<mode>): Likewise.
>         (neon_vqmovn<mode>): Likewise.
>         (neon_vqmovun<mode>): Likewise.
>         (neon_vmovl<mode>): Likewise.
>         (neon_vmul_lane<mode>): Likewise.
>         (neon_vmull_lane<mode>): Likewise.
>         (neon_vqdmull_lane<mode>): Likewise.
>         (neon_vqdmulh_lane<mode>): Likewise.
>         (neon_vmla_lane<mode>): Likewise.
>         (neon_vmlal_lane<mode>): Likewise.
>         (neon_vqdmlal_lane<mode>): Likewise.
>         (neon_vmls_lane<mode>): Likewise.
>         (neon_vmlsl_lane<mode>): Likewise.
>         (neon_vqdmlsl_lane<mode>): Likewise.
>         (neon_vext<mode>): Likewise.
>         (neon_vrev64<mode>): Likewise.
>         (neon_vrev32<mode>): Likewise.
>         (neon_vrev16<mode>): Likewise.
>         (neon_vbsl<mode>_internal): Likewise.
>         (neon_vshl<mode>): Likewise.
>         (neon_vqshl<mode>): Likewise.
>         (neon_vshr_n<mode>): Likewise.
>         (neon_vshrn_n<mode>): Likewise.
>         (neon_vqshrn_n<mode>): Likewise.
>         (neon_vqshrun_n<mode>): Likewise.
>         (neon_vshl_n<mode>): Likewise.
>         (neon_vqshl_n<mode>): Likewise.
>         (neon_vqshlu_n<mode>): Likewise.
>         (neon_vshll_n<mode>): Likewise.
>         (neon_vsra_n<mode>): Likewise.
>         (neon_vsri_n<mode>): Likewise.
>         (neon_vsli_n<mode>): Likewise.
>         (neon_vtbl1v8qi): Likewise.
>         (neon_vtbl2v8qi): Likewise.
>         (neon_vtbl3v8qi): Likewise.
>         (neon_vtbl4v8qi): Likewise.
>         (neon_vtbx1v8qi): Likewise.
>         (neon_vtbx2v8qi): Likewise.
>         (neon_vtbx3v8qi): Likewise.
>         (neon_vtbx4v8qi): Likewise.
>         (neon_vtrn<mode>_internal): Likewise.
>         (neon_vzip<mode>_internal): Likewise.
>         (neon_vuzp<mode>_internal): Likewise.
>         (neon_vld1<mode>): Likewise.
>         (neon_vld1_lane<mode>): Likewise.
>         (neon_vld1_dup<mode>): Likewise.
>         (neon_vld1_dupv2di): Likewise.
>         (neon_vst1<mode>): Likewise.
>         (neon_vst1_lane<mode>): Likewise.
>         (neon_vld2<mode>): Likewise.
>         (neon_vld2_lane<mode>): Likewise.
>         (neon_vld2_dup<mode>): Likewise.
>         (neon_vst2<mode>): Likewise.
>         (neon_vst2_lane<mode>): Likewise.
>         (neon_vld3<mode>): Likewise.
>         (neon_vld3qa<mode>): Likewise.
>         (neon_vld3qb<mode>): Likewise.
>         (neon_vld3_lane<mode>): Likewise.
>         (neon_vld3_dup<mode>): Likewise.
>         (neon_vst3<mode>): Likewise.
>         (neon_vst3qa<mode>): Likewise.
>         (neon_vst3qb<mode>): Likewise.
>         (neon_vst3_lane<mode>): Likewise.
>         (neon_vld4<mode>): Likewise.
>         (neon_vld4qa<mode>): Likewise.
>         (neon_vld4qb<mode>): Likewise.
>         (neon_vld4_lane<mode>): Likewise.
>         (neon_vld4_dup<mode>): Likewise.
>         (neon_vst4<mode>): Likewise.
>         (neon_vst4qa<mode>): Likewise.
>         (neon_vst4qb<mode>): Likewise.
>         (neon_vst4_lane<mode>): Likewise.
>         (neon_vec_unpack<US>_lo_<mode>): Likewise.
>         (neon_vec_unpack<US>_hi_<mode>): Likewise.
>         (neon_vec_<US>mult_lo_<mode>): Likewise.
>         (neon_vec_<US>mult_hi_<mode>): Likewise.
>         (neon_vec_<US>shiftl_<mode>): Likewise.
>         (neon_unpack<US>_<mode>): Likewise.
>         (neon_vec_<US>mult_<mode>): Likewise.
>         (vec_pack_trunc_<mode>): Likewise.
>         (neon_vec_pack_trunk_<mode>): Likewise.
>         (neon_vabd<mode>_2): Likewise.
>         (neon_vabd<mode>_3): Likewise.
>         * config/arm/types.md (type): Add Neon types.
>         * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes.
>         (thumb2_movsi_vfp): Likewise.
>         (movdi_vfp): Likewise.
>         (movdi_vfp_cortexa8): Likewise.
>         (movhf_vfp_neon): Likewise.
>         (movhf_vfp): Likewiwse.
>         (movsf_vfp): Likewiwse.
>         (thumb2_movsf_vfp): Likewiwse.
>         (movdf_vfp): Likewise.
>         (thumb2_movdf_vfp): Likewise.
>         (movsfcc_vfp): Likewise.
>         (thumb2_movsfcc_vfp): Likewise.
>         (movdfcc_vfp): Likewise.
>         (thumb2_movdfcc_vfp): Likewise.
>         * config/arm/vfp11.md (vfp_fload): Update for attribute change.
>         (vfp_fstore): Likewise.
>         * doc/md.texi: Change references to neon_type to refer to type.
>
diff mbox

Patch

From 13aed57e3fe9e9b6f405a01544540526d340b2d3 Mon Sep 17 00:00:00 2001
From: James Greenhalgh <james.greenhalgh@arm.com>
Date: Fri, 9 Aug 2013 16:34:56 +0100
Subject: [AArch64, AArch32][Insn classification refactoring 6/N] Remove
 "neon_type" attribute
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------1.8.3-rc0"

This is a multi-part message in MIME format.
--------------1.8.3-rc0
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit


Hi,

This patch does two things:

1. Moves all the "neon_type" attribute values in the ARM backend into
"type", and removes "neon_type".

2. Splits type f_2_r and r_2_f to enable them to be used in a similar
way as neon_mcr et. al.

The patch is principally a series of substitutions implementing the
above goals. I'm sorry that it is so long, but we touch every single
Neon pattern, and all neon-capable pipelines.

Tested on aarch64-none-elf, bootstrapped on a chromebook, tested on
arm-none-eabi and sanity checked code output with no obvious regressions.

Is this OK?

Thanks,
James

-----
2013-08-19  James Greenhalgh  <james.greenhalgh@arm.com>
	    Sofiane Naci <sofiane.naci@arm.com>

	* config/aarch64/aarch64.md
	(*movti_aarch64): Rename r_2_f and f_2_r.
	(*movsf_aarch64): Likewise.
	(*movdf_aarch64): Likewise.
	(*movtf_aarch64): Likewise.
	(aarch64_movdi_<mode>low): Likewise.
	(aarch64_movdi_<mode>high): Likewise.
	(aarch64_mov<mode>high_di): Likewise.
	(aarch64_mov<mode>low_di): Likewise.
	(aarch64_movtilow_tilow): Likewise.
	* config/arm/arm.c (cortexa7_older_only): Update for attribute change.
	* config/arm/arm.md (attribute "neon_type"): Delete.  Move attribute
	values to config/arm/types.md
	(attribute "conds"): Update for attribute change.
	(anddi3_insn): Likewise.
	(iordi3_insn): Likewise.
	(xordi3_insn): Likewise.
	(one_cmpldi2): Likewise.
	* config/arm/arm1020e.md (v10_c2v): Update for attribute change.
	(v10_v2c): Likewise.
	* config/arm/cortex-a15-neon.md (cortex_a15_neon_int_1): Update for
	attribute change.
	(cortex_a15_neon_int_2): Likewise.
	(cortex_a15_neon_int_3): Likewise.
	(cortex_a15_neon_int_4): Likewise.
	(cortex_a15_neon_int_5): Likewise.
	(cortex_a15_neon_vqneg_vqabs): Likewise.
	(cortex_a15_neon_vmov): Likewise.
	(cortex_a15_neon_vaba): Likewise.
	(cortex_a15_neon_vaba_qqq): Likewise.
	(cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a15_neon_mul_qqq_8_16_32_ddd_32): Likewise.
	(cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_\
	scalar_64_32_long_scalar): Likewise.
	(cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a15_neon_mla_qqq_8_16): Likewise.
	(cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
	lotype_qdd_64_32_long): Likewise.
	(cortex_a15_neon_mla_qqq_32_qqd_32_scalar): Likewise.
	(cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
	(cortex_a15_neon_mul_qqd_32_scalar): Likewise.
	(cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
	(cortex_a15_neon_shift_1): Likewise.
	(cortex_a15_neon_shift_2): Likewise.
	(cortex_a15_neon_shift_3): Likewise.
	(cortex_a15_neon_vshl_ddd): Likewise.
	(cortex_a15_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
	(cortex_a15_neon_vsra_vrsra): Likewise.
	(cortex_a15_neon_fp_vadd_ddd_vabs_dd): Likewise.
	(cortex_a15_neon_fp_vadd_qqq_vabs_qq): Likewise.
	(cortex_a15_neon_fp_vmul_ddd): Likewise.
	(cortex_a15_neon_fp_vmul_qqd): Likewise.
	(cortex_a15_neon_fp_vmla_ddd): Likewise.
	(cortex_a15_neon_fp_vmla_qqq): Likewise.
	(cortex_a15_neon_fp_vmla_ddd_scalar): Likewise.
	(cortex_a15_neon_fp_vmla_qqq_scalar): Likewise.
	(cortex_a15_neon_fp_vrecps_vrsqrts_ddd): Likewise.
	(cortex_a15_neon_fp_vrecps_vrsqrts_qqq): Likewise.
	(cortex_a15_neon_bp_simple): Likewise.
	(cortex_a15_neon_bp_2cycle): Likewise.
	(cortex_a15_neon_bp_3cycle): Likewise.
	(cortex_a15_neon_vld1_1_2_regs): Likewise.
	(cortex_a15_neon_vld1_3_4_regs): Likewise.
	(cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
	(cortex_a15_neon_vld2_4_regs): Likewise.
	(cortex_a15_neon_vld3_vld4): Likewise.
	(cortex_a15_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
	(cortex_a15_neon_vst1_3_4_regs): Likewise.
	(cortex_a15_neon_vst2_4_regs_vst3_vst4): Likewise.
	(cortex_a15_neon_vst3_vst4): Likewise.
	(cortex_a15_neon_vld1_vld2_lane): Likewise.
	(cortex_a15_neon_vld3_vld4_lane" 10
	(cortex_a15_neon_vst1_vst2_lane): Likewise.
	(cortex_a15_neon_vst3_vst4_lane): Likewise.
	(cortex_a15_neon_vld3_vld4_all_lanes): Likewise.
	(cortex_a15_neon_ldm_2): Likewise.0
	(cortex_a15_neon_stm_2): Likewise.
	(cortex_a15_neon_mcr): Likewise.
	(cortex_a15_neon_mcr_2_mcrr): Likewise.
	(cortex_a15_neon_mrc): Likewise.
	(cortex_a15_neon_mrrc): Likewise.
	* config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute change.
	(cortex_a15_alu_shift): Likewise.
	(cortex_a15_alu_shift_reg): Likewise.
	(cortex_a15_mult32): Likewise.
	(cortex_a15_mult64): Likewise.
	(cortex_a15_block): Likewise.
	(cortex_a15_branch): Likewise.
	(cortex_a15_load1): Likewise.
	(cortex_a15_load3): Likewise.
	(cortex_a15_store1): Likewise.
	(cortex_a15_store3): Likewise.
	(cortex_a15_call): Likewise.
	* config/arm/cortex-a5.md (cortex_a5_r2f): Update for attribute change.
	(cortex_a5_f2r): Likewise.
	* config/arm/cortex-a53.md (cortex_a53_r2f): Update for attribute change.
	(cortex_a53_f2r): Likewise.
	* config/arm/cortex-a7.md
	(cortex_a7_branch): Update for attribute change.
	(cortex_a7_call): Likewise.
	(cortex_a7_alu_imm): Likewise.
	(cortex_a7_alu_reg): Likewise.
	(cortex_a7_alu_shift): Likewise.
	(cortex_a7_mul): Likewise.
	(cortex_a7_load1): Likewise.
	(cortex_a7_store1): Likewise.
	(cortex_a7_load2): Likewise.
	(cortex_a7_store2): Likewise.
	(cortex_a7_load3): Likewise.
	(cortex_a7_store3): Likewise.
	(cortex_a7_load4): Likewise.
	(cortex_a7_store4): Likewise.
	(cortex_a7_fpalu): Likewise.
	(cortex_a7_fconst): Likewise.
	(cortex_a7_fpmuls): Likewise.
	(cortex_a7_neon_mul): Likewise.
	(cortex_a7_fpmacs): Likewise.
	(cortex_a7_neon_mla: Likewise.
	(cortex_a7_fpmuld: Likewise.
	(cortex_a7_fpmacd: Likewise.
	(cortex_a7_fpfmad: Likewise.
	(cortex_a7_fdivs: Likewise.
	(cortex_a7_fdivd: Likewise.
	(cortex_a7_r2f: Likewise.
	(cortex_a7_f2r: Likewise.
	(cortex_a7_f_flags: Likewise.
	(cortex_a7_f_loads: Likewise.
	(cortex_a7_f_loadd: Likewise.
	(cortex_a7_f_stores: Likewise.
	(cortex_a7_f_stored: Likewise.
	(cortex_a7_neon): Likewise.
	* config/arm/cortex-a8-neon.md
	(cortex_a8_neon_mrc): Update for attribute change.
	(cortex_a8_neon_mrrc): Likewise.
	(cortex_a8_neon_int_1): Likewise.
	(cortex_a8_neon_int_2): Likewise.
	(cortex_a8_neon_int_3): Likewise.
	(cortex_a8_neon_int_4): Likewise.
	(cortex_a8_neon_int_5): Likewise.
	(cortex_a8_neon_vqneg_vqabs): Likewise.
	(cortex_a8_neon_vmov): Likewise.
	(cortex_a8_neon_vaba): Likewise.
	(cortex_a8_neon_vaba_qqq): Likewise.
	(cortex_a8_neon_vsma): Likewise.
	(cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a8_neon_mul_qqq_8_16_32_ddd_32): Likewise.
	(cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar):
	Likewise.
	(cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a8_neon_mla_qqq_8_16): Likewise.
	(cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
	long_scalar_qdd_64_32_long): Likewise.
	(cortex_a8_neon_mla_qqq_32_qqd_32_scalar): Likewise.
	(cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
	(cortex_a8_neon_mul_qqd_32_scalar): Likewise.
	(cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
	(cortex_a8_neon_shift_1): Likewise.
	(cortex_a8_neon_shift_2): Likewise.
	(cortex_a8_neon_shift_3): Likewise.
	(cortex_a8_neon_vshl_ddd): Likewise.
	(cortex_a8_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
	(cortex_a8_neon_vsra_vrsra): Likewise.
	(cortex_a8_neon_fp_vadd_ddd_vabs_dd): Likewise.
	(cortex_a8_neon_fp_vadd_qqq_vabs_qq): Likewise.
	(cortex_a8_neon_fp_vsum): Likewise.
	(cortex_a8_neon_fp_vmul_ddd): Likewise.
	(cortex_a8_neon_fp_vmul_qqd): Likewise.
	(cortex_a8_neon_fp_vmla_ddd): Likewise.
	(cortex_a8_neon_fp_vmla_qqq): Likewise.
	(cortex_a8_neon_fp_vmla_ddd_scalar): Likewise.
	(cortex_a8_neon_fp_vmla_qqq_scalar): Likewise.
	(cortex_a8_neon_fp_vrecps_vrsqrts_ddd): Likewise.
	(cortex_a8_neon_fp_vrecps_vrsqrts_qqq): Likewise.
	(cortex_a8_neon_bp_simple): Likewise.
	(cortex_a8_neon_bp_2cycle): Likewise.
	(cortex_a8_neon_bp_3cycle): Likewise.
	(cortex_a8_neon_ldr): Likewise.
	(cortex_a8_neon_str): Likewise.
	(cortex_a8_neon_vld1_1_2_regs): Likewise.
	(cortex_a8_neon_vld1_3_4_regs): Likewise.
	(cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
	(cortex_a8_neon_vld2_4_regs): Likewise.
	(cortex_a8_neon_vld3_vld4): Likewise.
	(cortex_a8_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
	(cortex_a8_neon_vst1_3_4_regs): Likewise.
	(cortex_a8_neon_vst2_4_regs_vst3_vst4): Likewise.
	(cortex_a8_neon_vst3_vst4): Likewise.
	(cortex_a8_neon_vld1_vld2_lane): Likewise.
	(cortex_a8_neon_vld3_vld4_lane): Likewise.
	(cortex_a8_neon_vst1_vst2_lane): Likewise.
	(cortex_a8_neon_vst3_vst4_lane): Likewise.
	(cortex_a8_neon_vld3_vld4_all_lanes): Likewise.
	(cortex_a8_neon_mcr): Likewise.
	(cortex_a8_neon_mcr_2_mcrr): Likewise.
	* config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute change.
	* config/arm/cortex-a9-neon.md (ca9_neon_mrc): Update for attribute change.
	(ca9_neon_mrrc): Likewise.
	(cortex_a9_neon_int_1): Likewise.
	(cortex_a9_neon_int_2): Likewise.
	(cortex_a9_neon_int_3): Likewise.
	(cortex_a9_neon_int_4): Likewise.
	(cortex_a9_neon_int_5): Likewise.
	(cortex_a9_neon_vqneg_vqabs): Likewise.
	(cortex_a9_neon_vmov): Likewise.
	(cortex_a9_neon_vaba): Likewise.
	(cortex_a9_neon_vaba_qqq): Likewise.
	(cortex_a9_neon_vsma): Likewise.
	(cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a9_neon_mul_qqq_8_16_32_ddd_32): Likewise.
	(cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar):
	Likewise.
	(cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long): Likewise.
	(cortex_a9_neon_mla_qqq_8_16): Likewise.
	(cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_\
	long_scalar_qdd_64_32_long): Likewise.
	(cortex_a9_neon_mla_qqq_32_qqd_32_scalar): Likewise.
	(cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar): Likewise.
	(cortex_a9_neon_mul_qqd_32_scalar): Likewise.
	(cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar): Likewise.
	(cortex_a9_neon_shift_1): Likewise.
	(cortex_a9_neon_shift_2): Likewise.
	(cortex_a9_neon_shift_3): Likewise.
	(cortex_a9_neon_vshl_ddd): Likewise.
	(cortex_a9_neon_vqshl_vrshl_vqrshl_qqq): Likewise.
	(cortex_a9_neon_vsra_vrsra): Likewise.
	(cortex_a9_neon_fp_vadd_ddd_vabs_dd): Likewise.
	(cortex_a9_neon_fp_vadd_qqq_vabs_qq): Likewise.
	(cortex_a9_neon_fp_vsum): Likewise.
	(cortex_a9_neon_fp_vmul_ddd): Likewise.
	(cortex_a9_neon_fp_vmul_qqd): Likewise.
	(cortex_a9_neon_fp_vmla_ddd): Likewise.
	(cortex_a9_neon_fp_vmla_qqq): Likewise.
	(cortex_a9_neon_fp_vmla_ddd_scalar): Likewise.
	(cortex_a9_neon_fp_vmla_qqq_scalar): Likewise.
	(cortex_a9_neon_fp_vrecps_vrsqrts_ddd): Likewise.
	(cortex_a9_neon_fp_vrecps_vrsqrts_qqq): Likewise.
	(cortex_a9_neon_bp_simple): Likewise.
	(cortex_a9_neon_bp_2cycle): Likewise.
	(cortex_a9_neon_bp_3cycle): Likewise.
	(cortex_a9_neon_ldr): Likewise.
	(cortex_a9_neon_str): Likewise.
	(cortex_a9_neon_vld1_1_2_regs): Likewise.
	(cortex_a9_neon_vld1_3_4_regs): Likewise.
	(cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes): Likewise.
	(cortex_a9_neon_vld2_4_regs): Likewise.
	(cortex_a9_neon_vld3_vld4): Likewise.
	(cortex_a9_neon_vst1_1_2_regs_vst2_2_regs): Likewise.
	(cortex_a9_neon_vst1_3_4_regs): Likewise.
	(cortex_a9_neon_vst2_4_regs_vst3_vst4): Likewise.
	(cortex_a9_neon_vst3_vst4): Likewise.
	(cortex_a9_neon_vld1_vld2_lane): Likewise.
	(cortex_a9_neon_vld3_vld4_lane): Likewise.
	(cortex_a9_neon_vst1_vst2_lane): Likewise.
	(cortex_a9_neon_vst3_vst4_lane): Likewise.
	(cortex_a9_neon_vld3_vld4_all_lanes): Likewise.
	(cortex_a9_neon_mcr): Likewise.
	(cortex_a9_neon_mcr_2_mcrr): Likewise.
	* config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute change.
	(cortex_a9_fps): Likewise.
	* config/arm/cortex-m4-fpu.md (cortex_m4_vmov_2): Update for attribute
	change.
	(cortex_m4_fmuls): Likewise.
	* config/arm/cortex-r4f.md (cortex_r4_mcr): Update for attribute change.
	(cortex_r4_mrc): Likewise.
	* config/arm/iterators.md: Update comment referring to neon_type.
	* config/arm/iwmmxt.md
	(iwmmxt_arm_movdi): Update for attribute change.
	(iwmmxt_movsi_insn): Likewise.
	* config/arm/marvell-pj4.md
	(pj4_vfp_to_core): Update for attribute change.
	(pj4_core_to_vfp): Likewise.
	* config/arm/neon-schedgen.ml (emit_insn_reservations): Update for
	attribute change.
	* config/arm/neon.md (neon_mov<mode>): Update for attribute changes.
	(movmisalign<mode>_neon_store): Likewise.
	(movmisalign<mode>_neon_load): Likewise.
	(vec_set<mode>_internal): Likewise.
	(vec_setv2di_internal): Likewise.
	(vec_extract<mode>): Likewise.
	(vec_extractv2di): Likewise.
	(add<mode>3_neon): Likewise.
	(adddi3_neon): Likewise.
	(sub<mode>3_neon): Likewise.
	(subdi3_neon): Likewise.
	(mul<mode>3_neon): Likewise.
	(mul<mode>3add<mode>_neon): Likewise.
	(mul<mode>3neg<mode>add<mode>_neon): Likewise.
	(fma<VCVTF:mode>4)): Likewise.
	(fma<VCVTF:mode>4_intrinsic): Likewise.
	(fmsub<VCVTF:mode>4)): Likewise.
	(fmsub<VCVTF:mode>4_intrinsic): Likewise.
	(neon_vrint<NEON_VRINT:nvrint_variant><VCVTF:mode>): Likewise.
	(ior<mode>3): Likewise.
	(and<mode>3): Likewise.
	(anddi3_neon): Likewise.
	(orn<mode>3_neon): Likewise.
	(orndi3_neon): Likewise.
	(bic<mode>3_neon): Likewise.
	(bicdi3_neon): Likewise.
	(xor<mode>3): Likewise.
	(one_cmpl<mode>2): Likewise.
	(abs<mode>2): Likewise.
	(neg<mode>2): Likewise.
	(umin<mode>3_neon): Likewise.
	(umax<mode>3_neon): Likewise.
	(smin<mode>3_neon): Likewise.
	(smax<mode>3_neon): Likewise.
	(vashl<mode>3): Likewise.
	(vashr<mode>3_imm): Likewise.
	(vlshr<mode>3_imm): Likewise.
	(ashl<mode>3_signed): Likewise.
	(ashl<mode>3_unsigned): Likewise.
	(neon_load_count): Likewise.
	(ashldi3_neon_noclobber): Likewise.
	(signed_shift_di3_neon): Likewise.
	(unsigned_shift_di3_neon): Likewise.
	(ashrdi3_neon_imm_noclobber): Likewise.
	(lshrdi3_neon_imm_noclobber): Likewise.
	(widen_ssum<mode>3): Likewise.
	(widen_usum<mode>3): Likewise.
	(quad_halves_<code>v4si): Likewise.
	(quad_halves_<code>v4sf): Likewise.
	(quad_halves_<code>v8hi): Likewise.
	(quad_halves_<code>v16qi): Likewise.
	(reduc_splus_v2di): Likewise.
	(neon_vpadd_internal<mode>): Likewise.
	(neon_vpsmin<mode>): Likewise.
	(neon_vpsmax<mode>): Likewise.
	(neon_vpumin<mode>): Likewise.
	(neon_vpumax<mode>): Likewise.
	(ss_add<mode>_neon): Likewise.
	(us_add<mode>_neon): Likewise.
	(ss_sub<mode>_neon): Likewise.
	(us_sub<mode>_neon): Likewise.
	(neon_vadd<mode>_unspec): Likewise.
	(neon_vaddl<mode>): Likewise.
	(neon_vaddw<mode>): Likewise.
	(neon_vhadd<mode>): Likewise.
	(neon_vqadd<mode>): Likewise.
	(neon_vaddhn<mode>): Likewise.
	(neon_vmul<mode>): Likewise.
	(neon_vmla<mode>): Likewise.
	(neon_vmlal<mode>): Likewise.
	(neon_vmls<mode>): Likewise.
	(neon_vmlsl<mode>): Likewise.
	(neon_vqdmulh<mode>): Likewise.
	(neon_vqdmlal<mode>): Likewise.
	(neon_vqdmlsl<mode>): Likewise.
	(neon_vmull<mode>): Likewise.
	(neon_vqdmull<mode>): Likewise.
	(neon_vsub<mode>_unspec): Likewise.
	(neon_vsubl<mode>): Likewise.
	(neon_vsubw<mode>): Likewise.
	(neon_vqsub<mode>): Likewise.
	(neon_vhsub<mode>): Likewise.
	(neon_vsubhn<mode>): Likewise.
	(neon_vceq<mode>): Likewise.
	(neon_vcge<mode>): Likewise.
	(neon_vcgeu<mode>): Likewise.
	(neon_vcgt<mode>): Likewise.
	(neon_vcgtu<mode>): Likewise.
	(neon_vcle<mode>): Likewise.
	(neon_vclt<mode>): Likewise.
	(neon_vcage<mode>): Likewise.
	(neon_vcagt<mode>): Likewise.
	(neon_vtst<mode>): Likewise.
	(neon_vabd<mode>): Likewise.
	(neon_vabdl<mode>): Likewise.
	(neon_vaba<mode>): Likewise.
	(neon_vabal<mode>): Likewise.
	(neon_vmax<mode>): Likewise.
	(neon_vmin<mode>): Likewise.
	(neon_vpaddl<mode>): Likewise.
	(neon_vpadal<mode>): Likewise.
	(neon_vpmax<mode>): Likewise.
	(neon_vpmin<mode>): Likewise.
	(neon_vrecps<mode>): Likewise.
	(neon_vrsqrts<mode>): Likewise.
	(neon_vqabs<mode>): Likewise.
	(neon_vqneg<mode>): Likewise.
	(neon_vcls<mode>): Likewise.
	(clz<mode>2): Likewise.
	(popcount<mode>2): Likewise.
	(neon_vrecpe): Likewise.
	(neon_vrsqrte): Likewise.
	(neon_vget_lane<mode>_sext_internal): Likewise.
	(neon_vget_lane<mode>_zext_internal): Likewise.
	(neon_vdup_n<mode>): Likewise.
	(neon_vdup_nv2di): Likewise.
	(neon_vdpu_lane<mode>_internal): Likewise.
	(neon_vswp<mode>): Likewise.
	(float<mode><V_cvtto>2): Likewise.
	(floatuns<mode><V_cvtto>2): Likewise.
	(fix_trunc<mode><V_cvtto>)2): Likewise
	(fixuns_trunc<mode><V_cvtto)2): Likewise.
	(neon_vcvt<mode>): Likewise.
	(neon_vcvtv4sfv4hf): Likewise.
	(neon_vcvtv4hfv4sf): Likewise.
	(neon_vcvt_n<mode>): Likewise.
	(neon_vmovn<mode>): Likewise.
	(neon_vqmovn<mode>): Likewise.
	(neon_vqmovun<mode>): Likewise.
	(neon_vmovl<mode>): Likewise.
	(neon_vmul_lane<mode>): Likewise.
	(neon_vmull_lane<mode>): Likewise.
	(neon_vqdmull_lane<mode>): Likewise.
	(neon_vqdmulh_lane<mode>): Likewise.
	(neon_vmla_lane<mode>): Likewise.
	(neon_vmlal_lane<mode>): Likewise.
	(neon_vqdmlal_lane<mode>): Likewise.
	(neon_vmls_lane<mode>): Likewise.
	(neon_vmlsl_lane<mode>): Likewise.
	(neon_vqdmlsl_lane<mode>): Likewise.
	(neon_vext<mode>): Likewise.
	(neon_vrev64<mode>): Likewise.
	(neon_vrev32<mode>): Likewise.
	(neon_vrev16<mode>): Likewise.
	(neon_vbsl<mode>_internal): Likewise.
	(neon_vshl<mode>): Likewise.
	(neon_vqshl<mode>): Likewise.
	(neon_vshr_n<mode>): Likewise.
	(neon_vshrn_n<mode>): Likewise.
	(neon_vqshrn_n<mode>): Likewise.
	(neon_vqshrun_n<mode>): Likewise.
	(neon_vshl_n<mode>): Likewise.
	(neon_vqshl_n<mode>): Likewise.
	(neon_vqshlu_n<mode>): Likewise.
	(neon_vshll_n<mode>): Likewise.
	(neon_vsra_n<mode>): Likewise.
	(neon_vsri_n<mode>): Likewise.
	(neon_vsli_n<mode>): Likewise.
	(neon_vtbl1v8qi): Likewise.
	(neon_vtbl2v8qi): Likewise.
	(neon_vtbl3v8qi): Likewise.
	(neon_vtbl4v8qi): Likewise.
	(neon_vtbx1v8qi): Likewise.
	(neon_vtbx2v8qi): Likewise.
	(neon_vtbx3v8qi): Likewise.
	(neon_vtbx4v8qi): Likewise.
	(neon_vtrn<mode>_internal): Likewise.
	(neon_vzip<mode>_internal): Likewise.
	(neon_vuzp<mode>_internal): Likewise.
	(neon_vld1<mode>): Likewise.
	(neon_vld1_lane<mode>): Likewise.
	(neon_vld1_dup<mode>): Likewise.
	(neon_vld1_dupv2di): Likewise.
	(neon_vst1<mode>): Likewise.
	(neon_vst1_lane<mode>): Likewise.
	(neon_vld2<mode>): Likewise.
	(neon_vld2_lane<mode>): Likewise.
	(neon_vld2_dup<mode>): Likewise.
	(neon_vst2<mode>): Likewise.
	(neon_vst2_lane<mode>): Likewise.
	(neon_vld3<mode>): Likewise.
	(neon_vld3qa<mode>): Likewise.
	(neon_vld3qb<mode>): Likewise.
	(neon_vld3_lane<mode>): Likewise.
	(neon_vld3_dup<mode>): Likewise.
	(neon_vst3<mode>): Likewise.
	(neon_vst3qa<mode>): Likewise.
	(neon_vst3qb<mode>): Likewise.
	(neon_vst3_lane<mode>): Likewise.
	(neon_vld4<mode>): Likewise.
	(neon_vld4qa<mode>): Likewise.
	(neon_vld4qb<mode>): Likewise.
	(neon_vld4_lane<mode>): Likewise.
	(neon_vld4_dup<mode>): Likewise.
	(neon_vst4<mode>): Likewise.
	(neon_vst4qa<mode>): Likewise.
	(neon_vst4qb<mode>): Likewise.
	(neon_vst4_lane<mode>): Likewise.
	(neon_vec_unpack<US>_lo_<mode>): Likewise.
	(neon_vec_unpack<US>_hi_<mode>): Likewise.
	(neon_vec_<US>mult_lo_<mode>): Likewise.
	(neon_vec_<US>mult_hi_<mode>): Likewise.
	(neon_vec_<US>shiftl_<mode>): Likewise.
	(neon_unpack<US>_<mode>): Likewise.
	(neon_vec_<US>mult_<mode>): Likewise.
	(vec_pack_trunc_<mode>): Likewise.
	(neon_vec_pack_trunk_<mode>): Likewise.
	(neon_vabd<mode>_2): Likewise.
	(neon_vabd<mode>_3): Likewise.
	* config/arm/types.md (type): Add Neon types.
	* config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes.
	(thumb2_movsi_vfp): Likewise.
	(movdi_vfp): Likewise.
	(movdi_vfp_cortexa8): Likewise.
	(movhf_vfp_neon): Likewise.
	(movhf_vfp): Likewiwse.
	(movsf_vfp): Likewiwse.
	(thumb2_movsf_vfp): Likewiwse.
	(movdf_vfp): Likewise.
	(thumb2_movdf_vfp): Likewise.
	(movsfcc_vfp): Likewise.
	(thumb2_movsfcc_vfp): Likewise.
	(movdfcc_vfp): Likewise.
	(thumb2_movdfcc_vfp): Likewise.
	* config/arm/vfp11.md (vfp_fload): Update for attribute change.
	(vfp_fstore): Likewise.
	* doc/md.texi: Change references to neon_type to refer to type.


--------------1.8.3-rc0
Content-Type: text/x-patch; name="0001-AArch64-AArch32-Insn-classification-refactoring-6-N-.patch"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="0001-AArch64-AArch32-Insn-classification-refactoring-6-N-.patch"

diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 47532fca2c550e8ec9b63898511ef6c276943a45..d0321b3ef73f521294975e6d353a89c766ce001a 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -909,7 +909,7 @@  (define_insn "*movti_aarch64"
    str\\t%q1, %0"
   [(set_attr "v8type" "move2,fmovi2f,fmovf2i,*, \
 		       load2,store2,store2,fpsimd_load,fpsimd_store")
-   (set_attr "type" "mov_reg,r_2_f,f_2_r,*, \
+   (set_attr "type" "mov_reg,f_mcr,f_mrc,*, \
 		             load2,store2,store2,f_loadd,f_stored")
    (set_attr "simd_type" "*,*,*,simd_move,*,*,*,*,*")
    (set_attr "mode" "DI,DI,DI,TI,DI,DI,DI,TI,TI")
@@ -964,7 +964,7 @@  (define_insn "*movsf_aarch64"
   [(set_attr "v8type" "fmovi2f,fmovf2i,\
 		       fmov,fconst,fpsimd_load,\
 		       fpsimd_store,fpsimd_load,fpsimd_store,fmov")
-   (set_attr "type" "r_2_f,f_2_r,mov_reg,fconsts,\
+   (set_attr "type" "f_mcr,f_mrc,mov_reg,fconsts,\
                      f_loads,f_stores,f_loads,f_stores,mov_reg")
    (set_attr "mode" "SF")]
 )
@@ -987,7 +987,7 @@  (define_insn "*movdf_aarch64"
   [(set_attr "v8type" "fmovi2f,fmovf2i,\
 		       fmov,fconst,fpsimd_load,\
 		       fpsimd_store,fpsimd_load,fpsimd_store,move")
-   (set_attr "type" "r_2_f,f_2_r,mov_reg,fconstd,\
+   (set_attr "type" "f_mcr,f_mrc,mov_reg,fconstd,\
                      f_loadd,f_stored,f_loadd,f_stored,mov_reg")
    (set_attr "mode" "DF")]
 )
@@ -1027,7 +1027,7 @@  (define_insn "*movtf_aarch64"
    ldp\\t%0, %H0, %1
    stp\\t%1, %H1, %0"
   [(set_attr "v8type" "logic,move2,fmovi2f,fmovf2i,fconst,fconst,fpsimd_load,fpsimd_store,fpsimd_load2,fpsimd_store2")
-   (set_attr "type" "arlo_reg,mov_reg,r_2_f,f_2_r,fconstd,fconstd,\
+   (set_attr "type" "arlo_reg,mov_reg,f_mcr,f_mrc,fconstd,fconstd,\
                      f_loadd,f_stored,f_loadd,f_stored")
    (set_attr "mode" "DF,DF,DF,DF,DF,DF,TF,TF,DF,DF")
    (set_attr "length" "4,8,8,8,4,4,4,4,4,4")
@@ -4031,7 +4031,7 @@  (define_insn "aarch64_movdi_<mode>low"
   "reload_completed || reload_in_progress"
   "fmov\\t%x0, %d1"
   [(set_attr "v8type" "fmovf2i")
-   (set_attr "type" "f_2_r")
+   (set_attr "type" "f_mrc")
    (set_attr "mode"   "DI")
    (set_attr "length" "4")
   ])
@@ -4044,7 +4044,7 @@  (define_insn "aarch64_movdi_<mode>high"
   "reload_completed || reload_in_progress"
   "fmov\\t%x0, %1.d[1]"
   [(set_attr "v8type" "fmovf2i")
-   (set_attr "type" "f_2_r")
+   (set_attr "type" "f_mrc")
    (set_attr "mode"   "DI")
    (set_attr "length" "4")
   ])
@@ -4056,7 +4056,7 @@  (define_insn "aarch64_mov<mode>high_di"
   "reload_completed || reload_in_progress"
   "fmov\\t%0.d[1], %x1"
   [(set_attr "v8type" "fmovi2f")
-   (set_attr "type" "r_2_f")
+   (set_attr "type" "f_mcr")
    (set_attr "mode"   "DI")
    (set_attr "length" "4")
   ])
@@ -4067,7 +4067,7 @@  (define_insn "aarch64_mov<mode>low_di"
   "reload_completed || reload_in_progress"
   "fmov\\t%d0, %x1"
   [(set_attr "v8type" "fmovi2f")
-   (set_attr "type" "r_2_f")
+   (set_attr "type" "f_mcr")
    (set_attr "mode"   "DI")
    (set_attr "length" "4")
   ])
@@ -4079,7 +4079,7 @@  (define_insn "aarch64_movtilow_tilow"
   "reload_completed || reload_in_progress"
   "fmov\\t%d0, %d1"
   [(set_attr "v8type" "fmovi2f")
-   (set_attr "type" "r_2_f")
+   (set_attr "type" "f_mcr")
    (set_attr "mode"   "DI")
    (set_attr "length" "4")
   ])
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index f731bb6..d310a7c 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -8975,7 +8975,8 @@  cortexa7_older_only (rtx insn)
     case TYPE_FMACD:
     case TYPE_FDIVS:
     case TYPE_FDIVD:
-    case TYPE_F_2_R:
+    case TYPE_F_MRC:
+    case TYPE_F_MRRC:
     case TYPE_F_FLAG:
     case TYPE_F_LOADS:
     case TYPE_F_STORES:
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 45e9ada3d8ec71315a387e8275247c7402000c37..744f60607cbb4d31c82e81f8de2d78af97e05086 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -252,73 +252,6 @@  (define_asm_attributes
 ; initialized by arm_option_override()
 (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
 
-;; Classification of NEON instructions for scheduling purposes.
-(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.
@@ -344,9 +277,34 @@  (define_attr "conds" "use,set,clob,uncon
 	 (ior (eq_attr "is_thumb1" "yes")
 	      (eq_attr "type" "call"))
 	 (const_string "clob")
-	 (if_then_else (eq_attr "neon_type" "none")
-	  (const_string "nocond")
-	  (const_string "unconditional"))))
+	 (if_then_else (eq_attr "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")
+	 (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 
@@ -2179,7 +2137,7 @@  (define_insn_and_split "*anddi3_insn"
                                            gen_highpart_mode (SImode, DImode, operands[2]));
 
   }"
-  [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,*,*,neon_int_1,neon_int_1")
+  [(set_attr "type" "neon_int_1,neon_int_1,*,*,*,*,neon_int_1,neon_int_1")
    (set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,*,
                      avoid_neon_for_64bits,avoid_neon_for_64bits")
    (set_attr "length" "*,*,8,8,8,8,*,*")
@@ -3014,7 +2972,7 @@  (define_insn_and_split "*iordi3_insn"
                                            gen_highpart_mode (SImode, DImode, operands[2]));
 
   }"
-  [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,*,*,neon_int_1,neon_int_1")
+  [(set_attr "type" "neon_int_1,neon_int_1,*,*,*,*,neon_int_1,neon_int_1")
    (set_attr "length" "*,*,8,8,8,8,*,*")
    (set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")]
 )
@@ -3193,7 +3151,7 @@  (define_insn_and_split "*xordi3_insn"
 
   }"
   [(set_attr "length" "*,8,8,8,8,*")
-   (set_attr "neon_type" "neon_int_1,*,*,*,*,neon_int_1")
+   (set_attr "type" "neon_int_1,*,*,*,*,neon_int_1")
    (set_attr "arch" "neon_for_64bits,*,*,*,*,avoid_neon_for_64bits")]
 )
 
@@ -4960,7 +4918,7 @@  (define_insn_and_split "one_cmpldi2"
   }"
   [(set_attr "length" "*,8,8,*")
    (set_attr "predicable" "no,yes,yes,no")
-   (set_attr "neon_type" "neon_int_1,*,*,neon_int_1")
+   (set_attr "type" "neon_int_1,*,*,neon_int_1")
    (set_attr "arch" "neon_for_64bits,*,*,avoid_neon_for_64bits")]
 )
 
diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md
index 317e4cd4ad6f635d390a62bbbd9345cf00d5563e..3a5e08fb7e5c079afa6e769e11d569bef30784ce 100644
--- a/gcc/config/arm/arm1020e.md
+++ b/gcc/config/arm/arm1020e.md
@@ -316,7 +316,7 @@  (define_insn_reservation "v10_floadd" 5
 
 (define_insn_reservation "v10_c2v" 4
  (and (eq_attr "vfp10" "yes")
-      (eq_attr "type" "r_2_f"))
+      (eq_attr "type" "f_mcr,f_mcrr"))
  "1020a_e+1020l_e+v10_ls1,v10_ls2")
 
 (define_insn_reservation "v10_fstores" 1
@@ -331,7 +331,7 @@  (define_insn_reservation "v10_fstored" 1
 
 (define_insn_reservation "v10_v2c" 1
  (and (eq_attr "vfp10" "yes")
-      (eq_attr "type" "f_2_r"))
+      (eq_attr "type" "f_mrc,f_mrrc"))
  "1020a_e+1020l_e,1020l_m,1020l_w")
 
 (define_insn_reservation "v10_to_cpsr" 2
diff --git a/gcc/config/arm/cortex-a15-neon.md b/gcc/config/arm/cortex-a15-neon.md
index bfa2f5e8818f046439b33c6e76d09f547297da87..f1cac9e1af88bd5e3f0d87ff50c44376ad82d441 100644
--- a/gcc/config/arm/cortex-a15-neon.md
+++ b/gcc/config/arm/cortex-a15-neon.md
@@ -93,389 +93,345 @@  (define_reservation "ca15_cx_perm_2" "ca
 
 (define_insn_reservation  "cortex_a15_neon_int_1" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_int_1"))
+       (eq_attr "type" "neon_int_1"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_int_2" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_int_2"))
+       (eq_attr "type" "neon_int_2"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_int_3" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_int_3"))
+       (eq_attr "type" "neon_int_3"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_int_4" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_int_4"))
+       (eq_attr "type" "neon_int_4"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_int_5" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_int_5"))
+       (eq_attr "type" "neon_int_5"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_vqneg_vqabs" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_vqneg_vqabs"))
+       (eq_attr "type" "neon_vqneg_vqabs"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_vmov" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_vmov"))
+       (eq_attr "type" "neon_vmov"))
   "ca15_issue1,ca15_cx_ialu")
 
 (define_insn_reservation  "cortex_a15_neon_vaba" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_vaba"))
+       (eq_attr "type" "neon_vaba"))
   "ca15_issue1,ca15_cx_ialu_with_acc")
 
 (define_insn_reservation  "cortex_a15_neon_vaba_qqq" 8
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_vaba_qqq"))
+       (eq_attr "type" "neon_vaba_qqq"))
   "ca15_issue2,ca15_cx_ialu_with_acc*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
+       (eq_attr "type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
   "ca15_issue1,ca15_cx_imac")
 
 (define_insn_reservation "cortex_a15_neon_mul_qqq_8_16_32_ddd_32" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
+       (eq_attr "type" "neon_mul_qqq_8_16_32_ddd_32"))
   "ca15_issue1,ca15_cx_imac*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
+       (eq_attr "type"
               "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
   "ca15_issue1,ca15_cx_imac*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
+       (eq_attr "type"
               "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
   "ca15_issue1,ca15_cx_imac")
 
 (define_insn_reservation
   "cortex_a15_neon_mla_qqq_8_16" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
+       (eq_attr "type"
               "neon_mla_qqq_8_16"))
   "ca15_issue1,ca15_cx_imac*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_\
-     qdd_64_32_long_scalar_qdd_64_32_long" 7
+     qdd_64_32_lotype_qdd_64_32_long" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-  "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
+       (eq_attr "type"  "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
   "ca15_issue1,ca15_cx_imac")
 
 (define_insn_reservation
   "cortex_a15_neon_mla_qqq_32_qqd_32_scalar" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mla_qqq_32_qqd_32_scalar"))
+       (eq_attr "type" "neon_mla_qqq_32_qqd_32_scalar"))
   "ca15_issue1,ca15_cx_imac*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mul_ddd_16_scalar_32_16_long_scalar"))
+       (eq_attr "type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
   "ca15_issue1,ca15_cx_imac")
 
 (define_insn_reservation
   "cortex_a15_neon_mul_qqd_32_scalar" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mul_qqd_32_scalar"))
+       (eq_attr "type" "neon_mul_qqd_32_scalar"))
   "ca15_issue1,ca15_cx_imac*2")
 
 (define_insn_reservation
   "cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
+       (eq_attr "type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
   "ca15_issue1,ca15_cx_imac")
 
 (define_insn_reservation
   "cortex_a15_neon_shift_1" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_shift_1"))
+       (eq_attr "type" "neon_shift_1"))
   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
 
 (define_insn_reservation
   "cortex_a15_neon_shift_2" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_shift_2"))
+       (eq_attr "type" "neon_shift_2"))
   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
 
 (define_insn_reservation
   "cortex_a15_neon_shift_3" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_shift_3"))
+       (eq_attr "type" "neon_shift_3"))
   "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vshl_ddd" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vshl_ddd"))
+       (eq_attr "type" "neon_vshl_ddd"))
   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
 
 (define_insn_reservation
   "cortex_a15_neon_vqshl_vrshl_vqrshl_qqq" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vqshl_vrshl_vqrshl_qqq"))
+       (eq_attr "type" "neon_vqshl_vrshl_vqrshl_qqq"))
   "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vsra_vrsra" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vsra_vrsra"))
+       (eq_attr "type" "neon_vsra_vrsra"))
   "ca15_issue1,ca15_cx_ishf_with_acc")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vadd_ddd_vabs_dd" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vadd_ddd_vabs_dd"))
+       (eq_attr "type" "neon_fp_vadd_ddd_vabs_dd"))
   "ca15_issue1,ca15_cx_falu")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vadd_qqq_vabs_qq" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vadd_qqq_vabs_qq"))
+       (eq_attr "type" "neon_fp_vadd_qqq_vabs_qq"))
   "ca15_issue2,ca15_cx_falu_2")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmul_ddd" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmul_ddd"))
+       (eq_attr "type" "neon_fp_vmul_ddd"))
   "ca15_issue1,ca15_cx_fmul")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmul_qqd" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmul_qqd"))
+       (eq_attr "type" "neon_fp_vmul_qqd"))
   "ca15_issue2,ca15_cx_fmul_2")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmla_ddd" 9
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmla_ddd"))
+       (eq_attr "type" "neon_fp_vmla_ddd"))
   "ca15_issue1,ca15_cx_fmac")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmla_qqq" 11
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmla_qqq"))
+       (eq_attr "type" "neon_fp_vmla_qqq"))
   "ca15_issue2,ca15_cx_fmac_2")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmla_ddd_scalar" 9
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmla_ddd_scalar"))
+       (eq_attr "type" "neon_fp_vmla_ddd_scalar"))
   "ca15_issue1,ca15_cx_fmac")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vmla_qqq_scalar" 11
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vmla_qqq_scalar"))
+       (eq_attr "type" "neon_fp_vmla_qqq_scalar"))
   "ca15_issue2,ca15_cx_fmac_2")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vrecps_vrsqrts_ddd" 9
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vrecps_vrsqrts_ddd"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_ddd"))
   "ca15_issue1,ca15_cx_fmac")
 
 (define_insn_reservation
   "cortex_a15_neon_fp_vrecps_vrsqrts_qqq" 11
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_fp_vrecps_vrsqrts_qqq"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_qqq"))
   "ca15_issue2,ca15_cx_fmac_2")
 
 (define_insn_reservation
   "cortex_a15_neon_bp_simple" 4
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_bp_simple"))
+       (eq_attr "type" "neon_bp_simple"))
   "ca15_issue3,ca15_ls+ca15_cx_perm_2,ca15_cx_perm")
 
 (define_insn_reservation
   "cortex_a15_neon_bp_2cycle" 4
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_bp_2cycle"))
+       (eq_attr "type" "neon_bp_2cycle"))
   "ca15_issue1,ca15_cx_perm")
 
 (define_insn_reservation
   "cortex_a15_neon_bp_3cycle" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_bp_3cycle"))
+       (eq_attr "type" "neon_bp_3cycle"))
   "ca15_issue3,ca15_cx_ialu+ca15_cx_perm_2,ca15_cx_perm")
 
 (define_insn_reservation
   "cortex_a15_neon_vld1_1_2_regs" 7
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld1_1_2_regs"))
+       (eq_attr "type" "neon_vld1_1_2_regs"))
   "ca15_issue2,ca15_ls,ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_vld1_3_4_regs" 8
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld1_3_4_regs"))
+       (eq_attr "type" "neon_vld1_3_4_regs"))
   "ca15_issue3,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes" 9
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld2_2_regs_vld1_vld2_all_lanes"))
+       (eq_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
   "ca15_issue3,ca15_ls,ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_vld2_4_regs" 12
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld2_4_regs"))
+       (eq_attr "type" "neon_vld2_4_regs"))
   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vld3_vld4" 12
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld3_vld4"))
+       (eq_attr "type" "neon_vld3_vld4"))
   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vst1_1_2_regs_vst2_2_regs" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst1_1_2_regs_vst2_2_regs"))
+       (eq_attr "type" "neon_vst1_1_2_regs_vst2_2_regs"))
   "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vst1_3_4_regs" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst1_3_4_regs"))
+       (eq_attr "type" "neon_vst1_3_4_regs"))
   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_str*3")
 
 (define_insn_reservation
   "cortex_a15_neon_vst2_4_regs_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst2_4_regs_vst3_vst4"))
+       (eq_attr "type" "neon_vst2_4_regs_vst3_vst4"))
   "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,\
    ca15_issue3+ca15_str,ca15_str*3")
 
 (define_insn_reservation
   "cortex_a15_neon_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst3_vst4"))
+       (eq_attr "type" "neon_vst3_vst4"))
   "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,ca15_str*4")
 
 (define_insn_reservation
   "cortex_a15_neon_vld1_vld2_lane" 9
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld1_vld2_lane"))
+       (eq_attr "type" "neon_vld1_vld2_lane"))
   "ca15_issue3,ca15_ls,ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_vld3_vld4_lane" 10
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld3_vld4_lane"))
+       (eq_attr "type" "neon_vld3_vld4_lane"))
   "ca15_issue3,ca15_issue3+ca15_ls,ca15_issue3+ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_vst1_vst2_lane" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst1_vst2_lane"))
+       (eq_attr "type" "neon_vst1_vst2_lane"))
   "ca15_issue3,ca15_cx_perm+ca15_ls,ca15_str")
 
 (define_insn_reservation
   "cortex_a15_neon_vst3_vst4_lane" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vst3_vst4_lane"))
+       (eq_attr "type" "neon_vst3_vst4_lane"))
   "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
 
 (define_insn_reservation
   "cortex_a15_neon_vld3_vld4_all_lanes" 11
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_vld3_vld4_all_lanes"))
+       (eq_attr "type" "neon_vld3_vld4_all_lanes"))
   "ca15_issue3,ca15_issue3+ca15_ls,ca15_ldr")
 
 (define_insn_reservation
   "cortex_a15_neon_ldm_2" 20
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_ldm_2"))
+       (eq_attr "type" "neon_ldm_2"))
   "ca15_issue3*6")
 
 (define_insn_reservation
   "cortex_a15_neon_stm_2" 0
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_stm_2"))
+       (eq_attr "type" "neon_stm_2"))
   "ca15_issue3*6")
 
 (define_insn_reservation
   "cortex_a15_neon_mcr" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mcr"))
+       (eq_attr "type" "neon_mcr"))
   "ca15_issue2,ca15_ls,ca15_cx_perm")
 
 (define_insn_reservation
   "cortex_a15_neon_mcr_2_mcrr" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mcr_2_mcrr"))
+       (eq_attr "type" "neon_mcr_2_mcrr"))
   "ca15_issue2,ca15_ls1+ca15_ls2")
 
 (define_insn_reservation
   "cortex_a15_neon_mrc" 5
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mrc"))
+       (eq_attr "type" "neon_mrc"))
   "ca15_issue1,ca15_ls")
 
 (define_insn_reservation
   "cortex_a15_neon_mrrc" 6
   (and (eq_attr "tune" "cortexa15")
-       (eq_attr "neon_type"
-              "neon_mrrc"))
+       (eq_attr "type" "neon_mrrc"))
   "ca15_issue2,ca15_ls1+ca15_ls2")
 
 (define_insn_reservation "cortex_a15_vfp_const" 4
diff --git a/gcc/config/arm/cortex-a15.md b/gcc/config/arm/cortex-a15.md
index 4ad87121d6dbb6e2514d301aaa3bcf674026d562..a816e29a3cbde6eb1859f266bf662a5d71584ec1 100644
--- a/gcc/config/arm/cortex-a15.md
+++ b/gcc/config/arm/cortex-a15.md
@@ -61,25 +61,22 @@  (define_cpu_unit "ca15_sx2_alu, ca15_sx2
 ;; Simple ALU without shift
 (define_insn_reservation "cortex_a15_alu" 2
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,\
+       (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,\
                              mov_imm,mov_reg,\
-                             mvn_imm,mvn_reg")
-            (eq_attr "neon_type" "none")))
+                             mvn_imm,mvn_reg"))
   "ca15_issue1,(ca15_sx1,ca15_sx1_alu)|(ca15_sx2,ca15_sx2_alu)")
 
 ;; ALU ops with immediate shift
 (define_insn_reservation "cortex_a15_alu_shift" 3
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "extend,arlo_shift,,mov_shift,mvn_shift")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "extend,arlo_shift,,mov_shift,mvn_shift"))
   "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\
 	       |(ca15_sx2,ca15_sx2+ca15_sx2_shf,ca15_sx2_alu)")
 
 ;; ALU ops with register controlled shift
 (define_insn_reservation "cortex_a15_alu_shift_reg" 3
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "arlo_shift_reg,mov_shift_reg,mvn_shift_reg")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "arlo_shift_reg,mov_shift_reg,mvn_shift_reg"))
   "(ca15_issue2,ca15_sx1+ca15_sx2,ca15_sx1_shf,ca15_sx2_alu)\
    |(ca15_issue1,(ca15_issue1+ca15_sx2,ca15_sx1+ca15_sx2_shf)\
    |(ca15_issue1+ca15_sx1,ca15_sx1+ca15_sx1_shf),ca15_sx1_alu)")
@@ -89,15 +86,13 @@  (define_insn_reservation "cortex_a15_alu
 ;; 32-bit multiplies
 (define_insn_reservation "cortex_a15_mult32" 3
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "mul32" "yes")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "mul32" "yes"))
   "ca15_issue1,ca15_mx")
 
 ;; 64-bit multiplies
 (define_insn_reservation "cortex_a15_mult64" 4
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "mul64" "yes")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "mul64" "yes"))
   "ca15_issue1,ca15_mx*2")
 
 ;; Integer divide
@@ -114,8 +109,7 @@  (define_insn_reservation "cortex_a15_sdi
 ;; Block all issue pipes for a cycle
 (define_insn_reservation "cortex_a15_block" 1
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "block")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "block"))
   "ca15_issue3")
 
 ;; Branch execution Unit
@@ -124,8 +118,7 @@  (define_insn_reservation "cortex_a15_blo
 ;; No latency as there is no result
 (define_insn_reservation "cortex_a15_branch" 0
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "branch")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "branch"))
   "ca15_issue1,ca15_bx")
 
 ;; Load-store execution Unit
@@ -133,29 +126,25 @@  (define_insn_reservation "cortex_a15_bra
 ;; Loads of up to two words.
 (define_insn_reservation "cortex_a15_load1" 4
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "load_byte,load1,load2")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load_byte,load1,load2"))
   "ca15_issue1,ca15_ls,ca15_ldr,nothing")
 
 ;; Loads of three or four words.
 (define_insn_reservation "cortex_a15_load3" 5
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "load3,load4")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load3,load4"))
   "ca15_issue2,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr,nothing")
 
 ;; Stores of up to two words.
 (define_insn_reservation "cortex_a15_store1" 0
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "store1,store2")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store1,store2"))
   "ca15_issue1,ca15_ls,ca15_str")
 
 ;; Stores of three or four words.
 (define_insn_reservation "cortex_a15_store3" 0
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "store3,store4")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store3,store4"))
   "ca15_issue2,ca15_ls1+ca15_ls2,ca15_str,ca15_str")
 
 ;; We include Neon.md here to ensure that the branch can block the Neon units.
@@ -165,8 +154,7 @@  (define_insn_reservation "cortex_a15_sto
 ;; pipeline.  The result however is available the next cycle.
 (define_insn_reservation "cortex_a15_call" 1
   (and (eq_attr "tune" "cortexa15")
-       (and (eq_attr "type" "call")
-	    (eq_attr "neon_type" "none")))
+       (eq_attr "type" "call"))
   "ca15_issue3,\
    ca15_sx1+ca15_sx2+ca15_bx+ca15_mx+ca15_cx_ij+ca15_cx_ik+ca15_ls1+ca15_ls2+\
    ca15_cx_imac1+ca15_cx_ialu1+ca15_cx_ialu2+ca15_cx_ishf+\
diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md
index 1400c47d95a91417e1e0792b446536618ec43c78..67f641c174bc9e3f4379f0b0709ce6ddafab2378 100644
--- a/gcc/config/arm/cortex-a5.md
+++ b/gcc/config/arm/cortex-a5.md
@@ -243,12 +243,12 @@  (define_insn_reservation "cortex_a5_fdiv
 
 (define_insn_reservation "cortex_a5_r2f" 4
   (and (eq_attr "tune" "cortexa5")
-       (eq_attr "type" "r_2_f"))
+       (eq_attr "type" "f_mcr,f_mcrr"))
   "cortex_a5_ex1")
 
 (define_insn_reservation "cortex_a5_f2r" 2
   (and (eq_attr "tune" "cortexa5")
-       (eq_attr "type" "f_2_r"))
+       (eq_attr "type" "f_mrc,f_mrrc"))
   "cortex_a5_ex1")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/gcc/config/arm/cortex-a53.md b/gcc/config/arm/cortex-a53.md
index 39a95286e086ee6b4869f82ab94a13ec836cb5ad..5bb8ab02a331eff598bb1debc28d1f389a593d1c 100644
--- a/gcc/config/arm/cortex-a53.md
+++ b/gcc/config/arm/cortex-a53.md
@@ -244,12 +244,12 @@  (define_insn_reservation "cortex_a53_fdi
 
 (define_insn_reservation "cortex_a53_r2f" 4
   (and (eq_attr "tune" "cortexa53")
-       (eq_attr "type" "r_2_f"))
+       (eq_attr "type" "f_mcr,f_mcrr"))
   "cortex_a53_slot0")
 
 (define_insn_reservation "cortex_a53_f2r" 2
   (and (eq_attr "tune" "cortexa53")
-       (eq_attr "type" "f_2_r"))
+       (eq_attr "type" "f_mrc,f_mrrc"))
   "cortex_a53_slot0")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md
index e14413d5083a206052ee9c63a0b67fb336c1bc6f..cb1f7cff2642e83d058ee75d6b67461982523c45 100644
--- a/gcc/config/arm/cortex-a7.md
+++ b/gcc/config/arm/cortex-a7.md
@@ -67,8 +67,7 @@  (define_cpu_unit "cortex_a7_fp_div_sqrt"
 
 (define_insn_reservation "cortex_a7_branch" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "branch")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "branch"))
   "(cortex_a7_ex2|cortex_a7_ex1)+cortex_a7_branch")
 
 ;; Call cannot dual-issue as an older instruction. It can dual-issue
@@ -77,8 +76,7 @@  (define_insn_reservation "cortex_a7_bran
 ;; cycle.
 (define_insn_reservation "cortex_a7_call" 1
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "call")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "call"))
   "(cortex_a7_ex2|cortex_a7_both)+cortex_a7_branch")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -88,27 +86,23 @@  (define_insn_reservation "cortex_a7_call
 ;; ALU instruction with an immediate operand can dual-issue.
 (define_insn_reservation "cortex_a7_alu_imm" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (ior (eq_attr "type" "arlo_imm,mov_imm,mvn_imm")
-                 (ior (eq_attr "type" "extend")
-                      (and (eq_attr "type" "mov_reg,mov_shift,mov_shift_reg")
-                           (not (eq_attr "length" "8")))))
-            (eq_attr "neon_type" "none")))
+       (ior (eq_attr "type" "arlo_imm,mov_imm,mvn_imm,extend")
+            (and (eq_attr "type" "mov_reg,mov_shift,mov_shift_reg")
+                 (not (eq_attr "length" "8")))))
   "cortex_a7_ex2|cortex_a7_ex1")
 
 ;; ALU instruction with register operands can dual-issue
 ;; with a younger immediate-based instruction.
 (define_insn_reservation "cortex_a7_alu_reg" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "arlo_reg,shift,shift_reg,mov_reg,mvn_reg")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "arlo_reg,shift,shift_reg,mov_reg,mvn_reg"))
   "cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_alu_shift" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "arlo_shift,arlo_shift_reg,\
-                             mov_shift,mov_shift_reg,\
-                             mvn_shift,mvn_shift_reg")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "arlo_shift,arlo_shift_reg,\
+                        mov_shift,mov_shift_reg,\
+                        mvn_shift,mvn_shift_reg"))
   "cortex_a7_ex1")
 
 ;; Forwarding path for unshifted operands.
@@ -129,9 +123,8 @@  (define_bypass 1 "cortex_a7_alu_imm,cort
 
 (define_insn_reservation "cortex_a7_mul" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "neon_type" "none")
-            (ior (eq_attr "mul32" "yes")
-                 (eq_attr "mul64" "yes"))))
+       (ior (eq_attr "mul32" "yes")
+            (eq_attr "mul64" "yes")))
   "cortex_a7_both")
 
 ;; Forward the result of a multiply operation to the accumulator 
@@ -156,50 +149,42 @@  (define_insn_reservation "cortex_a7_idiv
 
 (define_insn_reservation "cortex_a7_load1" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "load_byte,load1")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load_byte,load1"))
   "cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_store1" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "store1")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store1"))
   "cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_load2" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "load2")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load2"))
   "cortex_a7_both")
 
 (define_insn_reservation "cortex_a7_store2" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "store2")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store2"))
   "cortex_a7_both")
 
 (define_insn_reservation "cortex_a7_load3" 3
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "load3")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load3"))
   "cortex_a7_both, cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_store3" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "store4")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store4"))
   "cortex_a7_both, cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_load4" 3
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "load4")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "load4"))
   "cortex_a7_both, cortex_a7_both")
 
 (define_insn_reservation "cortex_a7_store4" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "store3")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "store3"))
   "cortex_a7_both, cortex_a7_both")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -211,9 +196,8 @@  (define_insn_reservation "cortex_a7_stor
 
 (define_insn_reservation "cortex_a7_fpalu" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys,\
-                             f_cvt, fcmps, fcmpd")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys,\
+                        f_cvt, fcmps, fcmpd"))
   "cortex_a7_ex1+cortex_a7_fpadd_pipe")
 
 ;; For fconsts and fconstd, 8-bit immediate data is passed directly from
@@ -221,8 +205,7 @@  (define_insn_reservation "cortex_a7_fpal
 
 (define_insn_reservation "cortex_a7_fconst" 3
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fconsts,fconstd")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fconsts,fconstd"))
   "cortex_a7_ex1+cortex_a7_fpadd_pipe")
 
 ;; We should try not to attempt to issue a single-precision multiplication in
@@ -231,13 +214,12 @@  (define_insn_reservation "cortex_a7_fcon
 
 (define_insn_reservation "cortex_a7_fpmuls" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fmuls")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fmuls"))
   "cortex_a7_ex1+cortex_a7_fpmul_pipe")
 
 (define_insn_reservation "cortex_a7_neon_mul" 4
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "neon_type"
+       (eq_attr "type"
                 "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,\
@@ -249,13 +231,12 @@  (define_insn_reservation "cortex_a7_neon
 
 (define_insn_reservation "cortex_a7_fpmacs" 8
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fmacs,ffmas")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fmacs,ffmas"))
   "cortex_a7_ex1+cortex_a7_fpmul_pipe")
 
 (define_insn_reservation "cortex_a7_neon_mla" 8
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "neon_type"
+       (eq_attr "type"
                 "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,\
@@ -276,20 +257,17 @@  (define_bypass 4 "cortex_a7_fpmacs,corte
 
 (define_insn_reservation "cortex_a7_fpmuld" 7
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fmuld")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fmuld"))
   "cortex_a7_ex1+cortex_a7_fpmul_pipe, cortex_a7_fpmul_pipe*3")
 
 (define_insn_reservation "cortex_a7_fpmacd" 11
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fmacd")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fmacd"))
   "cortex_a7_ex1+cortex_a7_fpmul_pipe, cortex_a7_fpmul_pipe*3")
 
 (define_insn_reservation "cortex_a7_fpfmad" 8
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "ffmad")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "ffmad"))
   "cortex_a7_ex1+cortex_a7_fpmul_pipe, cortex_a7_fpmul_pipe*4")
 
 (define_bypass 7 "cortex_a7_fpmacd"
@@ -302,14 +280,12 @@  (define_bypass 7 "cortex_a7_fpmacd"
 
 (define_insn_reservation "cortex_a7_fdivs" 16
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fdivs")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fdivs"))
   "cortex_a7_ex1+cortex_a7_fp_div_sqrt, cortex_a7_fp_div_sqrt * 13")
 
 (define_insn_reservation "cortex_a7_fdivd" 31
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "fdivd")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "fdivd"))
   "cortex_a7_ex1+cortex_a7_fp_div_sqrt, cortex_a7_fp_div_sqrt * 28")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -320,14 +296,12 @@  (define_insn_reservation "cortex_a7_fdiv
 
 (define_insn_reservation "cortex_a7_r2f" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "r_2_f")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_mcr,f_mcrr"))
   "cortex_a7_both")
 
 (define_insn_reservation "cortex_a7_f2r" 2
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_2_r")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_mrc,f_mrrc"))
   "cortex_a7_ex1")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -339,8 +313,7 @@  (define_insn_reservation "cortex_a7_f2r"
 
 (define_insn_reservation "cortex_a7_f_flags" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_flag")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_flag"))
   "cortex_a7_ex1")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -349,26 +322,22 @@  (define_insn_reservation "cortex_a7_f_fl
 
 (define_insn_reservation "cortex_a7_f_loads" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_loads")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_loads"))
   "cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_f_loadd" 4
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_loadd")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_loadd"))
   "cortex_a7_both")
 
 (define_insn_reservation "cortex_a7_f_stores" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_stores")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_stores"))
   "cortex_a7_ex1")
 
 (define_insn_reservation "cortex_a7_f_stored" 0
   (and (eq_attr "tune" "cortexa7")
-       (and (eq_attr "type" "f_stored")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "f_stored"))
   "cortex_a7_both")
 
 ;; Load-to-use for floating-point values has a penalty of one cycle,
@@ -389,22 +358,21 @@  (define_bypass 2 "cortex_a7_f_loads, cor
 
 (define_insn_reservation "cortex_a7_neon" 4
   (and (eq_attr "tune" "cortexa7")
-       (eq_attr "neon_type"
-                "!none,\
-                  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_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"))
+       (eq_attr "type"
+                "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_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"))
   "cortex_a7_both*2")
diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md
index 2f0cc7b3a5a9231a3c4a3a5e6abd3b6cac334581..57a81142a18f0c4381c13fecab07da49290b3fad 100644
--- a/gcc/config/arm/cortex-a8-neon.md
+++ b/gcc/config/arm/cortex-a8-neon.md
@@ -184,12 +184,12 @@  (define_insn_reservation "cortex_a8_vfp_
 
 (define_insn_reservation "cortex_a8_neon_mrc" 20
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mrc"))
+       (eq_attr "type" "neon_mrc"))
   "cortex_a8_neon_ls")
 
 (define_insn_reservation "cortex_a8_neon_mrrc" 21
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mrrc"))
+       (eq_attr "type" "neon_mrrc"))
   "cortex_a8_neon_ls_2")
 
 ;; The remainder of this file is auto-generated by neon-schedgen.
@@ -198,48 +198,48 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a8_neon_int_1" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_int_1"))
+       (eq_attr "type" "neon_int_1"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)n operands at N2, and produce a result at N3.
 (define_insn_reservation "cortex_a8_neon_int_2" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_int_2"))
+       (eq_attr "type" "neon_int_2"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a8_neon_int_3" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_int_3"))
+       (eq_attr "type" "neon_int_3"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a8_neon_int_4" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_int_4"))
+       (eq_attr "type" "neon_int_4"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)n operands at N2, and produce a result at N4.
 (define_insn_reservation "cortex_a8_neon_int_5" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_int_5"))
+       (eq_attr "type" "neon_int_5"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a8_neon_vqneg_vqabs" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vqneg_vqabs"))
+       (eq_attr "type" "neon_vqneg_vqabs"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation produce a result at N3.
 (define_insn_reservation "cortex_a8_neon_vmov" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vmov"))
+       (eq_attr "type" "neon_vmov"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -247,7 +247,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_vaba" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vaba"))
+       (eq_attr "type" "neon_vaba"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -255,35 +255,35 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_vaba_qqq" 7
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vaba_qqq"))
+       (eq_attr "type" "neon_vaba_qqq"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)d operands at N3, and produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_vsma" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vsma"))
+       (eq_attr "type" "neon_vsma"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
+       (eq_attr "type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 7
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
+       (eq_attr "type" "neon_mul_qqq_8_16_32_ddd_32"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
+       (eq_attr "type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -291,7 +291,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
+       (eq_attr "type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -299,7 +299,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_mla_qqq_8_16" 7
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mla_qqq_8_16"))
+       (eq_attr "type" "neon_mla_qqq_8_16"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -307,7 +307,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
+       (eq_attr "type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -315,21 +315,21 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6 on cycle 4.
 (define_insn_reservation "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 9
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
+       (eq_attr "type" "neon_mla_qqq_32_qqd_32_scalar"))
   "cortex_a8_neon_dp_4")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
+       (eq_attr "type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
 (define_insn_reservation "cortex_a8_neon_mul_qqd_32_scalar" 9
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
+       (eq_attr "type" "neon_mul_qqd_32_scalar"))
   "cortex_a8_neon_dp_4")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -337,84 +337,84 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
+       (eq_attr "type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a8_neon_shift_1" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_shift_1"))
+       (eq_attr "type" "neon_shift_1"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a8_neon_shift_2" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_shift_2"))
+       (eq_attr "type" "neon_shift_2"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_shift_3" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_shift_3"))
+       (eq_attr "type" "neon_shift_3"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N1.
 (define_insn_reservation "cortex_a8_neon_vshl_ddd" 1
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vshl_ddd"))
+       (eq_attr "type" "neon_vshl_ddd"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 5
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
+       (eq_attr "type" "neon_vqshl_vrshl_vqrshl_qqq"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)d operands at N3, and produce a result at N6.
 (define_insn_reservation "cortex_a8_neon_vsra_vrsra" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vsra_vrsra"))
+       (eq_attr "type" "neon_vsra_vrsra"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N5.
 (define_insn_reservation "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 5
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
+       (eq_attr "type" "neon_fp_vadd_ddd_vabs_dd"))
   "cortex_a8_neon_fadd")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N5 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
+       (eq_attr "type" "neon_fp_vadd_qqq_vabs_qq"))
   "cortex_a8_neon_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N5.
 (define_insn_reservation "cortex_a8_neon_fp_vsum" 5
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vsum"))
+       (eq_attr "type" "neon_fp_vsum"))
   "cortex_a8_neon_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N5.
 (define_insn_reservation "cortex_a8_neon_fp_vmul_ddd" 5
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmul_ddd"))
+       (eq_attr "type" "neon_fp_vmul_ddd"))
   "cortex_a8_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_fp_vmul_qqd" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmul_qqd"))
+       (eq_attr "type" "neon_fp_vmul_qqd"))
   "cortex_a8_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -422,7 +422,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a8_neon_fp_vmla_ddd" 9
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmla_ddd"))
+       (eq_attr "type" "neon_fp_vmla_ddd"))
   "cortex_a8_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -430,7 +430,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_fp_vmla_qqq" 10
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmla_qqq"))
+       (eq_attr "type" "neon_fp_vmla_qqq"))
   "cortex_a8_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -438,7 +438,7 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a8_neon_fp_vmla_ddd_scalar" 9
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
+       (eq_attr "type" "neon_fp_vmla_ddd_scalar"))
   "cortex_a8_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -446,152 +446,152 @@  (define_insn_reservation "cortex_a8_neon
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_fp_vmla_qqq_scalar" 10
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
+       (eq_attr "type" "neon_fp_vmla_qqq_scalar"))
   "cortex_a8_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 9
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_ddd"))
   "cortex_a8_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 10
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_qqq"))
   "cortex_a8_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2.
 (define_insn_reservation "cortex_a8_neon_bp_simple" 2
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_bp_simple"))
+       (eq_attr "type" "neon_bp_simple"))
   "cortex_a8_neon_perm")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_bp_2cycle" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_bp_2cycle"))
+       (eq_attr "type" "neon_bp_2cycle"))
   "cortex_a8_neon_perm_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a8_neon_bp_3cycle" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_bp_3cycle"))
+       (eq_attr "type" "neon_bp_3cycle"))
   "cortex_a8_neon_perm_3")
 
 ;; Instructions using this reservation produce a result at N1.
 (define_insn_reservation "cortex_a8_neon_ldr" 1
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_ldr"))
+       (eq_attr "type" "neon_ldr"))
   "cortex_a8_neon_ls")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_str" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_str"))
+       (eq_attr "type" "neon_str"))
   "cortex_a8_neon_ls")
 
 ;; Instructions using this reservation produce a result at N1 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_vld1_1_2_regs" 2
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld1_1_2_regs"))
+       (eq_attr "type" "neon_vld1_1_2_regs"))
   "cortex_a8_neon_ls_2")
 
 ;; Instructions using this reservation produce a result at N1 on cycle 3.
 (define_insn_reservation "cortex_a8_neon_vld1_3_4_regs" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld1_3_4_regs"))
+       (eq_attr "type" "neon_vld1_3_4_regs"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
+       (eq_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
   "cortex_a8_neon_ls_2")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a8_neon_vld2_4_regs" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld2_4_regs"))
+       (eq_attr "type" "neon_vld2_4_regs"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 4.
 (define_insn_reservation "cortex_a8_neon_vld3_vld4" 5
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld3_vld4"))
+       (eq_attr "type" "neon_vld3_vld4"))
   "cortex_a8_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst1_1_2_regs_vst2_2_regs" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
+       (eq_attr "type" "neon_vst1_1_2_regs_vst2_2_regs"))
   "cortex_a8_neon_ls_2")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst1_3_4_regs" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst1_3_4_regs"))
+       (eq_attr "type" "neon_vst1_3_4_regs"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst2_4_regs_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
+       (eq_attr "type" "neon_vst2_4_regs_vst3_vst4"))
   "cortex_a8_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst3_vst4"))
+       (eq_attr "type" "neon_vst3_vst4"))
   "cortex_a8_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a8_neon_vld1_vld2_lane" 4
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld1_vld2_lane"))
+       (eq_attr "type" "neon_vld1_vld2_lane"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 5.
 (define_insn_reservation "cortex_a8_neon_vld3_vld4_lane" 6
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld3_vld4_lane"))
+       (eq_attr "type" "neon_vld3_vld4_lane"))
   "cortex_a8_neon_ls_5")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst1_vst2_lane" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst1_vst2_lane"))
+       (eq_attr "type" "neon_vst1_vst2_lane"))
   "cortex_a8_neon_ls_2")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a8_neon_vst3_vst4_lane" 0
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vst3_vst4_lane"))
+       (eq_attr "type" "neon_vst3_vst4_lane"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a8_neon_vld3_vld4_all_lanes" 3
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
+       (eq_attr "type" "neon_vld3_vld4_all_lanes"))
   "cortex_a8_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2.
 (define_insn_reservation "cortex_a8_neon_mcr" 2
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mcr"))
+       (eq_attr "type" "neon_mcr"))
   "cortex_a8_neon_perm")
 
 ;; Instructions using this reservation produce a result at N2.
 (define_insn_reservation "cortex_a8_neon_mcr_2_mcrr" 2
   (and (eq_attr "tune" "cortexa8")
-       (eq_attr "neon_type" "neon_mcr_2_mcrr"))
+       (eq_attr "type" "neon_mcr_2_mcrr"))
   "cortex_a8_neon_perm_2")
 
 ;; Exceptions to the default latencies.
diff --git a/gcc/config/arm/cortex-a8.md b/gcc/config/arm/cortex-a8.md
index 1113a45ff0e499f095adb0f16c3f08a5df4c6a85..acbfef587b0c98a33a089ef70dc77ee1c76d825f 100644
--- a/gcc/config/arm/cortex-a8.md
+++ b/gcc/config/arm/cortex-a8.md
@@ -85,9 +85,7 @@  (define_reservation "cortex_a8_multiply_
 ;; (source read in E2 and destination available at the end of that cycle).
 (define_insn_reservation "cortex_a8_alu" 2
   (and (eq_attr "tune" "cortexa8")
-       (ior (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")
-                 (eq_attr "neon_type" "none"))
-            (eq_attr "type" "clz")))
+       (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,clz"))
   "cortex_a8_default")
 
 (define_insn_reservation "cortex_a8_alu_shift" 2
diff --git a/gcc/config/arm/cortex-a9-neon.md b/gcc/config/arm/cortex-a9-neon.md
index 9688edc8f72cffd1a452637313b62d4862664309..2c9d5db5bd8ea4eaf6bcbf49bc04bc955febb21d 100644
--- a/gcc/config/arm/cortex-a9-neon.md
+++ b/gcc/config/arm/cortex-a9-neon.md
@@ -109,12 +109,12 @@  (define_reservation "cortex_a9_neon_fmul
 ;; NEON -> core transfers.
 (define_insn_reservation "ca9_neon_mrc" 1
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mrc"))
+       (eq_attr "type" "neon_mrc"))
   "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
 
 (define_insn_reservation "ca9_neon_mrrc" 1
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mrrc"))
+       (eq_attr "type" "neon_mrrc"))
   "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
 
 ;; The remainder of this file is auto-generated by neon-schedgen.
@@ -123,48 +123,48 @@  (define_insn_reservation "ca9_neon_mrrc"
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a9_neon_int_1" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_int_1"))
+       (eq_attr "type" "neon_int_1"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)n operands at N2, and produce a result at N3.
 (define_insn_reservation "cortex_a9_neon_int_2" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_int_2"))
+       (eq_attr "type" "neon_int_2"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a9_neon_int_3" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_int_3"))
+       (eq_attr "type" "neon_int_3"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a9_neon_int_4" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_int_4"))
+       (eq_attr "type" "neon_int_4"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)n operands at N2, and produce a result at N4.
 (define_insn_reservation "cortex_a9_neon_int_5" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_int_5"))
+       (eq_attr "type" "neon_int_5"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a9_neon_vqneg_vqabs" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vqneg_vqabs"))
+       (eq_attr "type" "neon_vqneg_vqabs"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation produce a result at N3.
 (define_insn_reservation "cortex_a9_neon_vmov" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vmov"))
+       (eq_attr "type" "neon_vmov"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -172,7 +172,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_vaba" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vaba"))
+       (eq_attr "type" "neon_vaba"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -180,35 +180,35 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_vaba_qqq" 7
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vaba_qqq"))
+       (eq_attr "type" "neon_vaba_qqq"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)d operands at N3, and produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_vsma" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vsma"))
+       (eq_attr "type" "neon_vsma"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
+       (eq_attr "type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_mul_qqq_8_16_32_ddd_32" 7
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
+       (eq_attr "type" "neon_mul_qqq_8_16_32_ddd_32"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
+       (eq_attr "type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -216,7 +216,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
+       (eq_attr "type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -224,7 +224,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_mla_qqq_8_16" 7
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mla_qqq_8_16"))
+       (eq_attr "type" "neon_mla_qqq_8_16"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -232,7 +232,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
+       (eq_attr "type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -240,21 +240,21 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6 on cycle 4.
 (define_insn_reservation "cortex_a9_neon_mla_qqq_32_qqd_32_scalar" 9
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
+       (eq_attr "type" "neon_mla_qqq_32_qqd_32_scalar"))
   "cortex_a9_neon_dp_4")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
+       (eq_attr "type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
 (define_insn_reservation "cortex_a9_neon_mul_qqd_32_scalar" 9
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
+       (eq_attr "type" "neon_mul_qqd_32_scalar"))
   "cortex_a9_neon_dp_4")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -262,84 +262,84 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
+       (eq_attr "type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3.
 (define_insn_reservation "cortex_a9_neon_shift_1" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_shift_1"))
+       (eq_attr "type" "neon_shift_1"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4.
 (define_insn_reservation "cortex_a9_neon_shift_2" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_shift_2"))
+       (eq_attr "type" "neon_shift_2"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N3 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_shift_3" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_shift_3"))
+       (eq_attr "type" "neon_shift_3"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N1.
 (define_insn_reservation "cortex_a9_neon_vshl_ddd" 1
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vshl_ddd"))
+       (eq_attr "type" "neon_vshl_ddd"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N4 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_vqshl_vrshl_vqrshl_qqq" 5
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
+       (eq_attr "type" "neon_vqshl_vrshl_vqrshl_qqq"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)m operands at N1,
 ;; their (D|Q)d operands at N3, and produce a result at N6.
 (define_insn_reservation "cortex_a9_neon_vsra_vrsra" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vsra_vrsra"))
+       (eq_attr "type" "neon_vsra_vrsra"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N5.
 (define_insn_reservation "cortex_a9_neon_fp_vadd_ddd_vabs_dd" 5
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
+       (eq_attr "type" "neon_fp_vadd_ddd_vabs_dd"))
   "cortex_a9_neon_fadd")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N5 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_fp_vadd_qqq_vabs_qq" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
+       (eq_attr "type" "neon_fp_vadd_qqq_vabs_qq"))
   "cortex_a9_neon_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N5.
 (define_insn_reservation "cortex_a9_neon_fp_vsum" 5
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vsum"))
+       (eq_attr "type" "neon_fp_vsum"))
   "cortex_a9_neon_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N5.
 (define_insn_reservation "cortex_a9_neon_fp_vmul_ddd" 5
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmul_ddd"))
+       (eq_attr "type" "neon_fp_vmul_ddd"))
   "cortex_a9_neon_dp")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
 ;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_fp_vmul_qqd" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmul_qqd"))
+       (eq_attr "type" "neon_fp_vmul_qqd"))
   "cortex_a9_neon_dp_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -347,7 +347,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a9_neon_fp_vmla_ddd" 9
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmla_ddd"))
+       (eq_attr "type" "neon_fp_vmla_ddd"))
   "cortex_a9_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -355,7 +355,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_fp_vmla_qqq" 10
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmla_qqq"))
+       (eq_attr "type" "neon_fp_vmla_qqq"))
   "cortex_a9_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -363,7 +363,7 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a9_neon_fp_vmla_ddd_scalar" 9
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
+       (eq_attr "type" "neon_fp_vmla_ddd_scalar"))
   "cortex_a9_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their (D|Q)n operands at N2,
@@ -371,152 +371,152 @@  (define_insn_reservation "cortex_a9_neon
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_fp_vmla_qqq_scalar" 10
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
+       (eq_attr "type" "neon_fp_vmla_qqq_scalar"))
   "cortex_a9_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N9.
 (define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_ddd" 9
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_ddd"))
   "cortex_a9_neon_fmul_then_fadd")
 
 ;; Instructions using this reservation read their source operands at N2, and
 ;; produce a result at N9 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_qqq" 10
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
+       (eq_attr "type" "neon_fp_vrecps_vrsqrts_qqq"))
   "cortex_a9_neon_fmul_then_fadd_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2.
 (define_insn_reservation "cortex_a9_neon_bp_simple" 2
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_bp_simple"))
+       (eq_attr "type" "neon_bp_simple"))
   "cortex_a9_neon_perm")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_bp_2cycle" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_bp_2cycle"))
+       (eq_attr "type" "neon_bp_2cycle"))
   "cortex_a9_neon_perm_2")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a9_neon_bp_3cycle" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_bp_3cycle"))
+       (eq_attr "type" "neon_bp_3cycle"))
   "cortex_a9_neon_perm_3")
 
 ;; Instructions using this reservation produce a result at N1.
 (define_insn_reservation "cortex_a9_neon_ldr" 1
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_ldr"))
+       (eq_attr "type" "neon_ldr"))
   "cortex_a9_neon_ls")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_str" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_str"))
+       (eq_attr "type" "neon_str"))
   "cortex_a9_neon_ls")
 
 ;; Instructions using this reservation produce a result at N1 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_vld1_1_2_regs" 2
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld1_1_2_regs"))
+       (eq_attr "type" "neon_vld1_1_2_regs"))
   "cortex_a9_neon_ls_2")
 
 ;; Instructions using this reservation produce a result at N1 on cycle 3.
 (define_insn_reservation "cortex_a9_neon_vld1_3_4_regs" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld1_3_4_regs"))
+       (eq_attr "type" "neon_vld1_3_4_regs"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
+       (eq_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
   "cortex_a9_neon_ls_2")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a9_neon_vld2_4_regs" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld2_4_regs"))
+       (eq_attr "type" "neon_vld2_4_regs"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 4.
 (define_insn_reservation "cortex_a9_neon_vld3_vld4" 5
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld3_vld4"))
+       (eq_attr "type" "neon_vld3_vld4"))
   "cortex_a9_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst1_1_2_regs_vst2_2_regs" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
+       (eq_attr "type" "neon_vst1_1_2_regs_vst2_2_regs"))
   "cortex_a9_neon_ls_2")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst1_3_4_regs" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst1_3_4_regs"))
+       (eq_attr "type" "neon_vst1_3_4_regs"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst2_4_regs_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
+       (eq_attr "type" "neon_vst2_4_regs_vst3_vst4"))
   "cortex_a9_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst3_vst4" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst3_vst4"))
+       (eq_attr "type" "neon_vst3_vst4"))
   "cortex_a9_neon_ls_4")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 3.
 (define_insn_reservation "cortex_a9_neon_vld1_vld2_lane" 4
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld1_vld2_lane"))
+       (eq_attr "type" "neon_vld1_vld2_lane"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation read their source operands at N1, and
 ;; produce a result at N2 on cycle 5.
 (define_insn_reservation "cortex_a9_neon_vld3_vld4_lane" 6
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld3_vld4_lane"))
+       (eq_attr "type" "neon_vld3_vld4_lane"))
   "cortex_a9_neon_ls_5")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst1_vst2_lane" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst1_vst2_lane"))
+       (eq_attr "type" "neon_vst1_vst2_lane"))
   "cortex_a9_neon_ls_2")
 
 ;; Instructions using this reservation read their source operands at N1.
 (define_insn_reservation "cortex_a9_neon_vst3_vst4_lane" 0
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vst3_vst4_lane"))
+       (eq_attr "type" "neon_vst3_vst4_lane"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2 on cycle 2.
 (define_insn_reservation "cortex_a9_neon_vld3_vld4_all_lanes" 3
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
+       (eq_attr "type" "neon_vld3_vld4_all_lanes"))
   "cortex_a9_neon_ls_3")
 
 ;; Instructions using this reservation produce a result at N2.
 (define_insn_reservation "cortex_a9_neon_mcr" 2
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mcr"))
+       (eq_attr "type" "neon_mcr"))
   "cortex_a9_neon_perm")
 
 ;; Instructions using this reservation produce a result at N2.
 (define_insn_reservation "cortex_a9_neon_mcr_2_mcrr" 2
   (and (eq_attr "tune" "cortexa9")
-       (eq_attr "neon_type" "neon_mcr_2_mcrr"))
+       (eq_attr "type" "neon_mcr_2_mcrr"))
   "cortex_a9_neon_perm_2")
 
 ;; Exceptions to the default latencies.
diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md
index 11dc0b32c38b250bd6bba4b5e390403c3de3812e..198e8de80cfe46dff253bf720812b41bb1446c54 100644
--- a/gcc/config/arm/cortex-a9.md
+++ b/gcc/config/arm/cortex-a9.md
@@ -80,10 +80,9 @@  (define_reservation "cortex_a9_mult_long
 ;; which can go down E2 without any problem.
 (define_insn_reservation "cortex_a9_dp" 2
   (and (eq_attr "tune" "cortexa9")
-       (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,\
-                             mov_imm,mov_reg,mvn_imm,mvn_reg,\
-                             mov_shift_reg,mov_shift")
-            (eq_attr "neon_type" "none")))
+       (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,\
+                        mov_imm,mov_reg,mvn_imm,mvn_reg,\
+                        mov_shift_reg,mov_shift"))
   "cortex_a9_p0_default|cortex_a9_p1_default")
 
 ;; An instruction using the shifter will go down E1.
@@ -200,7 +199,7 @@  (define_insn_reservation "cortex_a9_call
 ;; Pipelining for VFP instructions.
 ;; Issue happens either along load store unit or the VFP / Neon unit.
 ;; Pipeline   Instruction Classification.
-;; FPS - fcpys, ffariths, ffarithd,r_2_f,f_2_r
+;; FPS - fcpys, ffariths, ffarithd,f_mcr,f_mcrr,f_mrc,f_mrrc
 ;; FP_ADD   - fadds, faddd, fcmps (1)
 ;; FPMUL   - fmul{s,d}, fmac{s,d}, ffma{s,d}
 ;; FPDIV - fdiv{s,d}
@@ -213,7 +212,8 @@  (define_cpu_unit "ca9fp_ds1" "cortex_a9"
 ;; fmrs, fmrrd, fmstat and fmrx - The data is available after 1 cycle.
 (define_insn_reservation "cortex_a9_fps" 2
  (and (eq_attr "tune" "cortexa9")
-      (eq_attr "type" "fcpys, fconsts, fconstd, ffariths, ffarithd, r_2_f, f_2_r, f_flag"))
+      (eq_attr "type" "fcpys, fconsts, fconstd, ffariths, ffarithd,\
+                       f_mcr, f_mcrr, f_mrc, f_mrrc, f_flag"))
  "ca9_issue_vfp_neon + ca9fps")
 
 (define_bypass 1
diff --git a/gcc/config/arm/cortex-m4-fpu.md b/gcc/config/arm/cortex-m4-fpu.md
index 4ce3f10f0debac5d9888e56d757986f60d947a73..f148e9dba798177a105df6a36e188d3dff7b890e 100644
--- a/gcc/config/arm/cortex-m4-fpu.md
+++ b/gcc/config/arm/cortex-m4-fpu.md
@@ -40,7 +40,7 @@  (define_insn_reservation "cortex_m4_vmov
 
 (define_insn_reservation "cortex_m4_vmov_2" 2
   (and (eq_attr "tune" "cortexm4")
-       (eq_attr "type" "f_2_r,r_2_f"))
+       (eq_attr "type" "f_mrc,f_mrrc,f_mcr,f_mcrr"))
   "cortex_m4_ex_v*2")
 
 (define_insn_reservation "cortex_m4_fmuls" 2
diff --git a/gcc/config/arm/cortex-r4f.md b/gcc/config/arm/cortex-r4f.md
index 0c0bae0cd7400a2496cac2052470309d6a77a13b..8262ccd5b659a64c2dcf7b02e277188657c5164e 100644
--- a/gcc/config/arm/cortex-r4f.md
+++ b/gcc/config/arm/cortex-r4f.md
@@ -83,12 +83,12 @@  (define_insn_reservation "cortex_r4_fsto
 
 (define_insn_reservation "cortex_r4_mcr" 2
  (and (eq_attr "tune_cortexr4" "yes")
-      (eq_attr "type" "r_2_f"))
+      (eq_attr "type" "f_mcr,f_mcrr"))
  "cortex_r4_issue_ab")
 
 (define_insn_reservation "cortex_r4_mrc" 3
  (and (eq_attr "tune_cortexr4" "yes")
-      (eq_attr "type" "f_2_r"))
+      (eq_attr "type" "f_mrc,f_mrrc"))
  "cortex_r4_issue_ab")
 
 ;; Bypasses for normal (not early) regs.
diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index d84929f3d1fb9836207b1f79c6f0ddcb39055c07..c7d7079b9de69d42d2659864f90dd50f1c6add72 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -391,7 +391,7 @@  (define_mode_attr V_suf64 [(V8QI "") (V1
 (define_mode_attr scalar_mul_constraint [(V4HI "x") (V2SI "t") (V2SF "t")
                                          (V8HI "x") (V4SI "t") (V4SF "t")])
 
-;; Predicates used for setting neon_type
+;; Predicates used for setting type for neon instructions
 
 (define_mode_attr Is_float_mode [(V8QI "false") (V16QI "false")
                  (V4HI "false") (V8HI "false")
diff --git a/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md
index f1f0a5c515066ebefb04fbfc6f01c1774c5a3a13..3966715d4732b1e20fe6ddfbc4071e415292c410 100644
--- a/gcc/config/arm/iwmmxt.md
+++ b/gcc/config/arm/iwmmxt.md
@@ -155,7 +155,8 @@  (define_insn "*iwmmxt_arm_movdi"
                                  (const_int 8)
                                  (const_int 4))]
                               (const_int 4)))
-   (set_attr "type" "*,*,*,load2,store2,wmmx_wmov,wmmx_tmcrr,wmmx_tmrrc,wmmx_wldr,wmmx_wstr,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
+   (set_attr "type" "*,*,*,load2,store2,*,*,*,*,*,f_mcrr,f_mrrc,\
+                     ffarithd,f_loadd,f_stored")
    (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,*,*,*,*,*,*,1020,*")
    (set_attr "arm_neg_pool_range" "*,*,*,1008,*,*,*,*,*,*,*,*,*,1008,*")]
 )
@@ -187,7 +188,8 @@  (define_insn "*iwmmxt_movsi_insn"
      default:
        gcc_unreachable ();
      }"
-  [(set_attr "type"           "*,*,*,*,load1,store1,wmmx_tmcr,wmmx_tmrc,wmmx_wldr,wmmx_wstr,r_2_f,f_2_r,fcpys,f_loads,f_stores")
+  [(set_attr "type"           "*,*,*,*,load1,store1,*,*,*,*,f_mcr,f_mrc,\
+                               fcpys,f_loads,f_stores")
    (set_attr "length"         "*,*,*,*,*,        *,*,*,  16,     *,*,*,*,*,*")
    (set_attr "pool_range"     "*,*,*,*,4096,     *,*,*,1024,     *,*,*,*,1020,*")
    (set_attr "neg_pool_range" "*,*,*,*,4084,     *,*,*,   *,  1012,*,*,*,1008,*")
diff --git a/gcc/config/arm/marvell-pj4.md b/gcc/config/arm/marvell-pj4.md
index 0e2c443721e5bff7fc50b46177b0b288c8bf90d9..3d1bf596f86cff31f3b24f3df587095e0963a400 100644
--- a/gcc/config/arm/marvell-pj4.md
+++ b/gcc/config/arm/marvell-pj4.md
@@ -201,9 +201,9 @@  (define_insn_reservation "pj4_vfp_store"
 
 (define_insn_reservation "pj4_vfp_to_core" 7
   (and (eq_attr "tune" "marvell_pj4")
-       (eq_attr "type" "f_2_r,f_flag"))       "pj4_isb,nothing,nothing,vissue,vfast,nothing*2")
+       (eq_attr "type" "f_mrc,f_mrrc,f_flag")) "pj4_isb,nothing,nothing,vissue,vfast,nothing*2")
 
 (define_insn_reservation "pj4_core_to_vfp" 2
   (and (eq_attr "tune" "marvell_pj4")
-       (eq_attr "type" "r_2_f"))              "pj4_isb,pj4_alu1,pj4_w1,vissue,pj4_cp")
+       (eq_attr "type" "f_mcr,f_mcrr")) "pj4_isb,pj4_alu1,pj4_w1,vissue,pj4_cp")
 
diff --git a/gcc/config/arm/neon-schedgen.ml b/gcc/config/arm/neon-schedgen.ml
index 7dacbab..b369956 100644
--- a/gcc/config/arm/neon-schedgen.ml
+++ b/gcc/config/arm/neon-schedgen.ml
@@ -480,7 +480,7 @@  let emit_insn_reservations core =
         Printf.printf "(define_insn_reservation \"%s_%s\" %d\n" 
             corestring producer latency;
             Printf.printf "  (and (eq_attr \"tune\" \"%s\")\n" tunestring;
-        Printf.printf "       (eq_attr \"neon_type\" \"%s\"))\n" producer;
+        Printf.printf "       (eq_attr \"type\" \"%s\"))\n" producer;
         let str =
           match reservation with
 	    Mul -> "dp" | Mul_2cycle -> "dp_2" | Mul_4cycle -> "dp_4"
diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
index e00ca2c7bf982f71c377dec73ee438687aadad02..ae83dba5f895276800a0973498530e1c0c8d1196 100644
--- a/gcc/config/arm/neon.md
+++ b/gcc/config/arm/neon.md
@@ -20,7 +20,7 @@ 
 
 
 ;; Attribute used to permit string comparisons against <VQH_mnem> in
-;; neon_type attribute definitions.
+;; type attribute definitions.
 (define_attr "vqh_mnem" "vadd,vmin,vmax" (const_string "vadd"))
 
 (define_insn "*neon_mov<mode>"
@@ -60,8 +60,8 @@  (define_insn "*neon_mov<mode>"
     default: return output_move_double (operands, true, NULL);
     }
 }
- [(set_attr "neon_type" "neon_int_1,*,neon_vmov,*,neon_mrrc,neon_mcr_2_mcrr,*,*,*")
-  (set_attr "type" "*,f_stored,*,f_loadd,*,*,mov_reg,load2,store2")
+ [(set_attr "type" "neon_int_1,f_stored,neon_vmov,f_loadd,neon_mrrc,\
+                    neon_mcr_2_mcrr,mov_reg,load2,store2")
   (set_attr "length" "4,4,4,4,4,4,8,8,8")
   (set_attr "arm_pool_range"     "*,*,*,1020,*,*,*,1020,*")
   (set_attr "thumb2_pool_range"     "*,*,*,1018,*,*,*,1018,*")
@@ -104,9 +104,8 @@  (define_insn "*neon_mov<mode>"
     default: return output_move_quad (operands);
     }
 }
-  [(set_attr "neon_type" "neon_int_1,neon_stm_2,neon_vmov,neon_ldm_2,\
-                          neon_mrrc,neon_mcr_2_mcrr,*,*,*")
-   (set_attr "type" "*,*,*,*,*,*,mov_reg,load4,store4")
+  [(set_attr "type" "neon_int_1,neon_stm_2,neon_vmov,neon_ldm_2,\
+                     neon_mrrc,neon_mcr_2_mcrr,mov_reg,load4,store4")
    (set_attr "length" "4,8,4,8,8,8,16,8,16")
    (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*")
    (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*")
@@ -150,7 +149,7 @@  (define_insn "*neon_mov<mode>"
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "neon_type" "neon_int_1,neon_stm_2,neon_ldm_2")
+  [(set_attr "type" "neon_int_1,neon_stm_2,neon_ldm_2")
    (set (attr "length") (symbol_ref "arm_attr_length_move_neon (insn)"))])
 
 (define_split
@@ -258,7 +257,7 @@  (define_insn "*movmisalign<mode>_neon_st
 		    UNSPEC_MISALIGNED_ACCESS))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
   "vst1.<V_sz_elem>\t{%P1}, %A0"
-  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+  [(set_attr "type" "neon_vst1_1_2_regs_vst2_2_regs")])
 
 (define_insn "*movmisalign<mode>_neon_load"
   [(set (match_operand:VDX 0 "s_register_operand"			"=w")
@@ -267,7 +266,7 @@  (define_insn "*movmisalign<mode>_neon_lo
 		    UNSPEC_MISALIGNED_ACCESS))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
   "vld1.<V_sz_elem>\t{%P0}, %A1"
-  [(set_attr "neon_type" "neon_vld1_1_2_regs")])
+  [(set_attr "type" "neon_vld1_1_2_regs")])
 
 (define_insn "*movmisalign<mode>_neon_store"
   [(set (match_operand:VQX 0 "neon_permissive_struct_operand"  "=Um")
@@ -275,7 +274,7 @@  (define_insn "*movmisalign<mode>_neon_st
 		    UNSPEC_MISALIGNED_ACCESS))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
   "vst1.<V_sz_elem>\t{%q1}, %A0"
-  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+  [(set_attr "type" "neon_vst1_1_2_regs_vst2_2_regs")])
 
 (define_insn "*movmisalign<mode>_neon_load"
   [(set (match_operand:VQX 0 "s_register_operand"			"=w")
@@ -284,7 +283,7 @@  (define_insn "*movmisalign<mode>_neon_lo
 		    UNSPEC_MISALIGNED_ACCESS))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
   "vld1.<V_sz_elem>\t{%q0}, %A1"
-  [(set_attr "neon_type" "neon_vld1_1_2_regs")])
+  [(set_attr "type" "neon_vld1_1_2_regs")])
 
 (define_insn "vec_set<mode>_internal"
   [(set (match_operand:VD 0 "s_register_operand" "=w,w")
@@ -305,7 +304,7 @@  (define_insn "vec_set<mode>_internal"
   else
     return "vmov.<V_sz_elem>\t%P0[%c2], %1";
 }
-  [(set_attr "neon_type" "neon_vld1_vld2_lane,neon_mcr")])
+  [(set_attr "type" "neon_vld1_vld2_lane,neon_mcr")])
 
 (define_insn "vec_set<mode>_internal"
   [(set (match_operand:VQ 0 "s_register_operand" "=w,w")
@@ -333,7 +332,7 @@  (define_insn "vec_set<mode>_internal"
   else
     return "vmov.<V_sz_elem>\t%P0[%c2], %1";
 }
-  [(set_attr "neon_type" "neon_vld1_vld2_lane,neon_mcr")]
+  [(set_attr "type" "neon_vld1_vld2_lane,neon_mcr")]
 )
 
 (define_insn "vec_setv2di_internal"
@@ -355,7 +354,7 @@  (define_insn "vec_setv2di_internal"
   else
     return "vmov\t%P0, %Q1, %R1";
 }
-  [(set_attr "neon_type" "neon_vld1_1_2_regs,neon_mcr_2_mcrr")]
+  [(set_attr "type" "neon_vld1_1_2_regs,neon_mcr_2_mcrr")]
 )
 
 (define_expand "vec_set<mode>"
@@ -389,7 +388,7 @@  (define_insn "vec_extract<mode>"
   else
     return "vmov.<V_uf_sclr>\t%0, %P1[%c2]";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane,neon_bp_simple")]
+  [(set_attr "type" "neon_vst1_vst2_lane,neon_bp_simple")]
 )
 
 (define_insn "vec_extract<mode>"
@@ -415,7 +414,7 @@  (define_insn "vec_extract<mode>"
   else
     return "vmov.<V_uf_sclr>\t%0, %P1[%c2]";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane,neon_bp_simple")]
+  [(set_attr "type" "neon_vst1_vst2_lane,neon_bp_simple")]
 )
 
 (define_insn "vec_extractv2di"
@@ -434,7 +433,7 @@  (define_insn "vec_extractv2di"
   else
     return "vmov\t%Q0, %R0, %P1  @ v2di";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane,neon_int_1")]
+  [(set_attr "type" "neon_vst1_vst2_lane,neon_int_1")]
 )
 
 (define_expand "vec_init<mode>"
@@ -457,7 +456,7 @@  (define_insn "*add<mode>3_neon"
 		  (match_operand:VDQ 2 "s_register_operand" "w")))]
   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -484,7 +483,7 @@  (define_insn "adddi3_neon"
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "neon_type" "neon_int_1,*,*,neon_int_1,*,*,*")
+  [(set_attr "type" "neon_int_1,*,*,neon_int_1,*,*,*")
    (set_attr "conds" "*,clob,clob,*,clob,clob,clob")
    (set_attr "length" "*,8,8,*,8,8,8")
    (set_attr "arch" "neon_for_64bits,*,*,avoid_neon_for_64bits,*,*,*")]
@@ -496,7 +495,7 @@  (define_insn "*sub<mode>3_neon"
                    (match_operand:VDQ 2 "s_register_operand" "w")))]
   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -521,7 +520,7 @@  (define_insn "subdi3_neon"
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "neon_type" "neon_int_2,*,*,*,neon_int_2")
+  [(set_attr "type" "neon_int_2,*,*,*,neon_int_2")
    (set_attr "conds" "*,clob,clob,clob,*")
    (set_attr "length" "*,8,8,8,*")
    (set_attr "arch" "neon_for_64bits,*,*,*,avoid_neon_for_64bits")]
@@ -533,7 +532,7 @@  (define_insn "*mul<mode>3_neon"
                   (match_operand:VDQ 2 "s_register_operand" "w")))]
   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   "vmul.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -555,7 +554,7 @@  (define_insn "mul<mode>3add<mode>_neon"
 		  (match_operand:VDQ 1 "s_register_operand" "0")))]
   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vmla_ddd")
@@ -577,7 +576,7 @@  (define_insn "mul<mode>3neg<mode>add<mod
                              (match_operand:VDQ 3 "s_register_operand" "w"))))]
   "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
   "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vmla_ddd")
@@ -604,7 +603,7 @@  (define_insn "fma<VCVTF:mode>4"
 		 (match_operand:VCVTF 3 "register_operand" "0")))]
   "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations"
   "vfma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_fp_vmla_ddd")
 		      (const_string "neon_fp_vmla_qqq")))]
@@ -617,7 +616,7 @@  (define_insn "fma<VCVTF:mode>4_intrinsic
 		 (match_operand:VCVTF 3 "register_operand" "0")))]
   "TARGET_NEON && TARGET_FMA"
   "vfma%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_fp_vmla_ddd")
 		      (const_string "neon_fp_vmla_qqq")))]
@@ -630,7 +629,7 @@  (define_insn "*fmsub<VCVTF:mode>4"
 		   (match_operand:VCVTF 3 "register_operand" "0")))]
   "TARGET_NEON && TARGET_FMA && flag_unsafe_math_optimizations"
   "vfms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_fp_vmla_ddd")
 		      (const_string "neon_fp_vmla_qqq")))]
@@ -643,7 +642,7 @@  (define_insn "fmsub<VCVTF:mode>4_intrins
 		   (match_operand:VCVTF 3 "register_operand" "0")))]
   "TARGET_NEON && TARGET_FMA"
   "vfms%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_fp_vmla_ddd")
 		      (const_string "neon_fp_vmla_qqq")))]
@@ -656,7 +655,7 @@  (define_insn "neon_vrint<NEON_VRINT:nvri
 		NEON_VRINT))]
   "TARGET_NEON && TARGET_FPU_ARMV8"
   "vrint<nvrint_variant>%?.f32\\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		(const_string "neon_fp_vadd_ddd_vabs_dd")
 		(const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -676,7 +675,7 @@  (define_insn "ior<mode>3"
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 ;; The concrete forms of the Neon immediate-logic instructions are vbic and
@@ -698,7 +697,7 @@  (define_insn "and<mode>3"
     default: gcc_unreachable ();
     }
 }
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_insn "orn<mode>3_neon"
@@ -707,7 +706,7 @@  (define_insn "orn<mode>3_neon"
 		 (match_operand:VDQ 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vorn\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 ;; TODO: investigate whether we should disable 
@@ -745,7 +744,7 @@  (define_insn_and_split "orndi3_neon"
         DONE;
       }
   }"
-  [(set_attr "neon_type" "neon_int_1,*,*,*")
+  [(set_attr "type" "neon_int_1,*,*,*")
    (set_attr "length" "*,16,8,8")
    (set_attr "arch" "any,a,t2,t2")]
 )
@@ -756,7 +755,7 @@  (define_insn "bic<mode>3_neon"
 		 (match_operand:VDQ 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vbic\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 ;; Compare to *anddi_notdi_di.
@@ -769,7 +768,7 @@  (define_insn "bicdi3_neon"
    vbic\t%P0, %P1, %P2
    #
    #"
-  [(set_attr "neon_type" "neon_int_1,*,*")
+  [(set_attr "type" "neon_int_1,*,*")
    (set_attr "length" "*,8,8")]
 )
 
@@ -779,7 +778,7 @@  (define_insn "xor<mode>3"
 		 (match_operand:VDQ 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "veor\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_insn "one_cmpl<mode>2"
@@ -787,7 +786,7 @@  (define_insn "one_cmpl<mode>2"
         (not:VDQ (match_operand:VDQ 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vmvn\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_insn "abs<mode>2"
@@ -795,7 +794,7 @@  (define_insn "abs<mode>2"
 	(abs:VDQW (match_operand:VDQW 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vabs.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -808,7 +807,7 @@  (define_insn "neg<mode>2"
 	(neg:VDQW (match_operand:VDQW 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vneg.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -861,7 +860,7 @@  (define_insn "*umin<mode>3_neon"
 		    (match_operand:VDQIW 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vmin.<V_u_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "*umax<mode>3_neon"
@@ -870,7 +869,7 @@  (define_insn "*umax<mode>3_neon"
 		    (match_operand:VDQIW 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vmax.<V_u_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "*smin<mode>3_neon"
@@ -879,7 +878,7 @@  (define_insn "*smin<mode>3_neon"
 		   (match_operand:VDQW 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vmin.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_int_5")))]
@@ -891,7 +890,7 @@  (define_insn "*smax<mode>3_neon"
 		   (match_operand:VDQW 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vmax.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_int_5")))]
@@ -917,7 +916,7 @@  (define_insn "vashl<mode>3"
         default: gcc_unreachable ();
       }
   }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_vshl_ddd")
                     (const_string "neon_shift_3")))]
@@ -933,7 +932,7 @@  (define_insn "vashr<mode>3_imm"
 					<MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode),
 					false);
   }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_vshl_ddd")
                     (const_string "neon_shift_3")))]
@@ -949,7 +948,7 @@  (define_insn "vlshr<mode>3_imm"
 					<MODE>mode, VALID_NEON_QREG_MODE (<MODE>mode),
 					false);
   }              
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_vshl_ddd")
 		      (const_string "neon_shift_3")))]
@@ -967,7 +966,7 @@  (define_insn "ashl<mode>3_signed"
 		     UNSPEC_ASHIFT_SIGNED))]
   "TARGET_NEON"
   "vshl.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_vshl_ddd")
                     (const_string "neon_shift_3")))]
@@ -983,7 +982,7 @@  (define_insn "ashl<mode>3_unsigned"
 		     UNSPEC_ASHIFT_UNSIGNED))]
   "TARGET_NEON"
   "vshl.<V_u_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_vshl_ddd")
                     (const_string "neon_shift_3")))]
@@ -1038,7 +1037,7 @@  (define_insn "neon_load_count"
   "@
    vld1.32\t{%P0[0]}, %A1
    vmov.32\t%P0[0], %1"
-  [(set_attr "neon_type" "neon_vld1_vld2_lane,neon_mcr")]
+  [(set_attr "type" "neon_vld1_vld2_lane,neon_mcr")]
 )
 
 (define_insn "ashldi3_neon_noclobber"
@@ -1051,7 +1050,7 @@  (define_insn "ashldi3_neon_noclobber"
   "@
    vshl.u64\t%P0, %P1, %2
    vshl.u64\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_vshl_ddd,neon_vshl_ddd")]
+  [(set_attr "type" "neon_vshl_ddd,neon_vshl_ddd")]
 )
 
 (define_insn_and_split "ashldi3_neon"
@@ -1113,7 +1112,7 @@  (define_insn "signed_shift_di3_neon"
 		   UNSPEC_ASHIFT_SIGNED))]
   "TARGET_NEON && reload_completed"
   "vshl.s64\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_vshl_ddd")]
+  [(set_attr "type" "neon_vshl_ddd")]
 )
 
 ; The shift amount needs to be negated for right-shifts
@@ -1124,7 +1123,7 @@  (define_insn "unsigned_shift_di3_neon"
 		   UNSPEC_ASHIFT_UNSIGNED))]
   "TARGET_NEON && reload_completed"
   "vshl.u64\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_vshl_ddd")]
+  [(set_attr "type" "neon_vshl_ddd")]
 )
 
 (define_insn "ashrdi3_neon_imm_noclobber"
@@ -1134,7 +1133,7 @@  (define_insn "ashrdi3_neon_imm_noclobber
   "TARGET_NEON && reload_completed
    && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 64"
   "vshr.s64\t%P0, %P1, %2"
-  [(set_attr "neon_type" "neon_vshl_ddd")]
+  [(set_attr "type" "neon_vshl_ddd")]
 )
 
 (define_insn "lshrdi3_neon_imm_noclobber"
@@ -1144,7 +1143,7 @@  (define_insn "lshrdi3_neon_imm_noclobber
   "TARGET_NEON && reload_completed
    && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 64"
   "vshr.u64\t%P0, %P1, %2"
-  [(set_attr "neon_type" "neon_vshl_ddd")]
+  [(set_attr "type" "neon_vshl_ddd")]
 )
 
 ;; ashrdi3_neon
@@ -1215,7 +1214,7 @@  (define_insn "widen_ssum<mode>3"
 		        (match_operand:<V_widen> 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vaddw.<V_s_elem>\t%q0, %q2, %P1"
-  [(set_attr "neon_type" "neon_int_3")]
+  [(set_attr "type" "neon_int_3")]
 )
 
 (define_insn "widen_usum<mode>3"
@@ -1225,7 +1224,7 @@  (define_insn "widen_usum<mode>3"
 		        (match_operand:<V_widen> 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vaddw.<V_u_elem>\t%q0, %q2, %P1"
-  [(set_attr "neon_type" "neon_int_3")]
+  [(set_attr "type" "neon_int_3")]
 )
 
 ;; VEXT can be used to synthesize coarse whole-vector shifts with 8-bit
@@ -1309,7 +1308,7 @@  (define_insn "quad_halves_<code>v4si"
   "TARGET_NEON"
   "<VQH_mnem>.<VQH_sign>32\t%P0, %e1, %f1"
   [(set_attr "vqh_mnem" "<VQH_mnem>")
-   (set (attr "neon_type")
+   (set (attr "type")
       (if_then_else (eq_attr "vqh_mnem" "vadd")
                     (const_string "neon_int_1") (const_string "neon_int_5")))]
 )
@@ -1324,7 +1323,7 @@  (define_insn "quad_halves_<code>v4sf"
   "TARGET_NEON && flag_unsafe_math_optimizations"
   "<VQH_mnem>.f32\t%P0, %e1, %f1"
   [(set_attr "vqh_mnem" "<VQH_mnem>")
-   (set (attr "neon_type")
+   (set (attr "type")
       (if_then_else (eq_attr "vqh_mnem" "vadd")
                     (const_string "neon_int_1") (const_string "neon_int_5")))]
 )
@@ -1341,7 +1340,7 @@  (define_insn "quad_halves_<code>v8hi"
   "TARGET_NEON"
   "<VQH_mnem>.<VQH_sign>16\t%P0, %e1, %f1"
   [(set_attr "vqh_mnem" "<VQH_mnem>")
-   (set (attr "neon_type")
+   (set (attr "type")
       (if_then_else (eq_attr "vqh_mnem" "vadd")
                     (const_string "neon_int_1") (const_string "neon_int_5")))]
 )
@@ -1362,7 +1361,7 @@  (define_insn "quad_halves_<code>v16qi"
   "TARGET_NEON"
   "<VQH_mnem>.<VQH_sign>8\t%P0, %e1, %f1"
   [(set_attr "vqh_mnem" "<VQH_mnem>")
-   (set (attr "neon_type")
+   (set (attr "type")
       (if_then_else (eq_attr "vqh_mnem" "vadd")
                     (const_string "neon_int_1") (const_string "neon_int_5")))]
 )
@@ -1423,7 +1422,7 @@  (define_insn "reduc_splus_v2di"
 		     UNSPEC_VPADD))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN"
   "vadd.i64\t%e0, %e1, %f1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 ;; NEON does not distinguish between signed and unsigned addition except on
@@ -1547,7 +1546,7 @@  (define_insn "neon_vpadd_internal<mode>"
   "TARGET_NEON"
   "vpadd.<V_if_elem>\t%P0, %P1, %P2"
   ;; Assume this schedules like vadd.
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -1563,7 +1562,7 @@  (define_insn "neon_vpsmin<mode>"
   "TARGET_NEON"
   "vpmin.<V_s_elem>\t%P0, %P1, %P2"
   ;; Assume this schedules like vmin.
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_int_5")))]
@@ -1577,7 +1576,7 @@  (define_insn "neon_vpsmax<mode>"
   "TARGET_NEON"
   "vpmax.<V_s_elem>\t%P0, %P1, %P2"
   ;; Assume this schedules like vmax.
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_int_5")))]
@@ -1591,7 +1590,7 @@  (define_insn "neon_vpumin<mode>"
   "TARGET_NEON"
   "vpmin.<V_u_elem>\t%P0, %P1, %P2"
   ;; Assume this schedules like umin.
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "neon_vpumax<mode>"
@@ -1602,7 +1601,7 @@  (define_insn "neon_vpumax<mode>"
   "TARGET_NEON"
   "vpmax.<V_u_elem>\t%P0, %P1, %P2"
   ;; Assume this schedules like umax.
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 ;; Saturating arithmetic
@@ -1619,7 +1618,7 @@  (define_insn "*ss_add<mode>_neon"
                    (match_operand:VD 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vqadd.<V_s_elem>\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "*us_add<mode>_neon"
@@ -1628,7 +1627,7 @@  (define_insn "*us_add<mode>_neon"
                    (match_operand:VD 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vqadd.<V_u_elem>\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "*ss_sub<mode>_neon"
@@ -1637,7 +1636,7 @@  (define_insn "*ss_sub<mode>_neon"
                     (match_operand:VD 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vqsub.<V_s_elem>\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "*us_sub<mode>_neon"
@@ -1646,7 +1645,7 @@  (define_insn "*us_sub<mode>_neon"
                     (match_operand:VD 2 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vqsub.<V_u_elem>\t%P0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 ;; Conditional instructions.  These are comparisons with conditional moves for
@@ -1938,7 +1937,7 @@  (define_insn "neon_vadd<mode>_unspec"
                      UNSPEC_VADD))]
   "TARGET_NEON"
   "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -1958,7 +1957,7 @@  (define_insn "neon_vaddl<mode>"
                           UNSPEC_VADDL))]
   "TARGET_NEON"
   "vaddl.%T3%#<V_sz_elem>\t%q0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_3")]
+  [(set_attr "type" "neon_int_3")]
 )
 
 (define_insn "neon_vaddw<mode>"
@@ -1969,7 +1968,7 @@  (define_insn "neon_vaddw<mode>"
                           UNSPEC_VADDW))]
   "TARGET_NEON"
   "vaddw.%T3%#<V_sz_elem>\t%q0, %q1, %P2"
-  [(set_attr "neon_type" "neon_int_2")]
+  [(set_attr "type" "neon_int_2")]
 )
 
 ; vhadd and vrhadd.
@@ -1982,7 +1981,7 @@  (define_insn "neon_vhadd<mode>"
 		      UNSPEC_VHADD))]
   "TARGET_NEON"
   "v%O3hadd.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "neon_vqadd<mode>"
@@ -1993,7 +1992,7 @@  (define_insn "neon_vqadd<mode>"
                      UNSPEC_VQADD))]
   "TARGET_NEON"
   "vqadd.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "neon_vaddhn<mode>"
@@ -2004,7 +2003,7 @@  (define_insn "neon_vaddhn<mode>"
                            UNSPEC_VADDHN))]
   "TARGET_NEON"
   "v%O3addhn.<V_if_elem>\t%P0, %q1, %q2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 ;; We cannot replace this unspec with mul<mode>3 because of the odd 
@@ -2017,7 +2016,7 @@  (define_insn "neon_vmul<mode>"
 		     UNSPEC_VMUL))]
   "TARGET_NEON"
   "vmul.%F3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2085,7 +2084,7 @@  (define_insn "neon_vmla<mode>_unspec"
 		    UNSPEC_VMLA))]
   "TARGET_NEON"
   "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vmla_ddd")
@@ -2109,7 +2108,7 @@  (define_insn "neon_vmlal<mode>"
                           UNSPEC_VMLAL))]
   "TARGET_NEON"
   "vmlal.%T4%#<V_sz_elem>\t%q0, %P2, %P3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -2142,7 +2141,7 @@  (define_insn "neon_vmls<mode>_unspec"
 		    UNSPEC_VMLS))]
   "TARGET_NEON"
   "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vmla_ddd")
@@ -2167,7 +2166,7 @@  (define_insn "neon_vmlsl<mode>"
                           UNSPEC_VMLSL))]
   "TARGET_NEON"
   "vmlsl.%T4%#<V_sz_elem>\t%q0, %P2, %P3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -2181,7 +2180,7 @@  (define_insn "neon_vqdmulh<mode>"
                       UNSPEC_VQDMULH))]
   "TARGET_NEON"
   "vq%O3dmulh.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
         (if_then_else (match_test "<Scalar_mul_8_16>")
                       (const_string "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long")
@@ -2200,7 +2199,7 @@  (define_insn "neon_vqdmlal<mode>"
                           UNSPEC_VQDMLAL))]
   "TARGET_NEON"
   "vqdmlal.<V_s_elem>\t%q0, %P2, %P3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -2215,7 +2214,7 @@  (define_insn "neon_vqdmlsl<mode>"
                           UNSPEC_VQDMLSL))]
   "TARGET_NEON"
   "vqdmlsl.<V_s_elem>\t%q0, %P2, %P3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -2229,7 +2228,7 @@  (define_insn "neon_vmull<mode>"
                           UNSPEC_VMULL))]
   "TARGET_NEON"
   "vmull.%T3%#<V_sz_elem>\t%q0, %P1, %P2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
@@ -2243,7 +2242,7 @@  (define_insn "neon_vqdmull<mode>"
                           UNSPEC_VQDMULL))]
   "TARGET_NEON"
   "vqdmull.<V_s_elem>\t%q0, %P1, %P2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
@@ -2273,7 +2272,7 @@  (define_insn "neon_vsub<mode>_unspec"
                      UNSPEC_VSUB))]
   "TARGET_NEON"
   "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2289,7 +2288,7 @@  (define_insn "neon_vsubl<mode>"
                           UNSPEC_VSUBL))]
   "TARGET_NEON"
   "vsubl.%T3%#<V_sz_elem>\t%q0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_2")]
+  [(set_attr "type" "neon_int_2")]
 )
 
 (define_insn "neon_vsubw<mode>"
@@ -2300,7 +2299,7 @@  (define_insn "neon_vsubw<mode>"
 			  UNSPEC_VSUBW))]
   "TARGET_NEON"
   "vsubw.%T3%#<V_sz_elem>\t%q0, %q1, %P2"
-  [(set_attr "neon_type" "neon_int_2")]
+  [(set_attr "type" "neon_int_2")]
 )
 
 (define_insn "neon_vqsub<mode>"
@@ -2311,7 +2310,7 @@  (define_insn "neon_vqsub<mode>"
 		      UNSPEC_VQSUB))]
   "TARGET_NEON"
   "vqsub.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "neon_vhsub<mode>"
@@ -2322,7 +2321,7 @@  (define_insn "neon_vhsub<mode>"
 		      UNSPEC_VHSUB))]
   "TARGET_NEON"
   "vhsub.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "neon_vsubhn<mode>"
@@ -2333,7 +2332,7 @@  (define_insn "neon_vsubhn<mode>"
                            UNSPEC_VSUBHN))]
   "TARGET_NEON"
   "v%O3subhn.<V_if_elem>\t%P0, %q1, %q2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "neon_vceq<mode>"
@@ -2347,7 +2346,7 @@  (define_insn "neon_vceq<mode>"
   "@
   vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
   vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, #0"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2366,7 +2365,7 @@  (define_insn "neon_vcge<mode>"
   "@
   vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
   vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (if_then_else (match_test "<Is_d_reg>")
                                  (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2383,7 +2382,7 @@  (define_insn "neon_vcgeu<mode>"
           UNSPEC_VCGEU))]
   "TARGET_NEON"
   "vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "neon_vcgt<mode>"
@@ -2397,7 +2396,7 @@  (define_insn "neon_vcgt<mode>"
   "@
   vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
   vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (if_then_else (match_test "<Is_d_reg>")
                                  (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2414,7 +2413,7 @@  (define_insn "neon_vcgtu<mode>"
           UNSPEC_VCGTU))]
   "TARGET_NEON"
   "vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 ;; VCLE and VCLT only support comparisons with immediate zero (register
@@ -2429,7 +2428,7 @@  (define_insn "neon_vcle<mode>"
           UNSPEC_VCLE))]
   "TARGET_NEON"
   "vcle.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2446,7 +2445,7 @@  (define_insn "neon_vclt<mode>"
           UNSPEC_VCLT))]
   "TARGET_NEON"
   "vclt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_float_mode>")
                     (if_then_else (match_test "<Is_d_reg>")
                                   (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2462,7 +2461,7 @@  (define_insn "neon_vcage<mode>"
                                UNSPEC_VCAGE))]
   "TARGET_NEON"
   "vacge.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -2476,7 +2475,7 @@  (define_insn "neon_vcagt<mode>"
                                UNSPEC_VCAGT))]
   "TARGET_NEON"
   "vacgt.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -2490,7 +2489,7 @@  (define_insn "neon_vtst<mode>"
 		      UNSPEC_VTST))]
   "TARGET_NEON"
   "vtst.<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set_attr "neon_type" "neon_int_4")]
+  [(set_attr "type" "neon_int_4")]
 )
 
 (define_insn "neon_vabd<mode>"
@@ -2501,7 +2500,7 @@  (define_insn "neon_vabd<mode>"
 		     UNSPEC_VABD))]
   "TARGET_NEON"
   "vabd.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (if_then_else (match_test "<Is_d_reg>")
                                  (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2517,7 +2516,7 @@  (define_insn "neon_vabdl<mode>"
                           UNSPEC_VABDL))]
   "TARGET_NEON"
   "vabdl.%T3%#<V_sz_elem>\t%q0, %P1, %P2"
-  [(set_attr "neon_type" "neon_int_5")]
+  [(set_attr "type" "neon_int_5")]
 )
 
 (define_insn "neon_vaba<mode>"
@@ -2529,7 +2528,7 @@  (define_insn "neon_vaba<mode>"
 		    (match_operand:VDQIW 1 "s_register_operand" "0")))]
   "TARGET_NEON"
   "vaba.%T4%#<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_vaba") (const_string "neon_vaba_qqq")))]
 )
@@ -2543,7 +2542,7 @@  (define_insn "neon_vabal<mode>"
 			 (match_operand:<V_widen> 1 "s_register_operand" "0")))]
   "TARGET_NEON"
   "vabal.%T4%#<V_sz_elem>\t%q0, %P2, %P3"
-  [(set_attr "neon_type" "neon_vaba")]
+  [(set_attr "type" "neon_vaba")]
 )
 
 (define_insn "neon_vmax<mode>"
@@ -2554,7 +2553,7 @@  (define_insn "neon_vmax<mode>"
                      UNSPEC_VMAX))]
   "TARGET_NEON"
   "vmax.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
     (if_then_else (match_test "<Is_float_mode>")
                   (if_then_else (match_test "<Is_d_reg>")
                                 (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2570,7 +2569,7 @@  (define_insn "neon_vmin<mode>"
                      UNSPEC_VMIN))]
   "TARGET_NEON"
   "vmin.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
     (if_then_else (match_test "<Is_float_mode>")
                   (if_then_else (match_test "<Is_d_reg>")
                                 (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -2598,7 +2597,7 @@  (define_insn "neon_vpaddl<mode>"
   "TARGET_NEON"
   "vpaddl.%T2%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
   ;; Assume this schedules like vaddl.
-  [(set_attr "neon_type" "neon_int_3")]
+  [(set_attr "type" "neon_int_3")]
 )
 
 (define_insn "neon_vpadal<mode>"
@@ -2610,7 +2609,7 @@  (define_insn "neon_vpadal<mode>"
   "TARGET_NEON"
   "vpadal.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
   ;; Assume this schedules like vpadd.
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_insn "neon_vpmax<mode>"
@@ -2622,7 +2621,7 @@  (define_insn "neon_vpmax<mode>"
   "TARGET_NEON"
   "vpmax.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   ;; Assume this schedules like vmax.
-  [(set (attr "neon_type")
+  [(set (attr "type")
     (if_then_else (match_test "<Is_float_mode>")
                   (const_string "neon_fp_vadd_ddd_vabs_dd")
                   (const_string "neon_int_5")))]
@@ -2637,7 +2636,7 @@  (define_insn "neon_vpmin<mode>"
   "TARGET_NEON"
   "vpmin.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
   ;; Assume this schedules like vmin.
-  [(set (attr "neon_type")
+  [(set (attr "type")
     (if_then_else (match_test "<Is_float_mode>")
                   (const_string "neon_fp_vadd_ddd_vabs_dd")
                   (const_string "neon_int_5")))]
@@ -2651,7 +2650,7 @@  (define_insn "neon_vrecps<mode>"
                       UNSPEC_VRECPS))]
   "TARGET_NEON"
   "vrecps.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_fp_vrecps_vrsqrts_ddd")
                     (const_string "neon_fp_vrecps_vrsqrts_qqq")))]
@@ -2665,7 +2664,7 @@  (define_insn "neon_vrsqrts<mode>"
                       UNSPEC_VRSQRTS))]
   "TARGET_NEON"
   "vrsqrts.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_fp_vrecps_vrsqrts_ddd")
                     (const_string "neon_fp_vrecps_vrsqrts_qqq")))]
@@ -2688,7 +2687,7 @@  (define_insn "neon_vqabs<mode>"
 		      UNSPEC_VQABS))]
   "TARGET_NEON"
   "vqabs.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_vqneg_vqabs")]
+  [(set_attr "type" "neon_vqneg_vqabs")]
 )
 
 (define_expand "neon_vneg<mode>"
@@ -2708,7 +2707,7 @@  (define_insn "neon_vqneg<mode>"
 		      UNSPEC_VQNEG))]
   "TARGET_NEON"
   "vqneg.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_vqneg_vqabs")]
+  [(set_attr "type" "neon_vqneg_vqabs")]
 )
 
 (define_insn "neon_vcls<mode>"
@@ -2718,7 +2717,7 @@  (define_insn "neon_vcls<mode>"
 		      UNSPEC_VCLS))]
   "TARGET_NEON"
   "vcls.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_insn "clz<mode>2"
@@ -2726,7 +2725,7 @@  (define_insn "clz<mode>2"
         (clz:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vclz.<V_if_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_expand "neon_vclz<mode>"
@@ -2744,7 +2743,7 @@  (define_insn "popcount<mode>2"
         (popcount:VE (match_operand:VE 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vcnt.<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_expand "neon_vcnt<mode>"
@@ -2764,7 +2763,7 @@  (define_insn "neon_vrecpe<mode>"
                     UNSPEC_VRECPE))]
   "TARGET_NEON"
   "vrecpe.<V_u_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -2777,7 +2776,7 @@  (define_insn "neon_vrsqrte<mode>"
                     UNSPEC_VRSQRTE))]
   "TARGET_NEON"
   "vrsqrte.<V_u_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_fp_vadd_ddd_vabs_dd")
                     (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -2809,7 +2808,7 @@  (define_insn "neon_vget_lane<mode>_sext_
     }
   return "vmov.s<V_sz_elem>\t%0, %P1[%c2]";
 }
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vget_lane<mode>_zext_internal"
@@ -2828,7 +2827,7 @@  (define_insn "neon_vget_lane<mode>_zext_
     }
   return "vmov.u<V_sz_elem>\t%0, %P1[%c2]";
 }
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vget_lane<mode>_sext_internal"
@@ -2855,7 +2854,7 @@  (define_insn "neon_vget_lane<mode>_sext_
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vget_lane<mode>_zext_internal"
@@ -2882,7 +2881,7 @@  (define_insn "neon_vget_lane<mode>_zext_
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_expand "neon_vget_lane<mode>"
@@ -3015,7 +3014,7 @@  (define_insn "neon_vdup_n<mode>"
   "TARGET_NEON"
   "vdup.<V_sz_elem>\t%<V_reg>0, %1"
   ;; Assume this schedules like vmov.
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vdup_n<mode>"
@@ -3026,7 +3025,7 @@  (define_insn "neon_vdup_n<mode>"
   vdup.<V_sz_elem>\t%<V_reg>0, %1
   vdup.<V_sz_elem>\t%<V_reg>0, %y1"
   ;; Assume this schedules like vmov.
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_expand "neon_vdup_ndi"
@@ -3047,7 +3046,7 @@  (define_insn "neon_vdup_nv2di"
   vmov\t%e0, %Q1, %R1\;vmov\t%f0, %Q1, %R1
   vmov\t%e0, %P1\;vmov\t%f0, %P1"
   [(set_attr "length" "8")
-   (set_attr "neon_type" "neon_bp_simple")]
+   (set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vdup_lane<mode>_internal"
@@ -3070,7 +3069,7 @@  (define_insn "neon_vdup_lane<mode>_inter
     return "vdup.<V_sz_elem>\t%q0, %P1[%c2]";
 }
   ;; Assume this schedules like vmov.
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_expand "neon_vdup_lane<mode>"
@@ -3125,7 +3124,7 @@  (define_insn "*neon_vswp<mode>"
    (set (match_dup 1) (match_dup 0))]
   "TARGET_NEON && reload_completed"
   "vswp\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
 	(if_then_else (match_test "<Is_d_reg>")
 		      (const_string "neon_bp_simple")
 		      (const_string "neon_bp_2cycle")))]
@@ -3179,7 +3178,7 @@  (define_insn "float<mode><V_cvtto>2"
         (float:<V_CVTTO> (match_operand:VCVTI 1 "s_register_operand" "w")))]
   "TARGET_NEON && !flag_rounding_math"
   "vcvt.f32.s32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3190,7 +3189,7 @@  (define_insn "floatuns<mode><V_cvtto>2"
         (unsigned_float:<V_CVTTO> (match_operand:VCVTI 1 "s_register_operand" "w")))] 
   "TARGET_NEON && !flag_rounding_math"
   "vcvt.f32.u32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3201,7 +3200,7 @@  (define_insn "fix_trunc<mode><V_cvtto>2"
         (fix:<V_CVTTO> (match_operand:VCVTF 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vcvt.s32.f32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3212,7 +3211,7 @@  (define_insn "fixuns_trunc<mode><V_cvtto
         (unsigned_fix:<V_CVTTO> (match_operand:VCVTF 1 "s_register_operand" "w")))]
   "TARGET_NEON"
   "vcvt.u32.f32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3225,7 +3224,7 @@  (define_insn "neon_vcvt<mode>"
 			  UNSPEC_VCVT))]
   "TARGET_NEON"
   "vcvt.%T2%#32.f32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3238,7 +3237,7 @@  (define_insn "neon_vcvt<mode>"
 			  UNSPEC_VCVT))]
   "TARGET_NEON"
   "vcvt.f32.%T2%#32\t%<V_reg>0, %<V_reg>1"
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3250,7 +3249,7 @@  (define_insn "neon_vcvtv4sfv4hf"
 			  UNSPEC_VCVT))]
   "TARGET_NEON && TARGET_FP16"
   "vcvt.f32.f16\t%q0, %P1"
-  [(set_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd")]
+  [(set_attr "type" "neon_fp_vadd_ddd_vabs_dd")]
 )
 
 (define_insn "neon_vcvtv4hfv4sf"
@@ -3259,7 +3258,7 @@  (define_insn "neon_vcvtv4hfv4sf"
 			  UNSPEC_VCVT))]
   "TARGET_NEON && TARGET_FP16"
   "vcvt.f16.f32\t%P0, %q1"
-  [(set_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd")]
+  [(set_attr "type" "neon_fp_vadd_ddd_vabs_dd")]
 )
 
 (define_insn "neon_vcvt_n<mode>"
@@ -3273,7 +3272,7 @@  (define_insn "neon_vcvt_n<mode>"
   neon_const_bounds (operands[2], 1, 33);
   return "vcvt.%T3%#32.f32\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3290,7 +3289,7 @@  (define_insn "neon_vcvt_n<mode>"
   neon_const_bounds (operands[2], 1, 33);
   return "vcvt.f32.%T3%#32\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_d_reg>")
                    (const_string "neon_fp_vadd_ddd_vabs_dd")
                    (const_string "neon_fp_vadd_qqq_vabs_qq")))]
@@ -3303,7 +3302,7 @@  (define_insn "neon_vmovn<mode>"
                            UNSPEC_VMOVN))]
   "TARGET_NEON"
   "vmovn.<V_if_elem>\t%P0, %q1"
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vqmovn<mode>"
@@ -3313,7 +3312,7 @@  (define_insn "neon_vqmovn<mode>"
                            UNSPEC_VQMOVN))]
   "TARGET_NEON"
   "vqmovn.%T2%#<V_sz_elem>\t%P0, %q1"
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vqmovun<mode>"
@@ -3323,7 +3322,7 @@  (define_insn "neon_vqmovun<mode>"
                            UNSPEC_VQMOVUN))]
   "TARGET_NEON"
   "vqmovun.<V_s_elem>\t%P0, %q1"
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vmovl<mode>"
@@ -3333,7 +3332,7 @@  (define_insn "neon_vmovl<mode>"
                           UNSPEC_VMOVL))]
   "TARGET_NEON"
   "vmovl.%T2%#<V_sz_elem>\t%q0, %P1"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vmul_lane<mode>"
@@ -3349,7 +3348,7 @@  (define_insn "neon_vmul_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmul.<V_if_elem>\t%P0, %P1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmul_ddd")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3370,7 +3369,7 @@  (define_insn "neon_vmul_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<V_HALF>mode));
   return "vmul.<V_if_elem>\t%q0, %q1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmul_qqd")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3391,7 +3390,7 @@  (define_insn "neon_vmull_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmull.%T4%#<V_sz_elem>\t%q0, %P1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_ddd_16_scalar_32_16_long_scalar")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
@@ -3410,7 +3409,7 @@  (define_insn "neon_vqdmull_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vqdmull.<V_s_elem>\t%q0, %P1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_ddd_16_scalar_32_16_long_scalar")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
@@ -3429,7 +3428,7 @@  (define_insn "neon_vqdmulh_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vq%O4dmulh.%T4%#<V_sz_elem>\t%q0, %q1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")
                    (const_string "neon_mul_qqd_32_scalar")))]
@@ -3448,7 +3447,7 @@  (define_insn "neon_vqdmulh_lane<mode>"
   neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vq%O4dmulh.%T4%#<V_sz_elem>\t%P0, %P1, %P2[%c3]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mul_ddd_16_scalar_32_16_long_scalar")
                    (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
@@ -3468,7 +3467,7 @@  (define_insn "neon_vmla_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmla.<V_if_elem>\t%P0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmla_ddd_scalar")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3490,7 +3489,7 @@  (define_insn "neon_vmla_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmla.<V_if_elem>\t%q0, %q2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmla_qqq_scalar")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3512,7 +3511,7 @@  (define_insn "neon_vmlal_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmlal.%T5%#<V_sz_elem>\t%q0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -3532,7 +3531,7 @@  (define_insn "neon_vqdmlal_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vqdmlal.<V_s_elem>\t%q0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -3552,7 +3551,7 @@  (define_insn "neon_vmls_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmls.<V_if_elem>\t%P0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmla_ddd_scalar")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3574,7 +3573,7 @@  (define_insn "neon_vmls_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmls.<V_if_elem>\t%q0, %q2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Is_float_mode>")
                    (const_string "neon_fp_vmla_qqq_scalar")
                    (if_then_else (match_test "<Scalar_mul_8_16>")
@@ -3596,7 +3595,7 @@  (define_insn "neon_vmlsl_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vmlsl.%T5%#<V_sz_elem>\t%q0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -3616,7 +3615,7 @@  (define_insn "neon_vqdmlsl_lane<mode>"
   neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vqdmlsl.<V_s_elem>\t%q0, %P2, %P3[%c4]";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
      (if_then_else (match_test "<Scalar_mul_8_16>")
                    (const_string "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")
                    (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
@@ -3844,7 +3843,7 @@  (define_insn "neon_vext<mode>"
   neon_const_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
   return "vext.<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2, %3";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_bp_simple")
                     (const_string "neon_bp_2cycle")))]
@@ -3857,7 +3856,7 @@  (define_insn "neon_vrev64<mode>"
                     UNSPEC_VREV64))]
   "TARGET_NEON"
   "vrev64.<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vrev32<mode>"
@@ -3867,7 +3866,7 @@  (define_insn "neon_vrev32<mode>"
                    UNSPEC_VREV32))]
   "TARGET_NEON"
   "vrev32.<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 (define_insn "neon_vrev16<mode>"
@@ -3877,7 +3876,7 @@  (define_insn "neon_vrev16<mode>"
                    UNSPEC_VREV16))]
   "TARGET_NEON"
   "vrev16.<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_bp_simple")]
+  [(set_attr "type" "neon_bp_simple")]
 )
 
 ; vbsl_* intrinsics may compile to any of vbsl/vbif/vbit depending on register
@@ -3899,7 +3898,7 @@  (define_insn "neon_vbsl<mode>_internal"
   vbsl\t%<V_reg>0, %<V_reg>2, %<V_reg>3
   vbit\t%<V_reg>0, %<V_reg>2, %<V_reg>1
   vbif\t%<V_reg>0, %<V_reg>3, %<V_reg>1"
-  [(set_attr "neon_type" "neon_int_1")]
+  [(set_attr "type" "neon_int_1")]
 )
 
 (define_expand "neon_vbsl<mode>"
@@ -3922,7 +3921,7 @@  (define_insn "neon_vshl<mode>"
                       UNSPEC_VSHL))]
   "TARGET_NEON"
   "v%O3shl.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_vshl_ddd")
                     (const_string "neon_shift_3")))]
@@ -3936,7 +3935,7 @@  (define_insn "neon_vqshl<mode>"
                       UNSPEC_VQSHL))]
   "TARGET_NEON"
   "vq%O3shl.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_shift_2")
                     (const_string "neon_vqshl_vrshl_vqrshl_qqq")))]
@@ -3953,7 +3952,7 @@  (define_insn "neon_vshr_n<mode>"
   neon_const_bounds (operands[2], 1, neon_element_bits (<MODE>mode) + 1);
   return "v%O3shr.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vshrn_n<mode>"
@@ -3967,7 +3966,7 @@  (define_insn "neon_vshrn_n<mode>"
   neon_const_bounds (operands[2], 1, neon_element_bits (<MODE>mode) / 2 + 1);
   return "v%O3shrn.<V_if_elem>\t%P0, %q1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vqshrn_n<mode>"
@@ -3981,7 +3980,7 @@  (define_insn "neon_vqshrn_n<mode>"
   neon_const_bounds (operands[2], 1, neon_element_bits (<MODE>mode) / 2 + 1);
   return "vq%O3shrn.%T3%#<V_sz_elem>\t%P0, %q1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vqshrun_n<mode>"
@@ -3995,7 +3994,7 @@  (define_insn "neon_vqshrun_n<mode>"
   neon_const_bounds (operands[2], 1, neon_element_bits (<MODE>mode) / 2 + 1);
   return "vq%O3shrun.%T3%#<V_sz_elem>\t%P0, %q1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vshl_n<mode>"
@@ -4009,7 +4008,7 @@  (define_insn "neon_vshl_n<mode>"
   neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
   return "vshl.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vqshl_n<mode>"
@@ -4023,7 +4022,7 @@  (define_insn "neon_vqshl_n<mode>"
   neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
   return "vqshl.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vqshlu_n<mode>"
@@ -4037,7 +4036,7 @@  (define_insn "neon_vqshlu_n<mode>"
   neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
   return "vqshlu.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_2")]
+  [(set_attr "type" "neon_shift_2")]
 )
 
 (define_insn "neon_vshll_n<mode>"
@@ -4052,7 +4051,7 @@  (define_insn "neon_vshll_n<mode>"
   neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode) + 1);
   return "vshll.%T3%#<V_sz_elem>\t%q0, %P1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vsra_n<mode>"
@@ -4067,7 +4066,7 @@  (define_insn "neon_vsra_n<mode>"
   neon_const_bounds (operands[3], 1, neon_element_bits (<MODE>mode) + 1);
   return "v%O4sra.%T4%#<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %3";
 }
-  [(set_attr "neon_type" "neon_vsra_vrsra")]
+  [(set_attr "type" "neon_vsra_vrsra")]
 )
 
 (define_insn "neon_vsri_n<mode>"
@@ -4081,7 +4080,7 @@  (define_insn "neon_vsri_n<mode>"
   neon_const_bounds (operands[3], 1, neon_element_bits (<MODE>mode) + 1);
   return "vsri.<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %3";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_shift_1")
                     (const_string "neon_shift_3")))]
@@ -4098,7 +4097,7 @@  (define_insn "neon_vsli_n<mode>"
   neon_const_bounds (operands[3], 0, neon_element_bits (<MODE>mode));
   return "vsli.<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %3";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_shift_1")
                     (const_string "neon_shift_3")))]
@@ -4111,7 +4110,7 @@  (define_insn "neon_vtbl1v8qi"
                      UNSPEC_VTBL))]
   "TARGET_NEON"
   "vtbl.8\t%P0, {%P1}, %P2"
-  [(set_attr "neon_type" "neon_bp_2cycle")]
+  [(set_attr "type" "neon_bp_2cycle")]
 )
 
 (define_insn "neon_vtbl2v8qi"
@@ -4132,7 +4131,7 @@  (define_insn "neon_vtbl2v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_2cycle")]
+  [(set_attr "type" "neon_bp_2cycle")]
 )
 
 (define_insn "neon_vtbl3v8qi"
@@ -4154,7 +4153,7 @@  (define_insn "neon_vtbl3v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_3cycle")]
+  [(set_attr "type" "neon_bp_3cycle")]
 )
 
 (define_insn "neon_vtbl4v8qi"
@@ -4177,7 +4176,7 @@  (define_insn "neon_vtbl4v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_3cycle")]
+  [(set_attr "type" "neon_bp_3cycle")]
 )
 
 ;; These three are used by the vec_perm infrastructure for V16QImode.
@@ -4265,7 +4264,7 @@  (define_insn "neon_vtbx1v8qi"
                      UNSPEC_VTBX))]
   "TARGET_NEON"
   "vtbx.8\t%P0, {%P2}, %P3"
-  [(set_attr "neon_type" "neon_bp_2cycle")]
+  [(set_attr "type" "neon_bp_2cycle")]
 )
 
 (define_insn "neon_vtbx2v8qi"
@@ -4287,7 +4286,7 @@  (define_insn "neon_vtbx2v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_2cycle")]
+  [(set_attr "type" "neon_bp_2cycle")]
 )
 
 (define_insn "neon_vtbx3v8qi"
@@ -4310,7 +4309,7 @@  (define_insn "neon_vtbx3v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_3cycle")]
+  [(set_attr "type" "neon_bp_3cycle")]
 )
 
 (define_insn "neon_vtbx4v8qi"
@@ -4334,7 +4333,7 @@  (define_insn "neon_vtbx4v8qi"
 
   return "";
 }
-  [(set_attr "neon_type" "neon_bp_3cycle")]
+  [(set_attr "type" "neon_bp_3cycle")]
 )
 
 (define_expand "neon_vtrn<mode>_internal"
@@ -4360,7 +4359,7 @@  (define_insn "*neon_vtrn<mode>_insn"
                      UNSPEC_VTRN2))]
   "TARGET_NEON"
   "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_bp_simple")
                     (const_string "neon_bp_3cycle")))]
@@ -4400,7 +4399,7 @@  (define_insn "*neon_vzip<mode>_insn"
                      UNSPEC_VZIP2))]
   "TARGET_NEON"
   "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_bp_simple")
                     (const_string "neon_bp_3cycle")))]
@@ -4440,7 +4439,7 @@  (define_insn "*neon_vuzp<mode>_insn"
                      UNSPEC_VUZP2))]
   "TARGET_NEON"
   "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (match_test "<Is_d_reg>")
                     (const_string "neon_bp_simple")
                     (const_string "neon_bp_3cycle")))]
@@ -4559,7 +4558,7 @@  (define_insn "neon_vld1<mode>"
                     UNSPEC_VLD1))]
   "TARGET_NEON"
   "vld1.<V_sz_elem>\t%h0, %A1"
-  [(set_attr "neon_type" "neon_vld1_1_2_regs")]
+  [(set_attr "type" "neon_vld1_1_2_regs")]
 )
 
 (define_insn "neon_vld1_lane<mode>"
@@ -4579,7 +4578,7 @@  (define_insn "neon_vld1_lane<mode>"
   else
     return "vld1.<V_sz_elem>\t{%P0[%c3]}, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 2))
                     (const_string "neon_vld1_1_2_regs")
                     (const_string "neon_vld1_vld2_lane")))]
@@ -4610,7 +4609,7 @@  (define_insn "neon_vld1_lane<mode>"
   else
     return "vld1.<V_sz_elem>\t{%P0[%c3]}, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 2))
                     (const_string "neon_vld1_1_2_regs")
                     (const_string "neon_vld1_vld2_lane")))]
@@ -4621,7 +4620,7 @@  (define_insn "neon_vld1_dup<mode>"
         (vec_duplicate:VD (match_operand:<V_elem> 1 "neon_struct_operand" "Um")))]
   "TARGET_NEON"
   "vld1.<V_sz_elem>\t{%P0[]}, %A1"
-  [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
+  [(set_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
 )
 
 ;; Special case for DImode.  Treat it exactly like a simple load.
@@ -4640,7 +4639,7 @@  (define_insn "neon_vld1_dup<mode>"
 {
   return "vld1.<V_sz_elem>\t{%e0[], %f0[]}, %A1";
 }
-  [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
+  [(set_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
 )
 
 (define_insn_and_split "neon_vld1_dupv2di"
@@ -4657,7 +4656,7 @@  (define_insn_and_split "neon_vld1_dupv2d
     DONE;
     }
   [(set_attr "length" "8")
-   (set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
+   (set_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]
 )
 
 (define_expand "vec_store_lanes<mode><mode>"
@@ -4672,7 +4671,7 @@  (define_insn "neon_vst1<mode>"
 		     UNSPEC_VST1))]
   "TARGET_NEON"
   "vst1.<V_sz_elem>\t%h1, %A0"
-  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+  [(set_attr "type" "neon_vst1_1_2_regs_vst2_2_regs")])
 
 (define_insn "neon_vst1_lane<mode>"
   [(set (match_operand:<V_elem> 0 "neon_struct_operand" "=Um")
@@ -4691,7 +4690,7 @@  (define_insn "neon_vst1_lane<mode>"
   else
     return "vst1.<V_sz_elem>\t{%P1[%c2]}, %A0";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_mode_nunits>") (const_int 1))
                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")
                     (const_string "neon_vst1_vst2_lane")))])
@@ -4721,7 +4720,7 @@  (define_insn "neon_vst1_lane<mode>"
   else
     return "vst1.<V_sz_elem>\t{%P1[%c2]}, %A0";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+  [(set_attr "type" "neon_vst1_vst2_lane")]
 )
 
 (define_expand "vec_load_lanesti<mode>"
@@ -4743,7 +4742,7 @@  (define_insn "neon_vld2<mode>"
   else
     return "vld2.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vld1_1_2_regs")
                     (const_string "neon_vld2_2_regs_vld1_vld2_all_lanes")))]
@@ -4763,7 +4762,7 @@  (define_insn "neon_vld2<mode>"
                    UNSPEC_VLD2))]
   "TARGET_NEON"
   "vld2.<V_sz_elem>\t%h0, %A1"
-  [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")])
+  [(set_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes")])
 
 (define_insn "neon_vld2_lane<mode>"
   [(set (match_operand:TI 0 "s_register_operand" "=w")
@@ -4787,7 +4786,7 @@  (define_insn "neon_vld2_lane<mode>"
   output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, %A2", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld1_vld2_lane")]
+  [(set_attr "type" "neon_vld1_vld2_lane")]
 )
 
 (define_insn "neon_vld2_lane<mode>"
@@ -4817,7 +4816,7 @@  (define_insn "neon_vld2_lane<mode>"
   output_asm_insn ("vld2.<V_sz_elem>\t{%P0[%c3], %P1[%c3]}, %A2", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld1_vld2_lane")]
+  [(set_attr "type" "neon_vld1_vld2_lane")]
 )
 
 (define_insn "neon_vld2_dup<mode>"
@@ -4832,7 +4831,7 @@  (define_insn "neon_vld2_dup<mode>"
   else
     return "vld1.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
                     (const_string "neon_vld2_2_regs_vld1_vld2_all_lanes")
                     (const_string "neon_vld1_1_2_regs")))]
@@ -4857,7 +4856,7 @@  (define_insn "neon_vst2<mode>"
   else
     return "vst2.<V_sz_elem>\t%h1, %A0";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")
                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")))]
@@ -4877,7 +4876,7 @@  (define_insn "neon_vst2<mode>"
 		   UNSPEC_VST2))]
   "TARGET_NEON"
   "vst2.<V_sz_elem>\t%h1, %A0"
-  [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")]
+  [(set_attr "type" "neon_vst1_1_2_regs_vst2_2_regs")]
 )
 
 (define_insn "neon_vst2_lane<mode>"
@@ -4902,7 +4901,7 @@  (define_insn "neon_vst2_lane<mode>"
   output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+  [(set_attr "type" "neon_vst1_vst2_lane")]
 )
 
 (define_insn "neon_vst2_lane<mode>"
@@ -4932,7 +4931,7 @@  (define_insn "neon_vst2_lane<mode>"
   output_asm_insn ("vst2.<V_sz_elem>\t{%P1[%c3], %P2[%c3]}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst1_vst2_lane")]
+  [(set_attr "type" "neon_vst1_vst2_lane")]
 )
 
 (define_expand "vec_load_lanesei<mode>"
@@ -4954,7 +4953,7 @@  (define_insn "neon_vld3<mode>"
   else
     return "vld3.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vld1_1_2_regs")
                     (const_string "neon_vld3_vld4")))]
@@ -5001,7 +5000,7 @@  (define_insn "neon_vld3qa<mode>"
   output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, %A3", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4")]
+  [(set_attr "type" "neon_vld3_vld4")]
 )
 
 (define_insn "neon_vld3qb<mode>"
@@ -5021,7 +5020,7 @@  (define_insn "neon_vld3qb<mode>"
   output_asm_insn ("vld3.<V_sz_elem>\t{%P0, %P1, %P2}, %A3", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4")]
+  [(set_attr "type" "neon_vld3_vld4")]
 )
 
 (define_insn "neon_vld3_lane<mode>"
@@ -5048,7 +5047,7 @@  (define_insn "neon_vld3_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4_lane")]
+  [(set_attr "type" "neon_vld3_vld4_lane")]
 )
 
 (define_insn "neon_vld3_lane<mode>"
@@ -5080,7 +5079,7 @@  (define_insn "neon_vld3_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4_lane")]
+  [(set_attr "type" "neon_vld3_vld4_lane")]
 )
 
 (define_insn "neon_vld3_dup<mode>"
@@ -5104,7 +5103,7 @@  (define_insn "neon_vld3_dup<mode>"
   else
     return "vld1.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
                     (const_string "neon_vld3_vld4_all_lanes")
                     (const_string "neon_vld1_1_2_regs")))])
@@ -5128,7 +5127,7 @@  (define_insn "neon_vst3<mode>"
   else
     return "vst3.<V_sz_elem>\t%h1, %A0";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")
                     (const_string "neon_vst2_4_regs_vst3_vst4")))])
@@ -5174,7 +5173,7 @@  (define_insn "neon_vst3qa<mode>"
   output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+  [(set_attr "type" "neon_vst2_4_regs_vst3_vst4")]
 )
 
 (define_insn "neon_vst3qb<mode>"
@@ -5193,7 +5192,7 @@  (define_insn "neon_vst3qb<mode>"
   output_asm_insn ("vst3.<V_sz_elem>\t{%P1, %P2, %P3}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+  [(set_attr "type" "neon_vst2_4_regs_vst3_vst4")]
 )
 
 (define_insn "neon_vst3_lane<mode>"
@@ -5220,7 +5219,7 @@  (define_insn "neon_vst3_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst3_vst4_lane")]
+  [(set_attr "type" "neon_vst3_vst4_lane")]
 )
 
 (define_insn "neon_vst3_lane<mode>"
@@ -5252,7 +5251,7 @@  (define_insn "neon_vst3_lane<mode>"
                    ops);
   return "";
 }
-[(set_attr "neon_type" "neon_vst3_vst4_lane")])
+[(set_attr "type" "neon_vst3_vst4_lane")])
 
 (define_expand "vec_load_lanesoi<mode>"
   [(set (match_operand:OI 0 "s_register_operand")
@@ -5273,7 +5272,7 @@  (define_insn "neon_vld4<mode>"
   else
     return "vld4.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vld1_1_2_regs")
                     (const_string "neon_vld3_vld4")))]
@@ -5321,7 +5320,7 @@  (define_insn "neon_vld4qa<mode>"
   output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, %A4", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4")]
+  [(set_attr "type" "neon_vld3_vld4")]
 )
 
 (define_insn "neon_vld4qb<mode>"
@@ -5342,7 +5341,7 @@  (define_insn "neon_vld4qb<mode>"
   output_asm_insn ("vld4.<V_sz_elem>\t{%P0, %P1, %P2, %P3}, %A4", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4")]
+  [(set_attr "type" "neon_vld3_vld4")]
 )
 
 (define_insn "neon_vld4_lane<mode>"
@@ -5370,7 +5369,7 @@  (define_insn "neon_vld4_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4_lane")]
+  [(set_attr "type" "neon_vld3_vld4_lane")]
 )
 
 (define_insn "neon_vld4_lane<mode>"
@@ -5403,7 +5402,7 @@  (define_insn "neon_vld4_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vld3_vld4_lane")]
+  [(set_attr "type" "neon_vld3_vld4_lane")]
 )
 
 (define_insn "neon_vld4_dup<mode>"
@@ -5429,7 +5428,7 @@  (define_insn "neon_vld4_dup<mode>"
   else
     return "vld1.<V_sz_elem>\t%h0, %A1";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (gt (const_string "<V_mode_nunits>") (const_string "1"))
                     (const_string "neon_vld3_vld4_all_lanes")
                     (const_string "neon_vld1_1_2_regs")))]
@@ -5454,7 +5453,7 @@  (define_insn "neon_vst4<mode>"
   else
     return "vst4.<V_sz_elem>\t%h1, %A0";
 }
-  [(set (attr "neon_type")
+  [(set (attr "type")
       (if_then_else (eq (const_string "<V_sz_elem>") (const_string "64"))
                     (const_string "neon_vst1_1_2_regs_vst2_2_regs")
                     (const_string "neon_vst2_4_regs_vst3_vst4")))]
@@ -5502,7 +5501,7 @@  (define_insn "neon_vst4qa<mode>"
   output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+  [(set_attr "type" "neon_vst2_4_regs_vst3_vst4")]
 )
 
 (define_insn "neon_vst4qb<mode>"
@@ -5522,7 +5521,7 @@  (define_insn "neon_vst4qb<mode>"
   output_asm_insn ("vst4.<V_sz_elem>\t{%P1, %P2, %P3, %P4}, %A0", ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst2_4_regs_vst3_vst4")]
+  [(set_attr "type" "neon_vst2_4_regs_vst3_vst4")]
 )
 
 (define_insn "neon_vst4_lane<mode>"
@@ -5550,7 +5549,7 @@  (define_insn "neon_vst4_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst3_vst4_lane")]
+  [(set_attr "type" "neon_vst3_vst4_lane")]
 )
 
 (define_insn "neon_vst4_lane<mode>"
@@ -5583,7 +5582,7 @@  (define_insn "neon_vst4_lane<mode>"
                    ops);
   return "";
 }
-  [(set_attr "neon_type" "neon_vst3_vst4_lane")]
+  [(set_attr "type" "neon_vst3_vst4_lane")]
 )
 
 (define_expand "neon_vand<mode>"
@@ -5648,7 +5647,7 @@  (define_insn "neon_vec_unpack<US>_lo_<mo
 			  (match_operand:VU 2 "vect_par_constant_low" ""))))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN"
   "vmovl.<US><V_sz_elem> %q0, %e1"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_insn "neon_vec_unpack<US>_hi_<mode>"
@@ -5658,7 +5657,7 @@  (define_insn "neon_vec_unpack<US>_hi_<mo
 			  (match_operand:VU 2 "vect_par_constant_high" ""))))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN"
   "vmovl.<US><V_sz_elem> %q0, %f1"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_unpack<US>_hi_<mode>"
@@ -5708,7 +5707,7 @@  (define_insn "neon_vec_<US>mult_lo_<mode
                            (match_dup 2)))))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN"
   "vmull.<US><V_sz_elem> %q0, %e1, %e3"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_widen_<US>mult_lo_<mode>"
@@ -5742,7 +5741,7 @@  (define_insn "neon_vec_<US>mult_hi_<mode
 			    (match_dup 2)))))]
   "TARGET_NEON && !BYTES_BIG_ENDIAN"
   "vmull.<US><V_sz_elem> %q0, %f1, %f3"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_widen_<US>mult_hi_<mode>"
@@ -5775,7 +5774,7 @@  (define_insn "neon_vec_<US>shiftl_<mode>
 {
   return "vshll.<US><V_sz_elem> %q0, %P1, %2";
 }
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_widen_<US>shiftl_lo_<mode>"
@@ -5811,7 +5810,7 @@  (define_insn "neon_unpack<US>_<mode>"
        (SE:<V_widen> (match_operand:VDI 1 "register_operand" "w")))]
  "TARGET_NEON"
  "vmovl.<US><V_sz_elem> %q0, %P1"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_unpack<US>_lo_<mode>"
@@ -5848,7 +5847,7 @@  (define_insn "neon_vec_<US>mult_<mode>"
 			   (match_operand:VDI 2 "register_operand" "w"))))]
   "TARGET_NEON"
   "vmull.<US><V_sz_elem> %q0, %P1, %P2"
-  [(set_attr "neon_type" "neon_shift_1")]
+  [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_widen_<US>mult_hi_<mode>"
@@ -5922,7 +5921,7 @@  (define_insn "vec_pack_trunc_<mode>"
 			(match_operand:VN 2 "register_operand" "w"))))]
  "TARGET_NEON && !BYTES_BIG_ENDIAN"
  "vmovn.i<V_sz_elem>\t%e0, %q1\;vmovn.i<V_sz_elem>\t%f0, %q2"
- [(set_attr "neon_type" "neon_shift_1")
+ [(set_attr "type" "neon_shift_1")
   (set_attr "length" "8")]
 )
 
@@ -5932,7 +5931,7 @@  (define_insn "neon_vec_pack_trunc_<mode>
        (truncate:<V_narrow> (match_operand:VN 1 "register_operand" "w")))]
  "TARGET_NEON && !BYTES_BIG_ENDIAN"
  "vmovn.i<V_sz_elem>\t%P0, %q1"
- [(set_attr "neon_type" "neon_shift_1")]
+ [(set_attr "type" "neon_shift_1")]
 )
 
 (define_expand "vec_pack_trunc_<mode>"
@@ -5955,7 +5954,7 @@  (define_insn "neon_vabd<mode>_2"
                            (match_operand:VDQ 2 "s_register_operand" "w"))))]
  "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  "vabd.<V_s_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
- [(set (attr "neon_type")
+ [(set (attr "type")
        (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
                      (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
                                    (const_string "neon_fp_vadd_ddd_vabs_dd")
@@ -5970,7 +5969,7 @@  (define_insn "neon_vabd<mode>_3"
                  UNSPEC_VSUB)))]
  "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
  "vabd.<V_if_elem> %<V_reg>0, %<V_reg>1, %<V_reg>2"
- [(set (attr "neon_type")
+ [(set (attr "type")
        (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
                      (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
                                    (const_string "neon_fp_vadd_ddd_vabs_dd")
diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md
index 51dbc7c37d72d71b483af70d4fbaf71a7cd36b7f..1b7db65f2282fd7aadb8664b27dc107d9159a9bb 100644
--- a/gcc/config/arm/types.md
+++ b/gcc/config/arm/types.md
@@ -39,11 +39,14 @@ 
 ; call               subroutine call.
 ; clz                count leading zeros (CLZ).
 ; extend             extend instruction (SXTB, SXTH, UXTB, UXTH).
-; f_2_r              transfer from float to core (no memory needed).
 ; f_cvt              conversion between float and integral.
 ; f_flag             transfer of co-processor flags to the CPSR.
 ; f_load[d,s]        double/single load from memory.  Used for VFP unit.
+; f_mcr              transfer arm to vfp reg.
+; f_mcrr             transfer two arm regs to vfp reg.
 ; f_minmax[d,s]      double/single floating point minimum/maximum.
+; f_mrc              transfer vfp to arm reg.
+; f_mrrc             transfer vfp to two arm regs.
 ; f_rint[d,s]        double/single floating point rount to integral.
 ; f_sel[d,s]         double/single floating byte select.
 ; f_store[d,s]       double/single store to memory.  Used for VFP unit.
@@ -77,7 +80,6 @@ 
 ; mvn_reg            inverting move instruction, register.
 ; mvn_shift          inverting move instruction, shifted operand by a constant.
 ; mvn_shift_reg      inverting move instruction, shifted operand by a register.
-; r_2_f              transfer from core to float.
 ; sdiv               signed division.
 ; shift              simple shift operation (LSL, LSR, ASR, ROR) with an
 ;                    immediate.
@@ -181,6 +183,71 @@ 
 ; wmmx_wunpckih
 ; wmmx_wunpckil
 ; wmmx_wxor
+;
+; The classification below is for NEON instructions.
+;
+; neon_bp_2cycle
+; neon_bp_3cycle
+; neon_bp_simple
+; neon_fp_vadd_ddd_vabs_dd
+; neon_fp_vadd_qqq_vabs_qq
+; neon_fp_vmla_ddd_scalar
+; neon_fp_vmla_ddd
+; neon_fp_vmla_qqq_scalar
+; neon_fp_vmla_qqq
+; neon_fp_vmul_ddd
+; neon_fp_vmul_qqd
+; neon_fp_vrecps_vrsqrts_ddd
+; neon_fp_vrecps_vrsqrts_qqq
+; neon_fp_vsum
+; neon_int_1
+; neon_int_2
+; neon_int_3
+; neon_int_4
+; neon_int_5
+; neon_ldm_2
+; neon_ldr
+; neon_mcr_2_mcrr
+; neon_mcr
+; neon_mla_ddd_16_scalar_qdd_32_16_long_scalar
+; neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long
+; neon_mla_ddd_8_16_qdd_16_8_long_32_16_long
+; neon_mla_qqq_32_qqd_32_scalar
+; neon_mla_qqq_8_16
+; neon_mrc
+; neon_mrrc
+; neon_mul_ddd_16_scalar_32_16_long_scalar
+; neon_mul_ddd_8_16_qdd_16_8_long_32_16_long
+; neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar
+; neon_mul_qqd_32_scalar
+; neon_mul_qqq_8_16_32_ddd_32
+; neon_shift_1
+; neon_shift_2
+; neon_shift_3
+; neon_stm_2
+; neon_str
+; neon_vaba_qqq
+; neon_vaba
+; neon_vld1_1_2_regs
+; neon_vld1_3_4_regs
+; neon_vld1_vld2_lane
+; neon_vld2_2_regs_vld1_vld2_all_lanes
+; neon_vld2_4_regs
+; neon_vld3_vld4_all_lanes
+; neon_vld3_vld4_lane
+; neon_vld3_vld4
+; neon_vmov
+; neon_vqneg_vqabs
+; neon_vqshl_vrshl_vqrshl_qqq
+; neon_vshl_ddd
+; neon_vsma
+; neon_vsra_vrsra
+; neon_vst1_1_2_regs_vst2_2_regs
+; neon_vst1_3_4_regs
+; neon_vst1_vst2_lane
+; neon_vst2_4_regs_vst3_vst4
+; neon_vst3_vst4_lane
+; neon_vst3_vst4
 
 (define_attr "type"
  "arlo_imm,\
@@ -192,13 +259,16 @@  (define_attr "type"
   call,\
   clz,\
   extend,\
-  f_2_r,\
   f_cvt,\
   f_flag,\
   f_loadd,\
   f_loads,\
+  f_mcr,\
+  f_mcrr,\
   f_minmaxd,\
   f_minmaxs,\
+  f_mrc,\
+  f_mrrc,\
   f_rintd,\
   f_rints,\
   f_seld,\
@@ -241,7 +311,6 @@  (define_attr "type"
   mvn_reg,\
   mvn_shift,\
   mvn_shift_reg,\
-  r_2_f,\
   sdiv,\
   shift,\
   shift_reg,\
@@ -337,8 +406,70 @@  (define_attr "type"
   wmmx_wunpckel,\
   wmmx_wunpckih,\
   wmmx_wunpckil,\
-  wmmx_wxor"
-  (const_string "arlo_reg"))
+  wmmx_wxor,\
+  neon_bp_2cycle,\
+  neon_bp_3cycle,\
+  neon_bp_simple,\
+  neon_fp_vadd_ddd_vabs_dd,\
+  neon_fp_vadd_qqq_vabs_qq,\
+  neon_fp_vmla_ddd_scalar,\
+  neon_fp_vmla_ddd,\
+  neon_fp_vmla_qqq_scalar,\
+  neon_fp_vmla_qqq,\
+  neon_fp_vmul_ddd,\
+  neon_fp_vmul_qqd,\
+  neon_fp_vrecps_vrsqrts_ddd,\
+  neon_fp_vrecps_vrsqrts_qqq,\
+  neon_fp_vsum,\
+  neon_int_1,\
+  neon_int_2,\
+  neon_int_3,\
+  neon_int_4,\
+  neon_int_5,\
+  neon_ldm_2,\
+  neon_ldr,\
+  neon_mcr_2_mcrr,\
+  neon_mcr,\
+  neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
+  neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,\
+  neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
+  neon_mla_qqq_32_qqd_32_scalar,\
+  neon_mla_qqq_8_16,\
+  neon_mrc,\
+  neon_mrrc,\
+  neon_mul_ddd_16_scalar_32_16_long_scalar,\
+  neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
+  neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,\
+  neon_mul_qqd_32_scalar,\
+  neon_mul_qqq_8_16_32_ddd_32,\
+  neon_shift_1,\
+  neon_shift_2,\
+  neon_shift_3,\
+  neon_stm_2,\
+  neon_str,\
+  neon_vaba_qqq,\
+  neon_vaba,\
+  neon_vld1_1_2_regs,\
+  neon_vld1_3_4_regs,\
+  neon_vld1_vld2_lane,\
+  neon_vld2_2_regs_vld1_vld2_all_lanes,\
+  neon_vld2_4_regs,\
+  neon_vld3_vld4_all_lanes,\
+  neon_vld3_vld4_lane,\
+  neon_vld3_vld4,\
+  neon_vmov,\
+  neon_vqneg_vqabs,\
+  neon_vqshl_vrshl_vqrshl_qqq,\
+  neon_vshl_ddd,\
+  neon_vsma,\
+  neon_vsra_vrsra,\
+  neon_vst1_1_2_regs_vst2_2_regs,\
+  neon_vst1_3_4_regs,\
+  neon_vst1_vst2_lane,\
+  neon_vst2_4_regs_vst3_vst4,\
+  neon_vst3_vst4_lane,\
+  neon_vst3_vst4"
+    (const_string "arlo_reg"))
 
 ; Is this an (integer side) multiply with a 32-bit (or smaller) result?
 (define_attr "mul32" "no,yes"
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
index ef8777a900bfdc539b3d688665d815e61873f693..ea4c1f5834f58dec855979420a8d701d8273ee53 100644
--- a/gcc/config/arm/vfp.md
+++ b/gcc/config/arm/vfp.md
@@ -53,8 +53,7 @@  (define_insn "*arm_movsi_vfp"
     }
   "
   [(set_attr "predicable" "yes")
-   (set_attr "type" "mov_reg,mov_reg,mvn_imm,mov_imm,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
-   (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
+   (set_attr "type" "mov_reg,mov_reg,mvn_imm,mov_imm,load1,store1,f_mcr,f_mrc,fcpys,f_loads,f_stores")
    (set_attr "pool_range"     "*,*,*,*,4096,*,*,*,*,1020,*")
    (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
 )
@@ -101,9 +100,8 @@  (define_insn "*thumb2_movsi_vfp"
   "
   [(set_attr "predicable" "yes")
    (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no,no,no,no,no,no")
-   (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_reg,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
+   (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_reg,load1,load1,store1,store1,f_mcr,f_mrc,fcpys,f_loads,f_stores")
    (set_attr "length" "2,4,2,4,4,4,4,4,4,4,4,4,4,4")
-   (set_attr "neon_type" "*,*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
    (set_attr "pool_range"     "*,*,*,*,*,1018,4094,*,*,*,*,*,1018,*")
    (set_attr "neg_pool_range" "*,*,*,*,*,   0,   0,*,*,*,*,*,1008,*")]
 )
@@ -146,8 +144,7 @@  (define_insn "*movdi_vfp"
       gcc_unreachable ();
     }
   "
-  [(set_attr "type" "*,*,*,*,load2,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
-   (set_attr "neon_type" "*,*,*,*,*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
+  [(set_attr "type" "*,*,*,*,load2,load2,store2,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored")
    (set (attr "length") (cond [(eq_attr "alternative" "1,4,5,6") (const_int 8)
                               (eq_attr "alternative" "2") (const_int 12)
                               (eq_attr "alternative" "3") (const_int 16)
@@ -195,8 +192,7 @@  (define_insn "*movdi_vfp_cortexa8"
       gcc_unreachable ();
     }
   "
-  [(set_attr "type" "*,*,*,*,load2,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
-   (set_attr "neon_type" "*,*,*,*,*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
+  [(set_attr "type" "*,*,*,*,load2,load2,store2,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)
@@ -264,8 +260,8 @@  (define_insn "*movhf_vfp_neon"
     }
   "
   [(set_attr "conds" "unconditional")
-   (set_attr "type" "*,*,load1,store1,fcpys,*,r_2_f,f_2_r,*")
-   (set_attr "neon_type" "neon_vld1_1_2_regs,neon_vst1_1_2_regs_vst2_2_regs,*,*,*,*,*,*,*")
+   (set_attr "type" "neon_vld1_1_2_regs,neon_vst1_1_2_regs_vst2_2_regs,\
+                     load1,store1,fcpys,*,f_mcr,f_mrc,*")
    (set_attr "length" "4,4,4,4,4,4,4,4,8")]
 )
 
@@ -315,7 +311,7 @@  (define_insn "*movhf_vfp"
     }
   "
   [(set_attr "conds" "unconditional")
-   (set_attr "type" "load1,store1,fcpys,*,r_2_f,f_2_r,*")
+   (set_attr "type" "load1,store1,fcpys,*,f_mcr,f_mrc,*")
    (set_attr "length" "4,4,4,4,4,4,8")]
 )
 
@@ -355,8 +351,7 @@  (define_insn "*movsf_vfp"
   "
   [(set_attr "predicable" "yes")
    (set_attr "type"
-     "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,mov_reg")
-   (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
+     "f_mcr,f_mrc,fconsts,f_loads,f_stores,load1,store1,fcpys,mov_reg")
    (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
    (set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")]
 )
@@ -393,8 +388,7 @@  (define_insn "*thumb2_movsf_vfp"
   [(set_attr "predicable" "yes")
    (set_attr "predicable_short_it" "no")
    (set_attr "type"
-     "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,mov_reg")
-   (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
+     "f_mcr,f_mrc,fconsts,f_loads,f_stores,load1,store1,fcpys,mov_reg")
    (set_attr "pool_range" "*,*,*,1018,*,4090,*,*,*")
    (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
 )
@@ -434,9 +428,8 @@  (define_insn "*movdf_vfp"
       }
     }
   "
-  [(set_attr "type"
-     "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
-   (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
+  [(set_attr "type" "f_mcrr,f_mrrc,fconstd,f_loadd,f_stored,\
+                     load2,store2,ffarithd,*")
    (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
 			       (eq_attr "alternative" "7")
 				(if_then_else
@@ -480,9 +473,8 @@  (define_insn "*thumb2_movdf_vfp"
       }
     }
   "
-  [(set_attr "type"
-     "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
-   (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
+  [(set_attr "type" "f_mcrr,f_mrrc,fconstd,f_loadd,\
+                     f_stored,load2,store2,ffarithd,*")
    (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
 			       (eq_attr "alternative" "7")
 				(if_then_else
@@ -517,8 +509,7 @@  (define_insn "*movsfcc_vfp"
    fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
    [(set_attr "conds" "use")
     (set_attr "length" "4,4,8,4,4,8,4,4,8")
-    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
-    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
+    (set_attr "type" "fcpys,fcpys,fcpys,f_mcr,f_mcr,f_mcr,f_mrc,f_mrc,f_mrc")]
 )
 
 (define_insn "*thumb2_movsfcc_vfp"
@@ -541,8 +532,7 @@  (define_insn "*thumb2_movsfcc_vfp"
    ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
    [(set_attr "conds" "use")
     (set_attr "length" "6,6,10,6,6,10,6,6,10")
-    (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
-    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
+    (set_attr "type" "fcpys,fcpys,fcpys,f_mcr,f_mcr,f_mcr,f_mrc,f_mrc,f_mrc")]
 )
 
 (define_insn "*movdfcc_vfp"
@@ -565,8 +555,7 @@  (define_insn "*movdfcc_vfp"
    fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
    [(set_attr "conds" "use")
     (set_attr "length" "4,4,8,4,4,8,4,4,8")
-    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
-    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
+    (set_attr "type" "ffarithd,ffarithd,ffarithd,f_mcr,f_mcr,f_mcr,f_mrrc,f_mrrc,f_mrrc")]
 )
 
 (define_insn "*thumb2_movdfcc_vfp"
@@ -589,8 +578,7 @@  (define_insn "*thumb2_movdfcc_vfp"
    ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
    [(set_attr "conds" "use")
     (set_attr "length" "6,6,10,6,6,10,6,6,10")
-    (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
-    (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
+    (set_attr "type" "ffarithd,ffarithd,ffarithd,f_mcr,f_mcr,f_mcr,f_mrrc,f_mrrc,f_mrrc")]
 )
 
 
diff --git a/gcc/config/arm/vfp11.md b/gcc/config/arm/vfp11.md
index b027fe6c3cd30c1e51fb4dbead2282d95a19e9c7..9e6ba849a718c7577006d9aad545fd26b0392107 100644
--- a/gcc/config/arm/vfp11.md
+++ b/gcc/config/arm/vfp11.md
@@ -77,12 +77,12 @@  (define_insn_reservation "vfp_fdivd" 33
 ;; Moves to/from arm regs also use the load/store pipeline.
 (define_insn_reservation "vfp_fload" 4
  (and (eq_attr "generic_vfp" "yes")
-      (eq_attr "type" "f_loads,f_loadd,r_2_f"))
+      (eq_attr "type" "f_loads,f_loadd,f_mcr,f_mcrr"))
  "vfp_ls")
 
 (define_insn_reservation "vfp_fstore" 4
  (and (eq_attr "generic_vfp" "yes")
-      (eq_attr "type" "f_stores,f_stored,f_2_r"))
+      (eq_attr "type" "f_stores,f_stored,f_mrc,f_mrrc"))
  "vfp_ls")
 
 (define_insn_reservation "vfp_to_cpsr" 4
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index c6664fa..04f76fe 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -9651,7 +9651,7 @@  Here's an example of int iterators in action, taken from the ARM port:
 		      QABSNEG))]
   "TARGET_NEON"
   "vq<absneg>.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_vqneg_vqabs")]
+  [(set_attr "type" "neon_vqneg_vqabs")]
 )
 
 @end smallexample
@@ -9666,7 +9666,7 @@  This is equivalent to:
 		      UNSPEC_VQABS))]
   "TARGET_NEON"
   "vqabs.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_vqneg_vqabs")]
+  [(set_attr "type" "neon_vqneg_vqabs")]
 )
 
 (define_insn "neon_vqneg<mode>"
@@ -9676,7 +9676,7 @@  This is equivalent to:
 		      UNSPEC_VQNEG))]
   "TARGET_NEON"
   "vqneg.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
-  [(set_attr "neon_type" "neon_vqneg_vqabs")]
+  [(set_attr "type" "neon_vqneg_vqabs")]
 )
 
 @end smallexample

--------------1.8.3-rc0--