[PATCH] xtensa: Make instruction cost estimation for size more accurate

Max Filippov jcmvbkbc@gmail.com
Wed Jan 11 05:55:38 GMT 2023


On Mon, Jan 9, 2023 at 7:34 PM Takayuki 'January June' Suwa
<jjsuwa_sys3175@yahoo.co.jp> wrote:
>
> Until now, we applied COSTS_N_INSNS() (multiplying by 4) after dividing
> the instruction length by 3, so we couldn't express the difference less
> than modulo 3 in insn cost for size (e.g. 11 Bytes and 12 bytes cost the
> same).
>
> This patch fixes that.
>
> ;; 2 bytes
> addi.n  a2, a2, -1      ; cost 3
>
> ;; 3 bytes
> addmi   a2, a2, 1024    ; cost 4
>
> ;; 4 bytes
> movi.n  a3, 80          ; cost 5
> bnez.n  a2, a3, .L4
>
> ;; 5 bytes
> srli    a2, a3, 1       ; cost 7
> add.n   a2, a2, a2
>
> ;; 6 bytes
> ssai    8               ; cost 8
> src     a4, a2, a3
>
> :: 3 + 4 bytes
> l32r    a2, .L5         ; cost 9
>
> ;; 11 bytes             ; cost 15
> ;; 12 bytes             ; cost 16
>
> gcc/ChangeLog:
>
>         * config/xtensa/xtensa.cc (xtensa_insn_cost):
>         Let insn cost for size be obtained by applying COSTS_N_INSNS()
>         to instruction length and then dividing by 3.
> ---
>  gcc/config/xtensa/xtensa.cc | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)

Regtested for target=xtensa-linux-uclibc, no new regressions.
Committed to master.

-- 
Thanks.
-- Max


More information about the Gcc-patches mailing list