llvm-project/llvm/lib/Target/AArch64
Tim Northover 07a8ff4892 ARM64: handle v1i1 types arising from setcc properly.
There were several overlapping problems here, and this solution is
closely inspired by the one adopted in AArch64 in r201381.

Firstly, scalarisation of v1i1 setcc operations simply fails if the
input types are legal. This is fixed in LegalizeVectorTypes.cpp this
time, and allows AArch64 code to be simplified slightly.

Second, vselect with such a setcc feeding into it ends up in
ScalarizeVectorOperand, where it's not handled. I experimented with an
implementation, but found that whatever DAG came out was rather
horrific. I think Hao's DAG combine approach is a good one for
quality, though there are edge cases it won't catch (to be fixed
separately).

Should fix PR19335.

llvm-svn: 205625
2014-04-04 14:49:21 +00:00
..
AsmParser PR18929: 2014-03-30 17:09:54 +00:00
Disassembler Add AArch64 big endian Target (aarch64_be) 2014-02-24 11:34:50 +00:00
InstPrinter Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
MCTargetDesc Completely rewrite ELFObjectWriter::RecordRelocation. 2014-03-29 06:26:49 +00:00
TargetInfo Add AArch64 big endian Target (aarch64_be) 2014-02-24 11:34:50 +00:00
Utils Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
AArch64.h [AArch64] Add support for TargetTransformInfo Analysis. 2014-02-20 16:00:08 +00:00
AArch64.td AArch64: error when both positional & named operands are used. 2014-03-13 09:00:13 +00:00
AArch64AsmPrinter.cpp [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
AArch64AsmPrinter.h DebugInfo: remove target-specific Frame Index handling for DBG_VALUE MachineInstrs 2013-06-16 20:34:27 +00:00
AArch64BranchFixupPass.cpp [C++11] Replace llvm::next and llvm::prior with std::next and std::prev. 2014-03-02 12:27:27 +00:00
AArch64CallingConv.td [AArch64] Removed unnecessary copy patterns with v1fx types. 2013-12-12 15:46:29 +00:00
AArch64FrameLowering.cpp Make consistent use of MCPhysReg instead of uint16_t throughout the tree. 2014-04-04 05:16:06 +00:00
AArch64FrameLowering.h Add const qualifier to some static arrays. 2013-07-15 07:02:45 +00:00
AArch64ISelDAGToDAG.cpp [AArch64 NEON]Implment loading vector constant form constant pool. 2013-12-18 06:26:04 +00:00
AArch64ISelLowering.cpp ARM64: handle v1i1 types arising from setcc properly. 2014-04-04 14:49:21 +00:00
AArch64ISelLowering.h [AArch64] Lower SHL_PARTS, SRA_PARTS and SRL_PARTS 2014-03-27 16:28:09 +00:00
AArch64InstrFormats.td AArch64: error when both positional & named operands are used. 2014-03-13 09:00:13 +00:00
AArch64InstrInfo.cpp Replace PROLOG_LABEL with a new CFI_INSTRUCTION. 2014-03-07 06:08:31 +00:00
AArch64InstrInfo.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
AArch64InstrInfo.td [AArch64] Add SchedRW lists to NEON instructions. 2014-03-21 19:34:41 +00:00
AArch64InstrNEON.td [AArch64] Add SchedRW lists to NEON instructions. 2014-03-21 19:34:41 +00:00
AArch64MCInstLower.cpp Move the llvm mangler to lib/IR. 2014-01-07 21:19:40 +00:00
AArch64MachineFunctionInfo.cpp AArch64: add block comments where missing 2013-02-14 16:17:01 +00:00
AArch64MachineFunctionInfo.h AArch64: remove ConstantIsland pass & put literals in separate section. 2013-02-15 09:33:43 +00:00
AArch64RegisterInfo.cpp Make consistent use of MCPhysReg instead of uint16_t throughout the tree. 2014-04-04 05:16:06 +00:00
AArch64RegisterInfo.h Make consistent use of MCPhysReg instead of uint16_t throughout the tree. 2014-04-04 05:16:06 +00:00
AArch64RegisterInfo.td [AArch64] Removed unused i8 type from FPR8 register class. 2014-01-24 22:36:53 +00:00
AArch64Schedule.td [AArch64] Add SchedRW lists to NEON instructions. 2014-03-21 19:34:41 +00:00
AArch64ScheduleA53.td [AArch64] Add SchedRW lists to NEON instructions. 2014-03-21 19:34:41 +00:00
AArch64SelectionDAGInfo.cpp
AArch64SelectionDAGInfo.h Fix formatting in AArch64 backend. 2013-02-05 13:24:56 +00:00
AArch64Subtarget.cpp [AArch64] Fix a use of uninitialized memory introduced in r203125, 2014-03-10 03:52:47 +00:00
AArch64Subtarget.h [AArch64] This is a work in progress to provide a machine description 2014-03-06 16:04:00 +00:00
AArch64TargetMachine.cpp Add AArch64 big endian Target (aarch64_be) 2014-02-24 11:34:50 +00:00
AArch64TargetMachine.h Add AArch64 big endian Target (aarch64_be) 2014-02-24 11:34:50 +00:00
AArch64TargetObjectFile.cpp Make sure -use-init-array has intended effect on all AArch64 ELF targets, not just linux. 2014-01-10 13:41:49 +00:00
AArch64TargetObjectFile.h Make sure -use-init-array has intended effect on all AArch64 ELF targets, not just linux. 2014-01-10 13:41:49 +00:00
AArch64TargetTransformInfo.cpp remove a bunch of unused private methods 2014-03-23 17:09:26 +00:00
CMakeLists.txt [AArch64] Add support for TargetTransformInfo Analysis. 2014-02-20 16:00:08 +00:00
LLVMBuild.txt Add proper dependencies to LLVMBuild.txt in llvm/lib. 2013-12-10 05:39:34 +00:00
Makefile Remove cyclic dependency in AArch64 libraries 2013-02-05 13:24:47 +00:00
README.txt

README.txt

This file will contain changes that need to be made before AArch64 can become an
officially supported target. Currently a placeholder.