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。