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


_______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to