foreach my $result (@results)
{
- $result->{argnum} = $argnum++;
+ if ($result->{type} eq "xmm")
+ {
+ $result->{argnuml} = $argnum++;
+ $result->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $result->{argnum} = $argnum++;
+ }
}
foreach my $arg (@presets, @args)
{
if (defined($arg->{name}))
{
- $arg->{argnum} = $argnum++;
+ if ($arg->{type} eq "xmm")
+ {
+ $arg->{argnuml} = $argnum++;
+ $arg->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $arg->{argnum} = $argnum++;
+ }
}
}
}
elsif ($arg->{type} eq "xmm")
{
- print qq| \"movlps 0+%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
- print qq| \"movhps 8+%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movlps %$arg->{argnuml}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|;
}
elsif ($arg->{type} eq "st")
{
}
elsif ($result->{type} eq "xmm")
{
- print qq| \"movlps %%$result->{register}, 0+%$result->{argnum}\\n\"\n|;
- print qq| \"movhps %%$result->{register}, 8+%$result->{argnum}\\n\"\n|;
+ print qq| \"movlps %%$result->{register}, %$result->{argnuml}\\n\"\n|;
+ print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|;
}
elsif ($result->{type} eq "st")
{
foreach my $result (@results)
{
- print qq|$prefix\"=m\" \($result->{name}\)|;
+ if ($result->{type} eq "xmm")
+ {
+ print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ }
+
$prefix = ", ";
}
{
if (defined($arg->{name}))
{
- print qq|$prefix\"m\" \($arg->{name}\)|;
+ if ($arg->{type} eq "xmm")
+ {
+ print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"m\" \($arg->{name}\)|;
+ }
+
$prefix = ", ";
}
}
foreach my $result (@results)
{
- $result->{argnum} = $argnum++;
+ if ($result->{type} eq "xmm")
+ {
+ $result->{argnuml} = $argnum++;
+ $result->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $result->{argnum} = $argnum++;
+ }
}
foreach my $arg (@presets, @args)
{
if (defined($arg->{name}))
{
- $arg->{argnum} = $argnum++;
+ if ($arg->{type} eq "xmm")
+ {
+ $arg->{argnuml} = $argnum++;
+ $arg->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $arg->{argnum} = $argnum++;
+ }
}
}
}
elsif ($arg->{type} eq "xmm")
{
- print qq| \"movlps 0%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
- print qq| \"movhps 8%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movlps %$arg->{argnuml}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|;
}
elsif ($arg->{type} eq "st")
{
}
elsif ($result->{type} eq "xmm")
{
- print qq| \"movlps %%$result->{register}, 0%$result->{argnum}\\n\"\n|;
- print qq| \"movhps %%$result->{register}, 8%$result->{argnum}\\n\"\n|;
+ print qq| \"movlps %%$result->{register}, %$result->{argnuml}\\n\"\n|;
+ print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|;
}
elsif ($result->{type} eq "st")
{
foreach my $result (@results)
{
- print qq|$prefix\"=m\" \($result->{name}\)|;
+ if ($result->{type} eq "xmm")
+ {
+ print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ }
+
$prefix = ", ";
}
{
if (defined($arg->{name}))
{
- print qq|$prefix\"m\" \($arg->{name}\)|;
+ if ($arg->{type} eq "xmm")
+ {
+ print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"m\" \($arg->{name}\)|;
+ }
+
$prefix = ", ";
}
}