3146 fxch(1); 3147 fpop(); 3148 } 3149 3150 // dst = c = a * b + c 3151 void MacroAssembler::fmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c) { 3152 Assembler::vfmadd231sd(c, a, b); 3153 if (dst != c) { 3154 movdbl(dst, c); 3155 } 3156 } 3157 3158 // dst = c = a * b + c 3159 void MacroAssembler::fmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c) { 3160 Assembler::vfmadd231ss(c, a, b); 3161 if (dst != c) { 3162 movflt(dst, c); 3163 } 3164 } 3165 3166 3167 3168 3169 void MacroAssembler::incrementl(AddressLiteral dst) { 3170 if (reachable(dst)) { 3171 incrementl(as_Address(dst)); 3172 } else { 3173 lea(rscratch1, dst); 3174 incrementl(Address(rscratch1, 0)); 3175 } 3176 } 3177 3178 void MacroAssembler::incrementl(ArrayAddress dst) { 3179 incrementl(as_Address(dst)); 3180 } 3181 3182 void MacroAssembler::incrementl(Register reg, int value) { 3183 if (value == min_jint) {addl(reg, value) ; return; } 3184 if (value < 0) { decrementl(reg, -value); return; } 3185 if (value == 0) { ; return; } 3186 if (value == 1 && UseIncDec) { incl(reg) ; return; } 3187 /* else */ { addl(reg, value) ; return; } | 3146 fxch(1); 3147 fpop(); 3148 } 3149 3150 // dst = c = a * b + c 3151 void MacroAssembler::fmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c) { 3152 Assembler::vfmadd231sd(c, a, b); 3153 if (dst != c) { 3154 movdbl(dst, c); 3155 } 3156 } 3157 3158 // dst = c = a * b + c 3159 void MacroAssembler::fmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c) { 3160 Assembler::vfmadd231ss(c, a, b); 3161 if (dst != c) { 3162 movflt(dst, c); 3163 } 3164 } 3165 3166 // dst = c = a * b + c 3167 void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) { 3168 Assembler::vfmadd231pd(c, a, b, vector_len); 3169 if (dst != c) { 3170 vmovdqu(dst, c); 3171 } 3172 } 3173 3174 // dst = c = a * b + c 3175 void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, XMMRegister b, XMMRegister c, int vector_len) { 3176 Assembler::vfmadd231ps(c, a, b, vector_len); 3177 if (dst != c) { 3178 vmovdqu(dst, c); 3179 } 3180 } 3181 3182 // dst = c = a * b + c 3183 void MacroAssembler::vfmad(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) { 3184 Assembler::vfmadd231pd(c, a, b, vector_len); 3185 if (dst != c) { 3186 vmovdqu(dst, c); 3187 } 3188 } 3189 3190 // dst = c = a * b + c 3191 void MacroAssembler::vfmaf(XMMRegister dst, XMMRegister a, Address b, XMMRegister c, int vector_len) { 3192 Assembler::vfmadd231ps(c, a, b, vector_len); 3193 if (dst != c) { 3194 vmovdqu(dst, c); 3195 } 3196 } 3197 3198 void MacroAssembler::incrementl(AddressLiteral dst) { 3199 if (reachable(dst)) { 3200 incrementl(as_Address(dst)); 3201 } else { 3202 lea(rscratch1, dst); 3203 incrementl(Address(rscratch1, 0)); 3204 } 3205 } 3206 3207 void MacroAssembler::incrementl(ArrayAddress dst) { 3208 incrementl(as_Address(dst)); 3209 } 3210 3211 void MacroAssembler::incrementl(Register reg, int value) { 3212 if (value == min_jint) {addl(reg, value) ; return; } 3213 if (value < 0) { decrementl(reg, -value); return; } 3214 if (value == 0) { ; return; } 3215 if (value == 1 && UseIncDec) { incl(reg) ; return; } 3216 /* else */ { addl(reg, value) ; return; } |