[llvm-commits] [llvm][PATCH - REVISED][Review request] X86 Instruction scheduler for the Intel Atom

Gurd, Preston preston.gurd at intel.com
Tue Jan 17 13:29:01 PST 2012


The attached patch implements most of an instruction scheduler for the Intel Atom.

It adds an instruction itinerary to all x86 instructions, giving each a default latency of 1, using the InstrItinClass IIC_DEFAULT.

It sets specific latencies for Atom for the instructions in files X86InstrCMovSetCC.td, X86InstrArithmetic.td, X86InstrControl.td, and X86InstrShiftRotate.td. The Atom latencies for the remainder of the x86 instructions will be set in subsequent patches.

It adds a test to verify that the scheduler is working.

I realize that this patch is kind of large, but please consider that the vast majority of the changes consist only of adding an instruction itinerary class name to an instruction.

Revision: the patch also changes the scheduling preference to "Hybrid" for i386 Atom, while leaving x86_64 as ILP.

Please commit the patch if it seems acceptable.

Preston


From: Evan Cheng [mailto:evan.cheng at apple.com]
Sent: Monday, January 16, 2012 12:01 PM
To: Gurd, Preston
Cc: llvm-commits at cs.uiuc.edu
Subject: Re: [llvm-commits] [llvm][PATCH][Review request] X86 Instruction scheduler for the Intel Atom

Very nice. One question, I noticed you haven't changed the scheduling preference so x86_64 is still using ILP scheduler while i386 is using register pressure reduction scheduler. Have you tried changing the preference to latency scheduler for Atom?

Evan

On Jan 13, 2012, at 3:26 PM, Gurd, Preston wrote:


The attached patch implements most of an instruction scheduler for the Intel Atom.

It adds an instruction itinerary to all x86 instructions, giving each a default latency of 1, using the InstrItinClass IIC_DEFAULT.

It sets specific latencies for Atom for the instructions in files X86InstrCMovSetCC.td, X86InstrArithmetic.td, X86InstrControl.td, and X86InstrShiftRotate.td. The Atom latencies for the remainder of the x86 instructions will be set in subsequent patches.

It adds a test to verify that the scheduler is working.

I realize that this patch is kind of large, but please consider that the vast majority of the changes consist only of adding an instruction itinerary class name to an instruction.

--
Preston Gurd <preston.gurd at intel.com<mailto:preston.gurd at intel.com>>
  Intel Waterloo


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120117/8bc915a8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-x86-scheduler.diff
Type: application/octet-stream
Size: 160314 bytes
Desc: llvm-x86-scheduler.diff
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120117/8bc915a8/attachment.obj>


More information about the llvm-commits mailing list