1########################################################################## 2# Copyright (c) 2009, ETH Zurich. 3# All rights reserved. 4# 5# This file is distributed under the terms in the attached LICENSE file. 6# If you do not find this file, copies can be found by writing to: 7# ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group. 8########################################################################## 9 10import tests 11from common import TestCommon 12from results import PassFailMultiResult 13 14class CompilerRTBuiltinsAbstract(TestCommon): 15 16 def get_finish_string(self): 17 return "usleeptest_done" 18 19 def process_data(self, testdir, rawiter): 20 # the test passed if no error occurred 21 errors = [] 22 for line in rawiter: 23 if "error in" in line: 24 errors.append(line) 25 if line.startswith("Assertion failed on core"): 26 errors.append(line) 27 28 return PassFailMultiResult(self.name, errors) 29 30# lists of tests to run for compiler-rt 31vector_fp_tests = [ 32 "compiler-rt/test/builtins/Unit/adddf3vfp_test", 33 "compiler-rt/test/builtins/Unit/addsf3vfp_test", 34 "compiler-rt/test/builtins/Unit/divdf3vfp_test", 35 "compiler-rt/test/builtins/Unit/divsf3vfp_test", 36 "compiler-rt/test/builtins/Unit/eqdf2vfp_test", 37 "compiler-rt/test/builtins/Unit/eqsf2vfp_test", 38 "compiler-rt/test/builtins/Unit/extebdsfdf2vfp_test", 39 "compiler-rt/test/builtins/Unit/fixdfsivfp_test", 40 "compiler-rt/test/builtins/Unit/fixsfsivfp_test", 41 "compiler-rt/test/builtins/Unit/fixunsdfsivfp_test", 42 "compiler-rt/test/builtins/Unit/fixunssfsivfp_test", 43 "compiler-rt/test/builtins/Unit/floatsidfvfp_test", 44 "compiler-rt/test/builtins/Unit/floatsisfvfp_test", 45 "compiler-rt/test/builtins/Unit/floatunssidfvfp_test", 46 "compiler-rt/test/builtins/Unit/floatunssisfvfp_test", 47 "compiler-rt/test/builtins/Unit/gedf2vfp_test", 48 "compiler-rt/test/builtins/Unit/gesf2vfp_test", 49 "compiler-rt/test/builtins/Unit/gtdf2vfp_test", 50 "compiler-rt/test/builtins/Unit/gtsf2vfp_test", 51 "compiler-rt/test/builtins/Unit/ledf2vfp_test", 52 "compiler-rt/test/builtins/Unit/lesf2vfp_test", 53 "compiler-rt/test/builtins/Unit/ltdf2vfp_test", 54 "compiler-rt/test/builtins/Unit/ltsf2vfp_test", 55 "compiler-rt/test/builtins/Unit/muldf3vfp_test", 56 "compiler-rt/test/builtins/Unit/mulsf3vfp_test", 57 "compiler-rt/test/builtins/Unit/nedf2vfp_test", 58 "compiler-rt/test/builtins/Unit/negdf2vfp_test", 59 "compiler-rt/test/builtins/Unit/negsf2vfp_test", 60 "compiler-rt/test/builtins/Unit/nesf2vfp_test", 61 "compiler-rt/test/builtins/Unit/subdf3vfp_test", 62 "compiler-rt/test/builtins/Unit/subsf3vfp_test", 63 "compiler-rt/test/builtins/Unit/truncdfsf2vfp_test", 64 "compiler-rt/test/builtins/Unit/unorddf2vfp_test", 65 "compiler-rt/test/builtins/Unit/unordsf2vfp_test", 66] 67 68@tests.add_test 69class CompilerRTBuiltinsVfp(CompilerRTBuiltinsAbstract): 70 name = 'compiler-rt-vfp' 71 def get_modules(self, build, machine): 72 modules = super(CompilerRTBuiltinsVfp, self).get_modules(build, machine) 73 for m in vector_fp_tests: 74 modules.add_module(m) 75 modules.add_module("usleeptest", [ "5" ]) 76 return modules 77 78fp_tests = [ 79 "compiler-rt/test/builtins/Unit/absvdi2_test", 80 "compiler-rt/test/builtins/Unit/absvsi2_test", 81 "compiler-rt/test/builtins/Unit/absvti2_test", 82 "compiler-rt/test/builtins/Unit/addtf3_test", 83 "compiler-rt/test/builtins/Unit/addvdi3_test", 84 "compiler-rt/test/builtins/Unit/addvsi3_test", 85 "compiler-rt/test/builtins/Unit/addvti3_test", 86 "compiler-rt/test/builtins/Unit/ashldi3_test", 87 "compiler-rt/test/builtins/Unit/ashlti3_test", 88 "compiler-rt/test/builtins/Unit/ashrdi3_test", 89 "compiler-rt/test/builtins/Unit/ashrti3_test", 90 "compiler-rt/test/builtins/Unit/bswapdi2_test", 91 "compiler-rt/test/builtins/Unit/bswapsi2_test", 92# "compiler-rt/test/builtins/Unit/clear_cache_test", 93 "compiler-rt/test/builtins/Unit/clzdi2_test", 94 "compiler-rt/test/builtins/Unit/clzsi2_test", 95 "compiler-rt/test/builtins/Unit/clzti2_test", 96 "compiler-rt/test/builtins/Unit/cmpdi2_test", 97 "compiler-rt/test/builtins/Unit/cmpti2_test", 98 "compiler-rt/test/builtins/Unit/comparedf2_test", 99 "compiler-rt/test/builtins/Unit/comparesf2_test", 100 "compiler-rt/test/builtins/Unit/ctzdi2_test", 101 "compiler-rt/test/builtins/Unit/ctzsi2_test", 102 "compiler-rt/test/builtins/Unit/ctzti2_test", 103 "compiler-rt/test/builtins/Unit/divdc3_test", 104 "compiler-rt/test/builtins/Unit/divdi3_test", 105 "compiler-rt/test/builtins/Unit/divmodsi4_test", 106 "compiler-rt/test/builtins/Unit/divsc3_test", 107 "compiler-rt/test/builtins/Unit/divsi3_test", 108# "compiler-rt/test/builtins/Unit/divtc3_test", 109 "compiler-rt/test/builtins/Unit/divtf3_test", 110 "compiler-rt/test/builtins/Unit/divti3_test", 111 "compiler-rt/test/builtins/Unit/divxc3_test", 112# "compiler-rt/test/builtins/Unit/enable_execute_stack_test", 113 "compiler-rt/test/builtins/Unit/eqtf2_test", 114 "compiler-rt/test/builtins/Unit/extenddftf2_test", 115# "compiler-rt/test/builtins/Unit/extendhfsf2_test", 116 "compiler-rt/test/builtins/Unit/extendsftf2_test", 117 "compiler-rt/test/builtins/Unit/ffsdi2_test", 118 "compiler-rt/test/builtins/Unit/ffsti2_test", 119 "compiler-rt/test/builtins/Unit/fixdfdi_test", 120 "compiler-rt/test/builtins/Unit/fixdfti_test", 121 "compiler-rt/test/builtins/Unit/fixsfdi_test", 122 "compiler-rt/test/builtins/Unit/fixsfti_test", 123 "compiler-rt/test/builtins/Unit/fixtfdi_test", 124 "compiler-rt/test/builtins/Unit/fixtfsi_test", 125 "compiler-rt/test/builtins/Unit/fixtfti_test", 126 # this errors on 0X1P+64 127 #"compiler-rt/test/builtins/Unit/fixunsdfdi_test", 128 "compiler-rt/test/builtins/Unit/fixunsdfsi_test", 129 "compiler-rt/test/builtins/Unit/fixunsdfti_test", 130 # this errors on 0X1P+64 131 #"compiler-rt/test/builtins/Unit/fixunssfdi_test", 132 "compiler-rt/test/builtins/Unit/fixunssfsi_test", 133 "compiler-rt/test/builtins/Unit/fixunssfti_test", 134 "compiler-rt/test/builtins/Unit/fixunstfdi_test", 135 "compiler-rt/test/builtins/Unit/fixunstfsi_test", 136 "compiler-rt/test/builtins/Unit/fixunstfti_test", 137 "compiler-rt/test/builtins/Unit/fixunsxfdi_test", 138 "compiler-rt/test/builtins/Unit/fixunsxfsi_test", 139 "compiler-rt/test/builtins/Unit/fixunsxfti_test", 140 "compiler-rt/test/builtins/Unit/fixxfdi_test", 141 "compiler-rt/test/builtins/Unit/fixxfti_test", 142 "compiler-rt/test/builtins/Unit/floatdidf_test", 143 "compiler-rt/test/builtins/Unit/floatdisf_test", 144 "compiler-rt/test/builtins/Unit/floatditf_test", 145 "compiler-rt/test/builtins/Unit/floatdixf_test", 146 "compiler-rt/test/builtins/Unit/floatsitf_test", 147 "compiler-rt/test/builtins/Unit/floattidf_test", 148 "compiler-rt/test/builtins/Unit/floattisf_test", 149 "compiler-rt/test/builtins/Unit/floattixf_test", 150 "compiler-rt/test/builtins/Unit/floatundidf_test", 151 "compiler-rt/test/builtins/Unit/floatundisf_test", 152 "compiler-rt/test/builtins/Unit/floatunditf_test", 153 "compiler-rt/test/builtins/Unit/floatundixf_test", 154 "compiler-rt/test/builtins/Unit/floatunsitf_test", 155 "compiler-rt/test/builtins/Unit/floatuntidf_test", 156 "compiler-rt/test/builtins/Unit/floatuntisf_test", 157 "compiler-rt/test/builtins/Unit/floatuntixf_test", 158# "compiler-rt/test/builtins/Unit/gcc_personality_test", 159 "compiler-rt/test/builtins/Unit/getf2_test", 160 "compiler-rt/test/builtins/Unit/gttf2_test", 161 "compiler-rt/test/builtins/Unit/letf2_test", 162 "compiler-rt/test/builtins/Unit/lshrdi3_test", 163 "compiler-rt/test/builtins/Unit/lshrti3_test", 164 "compiler-rt/test/builtins/Unit/lttf2_test", 165 "compiler-rt/test/builtins/Unit/moddi3_test", 166 "compiler-rt/test/builtins/Unit/modsi3_test", 167 "compiler-rt/test/builtins/Unit/modti3_test", 168 "compiler-rt/test/builtins/Unit/muldc3_test", 169 "compiler-rt/test/builtins/Unit/muldi3_test", 170 "compiler-rt/test/builtins/Unit/mulodi4_test", 171 "compiler-rt/test/builtins/Unit/mulosi4_test", 172 "compiler-rt/test/builtins/Unit/muloti4_test", 173 "compiler-rt/test/builtins/Unit/mulsc3_test", 174 "compiler-rt/test/builtins/Unit/multc3_test", 175 "compiler-rt/test/builtins/Unit/multf3_test", 176 "compiler-rt/test/builtins/Unit/multi3_test", 177 "compiler-rt/test/builtins/Unit/mulvdi3_test", 178 "compiler-rt/test/builtins/Unit/mulvsi3_test", 179 "compiler-rt/test/builtins/Unit/mulvti3_test", 180 "compiler-rt/test/builtins/Unit/mulxc3_test", 181 "compiler-rt/test/builtins/Unit/negdi2_test", 182 "compiler-rt/test/builtins/Unit/negti2_test", 183 "compiler-rt/test/builtins/Unit/negvdi2_test", 184 "compiler-rt/test/builtins/Unit/negvsi2_test", 185 "compiler-rt/test/builtins/Unit/negvti2_test", 186 "compiler-rt/test/builtins/Unit/netf2_test", 187 "compiler-rt/test/builtins/Unit/paritydi2_test", 188 "compiler-rt/test/builtins/Unit/paritysi2_test", 189 "compiler-rt/test/builtins/Unit/parityti2_test", 190 "compiler-rt/test/builtins/Unit/popcountdi2_test", 191 "compiler-rt/test/builtins/Unit/popcountsi2_test", 192 "compiler-rt/test/builtins/Unit/popcountti2_test", 193 "compiler-rt/test/builtins/Unit/powidf2_test", 194 "compiler-rt/test/builtins/Unit/powisf2_test", 195 "compiler-rt/test/builtins/Unit/powitf2_test", 196 "compiler-rt/test/builtins/Unit/powixf2_test", 197 "compiler-rt/test/builtins/Unit/subtf3_test", 198 "compiler-rt/test/builtins/Unit/subvdi3_test", 199 "compiler-rt/test/builtins/Unit/subvsi3_test", 200 "compiler-rt/test/builtins/Unit/subvti3_test", 201# "compiler-rt/test/builtins/Unit/trampoline_setup_test", 202# "compiler-rt/test/builtins/Unit/truncdfhf2_test", 203 "compiler-rt/test/builtins/Unit/truncdfsf2_test", 204# "compiler-rt/test/builtins/Unit/truncsfhf2_test", 205 "compiler-rt/test/builtins/Unit/trunctfdf2_test", 206 "compiler-rt/test/builtins/Unit/trunctfsf2_test", 207 "compiler-rt/test/builtins/Unit/ucmpdi2_test", 208 "compiler-rt/test/builtins/Unit/ucmpti2_test", 209 "compiler-rt/test/builtins/Unit/udivdi3_test", 210 "compiler-rt/test/builtins/Unit/udivmoddi4_test", 211 "compiler-rt/test/builtins/Unit/udivmodsi4_test", 212 "compiler-rt/test/builtins/Unit/udivmodti4_test", 213 "compiler-rt/test/builtins/Unit/udivsi3_test", 214 "compiler-rt/test/builtins/Unit/udivti3_test", 215 "compiler-rt/test/builtins/Unit/umoddi3_test", 216 "compiler-rt/test/builtins/Unit/umodsi3_test", 217 "compiler-rt/test/builtins/Unit/umodti3_test", 218 "compiler-rt/test/builtins/Unit/unordtf2_test", 219] 220 221def get_modules_tpl(ts, self, build, machine): 222 '''Function template for get_modules() for each compiler-rt test case''' 223 modules = super(CompilerRTBuiltinsAbstract, self).get_modules(build, machine) 224 for m in ts: 225 if hasattr(machine, "name") and machine.name.startswith("panda") and \ 226 (m.endswith("floatdisf_test") or m.endswith("floatdidf_test")): 227 # Skip failing test on pandaboard 228 continue 229 modules.add_module(m) 230 modules.add_module("usleeptest", [ "5" ]) 231 return modules 232 233def chunker(seq, size): 234 '''Helper function: this takes a sequence `seq` and splits it up into 235 `size`-sized chunks, except for the last chunk which is just the <= size 236 long remainder of the sequence''' 237 return (seq[pos:pos+size] for pos in xrange(0, len(seq), size)) 238 239# generate test-cases with <=CHUNK_SIZE compiler-rt tests each 240CHUNK_SIZE=35 241# array just to keep the class objects somewhere 242compiler_rt_tests_classes = [] 243for i, ts in enumerate(chunker(fp_tests, CHUNK_SIZE)): 244 # append new class to our array 245 compiler_rt_tests_classes.append( 246 # this is essentially the decorator @tests.add_test 247 tests.add_test( 248 # type is the (built-in) base-class for python classes, here we 249 # construct classes by calling its constructor 250 # signature of type constructor: 251 # type(classname, baseclass tuple, dict with methods/attributes) 252 type('CompilerRTBuiltins%d' % (i+1), 253 (CompilerRTBuiltinsAbstract,), 254 { 'name': 'compiler-rt-fp%d' % (i+1), 255 # partially bind the get_modules() template to select the 256 # right set of tests. Note the ts=ts in the lambda 257 # arguments, this prevents python's default late-binding 258 # for closure arguments. 259 'get_modules': 260 lambda s, b, m, ts=ts: get_modules_tpl(ts, s, b, m)}))) 261