Seeking suggestion
Georg-Johann Lay
avr@gjlay.de
Sun May 24 10:23:00 GMT 2009
Jamie Prescott schrieb:
> Is there a reason why something like this would not work?
>
> (define_insn "addsi3_nc"
> [(set (match_operand:SI 0 "fullreg_operand" "=r")
> (plus:SI (match_operand:SI 1 "fullreg_operand" "r")
> (match_operand:SI 2 "fullreg_or_imm_operand" "rn")))]
> ""
> "..."
> )
>
> (define_expand "addsi3"
> [(set (match_operand:SI 0 "fullreg_operand" "=r")
> (plus:SI (match_operand:SI 1 "fullreg_operand" "r")
> (match_operand:SI 2 "fullreg_or_imm_operand" "rn")))]
> ""
> {
> if (!TARGET_XXX2)
> emit_clobber(gen_rtx_REG(CCmode, CC_REGNUM));
> emit_insn(gen_addsi3_nc(operands[0], operands[1], operands[2]));
> DONE;
> }
> )
>
> That would limit to two instructions per basic insns, instead of the current three.
> Thanks,
>
> - Jamie
Maybe that works. But I would not include such stuff in one of my
machine descriptions because addsi3_nc lies: Its effect on the machine
differ from what it states algebraically in RTL. Therefore, you may get
trouble in corner cases or when instructions are
reordered/scheduled/combined/...
Georg-Johann
More information about the Gcc
mailing list