< prev index next >

src/cpu/x86/vm/macroAssembler_x86.hpp

Print this page




 439   void fcmp(Register tmp, int index, bool pop_left, bool pop_right);
 440 
 441   // Floating-point comparison for Java
 442   // Compares the top-most stack entries on the FPU stack and stores the result in dst.
 443   // The arguments are in reversed order on the stack (i.e., top of stack is first argument).
 444   // (semantics as described in JVM spec.)
 445   void fcmp2int(Register dst, bool unordered_is_less);
 446   // Variant of the above which allows y to be further down the stack
 447   // and which only pops x and y if specified. If pop_right is
 448   // specified then pop_left must also be specified.
 449   void fcmp2int(Register dst, bool unordered_is_less, int index, bool pop_left, bool pop_right);
 450 
 451   // Floating-point remainder for Java (ST0 = ST0 fremr ST1, ST1 is empty afterwards)
 452   // tmp is a temporary register, if none is available use noreg
 453   void fremr(Register tmp);
 454 
 455   // dst = c = a * b + c
 456   void fmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c);
 457   void fmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c);
 458 





 459 
 460   // same as fcmp2int, but using SSE2
 461   void cmpss2int(XMMRegister opr1, XMMRegister opr2, Register dst, bool unordered_is_less);
 462   void cmpsd2int(XMMRegister opr1, XMMRegister opr2, Register dst, bool unordered_is_less);
 463 
 464   // branch to L if FPU flag C2 is set/not set
 465   // tmp is a temporary register, if none is available use noreg
 466   void jC2 (Register tmp, Label& L);
 467   void jnC2(Register tmp, Label& L);
 468 
 469   // Pop ST (ffree & fincstp combined)
 470   void fpop();
 471 
 472   // Load float value from 'address'. If UseSSE >= 1, the value is loaded into
 473   // register xmm0. Otherwise, the value is loaded onto the FPU stack.
 474   void load_float(Address src);
 475 
 476   // Store float value to 'address'. If UseSSE >= 1, the value is stored
 477   // from register xmm0. Otherwise, the value is stored from the FPU stack.
 478   void store_float(Address dst);




 439   void fcmp(Register tmp, int index, bool pop_left, bool pop_right);
 440 
 441   // Floating-point comparison for Java
 442   // Compares the top-most stack entries on the FPU stack and stores the result in dst.
 443   // The arguments are in reversed order on the stack (i.e., top of stack is first argument).
 444   // (semantics as described in JVM spec.)
 445   void fcmp2int(Register dst, bool unordered_is_less);
 446   // Variant of the above which allows y to be further down the stack
 447   // and which only pops x and y if specified. If pop_right is
 448   // specified then pop_left must also be specified.
 449   void fcmp2int(Register dst, bool unordered_is_less, int index, bool pop_left, bool pop_right);
 450 
 451   // Floating-point remainder for Java (ST0 = ST0 fremr ST1, ST1 is empty afterwards)
 452   // tmp is a temporary register, if none is available use noreg
 453   void fremr(Register tmp);
 454 
 455   // dst = c = a * b + c
 456   void fmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c);
 457   void fmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c);
 458 
 459   void vfmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len);
 460   void vfmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len);
 461   void vfmad(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len);
 462   void vfmaf(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len);
 463 
 464 
 465   // same as fcmp2int, but using SSE2
 466   void cmpss2int(XMMRegister opr1, XMMRegister opr2, Register dst, bool unordered_is_less);
 467   void cmpsd2int(XMMRegister opr1, XMMRegister opr2, Register dst, bool unordered_is_less);
 468 
 469   // branch to L if FPU flag C2 is set/not set
 470   // tmp is a temporary register, if none is available use noreg
 471   void jC2 (Register tmp, Label& L);
 472   void jnC2(Register tmp, Label& L);
 473 
 474   // Pop ST (ffree & fincstp combined)
 475   void fpop();
 476 
 477   // Load float value from 'address'. If UseSSE >= 1, the value is loaded into
 478   // register xmm0. Otherwise, the value is loaded onto the FPU stack.
 479   void load_float(Address src);
 480 
 481   // Store float value to 'address'. If UseSSE >= 1, the value is stored
 482   // from register xmm0. Otherwise, the value is stored from the FPU stack.
 483   void store_float(Address dst);


< prev index next >