<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.35pt 842.0pt;
        margin:36.0pt 89.85pt 17.85pt 36.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=DE link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi all,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>i’m writing an back-end for a new research
processor architecture and have problems with the DAG Combiner. The processor
architecture supports i1 and i32 registers. 1-bit registers are mainly used as
comparison result but basic operations like OR are not possible between i1
registers. So I wrote custom lowering for i1 OR operations and replaced it by (trunc
(or (aext x), (aext y))). Now the problem is that the DAG Combiner optimizes it
back to an i1 OR operations that is not supported by the architecture.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>What is the best way to solve this problem? I take a
look at the DAG Optimizer and for this OR operation it calls </span></font><font
size=2 color="#030003" face="Courier New"><span lang=EN-GB style='font-size:
10.0pt;font-family:"Courier New";color:#030003'>DAGCombiner</span></font><font
size=2 face="Courier New"><span lang=EN-GB style='font-size:10.0pt;font-family:
"Courier New"'>::<font color="#030003"><span style='color:#030003'>SimplifyBinOpWithSameOpcodeHands
that folds </span></font><font color=green><span style='color:green'>(OP (aext
x), (aext y)) -> (aext (OP x, y)). No check if the new operation is legal is
performed.<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal><font size=2 color=green face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";color:green'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=green face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";color:green'>Kind
regards<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=green face="Courier New"><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";color:green'>Timo
Stripf</span></font><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

</div>

</body>

</html>