1#!/usr/bin/perl -w 2 3# Generate trivial test cases to exercise result types. 4 5use strict; 6 7my @basicTypes = ("half", "float", "double", 8 "char", "short", "int", "long", 9 "uchar", "ushort", "uint", "ulong", 10 "bool", 11 "MyStruct"); 12 13# 1 signifies non-vector 14# 3 is not supported for exported types 15my @vecLengths = (1, 2, 4); 16 17print "// -Wall -Werror\n"; 18print "#pragma version(1)\n"; 19print "#pragma rs java_package_name(result)\n\n"; 20print "// This test case was created by $0.\n"; 21print "// It exercises all legal Java-reflectable result types, so that we can ensure\n"; 22print "// (a) We do not choke when compiling them\n"; 23print "// (b) We reflect them correctly\n\n"; 24print "// One example struct type\n"; 25print "typedef struct MyStruct { float f; double d; } MyStruct;\n"; 26 27foreach my $basicType (@basicTypes) { 28 for (my $isArray = 0; $isArray <= 1; ++$isArray) { 29 foreach my $vecLen (@vecLengths) { 30 31 # There are no bool vectors or struct vectors 32 next if ($vecLen > 1) && (($basicType eq "bool") || ($basicType eq "MyStruct")); 33 34 my $eltName = $basicType; 35 $eltName .= $vecLen if ($vecLen > 1); 36 my $resultName = ($isArray ? "array_${eltName}" : $eltName); 37 my $reduceName = "my_${resultName}"; 38 my $accumName = "${reduceName}_accum"; 39 my $combName = "${reduceName}_comb"; 40 print "\n"; 41 print "#pragma rs reduce(${reduceName}) accumulator(${accumName}) combiner(${combName})\n"; 42 print "typedef ${eltName} ${resultName}[7];\n" if ($isArray); 43 print "static void ${accumName}(${resultName} *accum, ${eltName} val) { }\n"; 44 print "static void ${combName}(${resultName} *accum, const ${resultName} *other) { }\n"; 45 } 46 } 47} 48