[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16.2 define_insn の例

以下は、命令パターンの実例である。68000/68020 向けである。

 
(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\"; }")

これは、汎用レジスタの値に基づいて条件コードをセットする命令である。 条件の指定がないので、RTL 記述が指定された形を持つ任意の命令が、 このパターンに従って扱われる。‘tstsi’ という名前は、 “test a SImode value”(SImode の値をテストする)という 意味で、RTL 生成パスに対して、SImode の値をテストする必要が あるときは、それを行う命令はこのパターンを使って構成せよということを 指示する。

出力制御文字列は、C コードの断片であり、どの出力テンプレートを 返すかを、オペランドの種類とコードを生成しようとしている CPU の 特定の型に基づいて選択する。

"rm"’ は、オペランド制約(constraint)である。この意味は以下で説明する。


This document was generated using texi2html 1.78.