< prev index next >

src/hotspot/cpu/x86/matcher_x86.hpp

Print this page

170   }
171 
172   // Some microarchitectures have mask registers used on vectors
173   static const bool has_predicated_vectors(void) {
174     return VM_Version::supports_evex();
175   }
176 
177   // true means we have fast l2f conversion
178   // false means that conversion is done by runtime call
179   static constexpr bool convL2FSupported(void) {
180       return true;
181   }
182 
183   // Implements a variant of EncodeISOArrayNode that encode ASCII only
184   static const bool supports_encode_ascii_array = true;
185 
186   // Returns pre-selection estimated size of a vector operation.
187   static int vector_op_pre_select_sz_estimate(int vopc, BasicType ety, int vlen) {
188     switch(vopc) {
189       default: return 0;
190       case Op_PopCountVI: return VM_Version::supports_avx512_vpopcntdq() ? 0 : 50;
191       case Op_PopCountVL: return VM_Version::supports_avx512_vpopcntdq() ? 0 : 40;







192       case Op_RoundVF: // fall through
193       case Op_RoundVD: {
194         return 30;
195       }
196     }
197   }

198   // Returns pre-selection estimated size of a scalar operation.
199   static int scalar_op_pre_select_sz_estimate(int vopc, BasicType ety) {
200     switch(vopc) {
201       default: return 0;
202       case Op_RoundF: // fall through
203       case Op_RoundD: {
204         return 30;
205       }
206     }
207   }
208 
209 #endif // CPU_X86_MATCHER_X86_HPP

170   }
171 
172   // Some microarchitectures have mask registers used on vectors
173   static const bool has_predicated_vectors(void) {
174     return VM_Version::supports_evex();
175   }
176 
177   // true means we have fast l2f conversion
178   // false means that conversion is done by runtime call
179   static constexpr bool convL2FSupported(void) {
180       return true;
181   }
182 
183   // Implements a variant of EncodeISOArrayNode that encode ASCII only
184   static const bool supports_encode_ascii_array = true;
185 
186   // Returns pre-selection estimated size of a vector operation.
187   static int vector_op_pre_select_sz_estimate(int vopc, BasicType ety, int vlen) {
188     switch(vopc) {
189       default: return 0;
190       case Op_CountTrailingZerosV:
191       case Op_CountLeadingZerosV:
192          return VM_Version::supports_avx512cd() && (ety == T_INT || ety == T_LONG) ? 0 : 40;
193       case Op_PopCountVI:
194         return ((ety == T_INT && VM_Version::supports_avx512_vpopcntdq()) ||
195            (is_subword_type(ety) && VM_Version::supports_avx512_bitalg())) ? 0 : 50;
196       case Op_PopCountVL:
197         return VM_Version::supports_avx512_vpopcntdq() ? 0 : 40;
198       case Op_ReverseV:  return VM_Version::supports_gfni() ? 0 : 30;
199       case Op_RoundVF: // fall through
200       case Op_RoundVD: {
201         return 30;
202       }
203     }
204   }
205 
206   // Returns pre-selection estimated size of a scalar operation.
207   static int scalar_op_pre_select_sz_estimate(int vopc, BasicType ety) {
208     switch(vopc) {
209       default: return 0;
210       case Op_RoundF: // fall through
211       case Op_RoundD: {
212         return 30;
213       }
214     }
215   }
216 
217 #endif // CPU_X86_MATCHER_X86_HPP
< prev index next >