diff options
Diffstat (limited to 'tinycc/tests/arm-asm-testsuite.sh')
| -rw-r--r-- | tinycc/tests/arm-asm-testsuite.sh | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/tinycc/tests/arm-asm-testsuite.sh b/tinycc/tests/arm-asm-testsuite.sh deleted file mode 100644 index 61c5dad..0000000 --- a/tinycc/tests/arm-asm-testsuite.sh +++ /dev/null @@ -1,243 +0,0 @@ -#!/bin/sh - -set -e - -# Note: "{r3}" is definitely different--but would complicate the assembler. - -state="`mktemp -d`" -cat ../arm-tok.h | \ - grep DEF_ASM | \ - grep -v 'not useful' | \ - grep -v '#define' | \ - grep -v '/[*]' | \ - grep -v 'DEF_ASM_CONDED_WITH_SUFFIX(x' | \ - sed -e 's;^[ ]*DEF_ASM_CONDED_VFP_F32_F64[^(]*(\(.*\)).*$; DEF_ASM_CONDED(\1.f32)\ - DEF_ASM_CONDED(\1.f64);g' | \ - sed -e 's;^[ ]*DEF_ASM[^(]*(\(.*\)).*$;\1;g' -e 's;, ;.;g' | \ - egrep -v '^((r|c|p|s|d)[0-9]+|fp|ip|sp|lr|pc|asl|apsr_nzcv|fpsid|fpscr|fpexc)$' | while read s -do - as_opts="" - if [ "${s#v}" != "${s}" ] - then - if grep -q "CONFIG_arm_vfp=yes" ../config.mak - then - as_opts="${as_opts} -mfpu=vfp" - else - echo "note: skipping VFP instruction: $s (because VFP is disabled)">&2 - continue - fi - fi - ok=0 - for args in "r3, r4, r5, r6" \ - "r3, r4, r5" \ - "r3, r4, r5, asl #7" \ - "r3, r4, r5, lsl #7" \ - "r3, r4, r5, asr #7" \ - "r3, r4, r5, lsr #7" \ - "r3, r4, r5, ror #7" \ - "r3, r4, r5, rrx" \ - "r3, r4, r5, asl r6" \ - "r3, r4, r5, lsl r6" \ - "r3, r4, r5, asr r6" \ - "r3, r4, r5, lsr r6" \ - "r3, r4, r5, ror r6" \ - "r3, r4, #5, asl #7" \ - "r3, r4, #5, lsl #7" \ - "r3, r4, #5, asr #7" \ - "r3, r4, #5, lsr #7" \ - "r3, r4, #5, ror #7" \ - "r3, r4, #5, rrx" \ - "r3, #5, r4" \ - "r3, #4, #8" \ - "r3, r4, asl #5" \ - "r3, r4, lsl #5" \ - "r3, r4, asr #5" \ - "r3, r4, lsr #5" \ - "r3, r4, ror #5" \ - "r3, r4, ror #8" \ - "r3, r4, asl r5" \ - "r3, r4, lsl r5" \ - "r3, r4, asr r5" \ - "r3, r4, lsr r5" \ - "r3, r4, ror r5" \ - "r3, r4, ror #8" \ - "r3, r4, ror #16" \ - "r3, r4, ror #24" \ - "r3, r4, rrx" \ - "r3, #4, asl #5" \ - "r3, #4, lsl #5" \ - "r3, #4, asr #5" \ - "r3, #4, lsr #5" \ - "r3, #4, ror #5" \ - "r3, r4, rrx" \ - "r3, r4" \ - "r3" \ - "{r3,r4,r5}" \ - "{r3,r5,r4}" \ - "r2!, {r3,r4,r5}" \ - "r2!, {r3,r5,r4}" \ - "r2, {r3,r4,r5}" \ - "r2, {r3,r5,r4}" \ - "r2, [r3, r4]" \ - "r2, [r3, r4]!" \ - "r2, [r3, -r4]" \ - "r2, [r3, -r4]!" \ - "r2, [r3], r4" \ - "r2, [r3], -r4" \ - "r2, [r3]" \ - "r2, r3, [r4, lsl# 2]" \ - "r2, [r3, r4, lsr# 1]" \ - "r2, [r3, r4, lsr# 2]!" \ - "r2, [r3, -r4, ror# 3]" \ - "r2, [r3, -r4, lsl# 1]!" \ - "r2, [r3], r4, lsl# 3" \ - "r2, [r3], -r4, asr# 31" \ - "r2, [r3], -r4, asl# 1" \ - "r2, [r3], -r4, rrx" \ - "r2, [r3]" \ - "r2, r3, [r4]" \ - "r2, [r3, #4]" \ - "r2, [r3, #-4]" \ - "r2, [r3, #0x45]" \ - "r2, [r3, #-0x45]" \ - "r2, r3, #4" \ - "r2, r3, #-4" \ - "p10, #7, c2, c0, c1, #4" \ - "p10, #7, r2, c0, c1, #4" \ - "p10, #0, c2, c0, c1, #4" \ - "p10, #0, r2, c0, c1, #4" \ - "r2, #4" \ - "r2, #-4" \ - "r2, #0xEFFF" \ - "r3, #0x0000" \ - "r4, #0x0201" \ - "r4, #0xFFFFFF00" \ - "r2, #-4" \ - "p10, #7, c2, c0, c1, #4" \ - "p10, #7, r2, c0, c1, #4" \ - "#4" \ - "#-4" \ - "p5, c2, [r3]" \ - "p5, c3, [r4]" \ - "p5, c2, [r3, #4]" \ - "p5, c2, [r3, #-4]" \ - "p5, c2, [r3, #0x45]" \ - "p5, c2, [r3, #-0x45]" \ - "s2, [r3]" \ - "s3, [r4]" \ - "s2, [r3, #4]" \ - "s2, [r3, #-4]" \ - "s2, [r3, #0x45]" \ - "s2, [r3, #-0x45]" \ - "r1, {d3-d4}" \ - "r1!, {d3-d4}" \ - "r2, {d4-d15}" \ - "r3!, {d4-d15}" \ - "r3!, {d4}" \ - "r2, {s4-s31}" \ - "r3!, {s4}" \ - "{d3-d4}" \ - "{d4-d15}" \ - "{d4}" \ - "{s4-s31}" \ - "{s4}" \ - "s2, s3, s4" \ - "s2, s3" \ - "d2, d3, d4" \ - "d2, d3" \ - "s2, #0" \ - "d2, #0" \ - "s3, #0.0" \ - "d3, #0.0" \ - "s4, #-0.1796875" \ - "d4, #0.1796875" \ - "r2, r3, d1" \ - "d1, r2, r3" \ - "s1, r2" \ - "r2, s1" \ - "r2, fpexc" \ - "r2, fpscr" \ - "r2, fpsid" \ - "apsr_nzcv, fpscr" \ - "fpexc, r2" \ - "fpscr, r2" \ - "fpsid, r2" \ - "s3, d4" \ - "d4, s3" \ - "" - do - #echo ".syntax unified" > a.s - err="`mktemp --suffix=-stderr.log`" - as_object="${state}/as-$s $args.o" - tcc_object="${state}/tcc-$s $args.o" - expected="${state}/expected-$s $args" - got="${state}/got-$s $args" - if echo "$s $args" | "${CROSS_COMPILE}as" -mlittle-endian ${as_opts} -o "${as_object}" - 2>"${err}" - then - cat "${err}" - rm -f "${err}" - total_count=`expr $total_count + 1` - "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ ]*0:" >"${expected}" - - #echo '__asm__("'"$s ${args}"'");' > "${csource}" - if echo '__asm__("'"$s ${args}"'");'| ${TCC} -o "${tcc_object}" -c - - then - "${CROSS_COMPILE}objdump" -S "${tcc_object}" |grep "^[ ]*0:" >"${got}" - if diff -u "${got}" "${expected}" - then - touch "${state}/ok-$s $args" - else - echo "warning: '$s $args' did not work in tcc (see above)">&2 - fi - else - rm -f "${tcc_object}" - echo "warning: '$s $args' did not work in tcc">&2 - fi - ok=1 - else # GNU as can't do it either--so we don't care - rm -f "${as_object}" - fi - rm -f "${err}" - done - if [ "${ok}" -eq "0" ] - then - echo "warning: $s could not be used.">&2 - continue - fi -done - -successful_count="$(ls -1 "${state}/ok-"* |wc -l)" -total_count="$(ls -1 "${state}/as-"*.o |wc -l)" -echo "${successful_count} of ${total_count} tests succeeded.">&2 -if [ "${successful_count}" -eq "${total_count}" ] -then - rm -rf "${state}" - exit 0 -else - status=0 - for s in "${state}/as-"*.o - do - test="$(basename "$s")" - test="${test%.o}" - test="${test#as-}" - t="${state}/ok-${test}" - if [ ! -f "$t" ] - then - case "${test}" in - "bl r3"|"b r3"|"mov r2, #0xEFFF"|"mov r4, #0x0201") - known_failure=" (known failure)" - ;; - "vmov.f32 r2, r3, d1"|"vmov.f32 d1, r2, r3") # GNU as bug - known_failure=" (known failure)" - ;; - *) - known_failure="" - status=1 - ;; - esac - echo "Failed test: ${test}${known_failure}">&2 - fi - done - rm -rf "${state}" - exit "${status}" -fi |
