231 case vmIntrinsics::_numberOfTrailingZeros_i:
232 if (!Matcher::match_rule_supported(Op_CountTrailingZerosI)) return false;
233 break;
234 case vmIntrinsics::_numberOfTrailingZeros_l:
235 if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) return false;
236 break;
237 case vmIntrinsics::_reverseBytes_c:
238 if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) return false;
239 break;
240 case vmIntrinsics::_reverseBytes_s:
241 if (!Matcher::match_rule_supported(Op_ReverseBytesS)) return false;
242 break;
243 case vmIntrinsics::_reverseBytes_i:
244 if (!Matcher::match_rule_supported(Op_ReverseBytesI)) return false;
245 break;
246 case vmIntrinsics::_reverseBytes_l:
247 if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false;
248 break;
249
250 /* CompareAndSet, Object: */
251 case vmIntrinsics::_compareAndSetObject:
252 #ifdef _LP64
253 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapN)) return false;
254 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
255 #else
256 if (!Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
257 #endif
258 break;
259 case vmIntrinsics::_weakCompareAndSetObjectPlain:
260 case vmIntrinsics::_weakCompareAndSetObjectAcquire:
261 case vmIntrinsics::_weakCompareAndSetObjectRelease:
262 case vmIntrinsics::_weakCompareAndSetObject:
263 #ifdef _LP64
264 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) return false;
265 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
266 #else
267 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
268 #endif
269 break;
270 /* CompareAndSet, Long: */
271 case vmIntrinsics::_compareAndSetLong:
272 if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false;
273 break;
274 case vmIntrinsics::_weakCompareAndSetLongPlain:
275 case vmIntrinsics::_weakCompareAndSetLongAcquire:
276 case vmIntrinsics::_weakCompareAndSetLongRelease:
277 case vmIntrinsics::_weakCompareAndSetLong:
278 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
279 break;
280
281 /* CompareAndSet, Int: */
282 case vmIntrinsics::_compareAndSetInt:
295 break;
296 case vmIntrinsics::_weakCompareAndSetBytePlain:
297 case vmIntrinsics::_weakCompareAndSetByteAcquire:
298 case vmIntrinsics::_weakCompareAndSetByteRelease:
299 case vmIntrinsics::_weakCompareAndSetByte:
300 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) return false;
301 break;
302
303 /* CompareAndSet, Short: */
304 case vmIntrinsics::_compareAndSetShort:
305 if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) return false;
306 break;
307 case vmIntrinsics::_weakCompareAndSetShortPlain:
308 case vmIntrinsics::_weakCompareAndSetShortAcquire:
309 case vmIntrinsics::_weakCompareAndSetShortRelease:
310 case vmIntrinsics::_weakCompareAndSetShort:
311 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) return false;
312 break;
313
314 /* CompareAndExchange, Object: */
315 case vmIntrinsics::_compareAndExchangeObject:
316 case vmIntrinsics::_compareAndExchangeObjectAcquire:
317 case vmIntrinsics::_compareAndExchangeObjectRelease:
318 #ifdef _LP64
319 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeN)) return false;
320 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeP)) return false;
321 #else
322 if (!Matcher::match_rule_supported(Op_CompareAndExchangeP)) return false;
323 #endif
324 break;
325
326 /* CompareAndExchange, Long: */
327 case vmIntrinsics::_compareAndExchangeLong:
328 case vmIntrinsics::_compareAndExchangeLongAcquire:
329 case vmIntrinsics::_compareAndExchangeLongRelease:
330 if (!Matcher::match_rule_supported(Op_CompareAndExchangeL)) return false;
331 break;
332
333 /* CompareAndExchange, Int: */
334 case vmIntrinsics::_compareAndExchangeInt:
335 case vmIntrinsics::_compareAndExchangeIntAcquire:
336 case vmIntrinsics::_compareAndExchangeIntRelease:
337 if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) return false;
359 break;
360 case vmIntrinsics::_getAndAddInt:
361 if (!Matcher::match_rule_supported(Op_GetAndAddI)) return false;
362 break;
363 case vmIntrinsics::_getAndAddLong:
364 if (!Matcher::match_rule_supported(Op_GetAndAddL)) return false;
365 break;
366
367 case vmIntrinsics::_getAndSetByte:
368 if (!Matcher::match_rule_supported(Op_GetAndSetB)) return false;
369 break;
370 case vmIntrinsics::_getAndSetShort:
371 if (!Matcher::match_rule_supported(Op_GetAndSetS)) return false;
372 break;
373 case vmIntrinsics::_getAndSetInt:
374 if (!Matcher::match_rule_supported(Op_GetAndSetI)) return false;
375 break;
376 case vmIntrinsics::_getAndSetLong:
377 if (!Matcher::match_rule_supported(Op_GetAndSetL)) return false;
378 break;
379 case vmIntrinsics::_getAndSetObject:
380 #ifdef _LP64
381 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetP)) return false;
382 if (UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetN)) return false;
383 break;
384 #else
385 if (!Matcher::match_rule_supported(Op_GetAndSetP)) return false;
386 break;
387 #endif
388 case vmIntrinsics::_incrementExactI:
389 case vmIntrinsics::_addExactI:
390 if (!Matcher::match_rule_supported(Op_OverflowAddI)) return false;
391 break;
392 case vmIntrinsics::_incrementExactL:
393 case vmIntrinsics::_addExactL:
394 if (!Matcher::match_rule_supported(Op_OverflowAddL)) return false;
395 break;
396 case vmIntrinsics::_decrementExactI:
397 case vmIntrinsics::_subtractExactI:
398 if (!Matcher::match_rule_supported(Op_OverflowSubI)) return false;
399 break;
438 case vmIntrinsics::_datan2:
439 case vmIntrinsics::_dsqrt:
440 case vmIntrinsics::_dexp:
441 case vmIntrinsics::_dlog:
442 case vmIntrinsics::_dlog10:
443 case vmIntrinsics::_dpow:
444 case vmIntrinsics::_min:
445 case vmIntrinsics::_max:
446 case vmIntrinsics::_arraycopy:
447 case vmIntrinsics::_indexOfL:
448 case vmIntrinsics::_indexOfU:
449 case vmIntrinsics::_indexOfUL:
450 case vmIntrinsics::_indexOfIL:
451 case vmIntrinsics::_indexOfIU:
452 case vmIntrinsics::_indexOfIUL:
453 case vmIntrinsics::_indexOfU_char:
454 case vmIntrinsics::_toBytesStringU:
455 case vmIntrinsics::_getCharsStringU:
456 case vmIntrinsics::_getCharStringU:
457 case vmIntrinsics::_putCharStringU:
458 case vmIntrinsics::_getObject:
459 case vmIntrinsics::_getBoolean:
460 case vmIntrinsics::_getByte:
461 case vmIntrinsics::_getShort:
462 case vmIntrinsics::_getChar:
463 case vmIntrinsics::_getInt:
464 case vmIntrinsics::_getLong:
465 case vmIntrinsics::_getFloat:
466 case vmIntrinsics::_getDouble:
467 case vmIntrinsics::_putObject:
468 case vmIntrinsics::_putBoolean:
469 case vmIntrinsics::_putByte:
470 case vmIntrinsics::_putShort:
471 case vmIntrinsics::_putChar:
472 case vmIntrinsics::_putInt:
473 case vmIntrinsics::_putLong:
474 case vmIntrinsics::_putFloat:
475 case vmIntrinsics::_putDouble:
476 case vmIntrinsics::_getObjectVolatile:
477 case vmIntrinsics::_getBooleanVolatile:
478 case vmIntrinsics::_getByteVolatile:
479 case vmIntrinsics::_getShortVolatile:
480 case vmIntrinsics::_getCharVolatile:
481 case vmIntrinsics::_getIntVolatile:
482 case vmIntrinsics::_getLongVolatile:
483 case vmIntrinsics::_getFloatVolatile:
484 case vmIntrinsics::_getDoubleVolatile:
485 case vmIntrinsics::_putObjectVolatile:
486 case vmIntrinsics::_putBooleanVolatile:
487 case vmIntrinsics::_putByteVolatile:
488 case vmIntrinsics::_putShortVolatile:
489 case vmIntrinsics::_putCharVolatile:
490 case vmIntrinsics::_putIntVolatile:
491 case vmIntrinsics::_putLongVolatile:
492 case vmIntrinsics::_putFloatVolatile:
493 case vmIntrinsics::_putDoubleVolatile:
494 case vmIntrinsics::_getObjectAcquire:
495 case vmIntrinsics::_getBooleanAcquire:
496 case vmIntrinsics::_getByteAcquire:
497 case vmIntrinsics::_getShortAcquire:
498 case vmIntrinsics::_getCharAcquire:
499 case vmIntrinsics::_getIntAcquire:
500 case vmIntrinsics::_getLongAcquire:
501 case vmIntrinsics::_getFloatAcquire:
502 case vmIntrinsics::_getDoubleAcquire:
503 case vmIntrinsics::_putObjectRelease:
504 case vmIntrinsics::_putBooleanRelease:
505 case vmIntrinsics::_putByteRelease:
506 case vmIntrinsics::_putShortRelease:
507 case vmIntrinsics::_putCharRelease:
508 case vmIntrinsics::_putIntRelease:
509 case vmIntrinsics::_putLongRelease:
510 case vmIntrinsics::_putFloatRelease:
511 case vmIntrinsics::_putDoubleRelease:
512 case vmIntrinsics::_getObjectOpaque:
513 case vmIntrinsics::_getBooleanOpaque:
514 case vmIntrinsics::_getByteOpaque:
515 case vmIntrinsics::_getShortOpaque:
516 case vmIntrinsics::_getCharOpaque:
517 case vmIntrinsics::_getIntOpaque:
518 case vmIntrinsics::_getLongOpaque:
519 case vmIntrinsics::_getFloatOpaque:
520 case vmIntrinsics::_getDoubleOpaque:
521 case vmIntrinsics::_putObjectOpaque:
522 case vmIntrinsics::_putBooleanOpaque:
523 case vmIntrinsics::_putByteOpaque:
524 case vmIntrinsics::_putShortOpaque:
525 case vmIntrinsics::_putCharOpaque:
526 case vmIntrinsics::_putIntOpaque:
527 case vmIntrinsics::_putLongOpaque:
528 case vmIntrinsics::_putFloatOpaque:
529 case vmIntrinsics::_putDoubleOpaque:
530 case vmIntrinsics::_getShortUnaligned:
531 case vmIntrinsics::_getCharUnaligned:
532 case vmIntrinsics::_getIntUnaligned:
533 case vmIntrinsics::_getLongUnaligned:
534 case vmIntrinsics::_putShortUnaligned:
535 case vmIntrinsics::_putCharUnaligned:
536 case vmIntrinsics::_putIntUnaligned:
537 case vmIntrinsics::_putLongUnaligned:
538 case vmIntrinsics::_loadFence:
539 case vmIntrinsics::_storeFence:
540 case vmIntrinsics::_fullFence:
541 case vmIntrinsics::_currentThread:
|
231 case vmIntrinsics::_numberOfTrailingZeros_i:
232 if (!Matcher::match_rule_supported(Op_CountTrailingZerosI)) return false;
233 break;
234 case vmIntrinsics::_numberOfTrailingZeros_l:
235 if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) return false;
236 break;
237 case vmIntrinsics::_reverseBytes_c:
238 if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) return false;
239 break;
240 case vmIntrinsics::_reverseBytes_s:
241 if (!Matcher::match_rule_supported(Op_ReverseBytesS)) return false;
242 break;
243 case vmIntrinsics::_reverseBytes_i:
244 if (!Matcher::match_rule_supported(Op_ReverseBytesI)) return false;
245 break;
246 case vmIntrinsics::_reverseBytes_l:
247 if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false;
248 break;
249
250 /* CompareAndSet, Object: */
251 case vmIntrinsics::_compareAndSetReference:
252 #ifdef _LP64
253 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapN)) return false;
254 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
255 #else
256 if (!Matcher::match_rule_supported(Op_CompareAndSwapP)) return false;
257 #endif
258 break;
259 case vmIntrinsics::_weakCompareAndSetReferencePlain:
260 case vmIntrinsics::_weakCompareAndSetReferenceAcquire:
261 case vmIntrinsics::_weakCompareAndSetReferenceRelease:
262 case vmIntrinsics::_weakCompareAndSetReference:
263 #ifdef _LP64
264 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) return false;
265 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
266 #else
267 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
268 #endif
269 break;
270 /* CompareAndSet, Long: */
271 case vmIntrinsics::_compareAndSetLong:
272 if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false;
273 break;
274 case vmIntrinsics::_weakCompareAndSetLongPlain:
275 case vmIntrinsics::_weakCompareAndSetLongAcquire:
276 case vmIntrinsics::_weakCompareAndSetLongRelease:
277 case vmIntrinsics::_weakCompareAndSetLong:
278 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
279 break;
280
281 /* CompareAndSet, Int: */
282 case vmIntrinsics::_compareAndSetInt:
295 break;
296 case vmIntrinsics::_weakCompareAndSetBytePlain:
297 case vmIntrinsics::_weakCompareAndSetByteAcquire:
298 case vmIntrinsics::_weakCompareAndSetByteRelease:
299 case vmIntrinsics::_weakCompareAndSetByte:
300 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) return false;
301 break;
302
303 /* CompareAndSet, Short: */
304 case vmIntrinsics::_compareAndSetShort:
305 if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) return false;
306 break;
307 case vmIntrinsics::_weakCompareAndSetShortPlain:
308 case vmIntrinsics::_weakCompareAndSetShortAcquire:
309 case vmIntrinsics::_weakCompareAndSetShortRelease:
310 case vmIntrinsics::_weakCompareAndSetShort:
311 if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) return false;
312 break;
313
314 /* CompareAndExchange, Object: */
315 case vmIntrinsics::_compareAndExchangeReference:
316 case vmIntrinsics::_compareAndExchangeReferenceAcquire:
317 case vmIntrinsics::_compareAndExchangeReferenceRelease:
318 #ifdef _LP64
319 if ( UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeN)) return false;
320 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_CompareAndExchangeP)) return false;
321 #else
322 if (!Matcher::match_rule_supported(Op_CompareAndExchangeP)) return false;
323 #endif
324 break;
325
326 /* CompareAndExchange, Long: */
327 case vmIntrinsics::_compareAndExchangeLong:
328 case vmIntrinsics::_compareAndExchangeLongAcquire:
329 case vmIntrinsics::_compareAndExchangeLongRelease:
330 if (!Matcher::match_rule_supported(Op_CompareAndExchangeL)) return false;
331 break;
332
333 /* CompareAndExchange, Int: */
334 case vmIntrinsics::_compareAndExchangeInt:
335 case vmIntrinsics::_compareAndExchangeIntAcquire:
336 case vmIntrinsics::_compareAndExchangeIntRelease:
337 if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) return false;
359 break;
360 case vmIntrinsics::_getAndAddInt:
361 if (!Matcher::match_rule_supported(Op_GetAndAddI)) return false;
362 break;
363 case vmIntrinsics::_getAndAddLong:
364 if (!Matcher::match_rule_supported(Op_GetAndAddL)) return false;
365 break;
366
367 case vmIntrinsics::_getAndSetByte:
368 if (!Matcher::match_rule_supported(Op_GetAndSetB)) return false;
369 break;
370 case vmIntrinsics::_getAndSetShort:
371 if (!Matcher::match_rule_supported(Op_GetAndSetS)) return false;
372 break;
373 case vmIntrinsics::_getAndSetInt:
374 if (!Matcher::match_rule_supported(Op_GetAndSetI)) return false;
375 break;
376 case vmIntrinsics::_getAndSetLong:
377 if (!Matcher::match_rule_supported(Op_GetAndSetL)) return false;
378 break;
379 case vmIntrinsics::_getAndSetReference:
380 #ifdef _LP64
381 if (!UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetP)) return false;
382 if (UseCompressedOops && !Matcher::match_rule_supported(Op_GetAndSetN)) return false;
383 break;
384 #else
385 if (!Matcher::match_rule_supported(Op_GetAndSetP)) return false;
386 break;
387 #endif
388 case vmIntrinsics::_incrementExactI:
389 case vmIntrinsics::_addExactI:
390 if (!Matcher::match_rule_supported(Op_OverflowAddI)) return false;
391 break;
392 case vmIntrinsics::_incrementExactL:
393 case vmIntrinsics::_addExactL:
394 if (!Matcher::match_rule_supported(Op_OverflowAddL)) return false;
395 break;
396 case vmIntrinsics::_decrementExactI:
397 case vmIntrinsics::_subtractExactI:
398 if (!Matcher::match_rule_supported(Op_OverflowSubI)) return false;
399 break;
438 case vmIntrinsics::_datan2:
439 case vmIntrinsics::_dsqrt:
440 case vmIntrinsics::_dexp:
441 case vmIntrinsics::_dlog:
442 case vmIntrinsics::_dlog10:
443 case vmIntrinsics::_dpow:
444 case vmIntrinsics::_min:
445 case vmIntrinsics::_max:
446 case vmIntrinsics::_arraycopy:
447 case vmIntrinsics::_indexOfL:
448 case vmIntrinsics::_indexOfU:
449 case vmIntrinsics::_indexOfUL:
450 case vmIntrinsics::_indexOfIL:
451 case vmIntrinsics::_indexOfIU:
452 case vmIntrinsics::_indexOfIUL:
453 case vmIntrinsics::_indexOfU_char:
454 case vmIntrinsics::_toBytesStringU:
455 case vmIntrinsics::_getCharsStringU:
456 case vmIntrinsics::_getCharStringU:
457 case vmIntrinsics::_putCharStringU:
458 case vmIntrinsics::_getReference:
459 case vmIntrinsics::_getBoolean:
460 case vmIntrinsics::_getByte:
461 case vmIntrinsics::_getShort:
462 case vmIntrinsics::_getChar:
463 case vmIntrinsics::_getInt:
464 case vmIntrinsics::_getLong:
465 case vmIntrinsics::_getFloat:
466 case vmIntrinsics::_getDouble:
467 case vmIntrinsics::_putReference:
468 case vmIntrinsics::_putBoolean:
469 case vmIntrinsics::_putByte:
470 case vmIntrinsics::_putShort:
471 case vmIntrinsics::_putChar:
472 case vmIntrinsics::_putInt:
473 case vmIntrinsics::_putLong:
474 case vmIntrinsics::_putFloat:
475 case vmIntrinsics::_putDouble:
476 case vmIntrinsics::_getReferenceVolatile:
477 case vmIntrinsics::_getBooleanVolatile:
478 case vmIntrinsics::_getByteVolatile:
479 case vmIntrinsics::_getShortVolatile:
480 case vmIntrinsics::_getCharVolatile:
481 case vmIntrinsics::_getIntVolatile:
482 case vmIntrinsics::_getLongVolatile:
483 case vmIntrinsics::_getFloatVolatile:
484 case vmIntrinsics::_getDoubleVolatile:
485 case vmIntrinsics::_putReferenceVolatile:
486 case vmIntrinsics::_putBooleanVolatile:
487 case vmIntrinsics::_putByteVolatile:
488 case vmIntrinsics::_putShortVolatile:
489 case vmIntrinsics::_putCharVolatile:
490 case vmIntrinsics::_putIntVolatile:
491 case vmIntrinsics::_putLongVolatile:
492 case vmIntrinsics::_putFloatVolatile:
493 case vmIntrinsics::_putDoubleVolatile:
494 case vmIntrinsics::_getReferenceAcquire:
495 case vmIntrinsics::_getBooleanAcquire:
496 case vmIntrinsics::_getByteAcquire:
497 case vmIntrinsics::_getShortAcquire:
498 case vmIntrinsics::_getCharAcquire:
499 case vmIntrinsics::_getIntAcquire:
500 case vmIntrinsics::_getLongAcquire:
501 case vmIntrinsics::_getFloatAcquire:
502 case vmIntrinsics::_getDoubleAcquire:
503 case vmIntrinsics::_putReferenceRelease:
504 case vmIntrinsics::_putBooleanRelease:
505 case vmIntrinsics::_putByteRelease:
506 case vmIntrinsics::_putShortRelease:
507 case vmIntrinsics::_putCharRelease:
508 case vmIntrinsics::_putIntRelease:
509 case vmIntrinsics::_putLongRelease:
510 case vmIntrinsics::_putFloatRelease:
511 case vmIntrinsics::_putDoubleRelease:
512 case vmIntrinsics::_getReferenceOpaque:
513 case vmIntrinsics::_getBooleanOpaque:
514 case vmIntrinsics::_getByteOpaque:
515 case vmIntrinsics::_getShortOpaque:
516 case vmIntrinsics::_getCharOpaque:
517 case vmIntrinsics::_getIntOpaque:
518 case vmIntrinsics::_getLongOpaque:
519 case vmIntrinsics::_getFloatOpaque:
520 case vmIntrinsics::_getDoubleOpaque:
521 case vmIntrinsics::_putReferenceOpaque:
522 case vmIntrinsics::_putBooleanOpaque:
523 case vmIntrinsics::_putByteOpaque:
524 case vmIntrinsics::_putShortOpaque:
525 case vmIntrinsics::_putCharOpaque:
526 case vmIntrinsics::_putIntOpaque:
527 case vmIntrinsics::_putLongOpaque:
528 case vmIntrinsics::_putFloatOpaque:
529 case vmIntrinsics::_putDoubleOpaque:
530 case vmIntrinsics::_getShortUnaligned:
531 case vmIntrinsics::_getCharUnaligned:
532 case vmIntrinsics::_getIntUnaligned:
533 case vmIntrinsics::_getLongUnaligned:
534 case vmIntrinsics::_putShortUnaligned:
535 case vmIntrinsics::_putCharUnaligned:
536 case vmIntrinsics::_putIntUnaligned:
537 case vmIntrinsics::_putLongUnaligned:
538 case vmIntrinsics::_loadFence:
539 case vmIntrinsics::_storeFence:
540 case vmIntrinsics::_fullFence:
541 case vmIntrinsics::_currentThread:
|