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]

PATCH: PR target/39911: The 'z' suffix doesn't work with 16bit integer insn


On Sun, Apr 26, 2009 at 11:46 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Sun, Apr 26, 2009 at 10:00 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
>> H.J. Lu wrote:
>>>
>>> On Sat, Apr 25, 2009 at 1:15 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>>
>>>>
>>>> Hello!
>>>>
>>>> Attached patch reverts %z handling of HImode operands back to previous
>>>> (wrong) state until better fix is found. Unfortunately, integer and
>>>> x87 operators don't agree which suffix to use for integer operands.
>>>>
>>>> 2009-04-25 ?Uros Bizjak ?<ubizjak@gmail.com>
>>>>
>>>> ? ? ? PR target/39897
>>>> ? ? ? * config/i386/i386.c (print_operand) ['z']: Revert handling of
>>>> ? ? ? HImode operands.
>>>>
>>>> Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline.
>>>>
>>>>
>>>
>>> This doesn't solve the problem. You need to add the 'w' suffix for integer
>>> instructions with memory operand.
>>>
>>
>> This is how %z always worked and that is excatly the reason why I try to fix
>> this wrong behaviour.
>>
>
> I am testing a patch in
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39911
>
> Since "%z' never really worked on integer instructions, I made "%Z" for
> integer instructions only while providing backward compatibility for existing
> asm statements.
>

This is the patch with a testcase. Tested on Linux/Intel64 with both 32/64 bits.
OK for trunk?

Thanks.

-- 
H.J.
---
gcc/

2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39911
	* config/i386/i386.c (ix86_file_end): Replace "%z0" with "%Z0".
	(output_set_got): Likewise.
	(output_set_got): Likewise.
	(x86_output_mi_thunk): Likewise.
	(print_operand): Restore 'z' handling.  Make 'Z' for integer
	insntructions only.
	(output_fix_trunc): Use '%z' to output suffix of fist{,p,tp} insn.

	* config/i386/i386.md (*floathi<mode>2_i387): Use '%z' to output
	suffix of fild insn.
	(*floatsi<mode>2_vector_mixed): Ditto.
	(*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
	(*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
	(*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
	(*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.

gcc/testsuite/

2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39911
	* gcc.target/i386/pr39911.c: New.

Attachment: gcc-pr39911-2.patch
Description: Text document


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