Commit f3bfd09c by Dan Nicolaescu Committed by Richard Henderson

* config/sparc/sparc.md (prefetch): New.

From-SVN: r47911
parent e817125d
2001-12-11 Dan Nicolaescu <dann@ics.uci.edu>
* config/sparc/sparc.md (prefetch): New.
2001-12-11 Aldy Hernandez <aldyh@redhat.com>
* output.h (regno_uninitialized): Make argument unsigned.
......
......@@ -9224,6 +9224,37 @@
&& short_branch (INSN_UID (insn), INSN_UID (operands[2]))
&& (USING_SJLJ_EXCEPTIONS || ! can_throw_internal (insn))"
"call\\t%a0, %1\\n\\tadd\\t%%o7, (%l2-.-4), %%o7")
(define_insn "prefetch"
[(prefetch (match_operand:DI 0 "address_operand" "p")
(match_operand:DI 1 "const_int_operand" "n")
(match_operand:DI 2 "const_int_operand" "n"))]
"TARGET_V9"
{
static const char * const prefetch_instr[2][4] = {
{
"prefetch\\t[%a0], 1", /* no locality: prefetch for one read */
"prefetch\\t[%a0], 0", /* medium locality: prefetch for several reads */
"prefetch\\t[%a0], 0", /* medium locality: prefetch for several reads */
"prefetch\\t[%a0], 4", /* high locality: prefetch page */
},
{
"prefetch\\t[%a0], 3", /* no locality: prefetch for one write */
"prefetch\\t[%a0], 2", /* medium locality: prefetch for several writes */
"prefetch\\t[%a0], 2", /* medium locality: prefetch for several writes */
"prefetch\\t[%a0], 4", /* high locality: prefetch page */
}
};
int read_or_write = INTVAL (operands[1]);
int locality = INTVAL (operands[2]);
if (read_or_write != 0 && read_or_write != 1)
abort ();
if (locality < 0 || locality > 3)
abort ();
return prefetch_instr [read_or_write][locality];
}
[(set_attr "type" "load")])
(define_expand "prologue"
[(const_int 1)]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment