> 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.