Details
Diff Detail
Event Timeline
docs/MIRLangRef.rst | ||
---|---|---|
393–395 | Ugh, I never noticed the MI syntax makes a distinction between "inside" and "outside" of a bundle (I assume that notion comes from MachineInstr::isInsideBundle()). Unfortunately that notion doesn't always make sense as we can have bundles without a header. In which case the current syntax can be somewhat confusing :-( Because of this I would recommend to not talk about "instructions starting a bundle" or "being outside/inside of a bundle" to not confuse the matter even more. Maybe something like this instead: The first instruction is often a bundle header. The instructions between ``{`` and ``}`` are bundled with the first instruction. I would tweak the example a bit to be something that would actually be valid MI: BUNDLE implicit-def %r0, implicit-def %r1, implicit %r2 { %r0 = SOME_OP %r2 %r1 = ANOTHER_OP internal %0 } | |
397–404 | Did this syntax emerge by accident (I don't see what it is good for)? Should we maybe not document it? |
Go with Matthias' explanation.
docs/MIRLangRef.rst | ||
---|---|---|
393–395 | Thanks, makes more sense. | |
397–404 | We explicitly handle this case in the MIR parser, but I can't see why. Should we get rid of it? |
Ugh, I never noticed the MI syntax makes a distinction between "inside" and "outside" of a bundle (I assume that notion comes from MachineInstr::isInsideBundle()). Unfortunately that notion doesn't always make sense as we can have bundles without a header. In which case the current syntax can be somewhat confusing :-(
Because of this I would recommend to not talk about "instructions starting a bundle" or "being outside/inside of a bundle" to not confuse the matter even more. Maybe something like this instead:
I would tweak the example a bit to be something that would actually be valid MI: