<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="margin:0;"><span style="font-family: Courier;">Hello,</span></div><div style="margin:0;"><span style="font-family: Courier;"><br></span></div><div style="margin:0;"><span style="font-family: Courier;">I am using PatFrag with the following way but rejected.</span></div><div style="margin:0;"><span style="font-family: Courier;"><br></span></div><div style="margin:0;"><span style="font-family: Courier;"><div style="margin:0;">+def AddShlShlShift1 : PatFrag<(ops node:$A, node:$B, node:$C, node:$D),</div><div style="margin:0;">+                              (add (shl node:$A, node:$B), (shl node:$C, node:$D)), [{</div><div style="margin:0;">+ // Some condition check code.</div><div style="margin:0;">+}]>;</div><div style="margin:0;">+</div><div style="margin:0;"><div style="margin:0;">+def : Pat<(AddShlShlShift1 GPR:$rs1, uimmlog2xlen:$sh1,</div><div style="margin:0;">+                           GPR:$rs2, uimmlog2xlen:$sh2),</div><div style="margin:0;">+          (SLLI (SH1ADD GPR:$rs1, GPR:$rs2),</div><div style="margin:0;">+                (TrailingZerosXForm uimmlog2xlen:$sh2))>;</div><div style="margin:0;"><br></div><div style="margin:0;">The error message is "error: In anonymous_5561: Pattern has dead named input: $sh1"</div><div style="margin:0;"><br></div><div style="margin:0;">Since the operand $Sh1 is absorbed in the the SH1ADD instruction, it is no long been used.</div><div style="margin:0;"><br></div><div style="margin:0;">What is a proper way to do this? Only use DAG2DAG? Or I can define a pseudo SDNode which just to be its operand-0 ?</div><div style="margin:0;">Such as</div><div style="margin:0;"><div style="margin: 0px;"><div style="margin: 0px;">+def : Pat<(AddShlShlShift1 GPR:$rs1, uimmlog2xlen:$sh1,</div><div style="margin: 0px;">+                           GPR:$rs2, uimmlog2xlen:$sh2),</div><div style="margin: 0px;">+          (fake_node (SLLI (SH1ADD GPR:$rs1, GPR:$rs2),</div><div style="margin: 0px;">+                            (TrailingZerosXForm uimmlog2xlen:$sh2)),</div><div style="margin: 0px;">+                     uimmlog2xlen:$sh1)>;</div><div style="margin: 0px;"><br></div></div></div><div style="margin:0;"><br></div><div style="margin:0;">Ben Shi</div></div></span></div></div>