public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* Automatically optimizing hand coded assembler
@ 2005-03-18  2:36 Keith Owens
  2005-03-18  4:45 ` David Mosberger
  2005-03-18  4:51 ` Matt Chapman
  0 siblings, 2 replies; 3+ messages in thread
From: Keith Owens @ 2005-03-18  2:36 UTC (permalink / raw)
  To: linux-ia64

The code in ia64_syscall_setup has several independent steps to
execute.  Interleaving the instructions from each step by hand to avoid
empty slots is painful, not to mention error prone.  Are there any
tools available for this task?

I envisage a tool where the user defines the instructions required for
each step separately, including the stop bits needed for ordering
within the individual step.  The resources used by each step must be
disjoint.  The user also defines sync points, where steps must start,
end or join with other steps.  The tool draws the DAG from the sync
points then runs down the DAG, picking instructions from each step to
best fill the slots.  The output is all the instructions, nicely
interleaved to give the minimum number of bundles.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Automatically optimizing hand coded assembler
  2005-03-18  2:36 Automatically optimizing hand coded assembler Keith Owens
@ 2005-03-18  4:45 ` David Mosberger
  2005-03-18  4:51 ` Matt Chapman
  1 sibling, 0 replies; 3+ messages in thread
From: David Mosberger @ 2005-03-18  4:45 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Fri, 18 Mar 2005 13:36:58 +1100, Keith Owens <kaos@sgi.com> said:

  Keith> The code in ia64_syscall_setup has several independent steps
  Keith> to execute.  Interleaving the instructions from each step by
  Keith> hand to avoid empty slots is painful, not to mention error
  Keith> prone.  Are there any tools available for this task?

  Keith> I envisage a tool where the user defines the instructions
  Keith> required for each step separately, including the stop bits
  Keith> needed for ordering within the individual step.  The
  Keith> resources used by each step must be disjoint.  The user also
  Keith> defines sync points, where steps must start, end or join with
  Keith> other steps.  The tool draws the DAG from the sync points
  Keith> then runs down the DAG, picking instructions from each step
  Keith> to best fill the slots.  The output is all the instructions,
  Keith> nicely interleaved to give the minimum number of bundles.

I suggested a project along these lines to a few students a while ago
but unfortunately nothing came out of it.  IIRC, Intel at one point
had a "visual assembler" which was doing something similar, but it was
Windows only and I don't know what became of it.

	--david

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Automatically optimizing hand coded assembler
  2005-03-18  2:36 Automatically optimizing hand coded assembler Keith Owens
  2005-03-18  4:45 ` David Mosberger
@ 2005-03-18  4:51 ` Matt Chapman
  1 sibling, 0 replies; 3+ messages in thread
From: Matt Chapman @ 2005-03-18  4:51 UTC (permalink / raw)
  To: linux-ia64

On Thu, Mar 17, 2005 at 08:45:56PM -0800, David Mosberger wrote:
> 
> I suggested a project along these lines to a few students a while ago
> but unfortunately nothing came out of it.  IIRC, Intel at one point
> had a "visual assembler" which was doing something similar, but it was
> Windows only and I don't know what became of it.

I've suggested this as a student thesis topic as well, but no-one has
taken it up :(

http://www.cse.unsw.edu.au/db/thesis/topicinfo/GH115.html

One of these days I'll probably get frustrated enough with hand-optimising
assembly code to give it a go.

Matt


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-03-18  4:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-18  2:36 Automatically optimizing hand coded assembler Keith Owens
2005-03-18  4:45 ` David Mosberger
2005-03-18  4:51 ` Matt Chapman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox