llvm-6502/test/CodeGen/ARM64
Tim Northover 4a4d62bfb9 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205625 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-04 14:49:21 +00:00
..
2011-03-09-CPSRSpill.ll
2011-03-17-AsmPrinterCrash.ll
2011-03-21-Unaligned-Frame-Index.ll
2011-04-21-CPSRBug.ll
2011-10-18-LdStOptBug.ll
2012-01-11-ComparisonDAGCrash.ll
2012-05-07-DAGCombineVectorExtract.ll
2012-05-07-MemcpyAlignBug.ll
2012-05-09-LOADgot-bug.ll
2012-05-22-LdStOptBug.ll
2012-06-06-FPToUI.ll
2012-07-11-InstrEmitterBug.ll
2013-01-13-ffast-fcmp.ll
2013-01-23-frem-crash.ll
2013-01-23-sext-crash.ll
2013-02-12-shufv8i8.ll
aapcs.ll
abi_align.ll
abi-varargs.ll
abi.ll
addp.ll
addr-mode-folding.ll
addr-type-promotion.ll
addrmode.ll
AdvSIMD-Scalar.ll
alloc-no-stack-realign.ll
alloca-frame-pointer-offset.ll
andCmpBrToTBZ.ll
anyregcc-crash.ll
anyregcc.ll [Stackmaps] Update the stackmap format to use 64-bit relocations for the function address and properly align all entries. 2014-03-31 22:14:04 +00:00
arith-saturating.ll
arith.ll
atomic-128.ll
atomic.ll
basic-pic.ll ARM64: use GOT for weak symbols & PIC. 2014-04-02 14:39:11 +00:00
big-imm-offsets.ll
big-stack.ll
bitfield-extract.ll
blockaddress.ll
build-vector.ll
call-tailcalls.ll
cast-opt.ll
ccmp-heuristics.ll
ccmp.ll
coalesce-ext.ll
code-model-large-abs.ll
collect-loh-garbage-crash.ll
collect-loh-str.ll
collect-loh.ll
compact-unwind-unhandled-cfi.S
complex-ret.ll
convert-v2f64-v2i32.ll
convert-v2i32-v2f64.ll
copy-tuple.ll
crc32.ll
crypto.ll
cse.ll
csel.ll
cvt.ll
dagcombiner-convergence.ll
dagcombiner-load-slicing.ll
dead-register-def-bug.ll [ARM64] Teach the ARM64DeadRegisterDefinition pass to respect implicit-defs. 2014-04-03 20:51:08 +00:00
dup.ll
early-ifcvt.ll
elf-calls.ll
elf-constpool.ll
elf-globals.ll
ext.ll
extend-int-to-fp.ll
extend.ll
extern-weak.ll ARM64: use GOT for weak symbols & PIC. 2014-04-02 14:39:11 +00:00
extload-knownzero.ll
extract_subvector.ll
extract.ll
fast-isel-addr-offset.ll
fast-isel-alloca.ll
fast-isel-br.ll
fast-isel-call.ll
fast-isel-conversion.ll
fast-isel-fcmp.ll
fast-isel-gv.ll
fast-isel-icmp.ll
fast-isel-indirectbr.ll
fast-isel-intrinsic.ll
fast-isel-materialize.ll
fast-isel-noconvert.ll
fast-isel-rem.ll
fast-isel-ret.ll
fast-isel-select.ll
fast-isel.ll
fastcc-tailcall.ll
fastisel-gep-promote-before-add.ll
fcmp-opt.ll
fcopysign.ll
fixed-point-scalar-cvt-dagcombine.ll
fmadd.ll ARM64: add more patterns for commuted fmsub operations. 2014-03-31 15:46:34 +00:00
fmax.ll
fminv.ll ARM64: shuffle patterns around for fmin/fmax & add tests. 2014-03-31 15:46:30 +00:00
fmuladd.ll
fold-address.ll
fold-lsl.ll
fp128-folding.ll
fp128.ll
fp-imm.ll [ARM64] Fix materialization of an fp128 zero immediate. There currently 2014-03-31 00:02:10 +00:00
fp.ll
frame-index.ll
frameaddr.ll
global-address.ll
hello.ll
i16-subreg-extract.ll
icmp-opt.ll
illegal-float-ops.ll ARM64: fix lowering of fp128 fptosi/fptoui 2014-04-02 14:39:07 +00:00
indexed-memory.ll
inline-asm-error-I.ll
inline-asm-error-J.ll
inline-asm-error-K.ll
inline-asm-error-L.ll
inline-asm-error-M.ll
inline-asm-error-N.ll
inline-asm-zero-reg-error.ll
inline-asm.ll
join-reserved.ll
jumptable.ll
ld1.ll ARM64: add patterns for more lane-wise ld1/st1 operations. 2014-04-01 10:37:09 +00:00
ldp.ll
ldur.ll
ldxr-stxr.ll
leaf-compact-unwind.ll
leaf.ll
lit.local.cfg
long-shift.ll
memcpy-inline.ll
memset-inline.ll
memset-to-bzero.ll
movi.ll
mul.ll
neg.ll ARM64: add extra scalar neg pattern & tests. 2014-03-31 15:46:42 +00:00
neon-compare-instructions.ll
neon-v1i1-setcc.ll ARM64: handle v1i1 types arising from setcc properly. 2014-04-04 14:49:21 +00:00
patchpoint.ll
platform-reg.ll
popcnt.ll
prefetch.ll
promote-const.ll
redzone.ll
register-offset-addressing.ll
register-pairing.ll
regress-f128csel-flags.ll
regress-interphase-shift.ll ARM64: add regression test for r205519. 2014-04-03 09:36:05 +00:00
return-vector.ll
returnaddr.ll
rev.ll
rounding.ll
scaled_iv.ll
scvt.ll
shifted-sext.ll
simd-scalar-to-vector.ll ARM64: make sure first argument to INSERT_SUBVECTOR has right type. 2014-04-02 14:38:58 +00:00
simplest-elf.ll
sincos.ll ARM64: don't generate __sincos_stret calls unless on MachO 2014-04-03 07:06:13 +00:00
sitofp-combine-chains.ll
sli-sri-opt.ll
smaxv.ll
sminv.ll
spill-lr.ll
spill.ll
st1.ll ARM64: add patterns for more lane-wise ld1/st1 operations. 2014-04-01 10:37:09 +00:00
stack-no-frame.ll
stackmap.ll [Stackmaps] Update the stackmap format to use 64-bit relocations for the function address and properly align all entries. 2014-03-31 22:14:04 +00:00
stacksave.ll
stp.ll
strict-align.ll
stur.ll
subvector-extend.ll
swizzle-tbl-i16-layout.ll
tbl.ll
this-return.ll
tls-darwin.ll
tls-dynamic-together.ll
tls-dynamics.ll
tls-execs.ll
trap.ll
trn.ll
trunc-store.ll
umaxv.ll
uminv.ll
umov.ll
unaligned_ldst.ll
uzp.ll
vaargs.ll
vabs.ll ARM64: add i64 scalar pattern for @llvm.arm64.abs 2014-03-31 15:46:17 +00:00
vadd.ll
vaddlv.ll
vaddv.ll ARM64: use regalloc-friendly COPY_TO_REGCLASS for bitcasts 2014-04-04 09:03:09 +00:00
variadic-aapcs.ll
vbitwise.ll
vclz.ll
vcmp.ll
vcnt.ll
vcombine.ll
vcvt_f32_su32.ll
vcvt_f.ll ARM64: convert fp16 narrowing ISel to pseudo-instruction 2014-04-02 14:38:54 +00:00
vcvt_n.ll
vcvt_su32_f32.ll
vcvt.ll
vcvtxd_f32_f64.ll
vecCmpBr.ll
vecFold.ll
vector-ext.ll
vector-imm.ll
vector-ldst.ll
vext.ll
vfloatintrinsics.ll
vhadd.ll
vhsub.ll
virtual_base.ll
vmax.ll
vminmaxnm.ll
vmovn.ll
vmul.ll ARM64: add 128-bit MLA operations to the custom selection code. 2014-04-04 09:03:02 +00:00
volatile.ll
vqadd.ll ARM64: add more scalar patterns for usqadd & suqadd. 2014-03-31 15:46:26 +00:00
vqsub.ll
vselect.ll
vsetcc_fp.ll
vshift.ll
vshr.ll ARM64: add extra patterns for scalar shifts 2014-03-31 15:46:46 +00:00
vshuffle.ll
vsqrt.ll ARM64: add more scalar patterns for reciprocal ops. 2014-03-31 15:46:22 +00:00
vsra.ll ARM64: add extra patterns for scalar shifts 2014-03-31 15:46:46 +00:00
vsub.ll
weak-reference.ll
xaluo.ll
zero-cycle-regmov.ll
zero-cycle-zeroing.ll
zext.ll
zextload-unscaled.ll
zip.ll