[all-commits] [llvm/llvm-project] abb21b: [ConstProp] add tests for APFloat truncate miscomp...

Sanjay Patel via All-commits all-commits at lists.llvm.org
Sun Jun 5 17:09:26 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: abb21b54bc83698cf4705928ef7e0155b7587e2b
      https://github.com/llvm/llvm-project/commit/abb21b54bc83698cf4705928ef7e0155b7587e2b
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2022-06-05 (Sun, 05 Jun 2022)

  Changed paths:
    M llvm/test/Transforms/InstSimplify/ConstProp/cast.ll

  Log Message:
  -----------
  [ConstProp] add tests for APFloat truncate miscompile; NFC

issue #55838


  Commit: 3f33d67d8a5c231cf9a64ecbf6b9614e4485e2f4
      https://github.com/llvm/llvm-project/commit/3f33d67d8a5c231cf9a64ecbf6b9614e4485e2f4
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2022-06-05 (Sun, 05 Jun 2022)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
    M llvm/test/Transforms/InstCombine/icmp-mul-and.ll
    M llvm/test/Transforms/InstCombine/icmp-mul.ll
    M llvm/test/Transforms/InstCombine/mul-masked-bits.ll
    M llvm/test/Transforms/InstCombine/mul.ll
    M llvm/test/Transforms/InstCombine/or.ll

  Log Message:
  -----------
  [InstCombine] fold mul with masked low bit operand to trunc+select

https://alive2.llvm.org/ce/z/o7rQ5q

This shows an extra instruction in some cases, but that is
caused by an existing canonicalization of trunc -> and+icmp.

Codegen should be better for any target where a multiply is
more costly than the most simple ALU op.

This ends up producing the requested x86 asm from issue #55618,
but it's not the same IR. We are missing a canonicalization
from the negate+mask pattern to the trunc+select created here.


Compare: https://github.com/llvm/llvm-project/compare/332d5204c58c...3f33d67d8a5c


More information about the All-commits mailing list