332 // Vector API support
333 bool inline_vector_nary_operation(int n);
334 bool inline_vector_frombits_coerced();
335 bool inline_vector_shuffle_to_vector();
336 bool inline_vector_shuffle_iota();
337 bool inline_vector_mask_operation();
338 bool inline_vector_mem_operation(bool is_store);
339 bool inline_vector_mem_masked_operation(bool is_store);
340 bool inline_vector_gather_scatter(bool is_scatter);
341 bool inline_vector_reduction();
342 bool inline_vector_test();
343 bool inline_vector_blend();
344 bool inline_vector_rearrange();
345 bool inline_vector_compare();
346 bool inline_vector_broadcast_int();
347 bool inline_vector_convert();
348 bool inline_vector_extract();
349 bool inline_vector_insert();
350 bool inline_vector_compress_expand();
351
352 Node* gen_call_to_svml(int vector_api_op_id, BasicType bt, int num_elem, Node* opd1, Node* opd2);
353
354 enum VectorMaskUseType {
355 VecMaskUseLoad = 1 << 0,
356 VecMaskUseStore = 1 << 1,
357 VecMaskUseAll = VecMaskUseLoad | VecMaskUseStore,
358 VecMaskUsePred = 1 << 2,
359 VecMaskNotUsed = 1 << 3
360 };
361
362 bool arch_supports_vector(int op, int num_elem, BasicType type, VectorMaskUseType mask_use_type, bool has_scalar_args = false);
363 bool arch_supports_vector_rotate(int opc, int num_elem, BasicType elem_bt, VectorMaskUseType mask_use_type, bool has_scalar_args = false);
364
365 void clear_upper_avx() {
366 #ifdef X86
367 if (UseAVX >= 2) {
368 C->set_clear_upper_avx(true);
369 }
370 #endif
371 }
372
373 bool inline_getObjectSize();
374
375 bool inline_blackhole();
376 };
377
|
332 // Vector API support
333 bool inline_vector_nary_operation(int n);
334 bool inline_vector_frombits_coerced();
335 bool inline_vector_shuffle_to_vector();
336 bool inline_vector_shuffle_iota();
337 bool inline_vector_mask_operation();
338 bool inline_vector_mem_operation(bool is_store);
339 bool inline_vector_mem_masked_operation(bool is_store);
340 bool inline_vector_gather_scatter(bool is_scatter);
341 bool inline_vector_reduction();
342 bool inline_vector_test();
343 bool inline_vector_blend();
344 bool inline_vector_rearrange();
345 bool inline_vector_compare();
346 bool inline_vector_broadcast_int();
347 bool inline_vector_convert();
348 bool inline_vector_extract();
349 bool inline_vector_insert();
350 bool inline_vector_compress_expand();
351
352 bool inline_timestamp(bool serial);
353
354 Node* gen_call_to_svml(int vector_api_op_id, BasicType bt, int num_elem, Node* opd1, Node* opd2);
355
356 enum VectorMaskUseType {
357 VecMaskUseLoad = 1 << 0,
358 VecMaskUseStore = 1 << 1,
359 VecMaskUseAll = VecMaskUseLoad | VecMaskUseStore,
360 VecMaskUsePred = 1 << 2,
361 VecMaskNotUsed = 1 << 3
362 };
363
364 bool arch_supports_vector(int op, int num_elem, BasicType type, VectorMaskUseType mask_use_type, bool has_scalar_args = false);
365 bool arch_supports_vector_rotate(int opc, int num_elem, BasicType elem_bt, VectorMaskUseType mask_use_type, bool has_scalar_args = false);
366
367 void clear_upper_avx() {
368 #ifdef X86
369 if (UseAVX >= 2) {
370 C->set_clear_upper_avx(true);
371 }
372 #endif
373 }
374
375 bool inline_getObjectSize();
376
377 bool inline_blackhole();
378
379 bool inline_sizeOf();
380 bool inline_sizeOf_impl(Node* obj);
381
382 bool inline_addressOf();
383
384 };
385
|