<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div>Hello,<br></div><div><br data-mce-bogus="1"></div><div>I currently have an instruction selection pattern that looks like this :<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><blockquote><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">def : Pat<myinputop type:$v0 type:$v1,</span><br data-mce-bogus="1"></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">          (COMPNHQ</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            (ADDHQrr</span><br data-mce-bogus="1"></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">              (SLLHQSri $v0, 8),<br data-mce-bogus="1"></span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">              (SLLHQSri $v1, 8),<br data-mce-bogus="1"></span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            ),<br data-mce-bogus="1"></span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            (SLLHQSri $v0, 8),<br data-mce-bogus="1"></span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            comparison_ltu<br data-mce-bogus="1"></span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">          )>;</span></div></blockquote><div><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;">This output pattern is supposed to be a DAG: the node (SLLHQSri $v0, 8) is used two times.<br data-mce-bogus="1"></span></div><div><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;"><br data-mce-bogus="1"></span></div><div><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;">Experimentally, TableGen seems to recognize it as such (the node `(SLLHQSri $v0, 8)` will not be duplicated).<br data-mce-bogus="1"></span></div><div><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;"><br data-mce-bogus="1"></span></div><div><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;">I am wondering if there is a way to avoid having to repeat (SLLHQSri $v0, 8) in the syntax of TableGen, something like:</span><span style="font-family: arial, helvetica, sans-serif;" data-mce-style="font-family: arial, helvetica, sans-serif;"></span></div><div><blockquote><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">def : Pat<inputpattern type:$v0 type:$v1,</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">          (COMPNHQ</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            (ADDHQrr</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">              (SLLHQSri $v0, 8):$myvar,</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">              (SLLHQSri $v1, 8),</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            ),</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            $myvar,</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">            comparison_ltu</span></div><div><span style="font-family: courier new, courier, monaco, monospace, sans-serif;" data-mce-style="font-family: courier new, courier, monaco, monospace, sans-serif;">          )>;</span></div></blockquote></div><div>If I try this, I get the error "Node 'myvar' in output pattern but not input pattern".<br></div><div><br data-mce-bogus="1"></div><div>Does anyone know if there is a way to name nodes from an output pattern to produce a non-tree output DAG?<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>Do you know of any existing pattern featuring output DAG that are not trees?</div><div><br data-mce-bogus="1"></div><div>Thanks<br data-mce-bogus="1"></div><div data-marker="__SIG_PRE__"><div><br></div> <div style="font-size:9pt;font-family:'arial' , 'helvetica' , sans-serif"> <span style="color:#144444;font-size:9pt"><strong>Cyril Six</strong></span><br> <span style="color:#144444;font-size:9pt"><strong>Compiler Engineer • Kalray</strong></span><br> <span style="color:#144444;font-size:8pt">Phone: </span><br> <span style="color:#11588f;font-size:8pt"><u>csix@kalrayinc.com</u> • <a href="https://www.kalrayinc.com" style="color:#11588f" target="_blank" rel="nofollow noopener noreferrer"><u>www.kalrayinc.com</u></a></span> </div> <br> <table cellpadding="0px" border="0px"><tbody><tr><td> <div> <a href="https://www.kalrayinc.com" target="_blank" rel="nofollow noopener noreferrer"> <img src="https://www.kalrayinc.com/IMG/png/Logo_Kalray_141x39.png" alt="Kalray logo"></a> </div> </td><td> <div style="padding-left:10px;border-left:1px solid #58585a"> <span style="color:#144444;font-size:8pt;font-family:'arial' , 'helvetica' , sans-serif;display:block;line-height:120%">Intelligent Data Processing<br>From Cloud to Edge</span></div> </td></tr></tbody></table> <br>   <span style="color:#7db621;font-size:8pt;font-family:'arial' , 'helvetica' , sans-serif"><strong> Please consider the environment before printing this e-mail.</strong></span> <div> <span style="color:#144444;font-size:8pt;font-family:'arial' , 'helvetica' , sans-serif;display:block;line-height:100%">This message contains information that may be privileged or confidential and is the property of Kalray S.A. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.</span></div> <br></div></div><div id="content_out_csix_kalrayinc.com"></div></body></html>