<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 1/12/2017 9:04 AM, Sanjay Patel via
      llvm-dev wrote:<br>
    </div>
    <blockquote
cite="mid:CA+wODiuSUGgjd+pH-YMq-5nCLCcsXudwJQr=zcE7qG13_iAtsw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>It's time for another round of "What is the canonical IR?"<br>
          <br>
          Credit for this episode to Zvi and PR31551. :)<br>
          <a moz-do-not-send="true"
            href="https://llvm.org/bugs/show_bug.cgi?id=31551">https://llvm.org/bugs/show_bug.cgi?id=31551</a>
          <pre class="gmail-bz_comment_text" id="gmail-comment_text_2">
define <4 x i16> @shuffle(<16 x i16> %x) {
  %shuf = shufflevector <16 x i16> %x, <16 x i16> undef, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  ret <4 x i16> %shuf
}

define <4 x i16> @trunc(<16 x i16> %x) {
  %bc = bitcast <16 x i16> %x to <4 x i64>
  %tr = trunc <4 x i64> %bc to <4 x i16>
  ret <4 x i16> %tr
}

</pre>
          Potential reasons to prefer one or the other:<br>
          1. Shuffle is the most compact.<br>
          2. Trunc is easier to read.<br>
          3. One of these is easier for value tracking.<br>
          4. Compatibility with existing IR transforms (eg,
          InterleavedAccess recognizes the shuffle form).<br>
        </div>
        5. We don't create arbitrary shuffle masks in IR because that's
        bad for a lot of targets (but maybe this mask pattern should
        always be recognized as special?).<br>
      </div>
    </blockquote>
    <br>
    Hmm... not sure what the right answer is, but a couple more
    observations:<br>
    1. If we're going to canonicalize, we should probably canonicalize
    the same way independent of the original argument type (so we would
    introduce bitcasts either way).<br>
    2. Those two functions are only equivalent on little-endian
    platforms.<br>
    <br>
    -Eli<br>
    <pre class="moz-signature" cols="72">-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project</pre>
  </body>
</html>