diff options
author | Håvard Pettersen <havardpe@oath.com> | 2021-04-23 10:06:11 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2021-04-23 10:07:16 +0000 |
commit | e9cf12154de7b52ef292cbf6eb8817dd508b6a3c (patch) | |
tree | b690fc899b6788b047165c06135ecd4ddedc213b /eval/src/apps/tensor_conformance | |
parent | 7aeb81f09e75522baebd75e08102e167ff5e0b9f (diff) |
more conformance testing
Diffstat (limited to 'eval/src/apps/tensor_conformance')
-rw-r--r-- | eval/src/apps/tensor_conformance/generate.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/eval/src/apps/tensor_conformance/generate.cpp b/eval/src/apps/tensor_conformance/generate.cpp index e7a64ed0be4..3fc1a14fdde 100644 --- a/eval/src/apps/tensor_conformance/generate.cpp +++ b/eval/src/apps/tensor_conformance/generate.cpp @@ -418,6 +418,57 @@ void generate_products(TestBuilder &dst) { //----------------------------------------------------------------------------- +void generate_expanding_reduce(TestBuilder &dst) { + auto spec = GenSpec::from_desc("x5y0_0"); + for (Aggr aggr: Aggregator::list()) { + // end up with more cells than you started with + auto expr1 = fmt("reduce(a,%s,y)", AggrNames::name_of(aggr)->c_str()); + auto expr2 = fmt("reduce(a,%s)", AggrNames::name_of(aggr)->c_str()); + dst.add(expr1, {{"a", spec}}); + dst.add(expr2, {{"a", spec}}); + } +} + +//----------------------------------------------------------------------------- + +void generate_converting_lambda(TestBuilder &dst) { + auto spec = GenSpec::from_desc("x3y5_2"); + // change cell type and dimension types + dst.add("tensor<bfloat16>(x[5],y[10])(a{x:(x),y:(y)})", {{"a", spec}}); +} + +//----------------------------------------------------------------------------- + +void generate_shadowing_lambda(TestBuilder &dst) { + auto a = GenSpec::from_desc("a3"); + auto b = GenSpec::from_desc("b3"); + // index 'a' shadows external parameter 'a' + dst.add("tensor(a[5])(reduce(a,sum)+reduce(b,sum))", {{"a", a}, {"b", b}}); +} + +//----------------------------------------------------------------------------- + +void generate_strict_verbatim_peek(TestBuilder &dst) { + auto a = GenSpec(3); + auto b = GenSpec().map("x", {"3", "a"}); + // 'a' without () is verbatim even if 'a' is a known value + dst.add("b{x:a}", {{"a", a}, {"b", b}}); +} + +//----------------------------------------------------------------------------- + +void generate_nested_tensor_lambda(TestBuilder &dst) { + auto a = GenSpec(2); + auto b = GenSpec::from_desc("x3").seq(Seq({3,5,7})); + // constant nested tensor lambda + dst.add("tensor(x[2],y[3],z[5])(tensor(x[5],y[3],z[2])(x*6+y*2+z){x:(z),y:(y),z:(x)})", {}); + // dynamic nested tensor lambda + dst.add("tensor(x[2],y[3],z[5])(tensor(x[5],y[3],z[2])(20*(a+x)+2*(b{x:(a)}+y)+z){x:(z),y:(y),z:(x)})", + {{"a", a}, {"b", b}}); +} + +//----------------------------------------------------------------------------- + } // namespace <unnamed> //----------------------------------------------------------------------------- @@ -440,4 +491,9 @@ Generator::generate(TestBuilder &dst) generate_if(dst); //-------------------- generate_products(dst); + generate_expanding_reduce(dst); + generate_converting_lambda(dst); + generate_shadowing_lambda(dst); + generate_strict_verbatim_peek(dst); + generate_nested_tensor_lambda(dst); } |