fpc/tests/webtbs/tw14862g.pp
yury a9972b4309 * Disabled some tests for android.
git-svn-id: trunk@39981 -
2018-10-18 16:42:05 +00:00

62 lines
1.0 KiB
ObjectPascal

{ %cpu=x86_64 }
{ %skiptarget=android }
{ %opt=-Cg- }
var
f1, f2, f3: int64;
begin
{$asmmode att}
asm
// set alignment check flag so at least one flag in the upper 16 bits
// is set
pushfq
popq %rax
orq $(1 << 18), %rax
pushq %rax
popfq
// should be same as pushfq in AT&T mode
xorq %rax, %rax
pushfw
popw %ax
movq %rax, f1(%rip)
pushf
popq %rax
movq %rax, f2(%rip)
pushfq
popq %rax
movq %rax, f3(%rip)
end;
if (f1 > high(word)) then
halt(1);
if (f2 < high(word)) or
((f2 and high(word))<>f1) then
halt(2);
if (f3 <> f2) then
halt(3);
f1:=0;
f2:=0;
{$asmmode intel}
asm
// should be same as pushfw in Intel mode
xor rax, rax
pushf
pop ax
mov [f1 + rip], rax
pushfq
pop rax
mov [f2 + rip], rax
// clear alignment check flag again to be safe
and rax, not(1 shl 18)
push rax
popfq
end;
if (f1 > high(word)) then
halt(4);
if (f2 < high(word)) or
((f2 and high(word))<>f1) then
halt(5);
end.