<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 18, 2016, at 02:48, Dylan McKay <<a href="mailto:dylanmckay34@gmail.com" class="">dylanmckay34@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">> <span style="font-size:12.8px" class="">As far as I know, you cannot define a tablegen pattern with multiple results, and need to use C++ matching. I’m kind of surprised there are defined td nodes for these.</span><div class=""><span style="font-size:12.8px" class=""><br class=""></span></div><div class=""><span style="font-size:12.8px" class="">Yes they were added a while ago, but never used.</span></div></div></div></blockquote><div><br class=""></div>I vaguely remember some patches to add support for multiple results, but I’m not sure this was ever finished.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><span style="font-size:12.8px" class=""><br class=""></span></div><div class=""><span style="font-size:12.8px" class="">If I write a C++ matcher, will the register allocator work correctly? The multiplication instruction I'm working with always writes the result to registers `R1` and `R0`, but if that logic is in C++, how will the regallocator know?</span></div></div></div></blockquote></div><br class=""><div class="">The pattern isn’t really related to the machine instruction’s operand definition. The multiple operands will each be defs.</div><div class=""><br class=""></div><div class="">-Matt</div><div class=""><br class=""></div><div class="">-</div></body></html>