src/cpu/x86/vm/x86_64.ad
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
7121648 Cdiff src/cpu/x86/vm/x86_64.ad
src/cpu/x86/vm/x86_64.ad
Print this page
*** 9871,10270 ****
emit_cmpfp3(_masm, $dst$$Register);
%}
ins_pipe(pipe_slow);
%}
- instruct addF_reg(regF dst, regF src)
- %{
- match(Set dst (AddF dst src));
-
- format %{ "addss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addss($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct addF_mem(regF dst, memory src)
- %{
- match(Set dst (AddF dst (LoadF src)));
-
- format %{ "addss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addss($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct addF_imm(regF dst, immF con) %{
- match(Set dst (AddF dst con));
- format %{ "addss $dst, [$constantaddress]\t# load from constant table: float=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addss($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct addD_reg(regD dst, regD src)
- %{
- match(Set dst (AddD dst src));
-
- format %{ "addsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addsd($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct addD_mem(regD dst, memory src)
- %{
- match(Set dst (AddD dst (LoadD src)));
-
- format %{ "addsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addsd($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct addD_imm(regD dst, immD con) %{
- match(Set dst (AddD dst con));
- format %{ "addsd $dst, [$constantaddress]\t# load from constant table: double=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ addsd($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subF_reg(regF dst, regF src)
- %{
- match(Set dst (SubF dst src));
-
- format %{ "subss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subss($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subF_mem(regF dst, memory src)
- %{
- match(Set dst (SubF dst (LoadF src)));
-
- format %{ "subss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subss($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subF_imm(regF dst, immF con) %{
- match(Set dst (SubF dst con));
- format %{ "subss $dst, [$constantaddress]\t# load from constant table: float=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subss($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subD_reg(regD dst, regD src)
- %{
- match(Set dst (SubD dst src));
-
- format %{ "subsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subsd($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subD_mem(regD dst, memory src)
- %{
- match(Set dst (SubD dst (LoadD src)));
-
- format %{ "subsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subsd($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct subD_imm(regD dst, immD con) %{
- match(Set dst (SubD dst con));
- format %{ "subsd $dst, [$constantaddress]\t# load from constant table: double=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ subsd($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulF_reg(regF dst, regF src)
- %{
- match(Set dst (MulF dst src));
-
- format %{ "mulss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulss($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulF_mem(regF dst, memory src)
- %{
- match(Set dst (MulF dst (LoadF src)));
-
- format %{ "mulss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulss($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulF_imm(regF dst, immF con) %{
- match(Set dst (MulF dst con));
- format %{ "mulss $dst, [$constantaddress]\t# load from constant table: float=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulss($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulD_reg(regD dst, regD src)
- %{
- match(Set dst (MulD dst src));
-
- format %{ "mulsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulsd($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulD_mem(regD dst, memory src)
- %{
- match(Set dst (MulD dst (LoadD src)));
-
- format %{ "mulsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulsd($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct mulD_imm(regD dst, immD con) %{
- match(Set dst (MulD dst con));
- format %{ "mulsd $dst, [$constantaddress]\t# load from constant table: double=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ mulsd($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divF_reg(regF dst, regF src)
- %{
- match(Set dst (DivF dst src));
-
- format %{ "divss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divss($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divF_mem(regF dst, memory src)
- %{
- match(Set dst (DivF dst (LoadF src)));
-
- format %{ "divss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divss($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divF_imm(regF dst, immF con) %{
- match(Set dst (DivF dst con));
- format %{ "divss $dst, [$constantaddress]\t# load from constant table: float=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divss($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divD_reg(regD dst, regD src)
- %{
- match(Set dst (DivD dst src));
-
- format %{ "divsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divsd($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divD_mem(regD dst, memory src)
- %{
- match(Set dst (DivD dst (LoadD src)));
-
- format %{ "divsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divsd($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct divD_imm(regD dst, immD con) %{
- match(Set dst (DivD dst con));
- format %{ "divsd $dst, [$constantaddress]\t# load from constant table: double=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ divsd($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtF_reg(regF dst, regF src)
- %{
- match(Set dst (ConvD2F (SqrtD (ConvF2D src))));
-
- format %{ "sqrtss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtss($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtF_mem(regF dst, memory src)
- %{
- match(Set dst (ConvD2F (SqrtD (ConvF2D (LoadF src)))));
-
- format %{ "sqrtss $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtss($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtF_imm(regF dst, immF con) %{
- match(Set dst (ConvD2F (SqrtD (ConvF2D con))));
- format %{ "sqrtss $dst, [$constantaddress]\t# load from constant table: float=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtss($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtD_reg(regD dst, regD src)
- %{
- match(Set dst (SqrtD src));
-
- format %{ "sqrtsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtsd($dst$$XMMRegister, $src$$XMMRegister);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtD_mem(regD dst, memory src)
- %{
- match(Set dst (SqrtD (LoadD src)));
-
- format %{ "sqrtsd $dst, $src" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtsd($dst$$XMMRegister, $src$$Address);
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct sqrtD_imm(regD dst, immD con) %{
- match(Set dst (SqrtD con));
- format %{ "sqrtsd $dst, [$constantaddress]\t# load from constant table: double=$con" %}
- ins_cost(150); // XXX
- ins_encode %{
- __ sqrtsd($dst$$XMMRegister, $constantaddress($con));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct absF_reg(regF dst)
- %{
- match(Set dst (AbsF dst));
- ins_cost(150); // XXX
- format %{ "andps $dst, [0x7fffffff]\t# abs float by sign masking" %}
- ins_encode %{
- __ andps($dst$$XMMRegister,
- ExternalAddress((address) StubRoutines::x86::float_sign_mask()));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct absD_reg(regD dst)
- %{
- match(Set dst (AbsD dst));
- ins_cost(150); // XXX
- format %{ "andpd $dst, [0x7fffffffffffffff]\t"
- "# abs double by sign masking" %}
- ins_encode %{
- __ andpd($dst$$XMMRegister,
- ExternalAddress((address) StubRoutines::x86::double_sign_mask()));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct negF_reg(regF dst)
- %{
- match(Set dst (NegF dst));
- ins_cost(150); // XXX
- format %{ "xorps $dst, [0x80000000]\t# neg float by sign flipping" %}
- ins_encode %{
- __ xorps($dst$$XMMRegister,
- ExternalAddress((address) StubRoutines::x86::float_sign_flip()));
- %}
- ins_pipe(pipe_slow);
- %}
-
- instruct negD_reg(regD dst)
- %{
- match(Set dst (NegD dst));
- ins_cost(150); // XXX
- format %{ "xorpd $dst, [0x8000000000000000]\t"
- "# neg double by sign flipping" %}
- ins_encode %{
- __ xorpd($dst$$XMMRegister,
- ExternalAddress((address) StubRoutines::x86::double_sign_flip()));
- %}
- ins_pipe(pipe_slow);
- %}
-
// -----------Trig and Trancendental Instructions------------------------------
instruct cosD_reg(regD dst) %{
match(Set dst (CosD dst));
format %{ "dcos $dst\n\t" %}
--- 9871,9880 ----
src/cpu/x86/vm/x86_64.ad
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File