<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 30, 2008, at 9:18 AM, Villmow, Micah wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div lang="EN-US" link="blue" vlink="blue" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="Street"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="address"><div class="Section1"><div style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman'; "><font size="2" color="navy" face="Arial"><span style="font-size: 10pt; font-family: Arial; color: navy; ">I do not have access to a subtraction routine, as it is considered add with negation on the second parameter, so I have this pattern:<o:p></o:p></span></font></div><div style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman'; "><font size="2" color="navy" face="Arial"><span style="font-size: 10pt; font-family: Arial; color: navy; ">// integer subtraction<o:p></o:p></span></font></div><div style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman'; "><font size="2" color="navy" face="Arial"><span style="font-size: 10pt; font-family: Arial; color: navy; ">// a - b ==> a + (-b)<o:p></o:p></span></font></div><div style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman'; "><font size="2" color="navy" face="Arial"><span style="font-size: 10pt; font-family: Arial; color: navy; ">def ISUB : Pat<(sub GPRI32:$src0, GPRI32:$src1),<o:p></o:p></span></font></div><div style="margin-top: 0in; margin-right: 0in; margin-left: 0in; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman'; "><font size="2" color="navy" face="Arial"><span style="font-size: 10pt; font-family: Arial; color: navy; ">               (IADD GPRI32:$src0, (INEGATE GPRI32:$src1))>;</span></font></div></div></o:smarttagtype></o:smarttagtype></o:smarttagtype></o:smarttagtype></div></span></blockquote><div><br></div><div>Micah,</div><div><br></div><div>The best way to find answers to these types of questions is to look for examples in other targets.  For example, PPC has this Pat pattern which synthesizes an immediate with two instructions:</div><div><br></div><div><div>// Arbitrary immediate support.  Implement in terms of LIS/ORI.</div><div>def : Pat<(i32 imm:$imm),</div><div>          (ORI (LIS (HI16 imm:$imm)), (LO16 imm:$imm))>;</div><div><br></div><div><br></div><div>It also has stuff like this:</div><div><br></div><div>// Implement the 'not' operation with the NOR instruction.</div><div>def NOT : Pat<(not GPRC:$in),</div><div>              (NOR GPRC:$in, GPRC:$in)>;</div><div><br></div><div>For more information, please see the powerpc .td files.  In answer to your question, you can't map target-independent nodes to target-independent nodes, you have to map them to target specific instructions: ORI/LIS/NOR in these examples.</div><div><br></div><div>-Chris</div></div><div><br></div></div></body></html>