Hi all,I noticed that we don't have scheduling information for the clz and rbit instructions in any of the arm pipeline
models except the Cortex-A8 one.
This patch adds those insn types to the relevant models. They're treated as simple ALU operations.
Tested arm-none-eabi. Ok for trunk? Thanks, Kyrill 2014-07-14 Kyrylo Tkachov <kyrylo.tkac...@arm.com> * config/arm/cortex-a15.md (cortex_a15_alu): Handle clz, rbit. * config/arm/cortex-a5.md (cortex_a5_alu): Likewise. * config/arm/cortex-a53.md (cortex_a53_alu): Likewise. * config/arm/cortex-a7.md (cortex_a7_alu_reg): Likewise. * config/arm/cortex-a9.md (cortex_a9_dp): Likewise. * config/arm/cortex-m4.md (cortex_m4_alu): Likewise. * config/arm/cortex-r4.md (cortex_r4_alu): Likewise.
commit 6aea17465cba2980f803bc3e8e8dbee5fded68a4 Author: Kyrylo Tkachov <kyrylo.tkac...@arm.com> Date: Thu Jul 10 10:58:14 2014 +0100 [ARM] Add clz, rbit types in pipeline descriptions diff --git a/gcc/config/arm/cortex-a15.md b/gcc/config/arm/cortex-a15.md index 28f5dc4..209d872 100644 --- a/gcc/config/arm/cortex-a15.md +++ b/gcc/config/arm/cortex-a15.md @@ -64,7 +64,7 @@ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,rev,\ + adr,bfm,clz,rbit,rev,\ shift_imm,shift_reg,\ mov_imm,mov_reg,\ mvn_imm,mvn_reg,\ diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md index eed098e..8b037ae 100644 --- a/gcc/config/arm/cortex-a5.md +++ b/gcc/config/arm/cortex-a5.md @@ -61,7 +61,7 @@ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,rev,\ + adr,bfm,clz,rbit,rev,\ shift_imm,shift_reg,\ mov_imm,mov_reg,mvn_imm,mvn_reg,\ mrs,multiple,no_insn")) diff --git a/gcc/config/arm/cortex-a53.md b/gcc/config/arm/cortex-a53.md index 72262d7..7fd7b1a 100644 --- a/gcc/config/arm/cortex-a53.md +++ b/gcc/config/arm/cortex-a53.md @@ -75,7 +75,7 @@ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,csel,rev,\ + adr,bfm,csel,clz,rbit,rev,\ shift_imm,shift_reg,\ mov_imm,mov_reg,mvn_imm,mvn_reg,\ mrs,multiple,no_insn")) diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md index 8291d7f..2613750 100644 --- a/gcc/config/arm/cortex-a7.md +++ b/gcc/config/arm/cortex-a7.md @@ -137,7 +137,7 @@ (and (eq_attr "tune" "cortexa7") (eq_attr "type" "alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - bfm,rev,\ + bfm,clz,rbit,rev,\ shift_imm,shift_reg,mov_reg,mvn_reg")) "cortex_a7_ex1") diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md index a888896..a47813d 100644 --- a/gcc/config/arm/cortex-a9.md +++ b/gcc/config/arm/cortex-a9.md @@ -83,7 +83,7 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,rev,\ + adr,bfm,clz,rbit,rev,\ shift_imm,shift_reg,\ mov_imm,mov_reg,mvn_imm,mvn_reg,\ mov_shift_reg,mov_shift,\ diff --git a/gcc/config/arm/cortex-m4.md b/gcc/config/arm/cortex-m4.md index 690ce75..7b59353 100644 --- a/gcc/config/arm/cortex-m4.md +++ b/gcc/config/arm/cortex-m4.md @@ -34,7 +34,7 @@ (ior (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,rev,\ + adr,bfm,clz,rbit,rev,\ shift_imm,shift_reg,extend,\ alu_shift_imm,alus_shift_imm,\ logic_shift_imm,logics_shift_imm,\ diff --git a/gcc/config/arm/cortex-r4.md b/gcc/config/arm/cortex-r4.md index f000124..6e420ef 100644 --- a/gcc/config/arm/cortex-r4.md +++ b/gcc/config/arm/cortex-r4.md @@ -81,7 +81,7 @@ (eq_attr "type" "alu_imm,alus_imm,logic_imm,logics_imm,\ alu_reg,alus_reg,logic_reg,logics_reg,\ adc_imm,adcs_imm,adc_reg,adcs_reg,\ - adr,bfm,rev,\ + adr,bfm,clz,rbit,rev,\ shift_imm,shift_reg,mvn_imm,mvn_reg")) "cortex_r4_alu")