llvm-project/llvm/lib/CodeGen/GlobalISel
Jessica Paquette bebe6a6449 [GlobalISel] Combine (logic_op (op x...), (op y...)) -> (op (logic_op x, y))
This implements

```
(logic_op (op x...), (op y...)) -> (op (logic_op x, y))
```

when `op` is an extend, a shift, or an and.

This is similar to `DAGCombiner::hoistLogicOpWithSameOpcodeHands`
(with a bunch of missing cases, e.g. G_TRUNC, G_BITCAST, etc.)

This is implemented so it works both pre and post-legalization.

This also adds a general way to add a series of instructions in a combine.
(`applyBuildInstructionSteps`).

Differential Revision: https://reviews.llvm.org/D85050
2020-08-11 10:40:06 -07:00
..
CMakeLists.txt [GlobalISel] Introduce InlineAsmLowering class 2020-04-20 15:10:18 +02:00
CSEInfo.cpp [GISel: Add support for CSEing SrcOps which are immediates 2020-07-17 16:04:24 -07:00
CSEMIRBuilder.cpp [globalisel][cse] Merge debug locations when CSE'ing 2020-07-28 14:25:26 -07:00
CallLowering.cpp GlobalISel: Restructure argument lowering loop in handleAssignments 2020-07-22 13:31:11 -04:00
Combiner.cpp GlobalISel: Remove redundant check for empty blocks 2020-08-10 08:46:30 -04:00
CombinerHelper.cpp [GlobalISel] Combine (logic_op (op x...), (op y...)) -> (op (logic_op x, y)) 2020-08-11 10:40:06 -07:00
GISelChangeObserver.cpp [GlobalISel]: Fix some non determinism exposed in CSE due to not notifying observers about mutations + add verification for CSE 2020-02-18 14:54:57 -08:00
GISelKnownBits.cpp Revert "[AArch64][GlobalISel] Add post-legalize combine for sext_inreg(trunc(sextload)) -> copy" 2020-07-21 16:01:18 -07:00
GlobalISel.cpp
IRTranslator.cpp [GlobalISel] Add G_ABS 2020-08-11 16:34:37 +01:00
InlineAsmLowering.cpp [GlobalISel][InlineAsm] Fix matching input constraint to physreg 2020-08-06 14:35:51 +02:00
InstructionSelect.cpp GlobalISel: Move finalizeLowering call later 2020-07-06 09:19:40 -04:00
InstructionSelector.cpp GlobalISel: Remove unused function argument 2020-02-14 15:57:39 -08:00
LLVMBuild.txt Make GlobalISel depend on SelectionDAG after D63169 2019-06-22 01:30:17 +00:00
LegalityPredicates.cpp Use llvm::is_contained where appropriate (NFC) 2020-07-27 10:20:44 -07:00
LegalizeMutations.cpp GlobalISel: Add scalarSameSizeAs LegalizeRule 2020-07-23 21:17:31 -04:00
Legalizer.cpp GlobalISel: Improve MachineIRBuilder construction 2020-06-09 15:05:04 -04:00
LegalizerHelper.cpp [GlobalISel] Remove unused variable. NFC. 2020-08-11 16:56:45 +02:00
LegalizerInfo.cpp GlobalISel: Don't assert on operations with no type indices 2020-07-28 16:49:55 -04:00
Localizer.cpp Revert "Revert "[GlobalISel][Localizer] Enable intra-block localization of already-local uses."" 2020-03-06 21:35:08 -08:00
LostDebugLocObserver.cpp Give helpers internal linkage. NFC. 2020-04-25 11:50:52 +02:00
MachineIRBuilder.cpp [GlobalISel] Add G_ABS 2020-08-11 16:34:37 +01:00
RegBankSelect.cpp [GlobalISel][InlineAsm] Add support for basic output operand constraints 2020-05-06 10:06:13 +02:00
RegisterBank.cpp Revert "[TableGen][GlobalISel] Account for HwMode in RegisterBank register sizes" 2020-03-20 11:02:50 +01:00
RegisterBankInfo.cpp Revert "[TableGen][GlobalISel] Account for HwMode in RegisterBank register sizes" 2020-03-20 11:02:50 +01:00
Utils.cpp GlobalISel: Add utilty for getting function argument live ins 2020-08-04 16:55:55 -04:00