[PATCH] D44909: [InstCombine] (float)((int) f) --> llvm.trunc (PR36617)

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 26 14:39:29 PDT 2018


spatel created this revision.
spatel added reviewers: scanon, efriedma, craig.topper, RKSimon.
Herald added subscribers: nhaehnle, mcrosier.

fptosi / fptoui round towards zero, and that's the same behavior as llvm.trunc(), so replace a pair of casts with the intrinsic. We don't have to account for special cases (NaN, INF) because out-of-range casts are UB.

For x86, llvm.trunc float/double will be lowered to round** with the appropriate rounding mode.


https://reviews.llvm.org/D44909

Files:
  include/llvm/IR/PatternMatch.h
  lib/Transforms/InstCombine/InstCombineCasts.cpp
  test/CodeGen/AMDGPU/simplify-libcalls.ll
  test/Transforms/InstCombine/sitofp.ll
  test/Transforms/InstCombine/vector-casts.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44909.139853.patch
Type: text/x-patch
Size: 6458 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180326/d9db862e/attachment.bin>


More information about the llvm-commits mailing list