*参照元 [#w1805567]
#backlinks

*説明 [#y80cf89b]
FIXME: なにをするもの?

-とぴっく
--解説

いろいろあるので、わかったことは随時追加。


命令定義

 (define_insn "*movdi_64bit"
   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*f,*r,*f,*m")
 	(match_operand:DI 1 "move_operand"         " r,T,m,rJ,*r*J,*m,*f,*f,*f"))]
   ★1 "TARGET_64BIT
   ★1  && (register_operand (operands[0], DImode)
   ★1      || reg_or_0_operand (operands[1], DImode))"
   ★2 { return riscv_output_move (operands[0], operands[1]); }
   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fmove,fpstore")
    (set_attr "mode" "DI")])

-★1 の部分は自動生成される recog_xxx() の実装に使われる。
これらの関数は recog() から呼び出される。
--[[gcc-8.3/gcc/recog()]]
-recog は色々な箇所から使われるようだが、最初に命令を決めるのは vregs パスだと思われる。
--[[gcc-8.3/gcc/pass_instantiate_virtual_regs/execute()]]
--recog は色々な箇所から使われるようだが、最初に命令を決めるのは vregs パスだと思われる。
---[[gcc-8.3/gcc/pass_instantiate_virtual_regs/execute()]]


-★2 の部分は自動生成される output_xxx() の実装に使われる。
これらの関数ポインタ(insn_output_fn 型)は insn_data の function メンバーに格納される。
--[[gcc-8.3/gcc/insn_data(global)]]
--[[gcc-8.3/gcc/insn_output_fn]]


**参考 [#r3cd4a3b]


**関連モジュール [#z9a25074]

-
--[[gcc-8.3/]]


*コメント [#l195eed7]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS