Next: RTL Template, Previous: Patterns, Up: Machine Desc
define_insn
的例子(define_insn "tstsi" [(set (cc0) (match_operand:SI 0 "general_operand" "rm"))] "" "* { if (TARGET_68020 || ! ADDRESS_REG_P (operands[0])) return \"tstl %0\"; return \"cmpl #0,%0\"; }")
还可以写成如下形式:
(define_insn "tstsi" [(set (cc0) (match_operand:SI 0 "general_operand" "rm"))] "" { if (TARGET_68020 || ! ADDRESS_REG_P (operands[0])) return "tstl %0"; return "cmpl #0,%0"; })
这是一条根据通用操作数来设置条件代码的指令。这个模式不需要条件(条件为空字符串)
,所以任何insn,如果RTL描述的形式相符,则可以根据这个模式来处理。名字
‘tstsi’ 表示“test a SImode
value”,并且告诉了RTL生成过程,当其需要测
试这样的值时,可以使用这个模式来构造一条指令。
输出控制字符串是一部分C代码,用来根据操作数的类别和CPU的特定类型选择输出模版。
‘"rm"’ 是一个操作数constraint。后面将会解释它的含义。