* test for the fdiv problem depending on assembler style

This commit is contained in:
pierre 2000-05-12 21:15:27 +00:00
parent e5b1fd5620
commit 85f23e3058

70
tests/test/testfdiv.pp Normal file
View File

@ -0,0 +1,70 @@
{ This test program deals with the
the delicate problem of
non commutative FPU instruction
where the destination register
is ST(1) to ST(7)
Whereas Intel interprets
fdiv st(1),st
as
st(1):=st(1) / st
The ATT read
fdiv %st,%st(1)
as
st(1):=st/st(1) }
program test_nasm_div;
var
x,y,z : double;
begin
x:=4;
y:=2;
Writeln('4/2=',x/y:0:2);
if x/y <> 2.0 then
Halt(1);
{$asmmode att}
asm
fldl y
fldl x
fdivp %st,%st(1)
fstpl z
end;
Writeln('ATT result of 4/2=',z:0:2);
if z <> 2.0 then
Halt(1);
asm
fldl y
fldl x
fdiv %st(1),%st
fstpl z
fstp %st
end;
Writeln('ATT result of 4/2=',z:0:2);
if z <> 2.0 then
Halt(1);
{$asmmode intel}
asm
fld x
fld y
fdivp st(1),st
fstp z
end;
Writeln('Intel result of 4/2=',z:0:2);
if z <> 2.0 then
Halt(1);
asm
fld y
fld x
fdiv st,st(1)
fstp z
fstp st
end;
Writeln('Intel result of 4/2=',z:0:2);
if z <> 2.0 then
Halt(1);
Writeln('All tests completed successfully!');
end.