Next: Substitutions, Up: Mode Iterators
(define_mode_iterator name [(mode1 "cond1") ... (moden "condn")])
这将允许后续的 .md 文件结构可以使用机器模式suffix
:
name。每个这样的结构将被扩展 n 次,一次使用
:
mode1 来替换,一次使用 :
mode2 来替换,等等。
在扩展 modei 时,每个C条件 condi 还要为真。
例如:
(define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
定义了一个新的机器模式后缀 :P
。每个使用 :P
的结构将被扩展
两次,一次由 :SI
来替换 :P
,一次由 :DI
来替换
:P
。其中 :SI
版本的只有当 Pmode == SImode
时才被应
用,:DI
版本的只有当 Pmode == DImode
时才被应用。
就像其它 .md 条件,一个空字符串被当作“总为真”。(
mode "")
也可以被缩写为 mode。例如:
(define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
意味着 :DI
扩展只有为 TARGET_64BIT
时被应用,但 :SI
扩展却没有这样的限制。
迭代器按照它们定义的顺序被应用。这在当两个迭代器用于一个结构中需要替换时 会变的很重要。参见Substitutions。