@@ -6260,6 +6260,7 @@ operand iRegL2I(iRegL reg) %{
6260
6260
interface(REG_INTER)
6261
6261
%}
6262
6262
6263
+ opclass vmem2(indirect, indIndex, indOffI2, indOffL2);
6263
6264
opclass vmem4(indirect, indIndex, indOffI4, indOffL4);
6264
6265
opclass vmem8(indirect, indIndex, indOffI8, indOffL8);
6265
6266
opclass vmem16(indirect, indIndex, indOffI16, indOffL16);
@@ -9225,7 +9226,6 @@ instruct compareAndSwapNAcq(iRegINoSp res, indirect mem, iRegNNoSp oldval, iRegN
9225
9226
9226
9227
// ---------------------------------------------------------------------
9227
9228
9228
-
9229
9229
// BEGIN This section of the file is automatically generated. Do not edit --------------
9230
9230
9231
9231
// Sundry CAS operations. Note that release is always true,
@@ -9239,7 +9239,10 @@ instruct compareAndSwapNAcq(iRegINoSp res, indirect mem, iRegNNoSp oldval, iRegN
9239
9239
9240
9240
9241
9241
9242
+ // This pattern is generated automatically from cas.m4.
9243
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9242
9244
instruct compareAndExchangeB(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9245
+
9243
9246
match(Set res (CompareAndExchangeB mem (Binary oldval newval)));
9244
9247
ins_cost(2 * VOLATILE_REF_COST);
9245
9248
effect(TEMP_DEF res, KILL cr);
@@ -9255,7 +9258,10 @@ instruct compareAndExchangeB(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9255
9258
ins_pipe(pipe_slow);
9256
9259
%}
9257
9260
9261
+ // This pattern is generated automatically from cas.m4.
9262
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9258
9263
instruct compareAndExchangeS(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9264
+
9259
9265
match(Set res (CompareAndExchangeS mem (Binary oldval newval)));
9260
9266
ins_cost(2 * VOLATILE_REF_COST);
9261
9267
effect(TEMP_DEF res, KILL cr);
@@ -9271,7 +9277,10 @@ instruct compareAndExchangeS(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9271
9277
ins_pipe(pipe_slow);
9272
9278
%}
9273
9279
9280
+ // This pattern is generated automatically from cas.m4.
9281
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9274
9282
instruct compareAndExchangeI(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9283
+
9275
9284
match(Set res (CompareAndExchangeI mem (Binary oldval newval)));
9276
9285
ins_cost(2 * VOLATILE_REF_COST);
9277
9286
effect(TEMP_DEF res, KILL cr);
@@ -9286,7 +9295,10 @@ instruct compareAndExchangeI(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9286
9295
ins_pipe(pipe_slow);
9287
9296
%}
9288
9297
9298
+ // This pattern is generated automatically from cas.m4.
9299
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9289
9300
instruct compareAndExchangeL(iRegLNoSp res, indirect mem, iRegL oldval, iRegL newval, rFlagsReg cr) %{
9301
+
9290
9302
match(Set res (CompareAndExchangeL mem (Binary oldval newval)));
9291
9303
ins_cost(2 * VOLATILE_REF_COST);
9292
9304
effect(TEMP_DEF res, KILL cr);
@@ -9301,7 +9313,10 @@ instruct compareAndExchangeL(iRegLNoSp res, indirect mem, iRegL oldval, iRegL ne
9301
9313
ins_pipe(pipe_slow);
9302
9314
%}
9303
9315
9316
+ // This pattern is generated automatically from cas.m4.
9317
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9304
9318
instruct compareAndExchangeN(iRegNNoSp res, indirect mem, iRegN oldval, iRegN newval, rFlagsReg cr) %{
9319
+
9305
9320
match(Set res (CompareAndExchangeN mem (Binary oldval newval)));
9306
9321
ins_cost(2 * VOLATILE_REF_COST);
9307
9322
effect(TEMP_DEF res, KILL cr);
@@ -9316,6 +9331,8 @@ instruct compareAndExchangeN(iRegNNoSp res, indirect mem, iRegN oldval, iRegN ne
9316
9331
ins_pipe(pipe_slow);
9317
9332
%}
9318
9333
9334
+ // This pattern is generated automatically from cas.m4.
9335
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9319
9336
instruct compareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
9320
9337
predicate(n->as_LoadStore()->barrier_data() == 0);
9321
9338
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
@@ -9332,6 +9349,8 @@ instruct compareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP ne
9332
9349
ins_pipe(pipe_slow);
9333
9350
%}
9334
9351
9352
+ // This pattern is generated automatically from cas.m4.
9353
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9335
9354
instruct compareAndExchangeBAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9336
9355
predicate(needs_acquiring_load_exclusive(n));
9337
9356
match(Set res (CompareAndExchangeB mem (Binary oldval newval)));
@@ -9349,6 +9368,8 @@ instruct compareAndExchangeBAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9349
9368
ins_pipe(pipe_slow);
9350
9369
%}
9351
9370
9371
+ // This pattern is generated automatically from cas.m4.
9372
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9352
9373
instruct compareAndExchangeSAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9353
9374
predicate(needs_acquiring_load_exclusive(n));
9354
9375
match(Set res (CompareAndExchangeS mem (Binary oldval newval)));
@@ -9366,7 +9387,8 @@ instruct compareAndExchangeSAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9366
9387
ins_pipe(pipe_slow);
9367
9388
%}
9368
9389
9369
-
9390
+ // This pattern is generated automatically from cas.m4.
9391
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9370
9392
instruct compareAndExchangeIAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9371
9393
predicate(needs_acquiring_load_exclusive(n));
9372
9394
match(Set res (CompareAndExchangeI mem (Binary oldval newval)));
@@ -9383,6 +9405,8 @@ instruct compareAndExchangeIAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9383
9405
ins_pipe(pipe_slow);
9384
9406
%}
9385
9407
9408
+ // This pattern is generated automatically from cas.m4.
9409
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9386
9410
instruct compareAndExchangeLAcq(iRegLNoSp res, indirect mem, iRegL oldval, iRegL newval, rFlagsReg cr) %{
9387
9411
predicate(needs_acquiring_load_exclusive(n));
9388
9412
match(Set res (CompareAndExchangeL mem (Binary oldval newval)));
@@ -9399,7 +9423,8 @@ instruct compareAndExchangeLAcq(iRegLNoSp res, indirect mem, iRegL oldval, iRegL
9399
9423
ins_pipe(pipe_slow);
9400
9424
%}
9401
9425
9402
-
9426
+ // This pattern is generated automatically from cas.m4.
9427
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9403
9428
instruct compareAndExchangeNAcq(iRegNNoSp res, indirect mem, iRegN oldval, iRegN newval, rFlagsReg cr) %{
9404
9429
predicate(needs_acquiring_load_exclusive(n));
9405
9430
match(Set res (CompareAndExchangeN mem (Binary oldval newval)));
@@ -9416,6 +9441,8 @@ instruct compareAndExchangeNAcq(iRegNNoSp res, indirect mem, iRegN oldval, iRegN
9416
9441
ins_pipe(pipe_slow);
9417
9442
%}
9418
9443
9444
+ // This pattern is generated automatically from cas.m4.
9445
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9419
9446
instruct compareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
9420
9447
predicate(needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() == 0));
9421
9448
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
@@ -9432,7 +9459,10 @@ instruct compareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP
9432
9459
ins_pipe(pipe_slow);
9433
9460
%}
9434
9461
9462
+ // This pattern is generated automatically from cas.m4.
9463
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9435
9464
instruct weakCompareAndSwapB(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9465
+
9436
9466
match(Set res (WeakCompareAndSwapB mem (Binary oldval newval)));
9437
9467
ins_cost(2 * VOLATILE_REF_COST);
9438
9468
effect(KILL cr);
@@ -9449,7 +9479,10 @@ instruct weakCompareAndSwapB(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9449
9479
ins_pipe(pipe_slow);
9450
9480
%}
9451
9481
9482
+ // This pattern is generated automatically from cas.m4.
9483
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9452
9484
instruct weakCompareAndSwapS(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9485
+
9453
9486
match(Set res (WeakCompareAndSwapS mem (Binary oldval newval)));
9454
9487
ins_cost(2 * VOLATILE_REF_COST);
9455
9488
effect(KILL cr);
@@ -9466,7 +9499,10 @@ instruct weakCompareAndSwapS(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9466
9499
ins_pipe(pipe_slow);
9467
9500
%}
9468
9501
9502
+ // This pattern is generated automatically from cas.m4.
9503
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9469
9504
instruct weakCompareAndSwapI(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9505
+
9470
9506
match(Set res (WeakCompareAndSwapI mem (Binary oldval newval)));
9471
9507
ins_cost(2 * VOLATILE_REF_COST);
9472
9508
effect(KILL cr);
@@ -9483,7 +9519,10 @@ instruct weakCompareAndSwapI(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
9483
9519
ins_pipe(pipe_slow);
9484
9520
%}
9485
9521
9522
+ // This pattern is generated automatically from cas.m4.
9523
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9486
9524
instruct weakCompareAndSwapL(iRegINoSp res, indirect mem, iRegL oldval, iRegL newval, rFlagsReg cr) %{
9525
+
9487
9526
match(Set res (WeakCompareAndSwapL mem (Binary oldval newval)));
9488
9527
ins_cost(2 * VOLATILE_REF_COST);
9489
9528
effect(KILL cr);
@@ -9500,7 +9539,10 @@ instruct weakCompareAndSwapL(iRegINoSp res, indirect mem, iRegL oldval, iRegL ne
9500
9539
ins_pipe(pipe_slow);
9501
9540
%}
9502
9541
9542
+ // This pattern is generated automatically from cas.m4.
9543
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9503
9544
instruct weakCompareAndSwapN(iRegINoSp res, indirect mem, iRegN oldval, iRegN newval, rFlagsReg cr) %{
9545
+
9504
9546
match(Set res (WeakCompareAndSwapN mem (Binary oldval newval)));
9505
9547
ins_cost(2 * VOLATILE_REF_COST);
9506
9548
effect(KILL cr);
@@ -9517,6 +9559,8 @@ instruct weakCompareAndSwapN(iRegINoSp res, indirect mem, iRegN oldval, iRegN ne
9517
9559
ins_pipe(pipe_slow);
9518
9560
%}
9519
9561
9562
+ // This pattern is generated automatically from cas.m4.
9563
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9520
9564
instruct weakCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
9521
9565
predicate(n->as_LoadStore()->barrier_data() == 0);
9522
9566
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
@@ -9535,6 +9579,8 @@ instruct weakCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP ne
9535
9579
ins_pipe(pipe_slow);
9536
9580
%}
9537
9581
9582
+ // This pattern is generated automatically from cas.m4.
9583
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9538
9584
instruct weakCompareAndSwapBAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9539
9585
predicate(needs_acquiring_load_exclusive(n));
9540
9586
match(Set res (WeakCompareAndSwapB mem (Binary oldval newval)));
@@ -9553,6 +9599,8 @@ instruct weakCompareAndSwapBAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9553
9599
ins_pipe(pipe_slow);
9554
9600
%}
9555
9601
9602
+ // This pattern is generated automatically from cas.m4.
9603
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9556
9604
instruct weakCompareAndSwapSAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9557
9605
predicate(needs_acquiring_load_exclusive(n));
9558
9606
match(Set res (WeakCompareAndSwapS mem (Binary oldval newval)));
@@ -9571,6 +9619,8 @@ instruct weakCompareAndSwapSAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9571
9619
ins_pipe(pipe_slow);
9572
9620
%}
9573
9621
9622
+ // This pattern is generated automatically from cas.m4.
9623
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9574
9624
instruct weakCompareAndSwapIAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI newval, rFlagsReg cr) %{
9575
9625
predicate(needs_acquiring_load_exclusive(n));
9576
9626
match(Set res (WeakCompareAndSwapI mem (Binary oldval newval)));
@@ -9589,6 +9639,8 @@ instruct weakCompareAndSwapIAcq(iRegINoSp res, indirect mem, iRegI oldval, iRegI
9589
9639
ins_pipe(pipe_slow);
9590
9640
%}
9591
9641
9642
+ // This pattern is generated automatically from cas.m4.
9643
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9592
9644
instruct weakCompareAndSwapLAcq(iRegINoSp res, indirect mem, iRegL oldval, iRegL newval, rFlagsReg cr) %{
9593
9645
predicate(needs_acquiring_load_exclusive(n));
9594
9646
match(Set res (WeakCompareAndSwapL mem (Binary oldval newval)));
@@ -9607,6 +9659,8 @@ instruct weakCompareAndSwapLAcq(iRegINoSp res, indirect mem, iRegL oldval, iRegL
9607
9659
ins_pipe(pipe_slow);
9608
9660
%}
9609
9661
9662
+ // This pattern is generated automatically from cas.m4.
9663
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9610
9664
instruct weakCompareAndSwapNAcq(iRegINoSp res, indirect mem, iRegN oldval, iRegN newval, rFlagsReg cr) %{
9611
9665
predicate(needs_acquiring_load_exclusive(n));
9612
9666
match(Set res (WeakCompareAndSwapN mem (Binary oldval newval)));
@@ -9625,9 +9679,11 @@ instruct weakCompareAndSwapNAcq(iRegINoSp res, indirect mem, iRegN oldval, iRegN
9625
9679
ins_pipe(pipe_slow);
9626
9680
%}
9627
9681
9682
+ // This pattern is generated automatically from cas.m4.
9683
+ // DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
9628
9684
instruct weakCompareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
9629
- match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
9630
9685
predicate(needs_acquiring_load_exclusive(n) && (n->as_LoadStore()->barrier_data() == 0));
9686
+ match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
9631
9687
ins_cost(VOLATILE_REF_COST);
9632
9688
effect(KILL cr);
9633
9689
format %{
0 commit comments