[all-commits] [llvm/llvm-project] 7015a5: [InstCombine] conditional sign-extend of high-bit-...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Sun Oct 20 13:52:00 PDT 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7015a5c54b53d8d2297a3aa38bc32aab167bdcfc
      https://github.com/llvm/llvm-project/commit/7015a5c54b53d8d2297a3aa38bc32aab167bdcfc
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2019-10-20 (Sun, 20 Oct 2019)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
    M llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
    M llvm/lib/Transforms/InstCombine/InstCombineInternal.h
    M llvm/test/Transforms/InstCombine/conditional-variable-length-signext-after-high-bit-extract.ll

  Log Message:
  -----------
  [InstCombine] conditional sign-extend of high-bit-extract: 'or' pattern.

In this pattern, all the "magic" bits that we'd `add` are all
high sign bits, and in the value we'd be adding to they are all unset,
not unexpectedly, so we can have an `or` there:
https://rise4fun.com/Alive/ups

It is possible that `haveNoCommonBitsSet()` should be taught about this
pattern so that we never have an `add` variant, but the reasoning would
need to be recursive (because of that `select`), so i'm not really sure
that would be worth it just yet.

llvm-svn: 375378




More information about the All-commits mailing list