<div dir="ltr"><div><div><div>Just a shot in the dark here...<br></div>could this possibly be that Clang (or whatever is adding those trunc/ext's into the IR) is considering your calling conventions in <TargetName>CallingConv.td?<br><br></div>We certainly get the same behaviour on PPC but I wonder if that's due to lines like this in PPCCallingConv.td:<br>`CCIfType<[i8],  CCPromoteToType<i64>>`<br><br></div>I don't know enough about this code to really know whether the above has any relation to reality, but it seems related.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 22, 2017 at 1:27 PM, Friedman, Eli via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 5/21/2017 1:22 AM, Alex Susu via llvm-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  Hello.<br>
    My target architecture supports natively 16 bit integers (i16).<br>
<br>
    Whenever I write in C programs using only short types, clang compiles the program to LLVM and converts the i16 data to i32 to perform arithmetic operations and then truncates the results to i16. Then, the InstructionCombining (INSTCOMBINE or IC) pass removes these conversions back and forth from i16, except for the (s)div LLVM IR operation.<br>
</blockquote>
<br></span>
sdiv in particular is special: it has undefined behavior on overflow.  "sdiv i32 -32768, -1" produces "i32 32768", but "sdiv i16 -32768, -1" is undefined.<br>
<br>
-Eli<div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>