llvm-project/llvm/test/Feature
Sanjay Patel 7ff57705ba [SLP] allow forming 2-way reduction patterns
We have a vector compare reduction problem seen in PR39665 comment 2:
https://bugs.llvm.org/show_bug.cgi?id=39665#c2

Or slightly reduced here:

define i1 @cmp2(<2 x double> %a0) {
  %a = fcmp ogt <2 x double> %a0, <double 1.0, double 1.0>
  %b = extractelement <2 x i1> %a, i32 0
  %c = extractelement <2 x i1> %a, i32 1
  %d = and i1 %b, %c
  ret i1 %d
}

SLP would not attempt to turn this into a vector reduction because there is an
artificial lower limit on that transform. We can not completely remove that limit
without inducing regressions though, so this patch just hacks an extra attempt at
creating a 2-way reduction to the end of the analysis.

As shown in the test file, we are still not getting some of the motivating cases,
so follow-on patches will be needed to solve those cases.

Differential Revision: https://reviews.llvm.org/D59710
2019-11-07 06:08:42 -05:00
..
OperandBundles Add, and infer, a nofree function attribute 2019-07-08 15:57:56 +00:00
NamedMDNode.ll
NamedMDNode2.ll
README.txt
alias2.ll
aliases.ll
alignment.ll
attributes.ll
basictest.ll
callingconventions.ll
calltest.ll
casttest.ll
cfgstructures.ll
cold.ll
comdat.ll
const_pv.ll
constexpr.ll
constpointer.ll
elf-deplibs.ll [ELF] Implement Dependent Libraries Feature 2019-05-17 03:44:15 +00:00
elf-linker-options.ll Mark two tests REQUIRES: x86-registered-backend 2018-01-31 07:32:03 +00:00
escaped_label.ll
exception.ll
float.ll
fold-fpcast.ll
forwardreftest.ll
fp-intrinsics.ll [FPEnv] Add constrained intrinsics for lrint and lround 2019-10-07 13:20:00 +00:00
global_pv.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
global_section.ll
globalredefinition3.ll
globalvars.ll
indirectcall.ll
indirectcall2.ll
inlineasm.ll
instructions.ll
intrinsic-noduplicate.ll Add "REQUIRES:" to the last few tests that use target specific intrinsics 2017-05-15 22:15:22 +00:00
intrinsics.ll [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
load_module.ll [Bugpoint] Only run plugins tests if plugins are enabled 2019-05-17 06:41:04 +00:00
md_on_instruction.ll
memorymarkers.ll
metadata.ll
minsize_attr.ll
newcasts.ll
optnone-llc.ll Test for r303197 2017-05-16 20:53:27 +00:00
optnone-opt.ll Restore the LoopInstSimplify pass, reverting r327329 that removed it. 2018-05-25 01:32:36 +00:00
optnone.ll
packed.ll
packed_struct.ll
paramattrs.ll
ppcld.ll
prefixdata.ll
prologuedata.ll
properties.ll
prototype.ll
recursivetype.ll
seh-nounwind.ll
simplecalltest.ll
small.ll
smallest.ll
sparcld.ll
strip_names.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
terminators.ll
testalloca.ll
testconstants.ll
testlogical.ll
testtype.ll
testvarargs.ll
undefined.ll
unreachable.ll
varargs.ll
varargs_new.ll
vector-cast-constant-exprs.ll
weak_constant.ll [SLP] allow forming 2-way reduction patterns 2019-11-07 06:08:42 -05:00
weirdnames.ll
x86ld.ll

README.txt

This directory contains test cases for individual source features of LLVM.
It is designed to make sure that the major components of LLVM support all of the
features of LLVM, for very small examples.  Entire programs should not go here.

Regression tests for individual bug fixes should go into the test/Regression dir.