llvm-project/llvm/lib
Sanjay Patel 2e87333bfe [InstCombine] convert mul by negative-pow2 to negate and shift
This is an unusual canonicalization because we create an extra instruction,
but it's likely better for analysis and codegen (similar reasoning as D133399).

InstCombine::Negator may create this kind of multiply from negate and shift,
but this should not conflict because of the narrow negation.

I don't know how to create a fully general proof for this kind of transform in
Alive2, but here's an example with bitwidths similar to one of the regression
tests:
https://alive2.llvm.org/ce/z/J3jTjR

Differential Revision: https://reviews.llvm.org/D133667
2022-10-02 12:22:25 -04:00
..
Analysis [ValueTracking] peek through fpext in isKnownNeverInfinity() 2022-10-02 11:20:23 -04:00
AsmParser [IR] Don't allow DLL storage-class and local linkage 2022-09-30 00:26:01 +01:00
BinaryFormat [NFC] Refactor DXContainer to support more parts 2022-09-29 11:59:52 -05:00
Bitcode [IR] Don't allow DLL storage-class and local linkage 2022-09-30 00:26:01 +01:00
Bitstream
CodeGen [ARM][DAG] BF16 constant handling. 2022-10-02 11:51:08 +01:00
DWARFLinker [DWARFLinker][NFC] Set the target DWARF version explicitly. 2022-09-15 16:06:10 +03:00
DWP [llvm-dwp] Report the filename if it cannot be found 2022-09-14 11:32:41 +08:00
DebugInfo [NFC] [Object] Create library to fetch debug info by build ID. 2022-09-28 13:35:35 -07:00
Debuginfod [NFC] [Object] Create library to fetch debug info by build ID. 2022-09-28 13:35:35 -07:00
Demangle Make demangler independent of LLVM again 2022-08-15 11:44:28 +02:00
ExecutionEngine [JITLink] Update external symbol scopes to reflect scopes of resolved defs. 2022-09-29 20:32:46 -07:00
Extensions
FileCheck [llvm][FileCheck] Fix unit tests failures with EXPENSIVE_CHECKS 2022-07-25 08:19:28 +00:00
Frontend LoopUnroll: Pass through AssumptionCache (NFC) 2022-09-26 14:52:59 -04:00
FuzzMutate
Fuzzer
IR [DebugInfo][LICM] Drop DebugLoc from IntrinsicInst when hoisting 2022-09-30 09:12:35 +00:00
IRReader
InterfaceStub [llvm] Use value instead of getValue (NFC) 2022-07-13 23:11:56 -07:00
LTO [LTO][AIX] Invoking AIX System Assembler in LTO CodeGen 2022-09-28 14:26:50 -04:00
LineEditor [llvm] Use range-based for loops (NFC) 2022-09-03 11:17:40 -07:00
Linker [llvm] Qualify auto in range-based for loops (NFC) 2022-08-13 12:55:42 -07:00
MC [PowerPC] XCOFF exception section support on the direct assembler path 2022-09-26 22:24:20 -04:00
MCA [MCA] Correctly check pipeline availability for partially overlapping resource groups. 2022-09-07 12:17:59 +01:00
ObjCopy [llvm-objcopy] --compress-debug-sections: remove tail padding for ELFCLASS32 2022-09-22 10:26:47 -07:00
Object [DX] [ObjectYAML] Support DX shader feature flags 2022-09-29 12:37:11 -05:00
ObjectYAML [DX] [ObjectYAML] Support DX shader feature flags 2022-09-29 12:37:11 -05:00
Option [llvm] Qualify auto in range-based for loops (NFC) 2022-08-28 23:29:00 -07:00
Passes [llvm] Migrate PAEval to new pass manager 2022-10-01 16:41:58 -07:00
ProfileData [llvm] Don't including SetVector.h (NFC) 2022-09-17 12:36:43 -07:00
Remarks Remove redundant initialization of Optional (NFC) 2022-08-20 21:18:28 -07:00
Support Include <cmath> in FileUtilities.cpp for std:abs(double) 2022-09-29 15:33:49 -07:00
TableGen [TableGen] Add div bang operator 2022-09-30 12:08:28 -07:00
Target [ARM] Add lowering for bf16 neon vtrn, vzup and vuzp. 2022-10-02 15:34:37 +01:00
Testing [Support] Provide access to the full mapping in llvm::Annotations 2022-09-20 11:06:21 -04:00
TextAPI [llvm][TextAPI] add driverkit as supported platform for older tbd 2022-09-19 15:08:29 -07:00
ToolDrivers [llvm-lib] Ignore /VERBOSE flag 2022-07-21 10:06:13 -07:00
Transforms [InstCombine] convert mul by negative-pow2 to negate and shift 2022-10-02 12:22:25 -04:00
WindowsDriver
WindowsManifest
XRay [XRay] Remove XRayRecordStorage 2022-09-11 16:11:41 -07:00
CMakeLists.txt