149 lines
3.7 KiB
Awk
149 lines
3.7 KiB
Awk
BEGIN {
|
|
getline;
|
|
while (!match($0, "^/[/*] static char cvs_id")) {
|
|
print;
|
|
getline;
|
|
}
|
|
getline;
|
|
while (!match($0, "^// WARRANTY DISCLAIMER")) {
|
|
print;
|
|
getline;
|
|
}
|
|
getline;
|
|
printf \
|
|
"// Redistribution and use in source and binary forms, with or without\n" \
|
|
"// modification, are permitted provided that the following conditions are\n" \
|
|
"// met:\n" \
|
|
"//\n" \
|
|
"// * Redistributions of source code must retain the above copyright\n" \
|
|
"// notice, this list of conditions and the following disclaimer.\n" \
|
|
"//\n" \
|
|
"// * Redistributions in binary form must reproduce the above copyright\n" \
|
|
"// notice, this list of conditions and the following disclaimer in the\n" \
|
|
"// documentation and/or other materials provided with the distribution.\n" \
|
|
"//\n" \
|
|
"// * The name of Intel Corporation may not be used to endorse or promote\n" \
|
|
"// products derived from this software without specific prior written\n" \
|
|
"// permission.\n\n";
|
|
if (LICENSE_ONLY == "y") {
|
|
do {
|
|
print;
|
|
} while (getline);
|
|
}
|
|
}
|
|
|
|
/^[.]data/ {
|
|
print "RODATA";
|
|
next;
|
|
}
|
|
/^([a-zA-Z_0-9]*_(tb[l0-9]|Tt|[tT]able|data|low|coeffs|constants|CONSTANTS|reduction|Stirling)(_?([1-9cdimpqstPQT]+|tail))?|(Constants|Poly|coeff)_.+|(double_sin_?cos|double_cis)[fl]?_.+):/ {
|
|
table_name=substr($1,1,length($1)-1);
|
|
printf "LOCAL_OBJECT_START(%s)\n", table_name;
|
|
getline;
|
|
while (!match($0, "^[ \t]*data")) {
|
|
print;
|
|
getline;
|
|
}
|
|
while (match($0, "(//|^[ \t]*data)")) {
|
|
print;
|
|
getline;
|
|
}
|
|
printf "LOCAL_OBJECT_END(%s)\n\n", table_name;
|
|
next;
|
|
}
|
|
/^[.]proc[ \t]+__libm_(error_region|callout)/ {
|
|
printf "LOCAL_LIBM_ENTRY(%s)\n", $2;
|
|
getline;
|
|
next;
|
|
}
|
|
/^[.]endp[ \t]+__libm_(error_region|callout)/ {
|
|
printf "LOCAL_LIBM_END(%s)\n", $2;
|
|
next;
|
|
}
|
|
/^[.]global/ {
|
|
split($2, part, "#");
|
|
name=part[1];
|
|
if (match(name, "^"FUNC"$")) {
|
|
next;
|
|
}
|
|
}
|
|
/^[.]proc/ {
|
|
split($2, part, "#");
|
|
name=part[1];
|
|
if (match(name, "^"FUNC"$")) {
|
|
local_funcs=("^(" \
|
|
"cis|cisf|cisl" \
|
|
"|cabs|cabsf|cabsl" \
|
|
"|cot|cotf|cotl" \
|
|
")$");
|
|
ieee754_funcs=("^(" \
|
|
"atan2|atan2f|atan2l|atanl" \
|
|
"|cos|cosf|cosl" \
|
|
"|cosh|coshf|coshl" \
|
|
"|exp|expf|expl" \
|
|
"|exp10|exp10f|exp10l" \
|
|
"|expm1|expm1f|expm1l" \
|
|
"|fmod|fmodf|fmodl" \
|
|
"|hypot|hypotf|hypotl" \
|
|
"|fabs|fabsf|fabsl" \
|
|
"|floor|floorf|floorl" \
|
|
"|log1p|log1pf|log1pl" \
|
|
"|log|log10|log10f|log10l|log2l|logf|logl" \
|
|
"|remainder|remainderf|remainderl|" \
|
|
"|rint|rintf|rintl|" \
|
|
"|scalb|scalbf|scalbl" \
|
|
"|sin|sinf|sinl" \
|
|
"|sincos|sincosf|sincosl" \
|
|
"|sinh|sinhf|sinhl" \
|
|
"|sqrt|sqrtf|sqrtl" \
|
|
"|tan|tanf|tanl" \
|
|
")$");
|
|
if (match(name, ieee754_funcs)) {
|
|
type="GLOBAL_IEEE754";
|
|
} else if (match (name, local_funcs)) {
|
|
type="LOCAL_LIBM";
|
|
} else {
|
|
type="GLOBAL_LIBM";
|
|
}
|
|
printf "%s_ENTRY(%s)\n", type, name;
|
|
getline;
|
|
while (!match($0, "^"name"#?:")) {
|
|
getline;
|
|
}
|
|
getline;
|
|
while (!match($0, "^.endp")) {
|
|
print
|
|
getline;
|
|
}
|
|
getline;
|
|
printf "%s_END(%s)\n", type, name;
|
|
if (match(name, "^exp10[fl]?$")) {
|
|
t=substr(name,6)
|
|
printf "weak_alias (exp10%s, pow10%s)\n", t, t
|
|
}
|
|
next;
|
|
}
|
|
}
|
|
/^[a-zA-Z_]+:/ {
|
|
split($1, part, ":");
|
|
name=part[1];
|
|
if (match(name, "^"FUNC"$")) {
|
|
printf "GLOBAL_LIBM_ENTRY(%s)\n", name;
|
|
getline;
|
|
while (!match($0, "^"name"#?:")) {
|
|
getline;
|
|
}
|
|
getline;
|
|
while (!match($0, "^.endp")) {
|
|
print
|
|
getline;
|
|
}
|
|
getline;
|
|
printf "GLOBAL_LIBM_END(%s)\n", name;
|
|
next;
|
|
}
|
|
}
|
|
|
|
{ print }
|
|
|