1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/lib
Roger Ferrer Ibanez 43e3cefe97 [ARM] Use ADDCARRY / SUBCARRY
This is a preparatory step for D34515.

This change:
 - makes nodes ISD::ADDCARRY and ISD::SUBCARRY legal for i32
 - lowering is done by first converting the boolean value into the carry flag
   using (_, C) ← (ARMISD::ADDC R, -1) and converted back to an integer value
   using (R, _) ← (ARMISD::ADDE 0, 0, C). An ARMISD::ADDE between the two
   operations does the actual addition.
 - for subtraction, given that ISD::SUBCARRY second result is actually a
   borrow, we need to invert the value of the second operand and result before
   and after using ARMISD::SUBE. We need to invert the carry result of
   ARMISD::SUBE to preserve the semantics.
 - given that the generic combiner may lower ISD::ADDCARRY and
   ISD::SUBCARRYinto ISD::UADDO and ISD::USUBO we need to update their lowering
   as well otherwise i64 operations now would require branches. This implies
   updating the corresponding test for unsigned.
 - add new combiner to remove the redundant conversions from/to carry flags
   to/from boolean values (ARMISD::ADDC (ARMISD::ADDE 0, 0, C), -1) → C
 - fixes PR34045
 - fixes PR34564

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

llvm-svn: 313618
2017-09-19 09:05:39 +00:00
..
Analysis [InstSimplify] fold sdiv/srem based on compare of dividend and divisor 2017-09-14 14:59:07 +00:00
AsmParser IR: Represent -ggnu-pubnames with a flag on the DICompileUnit. 2017-09-12 21:50:41 +00:00
BinaryFormat [BinaryFormat] Fix out of bounds read. 2017-08-31 12:50:42 +00:00
Bitcode [llvm] Fix some typos. NFC. 2017-09-15 20:01:43 +00:00
CodeGen Revert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs" 2017-09-18 23:08:42 +00:00
DebugInfo llvm-dwarfdump: use more efficient API (NFC) 2017-09-18 21:44:40 +00:00
Demangle
ExecutionEngine [ORC] Hook up the LLVMOrcAddObjectFile function in the Orc C Bindings. 2017-09-17 03:25:03 +00:00
Fuzzer Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
FuzzMutate Move some CLI utils out of llvm-isel-fuzzer and into the library 2017-09-02 23:43:04 +00:00
IR [X86] Remove VPERM2F128/VPERM2I128 intrinsics and autoupgrade to native shuffles. 2017-09-16 07:36:14 +00:00
IRReader
LineEditor
Linker Linker: Create a function declaration when moving a non-prevailing alias of function type. 2017-08-10 01:07:44 +00:00
LTO Revert "[ThinLTO] Avoid archive member collisions with old API" 2017-09-17 18:11:26 +00:00
MC Revert "Fix Bug 30978 by emitting cv file checksums." 2017-09-16 01:14:36 +00:00
Object Allow public Triple deduction from ObjectFiles. 2017-09-19 02:22:48 +00:00
ObjectYAML llvm-dwarfdump: support dumping UUIDs of Mach-O binaries. 2017-09-13 18:22:59 +00:00
Option Revert "Revert r311552: [Bash-autocompletion] Add support for static analyzer flags" 2017-08-29 00:09:31 +00:00
Passes [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
ProfileData [Coverage] Use gap regions to select better line exec counts 2017-09-18 23:37:28 +00:00
Support [mips] Recognise the triple used by Debian for MIPS n32 ABI 2017-09-14 06:50:05 +00:00
TableGen Untabify. 2017-08-28 06:47:47 +00:00
Target [ARM] Use ADDCARRY / SUBCARRY 2017-09-19 09:05:39 +00:00
Testing Mark LLVMTestingSupport as not installed in LLVMBuild. 2017-06-19 22:01:50 +00:00
ToolDrivers [llvm-dlltool] Mention arm64 in the lists of architecture alternatives 2017-09-08 06:49:46 +00:00
Transforms [gcov] Emit errors when opening the notes file fails 2017-09-18 21:31:48 +00:00
WindowsManifest Fix bug 34608 by moving private header out of public header. 2017-09-14 23:01:13 +00:00
XRay [XRay][tools] Support tail-call exits before we write them in the runtime 2017-09-18 06:08:46 +00:00
CMakeLists.txt Moving libFuzzer from LLVM to compiler-rt. 2017-08-21 23:25:12 +00:00
LLVMBuild.txt Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00