28 lines
928 B
Bash
Executable File
28 lines
928 B
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# Update operands like "1966090 /* regdef:VGPR_32 */" in MIR tests when register
|
|
# class numbers change.
|
|
|
|
if [ $# -eq 0 ] ; then
|
|
echo "usage: ${0##*/} /path/to/<Target>GenRegisterInfo.inc test/CodeGen/<Target>/testfile.mir..." >&2
|
|
exit 1
|
|
fi
|
|
|
|
reginfo="$1"
|
|
shift
|
|
|
|
files=$(grep -El ' [0-9]+ /\* [a-z-]+:\w+ \*/' "$@")
|
|
[ "$files" ] || exit 0
|
|
|
|
grep -Eho ' [0-9]+ /\* [a-z-]+:\w+ \*/' $files | sed -E 's/.*:(\w+).*/\1/' | sort -u | while read -r class ; do
|
|
id=$(grep -E "^ ${class}RegClassID = " "$reginfo" | sed -E 's/.* = ([0-9]+).*/\1/')
|
|
if [ "$id" ] ; then
|
|
echo "$class..."
|
|
sed -Ei -e 's| [0-9]+ (/\* reguse:'"$class"' \*/)| '"$(((id + 1) << 16 | 9))"' \1|g' \
|
|
-e 's| [0-9]+ (/\* regdef:'"$class"' \*/)| '"$(((id + 1) << 16 | 10))"' \1|g' \
|
|
-e 's| [0-9]+ (/\* regdef-ec:'"$class"' \*/)| '"$(((id + 1) << 16 | 11))"' \1|g' \
|
|
$files
|
|
fi
|
|
done
|