blob: 8c29fe4df048846fd7e0844331fbc1b24a89015f (
plain) (
tree)
|
|
# -*- sh -*-
# See LICENSE file for copyright and license details.
test $(parse-signed.tu 32767 32 0) = inval
test $(make-signed.tu 32767 32 0) = inval
check_signed () {
test $(parse-signed.tu $1 $2 $3) = $4
test $(make-signed.tu $1 $2 $4) = $3
}
ucheck_signed () {
check_signed "$@"
test $(make-signed.tu $1 $2 -$4) = $3
}
for sign in $(getnamelist SIGN); do
signn=$(getnum SIGN $sign)
if test $sign = UNDETERMINED; then
ucheck_signed $signn 1 0 0
ucheck_signed $signn 1 1 1
ucheck_signed $signn 2 0 0
ucheck_signed $signn 2 1 1
ucheck_signed $signn 2 2 2
ucheck_signed $signn 2 3 3
ucheck_signed $signn 4 4 4
ucheck_signed $signn 4 9 9
ucheck_signed $signn 4 A A
ucheck_signed $signn 4 C C
ucheck_signed $signn 4 F F
ucheck_signed $signn 7 00 00
ucheck_signed $signn 7 08 08
ucheck_signed $signn 7 70 70
ucheck_signed $signn 7 7F 7F
ucheck_signed $signn 8 00 00
ucheck_signed $signn 8 08 08
ucheck_signed $signn 8 80 80
ucheck_signed $signn 8 FF FF
ucheck_signed $signn 16 0001 0001
ucheck_signed $signn 16 0020 0020
ucheck_signed $signn 16 0300 0300
ucheck_signed $signn 16 4000 4000
ucheck_signed $signn 16 0008 0008
ucheck_signed $signn 16 0090 0090
ucheck_signed $signn 16 0A00 0A00
ucheck_signed $signn 16 B000 B000
ucheck_signed $signn 17 08100 08100
ucheck_signed $signn 17 00820 00820
ucheck_signed $signn 17 00083 00083
ucheck_signed $signn 17 04008 04008
ucheck_signed $signn 17 11008 11008
ucheck_signed $signn 17 10280 10280
ucheck_signed $signn 17 10830 10830
ucheck_signed $signn 17 18004 18004
ucheck_signed $signn 32 12345678 12345678
ucheck_signed $signn 32 9ABCDEF0 9ABCDEF0
ucheck_signed $signn 32 87654321 87654321
ucheck_signed $signn 32 0FEDCBA9 0FEDCBA9
ucheck_signed $signn 64 0123456789ABCDEF 0123456789ABCDEF
ucheck_signed $signn 64 123456789ABCDEF0 123456789ABCDEF0
ucheck_signed $signn 64 23456789ABCDEF01 23456789ABCDEF01
ucheck_signed $signn 64 3456789ABCDEF012 3456789ABCDEF012
ucheck_signed $signn 64 89ABCDEF01234567 89ABCDEF01234567
ucheck_signed $signn 64 9ABCDEF012345678 9ABCDEF012345678
ucheck_signed $signn 64 ABCDEF0123456789 ABCDEF0123456789
ucheck_signed $signn 64 BCDEF0123456789A BCDEF0123456789A
ucheck_signed $signn 64 0000000000000000 0000000000000000
ucheck_signed $signn 64 7FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
ucheck_signed $signn 64 8000000000000000 8000000000000000
ucheck_signed $signn 64 FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
elif test $sign = SIGN_MAGNITUDE; then
check_signed $signn 1 0 0
check_signed $signn 1 1 -0
check_signed $signn 2 0 0
check_signed $signn 2 1 1
check_signed $signn 2 2 -0
check_signed $signn 2 3 -1
check_signed $signn 4 4 4
check_signed $signn 4 9 -1
check_signed $signn 4 A -2
check_signed $signn 4 C -4
check_signed $signn 4 F -7
check_signed $signn 7 00 00
check_signed $signn 7 08 08
check_signed $signn 7 70 -30
check_signed $signn 7 7F -3F
check_signed $signn 8 00 00
check_signed $signn 8 08 08
check_signed $signn 8 80 -00
check_signed $signn 8 FF -7F
check_signed $signn 16 0001 0001
check_signed $signn 16 0020 0020
check_signed $signn 16 0300 0300
check_signed $signn 16 4000 4000
check_signed $signn 16 0008 0008
check_signed $signn 16 0090 0090
check_signed $signn 16 0A00 0A00
check_signed $signn 16 B000 -3000
check_signed $signn 17 08100 08100
check_signed $signn 17 00820 00820
check_signed $signn 17 00083 00083
check_signed $signn 17 04008 04008
check_signed $signn 17 11008 -01008
check_signed $signn 17 10280 -00280
check_signed $signn 17 10830 -00830
check_signed $signn 17 18004 -08004
check_signed $signn 32 12345678 12345678
check_signed $signn 32 9ABCDEF0 -1ABCDEF0
check_signed $signn 32 87654321 -07654321
check_signed $signn 32 0FEDCBA9 0FEDCBA9
check_signed $signn 64 0123456789ABCDEF 0123456789ABCDEF
check_signed $signn 64 123456789ABCDEF0 123456789ABCDEF0
check_signed $signn 64 23456789ABCDEF01 23456789ABCDEF01
check_signed $signn 64 3456789ABCDEF012 3456789ABCDEF012
check_signed $signn 64 89ABCDEF01234567 -09ABCDEF01234567
check_signed $signn 64 9ABCDEF012345678 -1ABCDEF012345678
check_signed $signn 64 ABCDEF0123456789 -2BCDEF0123456789
check_signed $signn 64 BCDEF0123456789A -3CDEF0123456789A
check_signed $signn 64 0000000000000000 0000000000000000
check_signed $signn 64 7FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
check_signed $signn 64 8000000000000000 -0000000000000000
check_signed $signn 64 FFFFFFFFFFFFFFFF -7FFFFFFFFFFFFFFF
elif test $sign = ONES_COMPLEMENT; then
check_signed $signn 1 0 0
check_signed $signn 1 1 -0
check_signed $signn 2 0 0
check_signed $signn 2 1 1
check_signed $signn 2 2 -1
check_signed $signn 2 3 -0
check_signed $signn 4 4 4
check_signed $signn 4 9 -6
check_signed $signn 4 A -5
check_signed $signn 4 C -3
check_signed $signn 4 F -0
check_signed $signn 7 00 00
check_signed $signn 7 08 08
check_signed $signn 7 70 -0F
check_signed $signn 7 7F -00
check_signed $signn 8 00 00
check_signed $signn 8 08 08
check_signed $signn 8 80 -7F
check_signed $signn 8 FF -00
check_signed $signn 16 0001 0001
check_signed $signn 16 0020 0020
check_signed $signn 16 0300 0300
check_signed $signn 16 4000 4000
check_signed $signn 16 0008 0008
check_signed $signn 16 0090 0090
check_signed $signn 16 0A00 0A00
check_signed $signn 16 B000 -4FFF
check_signed $signn 17 08100 08100
check_signed $signn 17 00820 00820
check_signed $signn 17 00083 00083
check_signed $signn 17 04008 04008
check_signed $signn 17 11008 -0EFF7
check_signed $signn 17 10280 -0FD7F
check_signed $signn 17 10830 -0F7CF
check_signed $signn 17 18004 -07FFB
check_signed $signn 32 12345678 12345678
check_signed $signn 32 9ABCDEF0 -6543210F
check_signed $signn 32 87654321 -789ABCDE
check_signed $signn 32 0FEDCBA9 0FEDCBA9
check_signed $signn 64 0123456789ABCDEF 0123456789ABCDEF
check_signed $signn 64 123456789ABCDEF0 123456789ABCDEF0
check_signed $signn 64 23456789ABCDEF01 23456789ABCDEF01
check_signed $signn 64 3456789ABCDEF012 3456789ABCDEF012
check_signed $signn 64 89ABCDEF01234567 -76543210FEDCBA98
check_signed $signn 64 9ABCDEF012345678 -6543210FEDCBA987
check_signed $signn 64 ABCDEF0123456789 -543210FEDCBA9876
check_signed $signn 64 BCDEF0123456789A -43210FEDCBA98765
check_signed $signn 64 0000000000000000 0000000000000000
check_signed $signn 64 7FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
check_signed $signn 64 8000000000000000 -7FFFFFFFFFFFFFFF
check_signed $signn 64 FFFFFFFFFFFFFFFF -0000000000000000
elif test $sign = TWOS_COMPLEMENT; then
check_signed $signn 1 0 0
check_signed $signn 1 1 -1
check_signed $signn 2 0 0
check_signed $signn 2 1 1
check_signed $signn 2 2 -2
check_signed $signn 2 3 -1
check_signed $signn 4 4 4
check_signed $signn 4 9 -7
check_signed $signn 4 A -6
check_signed $signn 4 C -4
check_signed $signn 4 F -1
check_signed $signn 7 00 00
check_signed $signn 7 08 08
check_signed $signn 7 70 -10
check_signed $signn 7 7F -01
check_signed $signn 8 00 00
check_signed $signn 8 08 08
check_signed $signn 8 80 -80
check_signed $signn 8 FF -01
check_signed $signn 16 0001 0001
check_signed $signn 16 0020 0020
check_signed $signn 16 0300 0300
check_signed $signn 16 4000 4000
check_signed $signn 16 0008 0008
check_signed $signn 16 0090 0090
check_signed $signn 16 0A00 0A00
check_signed $signn 16 B000 -5000
check_signed $signn 17 08100 08100
check_signed $signn 17 00820 00820
check_signed $signn 17 00083 00083
check_signed $signn 17 04008 04008
check_signed $signn 17 11008 -0EFF8
check_signed $signn 17 10280 -0FD80
check_signed $signn 17 10830 -0F7D0
check_signed $signn 17 18004 -07FFC
check_signed $signn 32 12345678 12345678
check_signed $signn 32 9ABCDEF0 -65432110
check_signed $signn 32 87654321 -789ABCDF
check_signed $signn 32 0FEDCBA9 0FEDCBA9
check_signed $signn 64 0123456789ABCDEF 0123456789ABCDEF
check_signed $signn 64 123456789ABCDEF0 123456789ABCDEF0
check_signed $signn 64 23456789ABCDEF01 23456789ABCDEF01
check_signed $signn 64 3456789ABCDEF012 3456789ABCDEF012
check_signed $signn 64 89ABCDEF01234567 -76543210FEDCBA99
check_signed $signn 64 9ABCDEF012345678 -6543210FEDCBA988
check_signed $signn 64 ABCDEF0123456789 -543210FEDCBA9877
check_signed $signn 64 BCDEF0123456789A -43210FEDCBA98766
check_signed $signn 64 0000000000000000 0000000000000000
check_signed $signn 64 7FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
check_signed $signn 64 8000000000000000 -8000000000000000
check_signed $signn 64 FFFFFFFFFFFFFFFF -0000000000000001
test $(make-signed.tu $signn 1 -0) = 0
test $(make-signed.tu $signn 4 -0) = 0
elif test $sign = EXCESS_HALF; then
check_signed $signn 1 0 -1
check_signed $signn 1 1 0
check_signed $signn 2 0 -2
check_signed $signn 2 1 -1
check_signed $signn 2 2 0
check_signed $signn 2 3 1
check_signed $signn 4 4 -4
check_signed $signn 4 9 1
check_signed $signn 4 A 2
check_signed $signn 4 C 4
check_signed $signn 4 F 7
check_signed $signn 7 00 -40
check_signed $signn 7 08 -38
check_signed $signn 7 70 30
check_signed $signn 7 7F 3F
check_signed $signn 8 00 -80
check_signed $signn 8 08 -78
check_signed $signn 8 80 00
check_signed $signn 8 FF 7F
check_signed $signn 16 0001 -7FFF
check_signed $signn 16 0020 -7FE0
check_signed $signn 16 0300 -7D00
check_signed $signn 16 4000 -4000
check_signed $signn 16 0008 -7FF8
check_signed $signn 16 0090 -7F70
check_signed $signn 16 0A00 -7600
check_signed $signn 16 B000 3000
check_signed $signn 17 08100 -07F00
check_signed $signn 17 00820 -0F7E0
check_signed $signn 17 00083 -0FF7D
check_signed $signn 17 04008 -0BFF8
check_signed $signn 17 11008 01008
check_signed $signn 17 10280 00280
check_signed $signn 17 10830 00830
check_signed $signn 17 18004 08004
check_signed $signn 32 12345678 -6DCBA988
check_signed $signn 32 9ABCDEF0 1ABCDEF0
check_signed $signn 32 87654321 07654321
check_signed $signn 32 0FEDCBA9 -70123457
check_signed $signn 64 0123456789ABCDEF -7EDCBA9876543211
check_signed $signn 64 123456789ABCDEF0 -6DCBA98765432110
check_signed $signn 64 23456789ABCDEF01 -5CBA9876543210FF
check_signed $signn 64 3456789ABCDEF012 -4BA9876543210FEE
check_signed $signn 64 89ABCDEF01234567 09ABCDEF01234567
check_signed $signn 64 9ABCDEF012345678 1ABCDEF012345678
check_signed $signn 64 ABCDEF0123456789 2BCDEF0123456789
check_signed $signn 64 BCDEF0123456789A 3CDEF0123456789A
check_signed $signn 64 0000000000000000 -8000000000000000
check_signed $signn 64 7FFFFFFFFFFFFFFF -0000000000000001
check_signed $signn 64 8000000000000000 0000000000000000
check_signed $signn 64 FFFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
test $(make-signed.tu $signn 1 -0) = 1
test $(make-signed.tu $signn 4 -0) = 8
else
printf 'Missing test for LIBSYSCALLS_SIGN_%s in tests/signness\n' "$sign" >&2
false
fi
test $(parse-signed.tu $signn 0 0) = inval
test $(parse-signed.tu $signn 32767 0) = inval
test $(make-signed.tu $signn 0 0) = inval
test $(make-signed.tu $signn 32767 0) = inval
done
|