<div><font>Thanks. I've already called:</font></div><div><font>```</font></div><div><font><div>for (MVT VT : {MVT::i32, MVT::i64, MVT::i8}) {</div><div>    setLoadExtAction(ISD::EXTLOAD, VT, MVT::i1, Promote);</div><div>    setLoadExtAction(ISD::SEXTLOAD, VT, MVT::i1, Expand);</div><div>    setLoadExtAction(ISD::ZEXTLOAD, VT, MVT::i1, Expand);</div><div>    setTruncStoreAction(MVT::i1, VT, Promote);</div><div>}</div></font></div><div><font>```</font></div><div><includetail><div> </div><div>which still gets me:</div><div>```</div><div><div>Combining: t5: i32 = zero_extend t4</div><div>Creating new node: t9: i32,ch = load<(dereferenceable load 1 from %ir.2), zext from i1> t0, FrameIndex:i64<0>, undef:i64</div></div><div>```</div><div> </div><div>Not sure what I'm missing here</div><div style="font:Verdana normal 14px;color:#000;"><div style="FONT-SIZE: 12px;FONT-FAMILY: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="FONT-SIZE: 12px;background:#efefef;padding:8px;"><div id="menu_sender"><b>From: </b> "Tim Northover"<t.p.northover@gmail.com>;</div><div><b>Date: </b> Wed, Jan 6, 2021 10:27 PM</div><div><b>To: </b> "Zhang"<admin@mayuyu.io>; <wbr></div><div><b>Cc: </b> "llvm-dev"<llvm-dev@lists.llvm.org>; <wbr></div><div><b>Subject: </b> Re: [llvm-dev] How do I prevent DAGCombiner from combining ZExt/SExt(load) into LoadZExt?</div></div><div> </div><div style="position:relative;"><div id="tmpcontent_res"></div>Hi Zhang,<br><br>On Wed, 6 Jan 2021 at 03:51, Zhang via llvm-dev <llvm-dev@lists.llvm.org> wrote:<br>> In our toy ISA, we don't have a dedicated ZExtLoad instruction. However DAGCombiner tends to combine ZERO_EXTEND(LOAD) into a LoadZExt node which can't be trivially selected:<br><br>I think you control that with a call to<br>TargetLowering::setLoadExtAction in XYZTargetLowering.<br><br>Cheers.<br><br>Tim.<br></div></div><!--<![endif]--></includetail></div>