[all-commits] [llvm/llvm-project] 06eae3: [InstCombine] add tests for cast-of-shuffle; NFC

RotateRight via All-commits all-commits at lists.llvm.org
Tue May 25 05:44:33 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 06eae35689ee1a190cc3f2310e289b2659654755
      https://github.com/llvm/llvm-project/commit/06eae35689ee1a190cc3f2310e289b2659654755
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2021-05-25 (Tue, 25 May 2021)

  Changed paths:
    M llvm/test/Transforms/InstCombine/vector-casts.ll

  Log Message:
  -----------
  [InstCombine] add tests for cast-of-shuffle; NFC


  Commit: 0bab0f6161193cd0cd24b7b0fc51590a60e810d2
      https://github.com/llvm/llvm-project/commit/0bab0f6161193cd0cd24b7b0fc51590a60e810d2
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2021-05-25 (Tue, 25 May 2021)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
    M llvm/test/Transforms/InstCombine/X86/x86-f16c-inseltpoison.ll
    M llvm/test/Transforms/InstCombine/X86/x86-f16c.ll
    M llvm/test/Transforms/InstCombine/shuffle-cast-dist.ll
    M llvm/test/Transforms/InstCombine/shufflevec-bitcast-inseltpoison.ll
    M llvm/test/Transforms/InstCombine/shufflevec-bitcast.ll
    M llvm/test/Transforms/InstCombine/vector-casts.ll

  Log Message:
  -----------
  [InstCombine] canonicalize cast before unary shuffle

We could go either direction on this transform. VectorCombine already goes this
way for bitcasts (and handles more complicated cases using the cost model), so
let's try cast-first.

Deferring completely to VectorCombine is another possibility. But the backend
should be able to invert this easily when the vectors have the same shape, so
it doesn't seem like a transform that we need to avoid.

The motivating example from https://llvm.org/PR49081 has an int-to-float
sandwiched between 2 shuffles, and the backend currently does not reduce that,
so on x86, we get something like:

  pshufd	$249, %xmm0, %xmm0]
  cvtdq2ps	%xmm0, %xmm0
  shufps	$144, %xmm0, %xmm0

...instead of just a single conversion instruction.

Differential Revision: https://reviews.llvm.org/D103038


Compare: https://github.com/llvm/llvm-project/compare/f718a53d7e13...0bab0f616119


More information about the All-commits mailing list