Next: Iterators, Previous: Conditional Execution, Up: Machine Desc
要克服该问题,你可以使用 define_constants 表达式。它包含了一个
“名字-值”成对向量。从定义处开始,任何出现在MD文件中的那些名字,都作为
相应的值被替换。你可以多次使用 define_constants;每次都为表格中
增加更多的常量。使用不同的值来重新定义一个常量将会产生一个错误。
回到a29k加载乘的例子,对于
(define_insn ""
[(match_parallel 0 "load_multiple_operation"
[(set (match_operand:SI 1 "gpc_reg_operand" "=r")
(match_operand:SI 2 "memory_operand" "m"))
(use (reg:SI 179))
(clobber (reg:SI 179))])]
""
"loadm 0,0,%1,%2")
你可以写成:
(define_constants [
(R_BP 177)
(R_FC 178)
(R_CR 179)
(R_Q 180)
])
(define_insn ""
[(match_parallel 0 "load_multiple_operation"
[(set (match_operand:SI 1 "gpc_reg_operand" "=r")
(match_operand:SI 2 "memory_operand" "m"))
(use (reg:SI R_CR))
(clobber (reg:SI R_CR))])]
""
"loadm 0,0,%1,%2")
使用define_constants定义的常量也在insn-codes.h头文件中作为#defines被输出。