- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#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))"
{ return riscv_output_move (operands[0], operands[1]); }
★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() で参照される。
-★1 の部分は自動生成される recog_xxx() の実装に使われる。
これらの関数は recog() から呼び出される。
--[[gcc-8.3/gcc/recog()]]
--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]