< prev index next >

src/cpu/x86/vm/macroAssembler_x86.cpp

Print this page

        

*** 3161,3172 **** --- 3161,3201 ---- if (dst != c) { movflt(dst, c); } } + // dst = c = a * b + c + void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) { + Assembler::vfmadd231pd(c, a, b, vector_len); + if (dst != c) { + vmovdqu(dst, c); + } + } + // dst = c = a * b + c + void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) { + Assembler::vfmadd231ps(c, a, b, vector_len); + if (dst != c) { + vmovdqu(dst, c); + } + } + // dst = c = a * b + c + void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) { + Assembler::vfmadd231pd(c, a, b, vector_len); + if (dst != c) { + vmovdqu(dst, c); + } + } + + // dst = c = a * b + c + void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) { + Assembler::vfmadd231ps(c, a, b, vector_len); + if (dst != c) { + vmovdqu(dst, c); + } + } void MacroAssembler::incrementl(AddressLiteral dst) { if (reachable(dst)) { incrementl(as_Address(dst)); } else {
< prev index next >