Go to file
Simon Pilgrim af6043557d [DAG][X86] Convert isNegatibleForFree/GetNegatedExpression to a target hook (PR42863)
This patch converts the DAGCombine isNegatibleForFree/GetNegatedExpression into overridable TLI hooks and includes a demonstration X86 implementation.

The intention is to let us extend existing FNEG combines to work more generally with negatible float ops, allowing it work with target specific combines and opcodes (e.g. X86's FMA variants).

Unlike the SimplifyDemandedBits, we can't just handle target nodes through a Target callback, we need to do this as an override to allow targets to handle generic opcodes as well. This does mean that the target implementations has to duplicate some checks (recursion depth etc.).

I've only begun to replace X86's FNEG handling here, handling FMADDSUB/FMSUBADD negation and some low impact codegen changes (some FMA negatation propagation). We can build on this in future patches.

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

llvm-svn: 372333
2019-09-19 15:02:47 +00:00
clang Reverting r372323 because it broke color tests on Linux. 2019-09-19 13:59:53 +00:00
clang-tools-extra [clang-tidy] Fix bugprone-argument-comment-check to correctly ignore implicit constructors. 2019-09-19 13:12:05 +00:00
compiler-rt [cmake] Strip quotes in try_compile_only 2019-09-19 11:28:32 +00:00
debuginfo-tests Make nrvo-string test more robust. 2019-06-27 20:38:37 +00:00
libc Add a director, along with README.txt and LICENSE.txt, for libc. 2019-09-16 21:39:08 +00:00
libclc Revert "Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC" 2019-08-05 17:23:23 +00:00
libcxx Revert "Revert "Implement std::condition_variable via pthread_cond_clockwait() where available"" 2019-09-18 18:13:32 +00:00
libcxxabi Update XFAIL list for new GCC versions 2019-09-13 18:43:29 +00:00
libunwind unwind: remove a could of extraneous `else` (NFC) 2019-09-18 16:15:56 +00:00
lld [WebAssembly] Sort output data sections to place .bss last 2019-09-19 01:14:59 +00:00
lldb [lldb] [Process/gdb-remote] Correct more missing LLDB_INVALID_SIGNAL_NUMBER 2019-09-19 05:49:14 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm [DAG][X86] Convert isNegatibleForFree/GetNegatedExpression to a target hook (PR42863) 2019-09-19 15:02:47 +00:00
openmp [OpenMP] Change initialization of __kmp_global 2019-09-04 17:47:37 +00:00
parallel-libs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
polly [CodeGen] Handle outlining of CopyStmts. 2019-09-17 22:59:43 +00:00
pstl [pstl] Allow customizing whether per-TU insulation is provided 2019-08-13 12:49:00 +00:00
.arcconfig Update monorepo .arcconfig with new project callsign. 2019-01-31 14:34:59 +00:00
.clang-format Add .clang-tidy and .clang-format files to the toplevel of the 2019-01-29 16:43:16 +00:00
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
.git-blame-ignore-revs Add LLDB reformatting to .git-blame-ignore-revs 2019-09-04 09:31:55 +00:00
.gitignore Add a newline at the end of the file 2019-09-04 06:33:46 +00:00
README.md

README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.