Re: [AARCH64][Insn classification unification 3/N] ALU/shift types

2013-09-05 Thread Richard Earnshaw
On 05/09/13 10:06, James Greenhalgh wrote:
> 
> *PING*
> 
> I've rebased this patch on to current trunk, the changes between this and
> the previous version are below:
> 
>> @@ -3203,7 +3203,7 @@ (define_insn "*aarch64_ashl_sisd_or_int_
>> (set_attr "simd_type" "simd_shift_imm,simd_shift,*")
>> (set_attr "simd_mode" ",,*")
>> (set_attr "v8type" "*,*,shift")
>> -   (set_attr "type" "*,*,shift")
>> +   (set_attr "type" "*,*,shift_reg")
>> (set_attr "mode" "*,*,")]
>>  )
>>
>> @@ -3222,7 +3222,7 @@ (define_insn "*aarch64_lshr_sisd_or_int_
>> (set_attr "simd_type" "simd_shift_imm,simd_shift,*")
>> (set_attr "simd_mode" ",,*")
>> (set_attr "v8type" "*,*,shift")
>> -   (set_attr "type" "*,*,shift")
>> +   (set_attr "type" "*,*,shift_reg")
>> (set_attr "mode" "*,*,")]
>>  )
>>
>> @@ -3267,7 +3267,7 @@ (define_insn "*aarch64_ashr_sisd_or_int_
>> (set_attr "simd_type" "simd_shift_imm,simd_shift,*")
>> (set_attr "simd_mode" ",,*")
>> (set_attr "v8type" "*,*,shift")
>> -   (set_attr "type" "*,*,shift")
>> +   (set_attr "type" "*,*,shift_reg")
>> (set_attr "mode" "*,*,")]
>>  )
>>
> 
> Is this OK to commit?
> 
> Thanks
> James
> 
> -
> 2013-09-05  James Greenhalgh  
>   Sofiane Naci  
> 
>   * config/arm/types.md (define_attr "type"):
>   Expand "arlo_imm"
>   into "adr", "alu_imm", "alus_imm", "logic_imm", "logics_imm".
>   Expand "arlo_reg"
>   into "adc_reg", "adc_imm", "adcs_reg", "adcs_imm", "alu_ext",
>   "alu_reg", "alus_ext", "alus_reg", "bfm", "csel", "logic_reg",
>   "logics_reg", "rev".
>   Expand "arlo_shift"
>   into "alu_shift_imm", "alus_shift_imm", "logic_shift_imm",
>   "logics_shift_imm".
>   Expand "arlo_shift_reg"
>   into "alu_shift_reg", "alus_shift_reg", "logic_shift_reg",
>   "logics_shift_reg".
>   Expand "clz" into "clz, "rbit".
>   Rename "shift" to "shift_imm".
>   * config/arm/arm.md (define_attr "core_cycles"): Update for attribute
>   changes.
>   Update for attribute changes all occurrences of arlo_* and
>   shift* types.
>   * config/arm/arm-fixed.md: Update for attribute changes
>   all occurrences of arlo_* types.
>   * config/arm/thumb2.md: Update for attribute changes all occurrences
>   of arlo_* types.
>   * config/arm/arm.c (xscale_sched_adjust_cost):  (rtx insn, rtx
>   (cortexa7_older_only): Likewise.
>   (cortexa7_younger):  Likewise.
>   * config/arm/arm1020e.md (1020alu_op): Update for attribute changes.
>   (1020alu_shift_op): Likewise.
>   (1020alu_shift_reg_op): Likewise.
>   * config/arm/arm1026ejs.md (alu_op): Update for attribute changes.
>   (alu_shift_op): Likewise.
>   (alu_shift_reg_op): Likewise.
>   * config/arm/arm1136jfs.md (11_alu_op): Update for
>   attribute changes.
>   (11_alu_shift_op): Likewise.
>   (11_alu_shift_reg_op): Likewise.
>   * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes.
>   (9_alu_shift_reg_op): Likewise.
>   * config/arm/cortex-a15.md (cortex_a15_alu): Update for
>   attribute changes.
>   (cortex_a15_alu_shift): Likewise.
>   (cortex_a15_alu_shift_reg): Likewise.
>   * config/arm/cortex-a5.md (cortex_a5_alu): Update for
>   attribute changes.
>   (cortex_a5_alu_shift): Likewise.
>   * config/arm/cortex-a53.md
>   (cortex_a53_alu): Update for attribute changes.
>   (cortex_a53_alu_shift): Likewise.
>   * config/arm/cortex-a7.md
>   (cortex_a7_alu_imm): Update for attribute changes.
>   (cortex_a7_alu_reg): Likewise.
>   (cortex_a7_alu_shift): Likewise.
>   * config/arm/cortex-a8.md
>   (cortex_a8_alu): Update for attribute changes.
>   (cortex_a8_alu_shift): Likewise.
>   (cortex_a8_alu_shift_reg): Likewise.
>   * config/arm/cortex-a9.md
>   (cortex_a9_dp): Update for attribute changes.
>   (cortex_a9_dp_shift): Likewise.
>   * config/arm/cortex-m4.md
>   (cortex_m4_alu): Update for attribute changes.
>   * config/arm/cortex-r4.md
>   (cortex_r4_alu): Update for attribute changes.
>   (cortex_r4_mov): Likewise.
>   (cortex_r4_alu_shift_reg): Likewise.
>   * config/arm/fa526.md
>   (526_alu_op): Update for attribute changes.
>   (526_alu_shift_op): Likewise.
>   * config/arm/fa606te.md
>   (606te_alu_op): Update for attribute changes.
>   * config/arm/fa626te.md
>   (626te_alu_op): Update for attribute changes.
>   (626te_alu_shift_op): Likewise.
>   * config/arm/fa726te.md
>   (726te_alu_op): Update for attribute changes.
>   (726te_alu_shift_op): Likewise.
>   (726te_alu_shift_reg_op): Likewise.
>   * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes.
>   (mp626_alu_shift_op): Likewise.
>   * config/arm/marvell-pj4.md (pj4_alu): Update for attribute changes.
>   (pj4_alu_conds): Likewise.
>   (pj4_shift): Likewise.
>  

Re: [AARCH64][Insn classification unification 3/N] ALU/shift types

2013-08-06 Thread Richard Earnshaw
On 06/08/13 10:04, Richard Earnshaw wrote:
> On 06/08/13 09:48, James Greenhalgh wrote:
>> *Ping*
>>
>> James
>>
>> On Thu, Aug 01, 2013 at 02:50:07PM +0100, Sofiane Naci wrote:
>>> Hi,
>>>
>>> This patch is part of the ongoing work to unify instruction classification
>>> between the ARM and AARCH64 backends.
>>>
>>> This patch fine tunes the ALU/shift type attribute values in the ARM backend
>>> as detailed in the table below:
>>>
>>> Old  New
>>> --
>>> arlo_imm alu_imm, alus_imm, logic_imm, logics_imm
>>> arlo_reg adc, adcs, adr, alu_ext, alu_reg, alus_ext, alus_reg,
>>>  bfm, csel, logic_reg, logics_reg, rev.
> 
> Why arlo_reg into just adc & adcs?  Why not adc_reg and adcs_reg (with
> equivalent changes for arlo_imm?
> 
> Why is adr factored out of arlo_reg rather than arlo_imm?  adr is an add
> immediate using the PC register as a base.
> 
> Finally, please, please, please(!) generate your .md file diffs with gnu
> diff's '-F ^(define' option.  This makes it *much* easier to identify
> which pattern is being modified.
> 
> R.
> 

And another point.  Operations such as alu_ext and csel are
architecturally impossible on pre-v8 cores, so there's no need to
consider them in pre-armv8 pipeline descriptions.

R.
>>> arlo_shift   alu_shift_imm, alus_shift_imm, logic_shift_imm,
>>>  logics_shift_imm.
>>> arlo_shift_reg   alu_shift_reg, alus_shift_reg, logic_shift_reg,
>>>  logics_shift_reg.
>>> clz  clz, rbit.
>>> shiftshift_imm (rename).
>>>
>>>
>>> The changes are propagated through the AARCH64 backend, and all the pipeline
>>> descriptions in the ARM backend.
>>>
>>> OK for trunk?
>>>
>>> Thanks
>>> Sofiane
>>>
>>> -
>>>
>>> ChangeLog:
>>>
>>> * config/arm/types.md (define_attr "type"): Expand "arlo_imm" into
>>> "alu_imm", "alus_imm", "logic_imm", "logics_imm".  Expand "arlo_reg"
>>> into
>>> "adc", "adcs", "adr", "alu_ext", "alu_reg", "alus_ext", "alus_reg",
>>> "bfm", "csel", "logic_reg", "logics_reg", "rev".  Expand
>>> "arlo_shift" into
>>> "alu_shift_imm", "alus_shift_imm", "logic_shift_imm",
>>> "logics_shift_imm".
>>> Expand "arlo_shift_reg" into "alu_shift_reg", "alus_shift_reg",
>>> "logic_shift_reg", "logics_shift_reg".  Expand "clz" into "clz,
>>> "rbit".
>>> Rename "shift" to "shift_imm".
>>> * config/arm/arm.md (define_attr "core_cycles"): Update for
>>> attribute
>>> changes.
>>> Update for attribute changes all occurrences of arlo_* and shift*
>>> types.
>>> * config/arm/arm-fixed.md: Update for attribute changes all
>>> occurrences
>>> of arlo_* types.
>>> * config/arm/thumb2.md: Update for attribute changes all occurrences
>>> of arlo_* types.
>>> * config/arm/arm.c (xscale_sched_adjust_cost):  (rtx insn, rtx 
>>> (cortexa7_older_only): Likewise.
>>> (cortexa7_younger):  Likewise.
>>> * config/arm/arm1020e.md (1020alu_op): Update for attribute changes.
>>> (1020alu_shift_op): Likewise.
>>> (1020alu_shift_reg_op): Likewise.
>>> * config/arm/arm1026ejs.md (alu_op): Update for attribute changes.
>>> (alu_shift_op): Likewise.
>>> (alu_shift_reg_op): Likewise.
>>> * config/arm/arm1136jfs.md (11_alu_op): Update for attribute
>>> changes.
>>> (11_alu_shift_op): Likewise.
>>> (11_alu_shift_reg_op): Likewise.
>>> * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes.
>>> (9_alu_shift_reg_op): Likewise.
>>> * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute
>>> changes.
>>> (cortex_a15_alu_shift): Likewise.
>>> (cortex_a15_alu_shift_reg): Likewise.
>>> * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute
>>> changes.
>>> (cortex_a5_alu_shift): Likewise.
>>> * config/arm/cortex-a53.md (cortex_a53_alu): Update for attribute
>>> changes.
>>> (cortex_a53_alu_shift): Likewise.
>>> * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute
>>> changes.
>>> (cortex_a7_alu_reg): Likewise.
>>> (cortex_a7_alu_shift): Likewise.
>>> * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute
>>> changes.
>>> (cortex_a8_alu_shift): Likewise.
>>> (cortex_a8_alu_shift_reg): Likewise.
>>> * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute
>>> changes.
>>> (cortex_a9_dp_shift): Likewise.
>>> * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute
>>> changes.
>>> * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute
>>> changes.
>>> (cortex_r4_mov): Likewise.
>>> (cortex_r4_alu_shift_reg): Likewise.
>>> * config/arm/fa526.md (526_alu_op): Update for attribute changes.
>>> (526_alu_shift_op): Likewise.
>>> * config/arm/fa606te.md (606te_alu_op): Update for attribute
>>> changes.
>>> * config/arm/fa626te.md (626te_alu_op): Update for attribute
>>> changes

Re: [AARCH64][Insn classification unification 3/N] ALU/shift types

2013-08-06 Thread Richard Earnshaw
On 06/08/13 09:48, James Greenhalgh wrote:
> *Ping*
> 
> James
> 
> On Thu, Aug 01, 2013 at 02:50:07PM +0100, Sofiane Naci wrote:
>> Hi,
>>
>> This patch is part of the ongoing work to unify instruction classification
>> between the ARM and AARCH64 backends.
>>
>> This patch fine tunes the ALU/shift type attribute values in the ARM backend
>> as detailed in the table below:
>>
>> Old  New
>> --
>> arlo_imm alu_imm, alus_imm, logic_imm, logics_imm
>> arlo_reg adc, adcs, adr, alu_ext, alu_reg, alus_ext, alus_reg,
>>  bfm, csel, logic_reg, logics_reg, rev.

Why arlo_reg into just adc & adcs?  Why not adc_reg and adcs_reg (with
equivalent changes for arlo_imm?

Why is adr factored out of arlo_reg rather than arlo_imm?  adr is an add
immediate using the PC register as a base.

Finally, please, please, please(!) generate your .md file diffs with gnu
diff's '-F ^(define' option.  This makes it *much* easier to identify
which pattern is being modified.

R.

>> arlo_shift   alu_shift_imm, alus_shift_imm, logic_shift_imm,
>>  logics_shift_imm.
>> arlo_shift_reg   alu_shift_reg, alus_shift_reg, logic_shift_reg,
>>  logics_shift_reg.
>> clz  clz, rbit.
>> shiftshift_imm (rename).
>>
>>
>> The changes are propagated through the AARCH64 backend, and all the pipeline
>> descriptions in the ARM backend.
>>
>> OK for trunk?
>>
>> Thanks
>> Sofiane
>>
>> -
>>
>> ChangeLog:
>>
>>  * config/arm/types.md (define_attr "type"): Expand "arlo_imm" into
>>  "alu_imm", "alus_imm", "logic_imm", "logics_imm".  Expand "arlo_reg"
>> into
>>  "adc", "adcs", "adr", "alu_ext", "alu_reg", "alus_ext", "alus_reg",
>>  "bfm", "csel", "logic_reg", "logics_reg", "rev".  Expand
>> "arlo_shift" into
>>  "alu_shift_imm", "alus_shift_imm", "logic_shift_imm",
>> "logics_shift_imm".
>>  Expand "arlo_shift_reg" into "alu_shift_reg", "alus_shift_reg",
>>  "logic_shift_reg", "logics_shift_reg".  Expand "clz" into "clz,
>> "rbit".
>>  Rename "shift" to "shift_imm".
>>  * config/arm/arm.md (define_attr "core_cycles"): Update for
>> attribute
>>  changes.
>>  Update for attribute changes all occurrences of arlo_* and shift*
>> types.
>>  * config/arm/arm-fixed.md: Update for attribute changes all
>> occurrences
>>  of arlo_* types.
>>  * config/arm/thumb2.md: Update for attribute changes all occurrences
>>  of arlo_* types.
>>  * config/arm/arm.c (xscale_sched_adjust_cost):  (rtx insn, rtx 
>>  (cortexa7_older_only): Likewise.
>>  (cortexa7_younger):  Likewise.
>>  * config/arm/arm1020e.md (1020alu_op): Update for attribute changes.
>>  (1020alu_shift_op): Likewise.
>>  (1020alu_shift_reg_op): Likewise.
>>  * config/arm/arm1026ejs.md (alu_op): Update for attribute changes.
>>  (alu_shift_op): Likewise.
>>  (alu_shift_reg_op): Likewise.
>>  * config/arm/arm1136jfs.md (11_alu_op): Update for attribute
>> changes.
>>  (11_alu_shift_op): Likewise.
>>  (11_alu_shift_reg_op): Likewise.
>>  * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes.
>>  (9_alu_shift_reg_op): Likewise.
>>  * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute
>> changes.
>>  (cortex_a15_alu_shift): Likewise.
>>  (cortex_a15_alu_shift_reg): Likewise.
>>  * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute
>> changes.
>>  (cortex_a5_alu_shift): Likewise.
>>  * config/arm/cortex-a53.md (cortex_a53_alu): Update for attribute
>> changes.
>>  (cortex_a53_alu_shift): Likewise.
>>  * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute
>>  changes.
>>  (cortex_a7_alu_reg): Likewise.
>>  (cortex_a7_alu_shift): Likewise.
>>  * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute
>> changes.
>>  (cortex_a8_alu_shift): Likewise.
>>  (cortex_a8_alu_shift_reg): Likewise.
>>  * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute
>> changes.
>>  (cortex_a9_dp_shift): Likewise.
>>  * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute
>> changes.
>>  * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute
>> changes.
>>  (cortex_r4_mov): Likewise.
>>  (cortex_r4_alu_shift_reg): Likewise.
>>  * config/arm/fa526.md (526_alu_op): Update for attribute changes.
>>  (526_alu_shift_op): Likewise.
>>  * config/arm/fa606te.md (606te_alu_op): Update for attribute
>> changes.
>>  * config/arm/fa626te.md (626te_alu_op): Update for attribute
>> changes.
>>  (626te_alu_shift_op): Likewise.
>>  * config/arm/fa726te.md (726te_alu_op): Update for attribute
>> changes.
>>  (726te_alu_shift_op): Likewise.
>>  (726te_alu_shift_reg_op): Likewise.
>>  * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes.
>>  (mp626_alu_sh

Re: [AARCH64][Insn classification unification 3/N] ALU/shift types

2013-08-06 Thread James Greenhalgh
*Ping*

James

On Thu, Aug 01, 2013 at 02:50:07PM +0100, Sofiane Naci wrote:
> Hi,
> 
> This patch is part of the ongoing work to unify instruction classification
> between the ARM and AARCH64 backends.
> 
> This patch fine tunes the ALU/shift type attribute values in the ARM backend
> as detailed in the table below:
> 
> Old  New
> --
> arlo_imm alu_imm, alus_imm, logic_imm, logics_imm
> arlo_reg adc, adcs, adr, alu_ext, alu_reg, alus_ext, alus_reg,
>  bfm, csel, logic_reg, logics_reg, rev.
> arlo_shift   alu_shift_imm, alus_shift_imm, logic_shift_imm,
>  logics_shift_imm.
> arlo_shift_reg   alu_shift_reg, alus_shift_reg, logic_shift_reg,
>  logics_shift_reg.
> clz  clz, rbit.
> shiftshift_imm (rename).
> 
> 
> The changes are propagated through the AARCH64 backend, and all the pipeline
> descriptions in the ARM backend.
> 
> OK for trunk?
> 
> Thanks
> Sofiane
> 
> -
> 
> ChangeLog:
> 
>   * config/arm/types.md (define_attr "type"): Expand "arlo_imm" into
>   "alu_imm", "alus_imm", "logic_imm", "logics_imm".  Expand "arlo_reg"
> into
>   "adc", "adcs", "adr", "alu_ext", "alu_reg", "alus_ext", "alus_reg",
>   "bfm", "csel", "logic_reg", "logics_reg", "rev".  Expand
> "arlo_shift" into
>   "alu_shift_imm", "alus_shift_imm", "logic_shift_imm",
> "logics_shift_imm".
>   Expand "arlo_shift_reg" into "alu_shift_reg", "alus_shift_reg",
>   "logic_shift_reg", "logics_shift_reg".  Expand "clz" into "clz,
> "rbit".
>   Rename "shift" to "shift_imm".
>   * config/arm/arm.md (define_attr "core_cycles"): Update for
> attribute
>   changes.
>   Update for attribute changes all occurrences of arlo_* and shift*
> types.
>   * config/arm/arm-fixed.md: Update for attribute changes all
> occurrences
>   of arlo_* types.
>   * config/arm/thumb2.md: Update for attribute changes all occurrences
>   of arlo_* types.
>   * config/arm/arm.c (xscale_sched_adjust_cost):  (rtx insn, rtx 
>   (cortexa7_older_only): Likewise.
>   (cortexa7_younger):  Likewise.
>   * config/arm/arm1020e.md (1020alu_op): Update for attribute changes.
>   (1020alu_shift_op): Likewise.
>   (1020alu_shift_reg_op): Likewise.
>   * config/arm/arm1026ejs.md (alu_op): Update for attribute changes.
>   (alu_shift_op): Likewise.
>   (alu_shift_reg_op): Likewise.
>   * config/arm/arm1136jfs.md (11_alu_op): Update for attribute
> changes.
>   (11_alu_shift_op): Likewise.
>   (11_alu_shift_reg_op): Likewise.
>   * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes.
>   (9_alu_shift_reg_op): Likewise.
>   * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute
> changes.
>   (cortex_a15_alu_shift): Likewise.
>   (cortex_a15_alu_shift_reg): Likewise.
>   * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute
> changes.
>   (cortex_a5_alu_shift): Likewise.
>   * config/arm/cortex-a53.md (cortex_a53_alu): Update for attribute
> changes.
>   (cortex_a53_alu_shift): Likewise.
>   * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute
>   changes.
>   (cortex_a7_alu_reg): Likewise.
>   (cortex_a7_alu_shift): Likewise.
>   * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute
> changes.
>   (cortex_a8_alu_shift): Likewise.
>   (cortex_a8_alu_shift_reg): Likewise.
>   * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute
> changes.
>   (cortex_a9_dp_shift): Likewise.
>   * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute
> changes.
>   * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute
> changes.
>   (cortex_r4_mov): Likewise.
>   (cortex_r4_alu_shift_reg): Likewise.
>   * config/arm/fa526.md (526_alu_op): Update for attribute changes.
>   (526_alu_shift_op): Likewise.
>   * config/arm/fa606te.md (606te_alu_op): Update for attribute
> changes.
>   * config/arm/fa626te.md (626te_alu_op): Update for attribute
> changes.
>   (626te_alu_shift_op): Likewise.
>   * config/arm/fa726te.md (726te_alu_op): Update for attribute
> changes.
>   (726te_alu_shift_op): Likewise.
>   (726te_alu_shift_reg_op): Likewise.
>   * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes.
>   (mp626_alu_shift_op): Likewise.
>   * config/arm/marvell-pj4.md (pj4_alu): Update for attribute changes.
>   (pj4_alu_conds): Likewise.
>   (pj4_shift): Likewise.
>   (pj4_shift_conds): Likewise.
>   (pj4_alu_shift): Likewise.
>   (pj4_alu_shift_conds): Likewise.
>   * config/aarch64/aarch64.md: Update for attribute change all
> occurrences
>   of arlo_* and shift* types.