[all-commits] [llvm/llvm-project] 88ff4d: [PowerPC] Fix STRICT_FRINT/STRICT_FNEARBYINT lowering

Qiu Chaofan via All-commits all-commits at lists.llvm.org
Wed Sep 9 07:43:11 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 88ff4d2ca1a0aaed6888152042256a0ef3fe863d
      https://github.com/llvm/llvm-project/commit/88ff4d2ca1a0aaed6888152042256a0ef3fe863d
  Author: Qiu Chaofan <qiucofan at cn.ibm.com>
  Date:   2020-09-09 (Wed, 09 Sep 2020)

  Changed paths:
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/test/CodeGen/builtins-ppc-fpconstrained.c
    M clang/test/CodeGen/builtins-ppc-vsx.c
    M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
    M llvm/lib/Target/PowerPC/PPCInstrVSX.td
    M llvm/test/CodeGen/PowerPC/fp-strict-round.ll
    M llvm/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll

  Log Message:
  -----------
  [PowerPC] Fix STRICT_FRINT/STRICT_FNEARBYINT lowering

In standard C library, both rint and nearbyint returns rounding result
in current rounding mode. But nearbyint never raises inexact exception.
On PowerPC, x(v|s)r(d|s)pic may modify FPSCR XX, raising inexact
exception. So we can't select constrained fnearbyint into xvrdpic.

One exception here is xsrqpi, which will not raise inexact exception, so
fnearbyint f128 is okay here.

Reviewed By: uweigand

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




More information about the All-commits mailing list