diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-03-20 20:44:15 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-03-20 20:44:15 -0700 |
commit | 72abf941895793587f5234688e903aa7fddd9934 (patch) | |
tree | 534e52ca664a929a42d26016bc42ccd649ce7fb0 | |
parent | 742920c7bdb178d4d6e5eb5baf7f93ba9e2112b6 (diff) | |
download | gcc-72abf941895793587f5234688e903aa7fddd9934.zip gcc-72abf941895793587f5234688e903aa7fddd9934.tar.gz gcc-72abf941895793587f5234688e903aa7fddd9934.tar.bz2 |
pa.h (INSN_SETS_ARE_DELAYED): Define for the PA.
* pa.h (INSN_SETS_ARE_DELAYED): Define for the PA. Sets and
clobbers that occur in millicode insns are delayed effects.
(INSN_REFERENCES_ARE_DELAYED): Likewise but for argument references
occuring in millicode insns.
From-SVN: r3809
-rw-r--r-- | gcc/config/pa/pa.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index a4e6d890..f9381eb 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1431,6 +1431,36 @@ while (0) if (GET_CODE (INSN) == CALL_INSN \ || (GET_CODE (INSN) == JUMP_INSN && ! simplejump_p (insn))) \ LENGTH += 1; + +/* Millicode insns are actually function calls with some special + constraints on arguments and register usage. + + Millicode calls always expect their arguments in the integer argument + registers, and always return their result in %r29 (ret1). They + are expected to clobber their arguments, %r1, %r29, and %r31 and + nothing else. + + These macros tell reorg that the references to arguments and + register clobbers for millicode calls do not appear to happen + until after the millicode call. This allows reorg to put insns + which set the argument registers into the delay slot of the millicode + call -- thus they act more like traditional CALL_INSNs. + + get_attr_type will try to recognize the given insn, so make sure to + filter out things it will not accept. SEQUENCE and USE insns in + particular. */ +#define INSN_SETS_ARE_DELAYED(X) \ + ((GET_CODE (X) == INSN \ + && GET_CODE (PATTERN (X)) != SEQUENCE \ + && GET_CODE (PATTERN (X)) != USE \ + && get_attr_type (X) == TYPE_MILLI)) + +#define INSN_REFERENCES_ARE_DELAYED(X) \ + ((GET_CODE (X) == INSN \ + && GET_CODE (PATTERN (X)) != SEQUENCE \ + && GET_CODE (PATTERN (X)) != USE \ + && get_attr_type (X) == TYPE_MILLI)) + /* Control the assembler format that we output. */ |