Bug 603890 add --endianness to lirasm, make tests endianness aware r=nnethercote

--HG--
extra : convert_revision : c7cd544f32aae57d3d359756db867bb33dd83e73
This commit is contained in:
Ginn Chen 2010-10-22 16:53:42 +08:00
parent 257334300b
commit 5e1533734b
12 changed files with 124 additions and 0 deletions

View File

@ -2235,6 +2235,7 @@ usageAndQuit(const string& progname)
" --[no-]optimize enable or disable optimization of the LIR (default=off)\n"
" --random [N] generate a random LIR block of size N (default=1000)\n"
" --word-size prints the word size (32 or 64) for this build of lirasm and exits\n"
" --endianness prints endianness (little-endian or big-endian) for this build of librasm and exits\n"
" i386-specific options:\n"
" --sse use SSE2 instructions\n"
" ARM-specific options:\n"
@ -2313,6 +2314,15 @@ processCmdLine(int argc, char **argv, CmdLineOptions& opts)
cout << sizeof(void*) * 8 << "\n";
exit(0);
}
else if (arg == "--endianness") {
int32_t x = 0x01020304;
if (*(char*)&x == 0x1) {
cout << "big-endian" << "\n";
} else {
cout << "little-endian" << "\n";
}
exit(0);
}
// Architecture-specific flags.
#if defined NANOJIT_IA32

View File

@ -77,6 +77,24 @@ then
done
fi
# little endian
if [[ $($LIRASM --endianness 2>/dev/null) != "big-endian" ]]
then
for infile in "$TESTS_DIR"/littleendian/*.in
do
runtest $infile
done
fi
# big endian
if [[ $($LIRASM --endianness 2>/dev/null) == "big-endian" ]]
then
for infile in "$TESTS_DIR"/bigendian/*.in
do
runtest $infile
done
fi
# ARM
if [[ $(uname -m) == arm* ]]
then

View File

@ -0,0 +1,5 @@
base = allocp 512
five = immi 5
sti five base 256
x = ldus2ui base 256
reti x

View File

@ -0,0 +1 @@
Output is: 5

View File

@ -0,0 +1,26 @@
full = immi 1288908529 ; 0x4cd32ef1
p = allocp 4
sti full p 0
n0chk = immi -15 ; sign_extend(0xf1)
n1chk = immi 46 ; sign_extend(0x2e)
n2chk = immi -45 ; sign_extend(0xd3)
n3chk = immi 76 ; sign_extend(0x4c)
n0 = ldc2i p 0
n1 = ldc2i p 1
n2 = ldc2i p 2
n3 = ldc2i p 3
; Collate the results.
r0 = xori n0chk n0
r1 = xori n1chk n1
r2 = xori n2chk n2
r3 = xori n3chk n3
r0_1 = ori r0 r1
r2_3 = ori r2 r3
r = ori r0_1 r2_3
reti r

View File

@ -0,0 +1 @@
Output is: 0

View File

@ -0,0 +1,17 @@
full = immi -249334698 ; 0xf1237456
p = allocp 4
sti full p 0
n0chk = immi 29782 ; sign_extend(0x7456)
n1chk = immi -3805 ; sign_extend(0xf123)
n0 = lds2i p 0
n1 = lds2i p 2
; Collate the results.
r0 = xori n0chk n0
r1 = xori n1chk n1
r = ori r0 r1
reti r

View File

@ -0,0 +1 @@
Output is: 0

View File

@ -0,0 +1,26 @@
full = immi -992746767 ; 0xc4d3e2f1
p = allocp 4
sti full p 0
n0chk = immi 241 ; 0xf1
n1chk = immi 226 ; 0xe2
n2chk = immi 211 ; 0xd3
n3chk = immi 196 ; 0xc4
n0 = lduc2ui p 0
n1 = lduc2ui p 1
n2 = lduc2ui p 2
n3 = lduc2ui p 3
; Collate the results.
r0 = xori n0chk n0
r1 = xori n1chk n1
r2 = xori n2chk n2
r3 = xori n3chk n3
r0_1 = ori r0 r1
r2_3 = ori r2 r3
r = ori r0_1 r2_3
reti r

View File

@ -0,0 +1 @@
Output is: 0

View File

@ -0,0 +1,17 @@
full = immi -249334698 ; 0xf1237456
p = allocp 4
sti full p 0
n0chk = immi 29782 ; sign_extend(0x7456)
n1chk = immi 61731 ; sign_extend(0xf123)
n0 = ldus2ui p 0
n1 = ldus2ui p 2
; Collate the results.
r0 = xori n0chk n0
r1 = xori n1chk n1
r = ori r0 r1
reti r

View File

@ -0,0 +1 @@
Output is: 0