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: [RFC PATCH]: Handle Pmode == SImode in stringop patterns


On Tue, Mar 6, 2012 at 10:27 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>>>>> + ? ? case '^':
>>>>>> + ? ? ? if (TARGET_64BIT && Pmode == SImode)
>>>>>> + ? ? ? ? {
>>>>>> + ? ? ? ? ? fputs ("addr32", file);
>>>>>> +#ifndef HAVE_AS_IX86_REP_LOCK_PREFIX
>>>>>> + ? ? ? ? ? if (ASSEMBLER_DIALECT == ASM_ATT)
>>>>>> + ? ? ? ? ? ? fputs ("addr32; ", file);
>>>>>> + ? ? ? ? ? else
>>>>>> +#endif
>>>>>> + ? ? ? ? ? ? fputs ("addr32 ", file);
>>>>>> + ? ? ? ? }
>>>>>
>>>>> Why do you print addr32 twice? "addr32addr32; " or "addr32addr32 ".
>>>>
>>>> Oops, please remove the first one.
>>>>
>>>
>>> It looks OK to me. ?I will test after I fix indirect jmp/call.
>>
>> FYI, addr32 prefix can't stand alone (but "addr32 rep; insn" is OK),
>> so #ifndefed part is bogus.
>>
>
> I changed it to
>
> + ?case '^':
> + ? ?if (TARGET_64BIT && Pmode == SImode)
> + ? ? ?fputs ("addr32 ", file);
> + ? ?return;
>
> and it seems to work.

Committed with slight adjustment to above code

+	case '^':
+	  if (TARGET_64BIT && Pmode != word_mode)
+	    fputs ("addr32 ", file);
+	  return;
+

2012-03-07  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.c (ix86_print_operand_punct_valid_p): Add '^'.
	(ix86_print_operand): Handle '^'.
	* config/i386/i386.md (*strmovdi_rex_1): Macroize memory operands
	using P mode iterator.  Add %^ to asm template to conditionally emit
	addr32 prefix.
	(*rep_movdi_rex64): Ditto.
	(*strsetdi_rex_1): Ditto.
	(*rep_stosdi_rex64): Ditto.
	(*strmov{si,hi,qi}_1): Add %^ to asm template to
	conditionally emit addr32 prefix.
	(*rep_mov{si,qi}): Ditto.
	(*strset{si,hi,qi}): Ditto.
	(*rep_stos{si,qi}): Ditto.
	(*cmpstrnqi_nz_1): Ditto.
	(*cmpstrnqi_1): Ditto.
	(*strlenqi_1): Ditto.

Re-tested on x86_64-pc-linux-gnu.

Uros.


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