1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00
llvm-mirror/lib/Target/AArch64
Jessica Paquette 8e6b545e6e [GlobalISel][AArch64] Make FP constraint checks consider possible use/def banks
In a few places in getInstrMapping, we check if use/def instructions for the
instruction we're mapping have floating point constraints.

We can improve this check and reduce the number of copies in GISel-compiled code
if we make a couple observations:

- For a def instruction, it only matters if the def instruction must always
  output a value stored on a FPR

- For a use instruction, it only matters if the use instruction must always
  only take in values stored in FPRs

This adds two new functions:

- onlyUsesFP
- onlyDefinesFP

Then we can use those when we're checking the uses/defs instead.

Without this patch, the load, unmerge, store, and select in the added test
would have unnecessary copies.

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

llvm-svn: 361679
2019-05-24 23:08:45 +00:00
..
AsmParser [AArch64] Create a TargetInfo header. NFC 2019-05-14 21:33:53 +00:00
Disassembler [AArch64] Create a TargetInfo header. NFC 2019-05-14 21:33:53 +00:00
MCTargetDesc [AArch64] Support .reloc *, R_AARCH64_NONE, * 2019-05-17 03:05:07 +00:00
TargetInfo [AArch64] Create a TargetInfo header. NFC 2019-05-14 21:33:53 +00:00
Utils AArch64: annotate atomics with dropped acquire semantics when printing. 2019-02-06 15:07:59 +00:00
AArch64.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64A53Fix835769.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64A57FPLoadBalancing.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64AdvSIMDScalarPass.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64AsmPrinter.cpp [AArch64] Create a TargetInfo header. NFC 2019-05-14 21:33:53 +00:00
AArch64BranchTargets.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64CallingConvention.cpp [AArch64] Include AArch64GenCallingConv.inc once 2019-01-28 21:28:40 +00:00
AArch64CallingConvention.h [AArch64] Include AArch64GenCallingConv.inc once 2019-01-28 21:28:40 +00:00
AArch64CallingConvention.td [COFF, ARM64] Fix ABI implementation of struct returns 2019-05-03 21:12:36 +00:00
AArch64CallLowering.cpp GlobalISel: support swifterror attribute on AArch64. 2019-05-24 08:40:13 +00:00
AArch64CallLowering.h GlobalISel: support swifterror attribute on AArch64. 2019-05-24 08:40:13 +00:00
AArch64CleanupLocalDynamicTLSPass.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64CollectLOH.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64CompressJumpTables.cpp [AArch64] Fix scan-build null/uninitialized pointer warnings. NFCI. 2019-05-08 16:27:24 +00:00
AArch64CondBrTuning.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64ConditionalCompares.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
AArch64ConditionOptimizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64DeadRegisterDefinitionsPass.cpp [AArch64] Fix bug 35094 atomicrmw on Armv8.1-A+lse 2019-03-18 09:21:06 +00:00
AArch64ExpandImm.cpp [AArch64] Prefer "mov" over "orr" to materialize constants. 2019-03-25 21:25:28 +00:00
AArch64ExpandImm.h [AArch64] Refactor floating point materialization. NFC 2019-03-18 18:23:23 +00:00
AArch64ExpandPseudoInsts.cpp [AArch64] Allow -mattr=tpidr-el[1|2|3] 2019-03-21 11:30:17 +00:00
AArch64FalkorHWPFFix.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64FastISel.cpp [AArch64] Optimize floating point materialization 2019-02-01 12:26:06 +00:00
AArch64FrameLowering.cpp [AArch64] only indicate CFI on Windows if we emitted CFI 2019-05-15 21:23:41 +00:00
AArch64FrameLowering.h [COFF, ARM64] Fix localaddress to handle stack realignment and variable size objects 2019-02-01 21:41:33 +00:00
AArch64GenRegisterBankInfo.def Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64InstrAtomics.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64InstrFormats.td [AArch64] Add support for MTE intrinsics 2019-04-23 09:39:58 +00:00
AArch64InstrInfo.cpp [AArch64] check for INLINEASM_BR along w/ INLINEASM 2019-05-24 19:00:13 +00:00
AArch64InstrInfo.h [DebugInfo][AArch64] Recognise target specific instruction as mov instr 2019-05-22 18:48:58 +00:00
AArch64InstrInfo.td [AArch64] Add nvcast patterns for v2f32 -> v1f64 2019-05-24 01:20:34 +00:00
AArch64InstructionSelector.cpp [AArch64][GlobalISel] Use fcsel instead of csel for G_SELECT on FPRs 2019-05-03 22:37:46 +00:00
AArch64ISelDAGToDAG.cpp Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI. 2019-04-23 11:11:34 +00:00
AArch64ISelLowering.cpp [AArch64] Preserve X8 for thunks ending in variadic musttail calls 2019-05-24 01:27:20 +00:00
AArch64ISelLowering.h [TargetLowering] Change getOptimalMemOpType to take a function attribute list 2019-04-30 08:38:12 +00:00
AArch64LegalizerInfo.cpp [AArch64][GlobalISel] Select G_BSWAP for vectors of s32 and s64 2019-04-26 18:00:01 +00:00
AArch64LegalizerInfo.h [AArch64][GlobalISel] Legalization and ISel support for load/stores of vectors of pointers. 2019-04-11 20:32:24 +00:00
AArch64LoadStoreOptimizer.cpp [AArch64] Remove scan-build "Value stored during its initialization is never read" warnings. NFCI. 2019-05-08 16:29:39 +00:00
AArch64MachineFunctionInfo.h [COFF, ARM64] Fix ABI implementation of struct returns 2019-05-03 21:12:36 +00:00
AArch64MacroFusion.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64MacroFusion.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64MCInstLower.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64MCInstLower.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64PBQPRegAlloc.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64PBQPRegAlloc.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64PerfectShuffle.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64PfmCounters.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64PreLegalizerCombiner.cpp [AArch64][GlobalISel] Enable copy elision in the pre-legalizer combine and fix a crash. 2019-04-13 00:33:25 +00:00
AArch64PromoteConstant.cpp [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
AArch64RedundantCopyElimination.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64RegisterBankInfo.cpp [GlobalISel][AArch64] Make FP constraint checks consider possible use/def banks 2019-05-24 23:08:45 +00:00
AArch64RegisterBankInfo.h [GlobalISel][AArch64] Make FP constraint checks consider possible use/def banks 2019-05-24 23:08:45 +00:00
AArch64RegisterBanks.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64RegisterInfo.cpp [AArch64] Support reserving arbitrary general purpose registers 2019-02-13 17:28:47 +00:00
AArch64RegisterInfo.h [COFF, ARM64] Fix localaddress to handle stack realignment and variable size objects 2019-02-01 21:41:33 +00:00
AArch64RegisterInfo.td [AArch64] Support reserving arbitrary general purpose registers 2019-02-13 17:28:47 +00:00
AArch64SchedA53.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedA57.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedA57WriteRes.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SchedCyclone.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedExynosM1.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedExynosM3.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedExynosM4.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedFalkor.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedFalkorDetails.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SchedKryo.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedKryoDetails.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SchedPredExynos.td [AArch64] Update for Exynos 2019-05-02 22:01:39 +00:00
AArch64SchedPredicates.td [AArch64] Update for Exynos 2019-05-02 22:01:39 +00:00
AArch64SchedThunderX2T99.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64SchedThunderX.td [AArch64][SVE2] Add SVE2 target features to backend and TargetParser 2019-05-13 10:10:24 +00:00
AArch64Schedule.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SelectionDAGInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SelectionDAGInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SIMDInstrOpt.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64SpeculationHardening.cpp [SLH] AArch64: correctly pick temporary register to mask SP 2019-01-23 08:18:39 +00:00
AArch64StorePairSuppress.cpp [CodeGen] Add "const" to MachineInstr::mayAlias 2019-04-19 09:08:38 +00:00
AArch64Subtarget.cpp [AArch64] Add support for Cortex-A76 and Cortex-A76AE 2019-02-25 15:08:27 +00:00
AArch64Subtarget.h [AArch64] Subtarget crypto extension defaults 2019-05-22 07:10:27 +00:00
AArch64SVEInstrInfo.td [AArch64][SVE2] Asm: support SVE2 String Processing Group 2019-05-24 10:32:01 +00:00
AArch64SystemOperands.td [AArch64] Add v8.5-a Memory Tagging GMID_EL1 register 2019-04-01 14:41:14 +00:00
AArch64TargetMachine.cpp [AArch64] Create a TargetInfo header. NFC 2019-05-14 21:33:53 +00:00
AArch64TargetMachine.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64TargetObjectFile.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64TargetObjectFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AArch64TargetTransformInfo.cpp [AArch64] Small fix for getIntImmCost 2019-03-18 18:50:58 +00:00
AArch64TargetTransformInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [AArch64] Move InstPrinter files to MCTargetDesc. NFC 2019-05-10 23:50:01 +00:00
LLVMBuild.txt [AArch64] Move InstPrinter files to MCTargetDesc. NFC 2019-05-10 23:50:01 +00:00
SVEInstrFormats.td [AArch64][SVE2] Asm: support SVE2 String Processing Group 2019-05-24 10:32:01 +00:00