summaryrefslogtreecommitdiffstats
path: root/crypto/perlasm/x86nasm.pl
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2004-05-06 10:31:09 +0000
committerAndy Polyakov <appro@openssl.org>2004-05-06 10:31:09 +0000
commit10e7d6d526503c5e445632051a89a9df23f9c686 (patch)
tree7c5c1873c6dc45038e7ae48a42e14f967e01f6e3 /crypto/perlasm/x86nasm.pl
parent8d472bdd84b0d08a09270fcc9248070e8d385700 (diff)
Support for IA-32 SSE2 instruction set.
Diffstat (limited to 'crypto/perlasm/x86nasm.pl')
-rw-r--r--crypto/perlasm/x86nasm.pl31
1 files changed, 30 insertions, 1 deletions
diff --git a/crypto/perlasm/x86nasm.pl b/crypto/perlasm/x86nasm.pl
index 30346af4ea..da2a1d471b 100644
--- a/crypto/perlasm/x86nasm.pl
+++ b/crypto/perlasm/x86nasm.pl
@@ -58,6 +58,11 @@ sub main'DWP
&get_mem("DWORD",@_);
}
+sub main'QWP
+ {
+ &get_mem("QWORD",@_);
+ }
+
sub main'BC
{
return "BYTE @_";
@@ -169,6 +174,25 @@ sub main'not { &out1("not",@_); }
sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); }
sub main'ret { &out0("ret"); }
sub main'nop { &out0("nop"); }
+sub main'test { &out2("test",@_); }
+sub main'bt { &out2("bt",@_); }
+sub main'leave { &out0("leave"); }
+
+# SSE2
+sub main'emms { &out0("emms"); }
+sub main'movd { &out2("movd",@_); }
+sub main'movq { &out2("movq",@_); }
+sub main'movdqu { &out2("movdqu",@_); }
+sub main'movdqa { &out2("movdqa",@_); }
+sub main'movdq2q{ &out2("movdq2q",@_); }
+sub main'movq2dq{ &out2("movq2dq",@_); }
+sub main'paddq { &out2("paddq",@_); }
+sub main'pmuludq{ &out2("pmuludq",@_); }
+sub main'psrlq { &out2("psrlq",@_); }
+sub main'psllq { &out2("psllq",@_); }
+sub main'pxor { &out2("pxor",@_); }
+sub main'por { &out2("por",@_); }
+sub main'pand { &out2("pand",@_); }
sub out2
{
@@ -336,7 +360,12 @@ sub main'set_label
sub main'data_word
{
- push(@out,"\tDD\t$_[0]\n");
+ push(@out,"\tDD\t".join(',',@_)."\n");
+ }
+
+sub main'align
+ {
+ push(@out,"\tALIGN\t$_[0]\n");
}
sub out1p