This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Pad short functions for Atom


On Thu, Sep 16, 2010 at 2:05 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Sep 16, 2010 at 01:55:24PM -0700, H.J. Lu wrote:
>> @@ -8024,6 +8027,11 @@ ix86_code_end (void)
>>
>> ? ? ? ?xops[0] = gen_rtx_REG (Pmode, regno);
>> ? ? ? ?xops[1] = gen_rtx_MEM (Pmode, stack_pointer_rtx);
>> + ? ? ?/* Pad stack IP move with 4 instructions. ?2 NOPs count as 1
>> + ? ? ? ? instruction. ?*/
>> + ? ? ?if (TARGET_PAD_SHORT_FUNCTION)
>> + ? ? output_asm_insn ("nop; nop; nop; nop; nop; nop; nop; nop",
>> + ? ? ? ? ? ? ? ? ? ? ?xops);
>> ? ? ? ?output_asm_insn ("mov%z0\t{%1, %0|%0, %1}", xops);
>> ? ? ? ?output_asm_insn ("ret", xops);
>> ? ? ? ?final_end_function ();
>
> Doesn't the movl %esp, %ebx before ret count as one (or half) insn,
> thus wouldn't it be enough to have just 6 or 7 nops instead of 8?
>

It is

__i686.get_pc_thunk.bx:
	movl	(%esp), %ebx <<=== Take return address
	ret

Return address won't be ready in 4 cycles.

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]