[fpc-pascal] SSE in overloaded operators
Bartek
bbartek at gmx.net
Fri Dec 17 22:02:38 CET 2004
hi,
i'm trying to get this piece of code to work. but it fails on execution and
returns a SIGSEV signal. i think this is caused by the weird code, fpc
creates. fpc tryed to access the wide sse registers with multiple short
32bit registers, and at some point, protected memory is accessed.
i'm using win32 with fpc 1.9.5 .
program test;
type
vector4 = array[0..3] of single;
var
a, b, c: vector4;
operator + (v1,v2 :vector4) v_r:vector4;assembler;inline;
asm
movups xmm0, v1
addps xmm0, v2
movups v_r, xmm0
end;
begin
c:=a+b;
end.
--------------------------------------------------------------------------------------------------------
# [15] c:=a+b;
leal _B,%edi
movl %edi,-4(%ebp)
leal _A,%edi
movl %edi,-8(%ebp)
leal -24(%ebp),%edi
movl %edi,-56(%ebp)
.L640:
.Ll9:
.stabn 68,0,9,.Ll9 - program_init
# [9] vups xmm0, v1
movups -8(%ebp),%xmm0
.Ll10:
.stabn 68,0,10,.Ll10 - program_init
# [10] dps xmm0, v2
addps -4(%ebp),%xmm0
.Ll11:
.stabn 68,0,11,.Ll11 - program_init
# [11] vups v_r, xmm0
movups %xmm0,-12(%ebp)
.L641:
.Ll12:
.stabn 68,0,15,.Ll12 - program_init
leal _C,%edi
leal -24(%ebp),%esi
cld
movl $4,%ecx
rep
movsl
More information about the fpc-pascal
mailing list