5 # Note: "{r3}" is definitely different--but would complicate the assembler.
10 grep -v 'not useful' | \
13 grep -v 'DEF_ASM_CONDED_WITH_SUFFIX(x' | \
14 sed -e 's;^[ ]*DEF_ASM_CONDED_VFP_F32_F64[^(]*(\(.*\)).*$; DEF_ASM_CONDED(\1.f32)\
15 DEF_ASM_CONDED(\1.f64);g' | \
16 sed -e 's;^[ ]*DEF_ASM[^(]*(\(.*\)).*$;\1;g' -e 's;, ;.;g' | \
17 egrep -v '^((r|c|p|s|d)[0-9]+|fp|ip|sp|lr|pc|asl|apsr_nzcv|fpsid|fpscr|fpexc)$' |
while read s
20 if [ "${s#v}" != "${s}" ]
22 if grep -q "CONFIG_arm_vfp=yes" ..
/config.mak
24 as_opts
="${as_opts} -mfpu=vfp"
26 echo "note: skipping VFP instruction: $s (because VFP is disabled)">&2
31 for args
in "r3, r4, r5, r6" \
33 "r3, r4, r5, asl #7" \
34 "r3, r4, r5, lsl #7" \
35 "r3, r4, r5, asr #7" \
36 "r3, r4, r5, lsr #7" \
37 "r3, r4, r5, ror #7" \
39 "r3, r4, r5, asl r6" \
40 "r3, r4, r5, lsl r6" \
41 "r3, r4, r5, asr r6" \
42 "r3, r4, r5, lsr r6" \
43 "r3, r4, r5, ror r6" \
44 "r3, r4, #5, asl #7" \
45 "r3, r4, #5, lsl #7" \
46 "r3, r4, #5, asr #7" \
47 "r3, r4, #5, lsr #7" \
48 "r3, r4, #5, ror #7" \
88 "r2, r3, [r4, lsl# 2]" \
89 "r2, [r3, r4, lsr# 1]" \
90 "r2, [r3, r4, lsr# 2]!" \
91 "r2, [r3, -r4, ror# 3]" \
92 "r2, [r3, -r4, lsl# 1]!" \
93 "r2, [r3], r4, lsl# 3" \
94 "r2, [r3], -r4, asr# 31" \
95 "r2, [r3], -r4, asl# 1" \
96 "r2, [r3], -r4, rrx" \
105 "p10, #7, c2, c0, c1, #4" \
106 "p10, #7, r2, c0, c1, #4" \
107 "p10, #0, c2, c0, c1, #4" \
108 "p10, #0, r2, c0, c1, #4" \
116 "p10, #7, c2, c0, c1, #4" \
117 "p10, #7, r2, c0, c1, #4" \
123 "p5, c2, [r3, #-4]" \
124 "p5, c2, [r3, #0x45]" \
125 "p5, c2, [r3, #-0x45]" \
169 #echo ".syntax unified" > a.s
170 err
="`mktemp --suffix=-stderr.log`"
171 as_object
="${state}/as-$s $args.o"
172 tcc_object
="${state}/tcc-$s $args.o"
173 expected
="${state}/expected-$s $args"
174 got
="${state}/got-$s $args"
175 if echo "$s $args" |
"${CROSS_COMPILE}as" -mlittle-endian ${as_opts} -o "${as_object}" - 2>"${err}"
179 total_count
=`expr $total_count + 1`
180 "${CROSS_COMPILE}objdump" -S "${as_object}" |grep "^[ ]*0:" >"${expected}"
182 #echo '__asm__("'"$s ${args}"'");' > "${csource}"
183 if echo '__asm__("'"$s ${args}"'");'| ${TCC} -o "${tcc_object}" -c -
185 "${CROSS_COMPILE}objdump" -S "${tcc_object}" |grep "^[ ]*0:" >"${got}"
186 if diff -u "${got}" "${expected}"
188 touch "${state}/ok-$s $args"
190 echo "warning: '$s $args' did not work in tcc (see above)">&2
193 rm -f "${tcc_object}"
194 echo "warning: '$s $args' did not work in tcc">&2
197 else # GNU as can't do it either--so we don't care
202 if [ "${ok}" -eq "0" ]
204 echo "warning: $s could not be used.">&2
209 successful_count
="$(ls -1 "${state}/ok-
"* |wc -l)"
210 total_count
="$(ls -1 "${state}/as-
"*.o |wc -l)"
211 echo "${successful_count} of ${total_count} tests succeeded.">&2
212 if [ "${successful_count}" -eq "${total_count}" ]
218 for s
in "${state}/as-"*.o
220 test="$(basename "$s")"
223 t
="${state}/ok-${test}"
227 "bl r3"|
"b r3"|
"mov r2, #0xEFFF"|
"mov r4, #0x0201")
228 known_failure
=" (known failure)"
230 "vmov.f32 r2, r3, d1"|
"vmov.f32 d1, r2, r3") # GNU as bug
231 known_failure
=" (known failure)"
238 echo "Failed test: ${test}${known_failure}">&2