> Hi Jan, Uros,
Hi,
I guess I was just lazy to figure out the size at a time of writting the
pattern.
Length is not used for anything useful at the moment, but fixing it
definitly won't hurt.

Honza
> 
> i386.md has
> 
> (define_insn "*sse_prologue_save_insn"
>   [(set (mem:BLK (plus:DI (match_operand:DI 0 "register_operand" "R")
>                           (match_operand:DI 4 "const_int_operand" "n")))
>         (unspec:BLK [(reg:DI 21)
>                      (reg:DI 22)
>                      (reg:DI 23)
>                      (reg:DI 24)
>                      (reg:DI 25)
>                      (reg:DI 26)
>                      (reg:DI 27)
>                      (reg:DI 28)] UNSPEC_SSE_PROLOGUE_SAVE))
>    (use (match_operand:DI 1 "register_operand" "r"))
>    (use (match_operand:DI 2 "const_int_operand" "i"))
>    (use (label_ref:DI (match_operand 3 "" "X")))]
>   "TARGET_64BIT
>    && INTVAL (operands[4]) + SSE_REGPARM_MAX * 16 - 16 < 128
>    && INTVAL (operands[4]) + INTVAL (operands[2]) * 16 >= -128"
> {
> ...
> }
>   [(set_attr "type" "other")
>    (set_attr "length_immediate" "0")
>    (set_attr "length_address" "0")
>    (set_attr "length" "135")
>    (set_attr "memory" "store")
>    (set_attr "modrm" "0")
>    (set_attr "mode" "DI")])
> 
> Why is the length 135? I saw
> 
>         jmp     *%rdx   # 12    *sse_prologue_save_insn [length = 135]
>         movaps  %xmm7, -15(%rax)
>         movaps  %xmm6, -31(%rax)
>         movaps  %xmm5, -47(%rax)
>         movaps  %xmm4, -63(%rax)
>         movaps  %xmm3, -79(%rax)
>         movaps  %xmm2, -95(%rax)
>         movaps  %xmm1, -111(%rax)
>         movaps  %xmm0, -127(%rax)
> 
> which is 34 bytes.
> 
> 
> H.J.

Reply via email to