llvm-6502/test/CodeGen/ARM64
Weiming Zhao 0449d522a6 Folding into CSEL when there is ZEXT between SETCC and ADD
Normally, patterns like (add x, (setcc cc ...)) will be folded into
(csel x, x+1, not cc). However, if there is a ZEXT after SETCC, they
won't be folded. This patch recognizes the ZEXT and allows the
generation of CSINC.

This patch fixes bug 19680.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208660 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-13 00:40:58 +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 ARM64: print canonical syntax for add/sub (imm) instructions. 2014-04-30 11:19:15 +00:00
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 ARM64: add constraints to various FastISel operations 2014-04-15 13:59:53 +00:00
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
2014-04-16-AnInfiniteLoopInDAGCombine.ll Fix an infinite loop bug in DAG Combine about keeping transfering between ANY_EXTEND and SIGN_EXTEND. 2014-04-22 09:57:06 +00:00
2014-04-28-sqshl-uqshl-i64Contant.ll [ARM64]Fix a bug cannot select UQSHL/SQSHL with constant i64 shift amount. 2014-04-28 07:34:27 +00:00
2014-04-29-EXT-undef-mask.ll [ARM64]Fix a bug about incorrect operand order in an EXT instruction, which is introduced by r207485. 2014-04-29 07:51:19 +00:00
aapcs.ll [ARM64-BE] Make big endian (scalar) argument passing work correctly. 2014-05-07 11:28:36 +00:00
aarch64-large-frame.ll ARM64: print canonical syntax for add/sub (imm) instructions. 2014-04-30 11:19:15 +00:00
aarch64-neon-2velem-high.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-2velem.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-3vdiff.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-aba-abd.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-across.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-add-pairwise.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-add-sub.ll AArch64/ARM64: port some NEON tests to ARM64 2014-04-16 15:28:02 +00:00
aarch64-neon-copy.ll ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
aarch64-neon-copyPhysReg-tuple.ll AArch64/ARM64: improve spotting of EXT instructions from VECTOR_SHUFFLE. 2014-04-18 12:50:58 +00:00
aarch64-neon-mul-div.ll AArch64/ARM64: port more AArch64 tests to ARM64. 2014-04-18 13:16:55 +00:00
aarch64-neon-scalar-by-elem-mul.ll AArch64/ARM64: mark fmul intrinsic as commutative. 2014-04-22 10:10:14 +00:00
aarch64-neon-select_cc.ll AArch64/ARM64: optimise vector selects & enable test 2014-05-07 14:10:27 +00:00
aarch64-neon-simd-ldst-one.ll AArch64/ARM64: add more NEON tests. 2014-04-18 14:54:53 +00:00
aarch64-neon-simd-shift.ll AArch64/ARM64: add extra testing from AArch64 to ARM64 2014-04-22 12:45:32 +00:00
aarch64-neon-simd-vget.ll AArch64/ARM64: add extra testing from AArch64 to ARM64 2014-04-22 12:45:32 +00:00
aarch64-neon-v1i1-setcc.ll AArch64/ARM64: port more tests 2014-04-24 12:11:46 +00:00
aarch64-neon-vector-list-spill.ll AArch64/ARM64: add extra testing from AArch64 to ARM64 2014-04-22 12:45:32 +00:00
abi_align.ll [ARM64][fast-isel] Disable target specific optimizations at -O0. Functionally, 2014-05-07 16:41:55 +00:00
abi-varargs.ll
abi.ll [ARM64] Rename FP to the UAL-compliant 'X29'. 2014-04-09 14:43:50 +00:00
addp.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
addr-mode-folding.ll Fix some doc and comment typos 2014-04-09 14:47:27 +00:00
addr-type-promotion.ll ARM64: [su]xtw use W regs as inputs, not X regs. 2014-04-17 20:47:31 +00:00
addrmode.ll ARM64: print canonical syntax for add/sub (imm) instructions. 2014-04-30 11:19:15 +00:00
AdvSIMD-Scalar.ll [ARM64] Fix an issue where we were always assuming a copy was coming from a D subregister. 2014-04-28 16:21:50 +00:00
alloc-no-stack-realign.ll
alloca-frame-pointer-offset.ll
andCmpBrToTBZ.ll
ands-bad-peephole.ll [ARM64] Fix the information we give to the peephole optimizer for comparison. 2014-04-23 20:43:38 +00:00
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 [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
arith.ll ARM64: print lsr instead of lsrv for variable shifts (etc) 2014-04-30 13:37:07 +00:00
arm64-dead-def-elimination-flag.ll Add a flag to disable the ARM64DeadRegisterDefinitionsPass 2014-04-14 21:05:02 +00:00
atomic-128.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
atomic.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
basic-pic.ll ARM64: use GOT for weak symbols & PIC. 2014-04-02 14:39:11 +00:00
big-endian-bitconverts.ll [ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests. 2014-05-07 12:33:55 +00:00
big-endian-varargs.ll [ARM64-BE] Fix variable-argument saving. 2014-05-07 12:33:48 +00:00
big-endian-vector-callee.ll [ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests. 2014-05-07 12:33:55 +00:00
big-endian-vector-caller.ll [ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests. 2014-05-07 12:33:55 +00:00
big-imm-offsets.ll
big-stack.ll ARM64: print canonical syntax for add/sub (imm) instructions. 2014-04-30 11:19:15 +00:00
bitfield-extract.ll AArch64/ARM64: print BFM instructions as BFI or BFXIL 2014-05-01 12:29:38 +00:00
blockaddress.ll
build-vector.ll Fix some doc and comment typos 2014-04-09 14:47:27 +00:00
call-tailcalls.ll
cast-opt.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
ccmp-heuristics.ll
ccmp.ll
clrsb.ll Add ARM64 CLS patterns 2014-04-11 22:27:58 +00:00
coalesce-ext.ll ARM64: [su]xtw use W regs as inputs, not X regs. 2014-04-17 20:47:31 +00:00
code-model-large-abs.ll
collect-loh-garbage-crash.ll
collect-loh-str.ll
collect-loh.ll ARM64: disable generation of .loh directives outside MachO. 2014-04-18 14:54:46 +00:00
compact-unwind-unhandled-cfi.S
complex-copy-noneon.ll [ARM64] Enable feature predicates for NEON / FP / CRYPTO. 2014-04-23 06:22:48 +00:00
complex-ret.ll
const-addr.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
convert-v2f64-v2i32.ll
convert-v2i32-v2f64.ll
copy-tuple.ll
crc32.ll [ARM64] Support crc predicate on ARM64. 2014-04-25 09:25:42 +00:00
crypto.ll [ARM64] Enable feature predicates for NEON / FP / CRYPTO. 2014-04-23 06:22:48 +00:00
cse.ll
csel.ll Folding into CSEL when there is ZEXT between SETCC and ADD 2014-05-13 00:40:58 +00:00
cvt.ll
dagcombiner-convergence.ll
dagcombiner-dead-indexed-load.ll [DAGCombiner] Split up an indexed load if only the base pointer value is live 2014-05-12 23:00:03 +00:00
dagcombiner-indexed-load.ll Add the ability to use GEPs for address sinking in CGP 2014-04-12 00:59:48 +00:00
dagcombiner-load-slicing.ll
dead-def-frame-index.ll ARM64: print canonical syntax for add/sub (imm) instructions. 2014-04-30 11:19:15 +00:00
dead-register-def-bug.ll [ARM64] Teach the ARM64DeadRegisterDefinition pass to respect implicit-defs. 2014-04-03 20:51:08 +00:00
dup.ll ARM64: implement cunning optimisation from AArch64 2014-04-18 09:31:20 +00:00
early-ifcvt.ll
elf-calls.ll
elf-constpool.ll
elf-globals.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
ext.ll [ARM64]Fix a bug when lowering shuffle vector to an EXT instruction. 2014-04-29 01:50:36 +00:00
extend-int-to-fp.ll
extend.ll ARM64: [su]xtw use W regs as inputs, not X regs. 2014-04-17 20:47:31 +00:00
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 TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
fast-isel-addr-offset.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
fast-isel-alloca.ll [ARM64] Rename FP to the UAL-compliant 'X29'. 2014-04-09 14:43:50 +00:00
fast-isel-br.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
fast-isel-call.ll [ARM64-BE] Teach fast-isel about how to set up sub-word stack arguments for big endian calls. 2014-05-08 12:53:50 +00:00
fast-isel-conversion.ll [ARM64][fast-isel] Disable target specific optimizations at -O0. Functionally, 2014-05-07 16:41:55 +00:00
fast-isel-fcmp.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
fast-isel-gv.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
fast-isel-icmp.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
fast-isel-indirectbr.ll
fast-isel-intrinsic.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
fast-isel-materialize.ll ARM64: print fp immediates without using scientific notation. 2014-04-30 16:13:34 +00:00
fast-isel-noconvert.ll [ARM64][fast-isel] Fast-isel doesn't know how to handle f128. 2014-04-30 15:29:57 +00:00
fast-isel-rem.ll ARM64: make sure FastISel emits SSA MachineInstrs 2014-05-08 10:30:56 +00:00
fast-isel-ret.ll
fast-isel-select.ll
fast-isel.ll ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
fastcc-tailcall.ll
fastisel-gep-promote-before-add.ll
fcmp-opt.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
fcopysign.ll ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
fixed-point-scalar-cvt-dagcombine.ll
fmadd.ll ARM64: fix fmsub patterns which assumed accum operand was first 2014-04-08 12:23:51 +00:00
fmax.ll ARM64: fix SELECT_CC lowering in absence of NaNs. 2014-05-10 07:37:50 +00:00
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 [ARM64] Print preferred aliases for SFBM/UBFM in InstPrinter 2014-04-25 10:25:29 +00:00
fp128-folding.ll
fp128.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
fp-contract-zero.ll DAGCombine: prevent formation of illegal ConstantFP nodes. 2014-05-02 17:25:02 +00:00
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 [ARM64] Rename LR to the UAL-compliant 'X30'. 2014-04-09 14:43:59 +00:00
global-address.ll
hello.ll [ARM64] Rename LR to the UAL-compliant 'X30'. 2014-04-09 14:43:59 +00:00
i16-subreg-extract.ll
icmp-opt.ll TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
illegal-float-ops.ll ARM64: fix lowering of fp128 fptosi/fptoui 2014-04-02 14:39:07 +00:00
indexed-memory.ll
indexed-vector-ldst.ll AArch64/ARM64: Port NEON post-increment load/store with 2/3/4 vectors to ARM64 backend. 2014-05-08 07:38:13 +00:00
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 ARM64: add acquire/release versions of the existing atomic intrinsics. 2014-04-17 20:00:24 +00:00
leaf.ll
lit.local.cfg [Test] Trim unnecessary .c and .cpp from config.suffix in lit.local.cfg 2014-05-12 19:57:31 +00:00
long-shift.ll ARM64: print lsr instead of lsrv for variable shifts (etc) 2014-04-30 13:37:07 +00:00
memcpy-inline.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
memset-inline.ll
memset-to-bzero.ll [ARM64] Prefer generation of bzero on Darwin only 2014-05-01 13:11:59 +00:00
misched-basic-A53.ll [ARM64] Ports the Cortex-A53 Machine Model description from AArch64. 2014-04-18 21:22:04 +00:00
movi.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
mul.ll
named-reg-alloc.ll Implememting named register intrinsics 2014-05-06 16:51:25 +00:00
named-reg-notareg.ll Implememting named register intrinsics 2014-05-06 16:51:25 +00:00
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 TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
patchpoint.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
pic-local-symbol.ll [ARM64] When compiling for ELF in PIC mode, local symbols shouldn't go through the GOT 2014-04-25 13:43:18 +00:00
platform-reg.ll
popcnt.ll
prefetch.ll
promote-const.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
redzone.ll
reg-copy-noneon.ll [ARM64] Enable feature predicates for NEON / FP / CRYPTO. 2014-04-23 06:22:48 +00:00
register-offset-addressing.ll
register-pairing.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
regress-f128csel-flags.ll
regress-interphase-shift.ll Revert r191049/r191059 as it can produce wrong code (see PR17975). 2014-04-15 18:34:24 +00:00
return-vector.ll
returnaddr.ll [ARM64] Rename LR to the UAL-compliant 'X30'. 2014-04-09 14:43:59 +00:00
rev.ll ARM64: remove buggy REV16 pattern. 2014-04-14 12:59:52 +00:00
rounding.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
scaled_iv.ll
scvt.ll
shifted-sext.ll [ARM64] Print preferred aliases for SFBM/UBFM in InstPrinter 2014-04-25 10:25:29 +00:00
simd-scalar-to-vector.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +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 ARM64: specify triple so that Linux tests pass 2014-04-16 12:03:56 +00:00
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
stackpointer.ll Implememting named register intrinsics 2014-05-06 16:51:25 +00:00
stacksave.ll
stp.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
strict-align.ll [ARM64] Enable alignment control option in front-end for ARM64. 2014-05-06 09:48:52 +00:00
stur.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
subsections.ll ARM64: don't emit .subsections_via_symbols on ELF. 2014-04-18 14:54:41 +00:00
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 ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
trn.ll
trunc-store.ll ARM64: [su]xtw use W regs as inputs, not X regs. 2014-04-17 20:47:31 +00:00
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] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
variadic-aapcs.ll ARM64: use hex immediates for movz/movk instructions 2014-04-30 11:19:40 +00:00
vbitwise.ll
vclz.ll
vcmp.ll ARM64: add pattern for <1 x i64> custom not node. 2014-04-09 06:55:39 +00:00
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 [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
vecFold.ll
vector-ext.ll ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
vector-imm.ll ARM64: print fp immediates without using scientific notation. 2014-04-30 16:13:34 +00:00
vector-insertion.ll ARM64: print fp immediates without using scientific notation. 2014-04-30 16:13:34 +00:00
vector-ldst.ll
vext.ll
vfloatintrinsics.ll
vhadd.ll
vhsub.ll
virtual_base.ll
vmax.ll
vminmaxnm.ll
vmovn.ll
vmul.ll ARM64: scalarize v1i64 mul operation 2014-04-09 07:07:02 +00:00
volatile.ll
vpopcnt.ll [ARM64] Fix "Cannot select" for vector ctpop 2014-04-17 01:01:37 +00:00
vqadd.ll ARM64: add more scalar patterns for usqadd & suqadd. 2014-03-31 15:46:26 +00:00
vqsub.ll
vselect.ll Fix an infinite loop bug in DAG Combine about keeping transfering between ANY_EXTEND and SIGN_EXTEND. 2014-04-22 09:57:06 +00:00
vsetcc_fp.ll
vshift.ll ARM64: add extra NEG pattern. 2014-04-18 14:54:35 +00:00
vshr.ll [ARM64] Set default CPU to generic instead of cyclone. 2014-04-15 19:08:46 +00:00
vshuffle.ll ARM64: hexify printing various immediate operands 2014-04-30 11:19:28 +00:00
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 TableGen: use PrintMethods to print more aliases 2014-05-12 18:04:06 +00:00
zero-cycle-regmov.ll
zero-cycle-zeroing.ll
zext.ll
zextload-unscaled.ll
zip.ll