[all-commits] [llvm/llvm-project] e9b3f2: [RISCVISelLowering] avoid emitting libcalls to __m...

Nick Desaulniers via All-commits all-commits at lists.llvm.org
Tue Aug 31 11:24:36 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e9b3f2573090a2fb9494975e4615f77b898e36a3
      https://github.com/llvm/llvm-project/commit/e9b3f2573090a2fb9494975e4615f77b898e36a3
  Author: Nick Desaulniers <ndesaulniers at google.com>
  Date:   2021-08-31 (Tue, 31 Aug 2021)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    M llvm/test/CodeGen/RISCV/mul.ll
    A llvm/test/CodeGen/RISCV/overflow-intrinsic-optimizations.ll
    M llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll
    M llvm/test/CodeGen/RISCV/xaluo.ll

  Log Message:
  -----------
  [RISCVISelLowering] avoid emitting libcalls to __mulodi4() and __multi3()

Similar to D108842, D108844, D108926, D108928, and D108936.

__has_builtin(builtin_mul_overflow) returns true for 32b RISCV targets,
but Clang is deferring to compiler RT when encountering long long types.

If the semantics of __has_builtin mean "the compiler resolves these,
always" then we shouldn't conditionally emit a libcall.

Link: https://bugs.llvm.org/show_bug.cgi?id=28629

Reviewed By: craig.topper

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




More information about the All-commits mailing list