< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page

2515     assert(((dst->encoding() < 16) || VM_Version::supports_avx512vl()),"XMM register should be 0-15");
2516     Assembler::vmovdqu(dst, src);
2517 }
2518 
2519 void MacroAssembler::vmovdqu(XMMRegister dst, XMMRegister src) {
2520     assert(((dst->encoding() < 16  && src->encoding() < 16) || VM_Version::supports_avx512vl()),"XMM register should be 0-15");
2521     Assembler::vmovdqu(dst, src);
2522 }
2523 
2524 void MacroAssembler::vmovdqu(XMMRegister dst, AddressLiteral src, Register scratch_reg) {
2525   if (reachable(src)) {
2526     vmovdqu(dst, as_Address(src));
2527   }
2528   else {
2529     lea(scratch_reg, src);
2530     vmovdqu(dst, Address(scratch_reg, 0));
2531   }
2532 }
2533 
2534 void MacroAssembler::vmovdqu(XMMRegister dst, AddressLiteral src, Register scratch_reg, int vector_len) {
2535   assert(vector_len <= AVX_256bit, "AVX2 vector length");
2536   if (vector_len == AVX_256bit) {


2537     vmovdqu(dst, src, scratch_reg);
2538   } else {
2539     movdqu(dst, src, scratch_reg);
2540   }
2541 }
2542 
2543 void MacroAssembler::kmov(KRegister dst, Address src) {
2544   if (VM_Version::supports_avx512bw()) {
2545     kmovql(dst, src);
2546   } else {
2547     assert(VM_Version::supports_evex(), "");
2548     kmovwl(dst, src);
2549   }
2550 }
2551 
2552 void MacroAssembler::kmov(Address dst, KRegister src) {
2553   if (VM_Version::supports_avx512bw()) {
2554     kmovql(dst, src);
2555   } else {
2556     assert(VM_Version::supports_evex(), "");

3128 
3129 void MacroAssembler::vpaddw(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
3130   assert(((dst->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3131   Assembler::vpaddw(dst, nds, src, vector_len);
3132 }
3133 
3134 void MacroAssembler::vpand(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len, Register scratch_reg) {
3135   if (reachable(src)) {
3136     Assembler::vpand(dst, nds, as_Address(src), vector_len);
3137   } else {
3138     lea(scratch_reg, src);
3139     Assembler::vpand(dst, nds, Address(scratch_reg, 0), vector_len);
3140   }
3141 }
3142 
3143 void MacroAssembler::vpbroadcastw(XMMRegister dst, XMMRegister src, int vector_len) {
3144   assert(((dst->encoding() < 16 && src->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3145   Assembler::vpbroadcastw(dst, src, vector_len);
3146 }
3147 









3148 void MacroAssembler::vbroadcastsd(XMMRegister dst, AddressLiteral src, int vector_len, Register rscratch) {
3149   if (reachable(src)) {
3150     Assembler::vbroadcastsd(dst, as_Address(src), vector_len);
3151   } else {
3152     lea(rscratch, src);
3153     Assembler::vbroadcastsd(dst, Address(rscratch, 0), vector_len);
3154   }
3155 }
3156 
3157 void MacroAssembler::vpcmpeqb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
3158   assert(((dst->encoding() < 16 && src->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3159   Assembler::vpcmpeqb(dst, nds, src, vector_len);
3160 }
3161 
3162 void MacroAssembler::vpcmpeqw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
3163   assert(((dst->encoding() < 16 && src->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3164   Assembler::vpcmpeqw(dst, nds, src, vector_len);
3165 }
3166 
3167 void MacroAssembler::evpcmpeqd(KRegister kdst, KRegister mask, XMMRegister nds,

2515     assert(((dst->encoding() < 16) || VM_Version::supports_avx512vl()),"XMM register should be 0-15");
2516     Assembler::vmovdqu(dst, src);
2517 }
2518 
2519 void MacroAssembler::vmovdqu(XMMRegister dst, XMMRegister src) {
2520     assert(((dst->encoding() < 16  && src->encoding() < 16) || VM_Version::supports_avx512vl()),"XMM register should be 0-15");
2521     Assembler::vmovdqu(dst, src);
2522 }
2523 
2524 void MacroAssembler::vmovdqu(XMMRegister dst, AddressLiteral src, Register scratch_reg) {
2525   if (reachable(src)) {
2526     vmovdqu(dst, as_Address(src));
2527   }
2528   else {
2529     lea(scratch_reg, src);
2530     vmovdqu(dst, Address(scratch_reg, 0));
2531   }
2532 }
2533 
2534 void MacroAssembler::vmovdqu(XMMRegister dst, AddressLiteral src, Register scratch_reg, int vector_len) {
2535   assert(vector_len <= AVX_512bit, "unexpected vector length");
2536   if (vector_len == AVX_512bit) {
2537     evmovdquq(dst, src, AVX_512bit, scratch_reg);
2538   } else if (vector_len == AVX_256bit) {
2539     vmovdqu(dst, src, scratch_reg);
2540   } else {
2541     movdqu(dst, src, scratch_reg);
2542   }
2543 }
2544 
2545 void MacroAssembler::kmov(KRegister dst, Address src) {
2546   if (VM_Version::supports_avx512bw()) {
2547     kmovql(dst, src);
2548   } else {
2549     assert(VM_Version::supports_evex(), "");
2550     kmovwl(dst, src);
2551   }
2552 }
2553 
2554 void MacroAssembler::kmov(Address dst, KRegister src) {
2555   if (VM_Version::supports_avx512bw()) {
2556     kmovql(dst, src);
2557   } else {
2558     assert(VM_Version::supports_evex(), "");

3130 
3131 void MacroAssembler::vpaddw(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
3132   assert(((dst->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3133   Assembler::vpaddw(dst, nds, src, vector_len);
3134 }
3135 
3136 void MacroAssembler::vpand(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len, Register scratch_reg) {
3137   if (reachable(src)) {
3138     Assembler::vpand(dst, nds, as_Address(src), vector_len);
3139   } else {
3140     lea(scratch_reg, src);
3141     Assembler::vpand(dst, nds, Address(scratch_reg, 0), vector_len);
3142   }
3143 }
3144 
3145 void MacroAssembler::vpbroadcastw(XMMRegister dst, XMMRegister src, int vector_len) {
3146   assert(((dst->encoding() < 16 && src->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3147   Assembler::vpbroadcastw(dst, src, vector_len);
3148 }
3149 
3150 void MacroAssembler::vpbroadcastq(XMMRegister dst, AddressLiteral src, int vector_len, Register rscratch) {
3151   if (reachable(src)) {
3152     Assembler::vpbroadcastq(dst, as_Address(src), vector_len);
3153   } else {
3154     lea(rscratch, src);
3155     Assembler::vpbroadcastq(dst, Address(rscratch, 0), vector_len);
3156   }
3157 }
3158 
3159 void MacroAssembler::vbroadcastsd(XMMRegister dst, AddressLiteral src, int vector_len, Register rscratch) {
3160   if (reachable(src)) {
3161     Assembler::vbroadcastsd(dst, as_Address(src), vector_len);
3162   } else {
3163     lea(rscratch, src);
3164     Assembler::vbroadcastsd(dst, Address(rscratch, 0), vector_len);
3165   }
3166 }
3167 
3168 void MacroAssembler::vpcmpeqb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
3169   assert(((dst->encoding() < 16 && src->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3170   Assembler::vpcmpeqb(dst, nds, src, vector_len);
3171 }
3172 
3173 void MacroAssembler::vpcmpeqw(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
3174   assert(((dst->encoding() < 16 && src->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw()),"XMM register should be 0-15");
3175   Assembler::vpcmpeqw(dst, nds, src, vector_len);
3176 }
3177 
3178 void MacroAssembler::evpcmpeqd(KRegister kdst, KRegister mask, XMMRegister nds,
< prev index next >