< prev index next >

src/cpu/x86/vm/macroAssembler_x86.cpp

Print this page




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; }


< prev index next >