Registriert seit: 23. Dez 2003
Ort: Bei Hamburg
4 Beiträge
|
Re: SIMD-Dll in asm für Delphi
23. Dez 2003, 16:07
Hallo nochmal, habe versucht die Matrix-arrays auf diesem Weg an 16-Byte-Grenzen auszurichten, (aber es funktioniert trotzdem noch nicht):
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TRec = packed Record
Data: packed Array of single; //16 * 4 Byte =>sollte an 16 Byte ausgerichtet sein
end;
PRec = ^TRec;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
function MultMatrix(x, y: Pointer): Pointer; stdcall; external ' test.dll';
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c: TRec;
pa, pb, pc: PRec;
i: Integer;
begin
//a,b: Einheitsmatrizen; c: Nullmatrix.
SetLength(a.Data, 16);
SetLength(b.Data, 16);
SetLength(c.Data, 16);
for i:=0 to 15 do a.Data[i]:=0.0;
for i:=0 to 15 do b.Data[i]:=0.0;
for i:=0 to 15 do c.Data[i]:=0.0;
a.Data[0]:= 1.0;
a.Data[5]:= 1.0;
a.Data[10]:= 1.0;
a.Data[15]:= 1.0;
b.Data[0]:= 1.0;
b.Data[5]:= 1.0;
b.Data[10]:= 1.0;
b.Data[15]:= 1.0;
pa:= @a;
pb:= @b;
pc:= @c;
//nach Multiplikation sollte c eine Einheitsmatrix sein
pc:= MultMatrix(pb, pb);
end;
end.
|
|
Zitat
|