@@ -971,6 +971,26 @@ reg_class v3_reg(
971
971
V3, V3_H
972
972
);
973
973
974
+ // Class for 128 bit register v4
975
+ reg_class v4_reg(
976
+ V4, V4_H
977
+ );
978
+
979
+ // Class for 128 bit register v5
980
+ reg_class v5_reg(
981
+ V5, V5_H
982
+ );
983
+
984
+ // Class for 128 bit register v6
985
+ reg_class v6_reg(
986
+ V6, V6_H
987
+ );
988
+
989
+ // Class for 128 bit register v7
990
+ reg_class v7_reg(
991
+ V7, V7_H
992
+ );
993
+
974
994
// Singleton class for condition codes
975
995
reg_class int_flags(RFLAGS);
976
996
@@ -4884,6 +4904,42 @@ operand vRegD_V3()
4884
4904
interface(REG_INTER);
4885
4905
%}
4886
4906
4907
+ operand vRegD_V4()
4908
+ %{
4909
+ constraint(ALLOC_IN_RC(v4_reg));
4910
+ match(RegD);
4911
+ op_cost(0);
4912
+ format %{ %}
4913
+ interface(REG_INTER);
4914
+ %}
4915
+
4916
+ operand vRegD_V5()
4917
+ %{
4918
+ constraint(ALLOC_IN_RC(v5_reg));
4919
+ match(RegD);
4920
+ op_cost(0);
4921
+ format %{ %}
4922
+ interface(REG_INTER);
4923
+ %}
4924
+
4925
+ operand vRegD_V6()
4926
+ %{
4927
+ constraint(ALLOC_IN_RC(v6_reg));
4928
+ match(RegD);
4929
+ op_cost(0);
4930
+ format %{ %}
4931
+ interface(REG_INTER);
4932
+ %}
4933
+
4934
+ operand vRegD_V7()
4935
+ %{
4936
+ constraint(ALLOC_IN_RC(v7_reg));
4937
+ match(RegD);
4938
+ op_cost(0);
4939
+ format %{ %}
4940
+ interface(REG_INTER);
4941
+ %}
4942
+
4887
4943
// Flags register, used as output of signed compare instructions
4888
4944
4889
4945
// note that on AArch64 we also use this register as the output for
@@ -15390,14 +15446,17 @@ instruct string_compareLU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4
15390
15446
%}
15391
15447
15392
15448
instruct string_indexofUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
15393
- iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
15394
- iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
15449
+ iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
15450
+ iRegINoSp tmp3, iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
15451
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
15395
15452
%{
15396
15453
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
15397
15454
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
15398
15455
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
15399
- TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
15400
- format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UU)" %}
15456
+ TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6,
15457
+ TEMP vtmp0, TEMP vtmp1, KILL cr);
15458
+ format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UU) "
15459
+ "# KILL $str1 $cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
15401
15460
15402
15461
ins_encode %{
15403
15462
__ string_indexof($str1$$Register, $str2$$Register,
@@ -15411,14 +15470,17 @@ instruct string_indexofUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
15411
15470
%}
15412
15471
15413
15472
instruct string_indexofLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
15414
- iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
15415
- iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
15473
+ iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
15474
+ iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
15475
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
15416
15476
%{
15417
15477
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::LL);
15418
15478
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
15419
15479
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
15420
- TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
15421
- format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (LL)" %}
15480
+ TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6,
15481
+ TEMP vtmp0, TEMP vtmp1, KILL cr);
15482
+ format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (LL) "
15483
+ "# KILL $str1 $cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
15422
15484
15423
15485
ins_encode %{
15424
15486
__ string_indexof($str1$$Register, $str2$$Register,
@@ -15432,14 +15494,17 @@ instruct string_indexofLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
15432
15494
%}
15433
15495
15434
15496
instruct string_indexofUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2 cnt2,
15435
- iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
15436
- iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6, rFlagsReg cr)
15497
+ iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2, iRegINoSp tmp3,
15498
+ iRegINoSp tmp4, iRegINoSp tmp5, iRegINoSp tmp6,
15499
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, rFlagsReg cr)
15437
15500
%{
15438
15501
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UL);
15439
15502
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2)));
15440
15503
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2,
15441
- TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5, TEMP tmp6, KILL cr);
15442
- format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UL)" %}
15504
+ TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, TEMP tmp5,
15505
+ TEMP tmp6, TEMP vtmp0, TEMP vtmp1, KILL cr);
15506
+ format %{ "String IndexOf $str1,$cnt1,$str2,$cnt2 -> $result (UL) "
15507
+ "# KILL $str1 cnt1 $str2 $cnt2 $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 V0-V1 cr" %}
15443
15508
15444
15509
ins_encode %{
15445
15510
__ string_indexof($str1$$Register, $str2$$Register,
@@ -15453,14 +15518,15 @@ instruct string_indexofUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2, iRegI_R2
15453
15518
%}
15454
15519
15455
15520
instruct string_indexof_conUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
15456
- immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2 ,
15457
- iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15521
+ immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
15522
+ iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15458
15523
%{
15459
15524
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UU);
15460
15525
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
15461
15526
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
15462
15527
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
15463
- format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UU)" %}
15528
+ format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UU) "
15529
+ "# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
15464
15530
15465
15531
ins_encode %{
15466
15532
int icnt2 = (int)$int_cnt2$$constant;
@@ -15474,14 +15540,15 @@ instruct string_indexof_conUU(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
15474
15540
%}
15475
15541
15476
15542
instruct string_indexof_conLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
15477
- immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2 ,
15478
- iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15543
+ immI_le_4 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
15544
+ iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15479
15545
%{
15480
15546
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::LL);
15481
15547
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
15482
15548
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
15483
15549
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
15484
- format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (LL)" %}
15550
+ format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (LL) "
15551
+ "# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
15485
15552
15486
15553
ins_encode %{
15487
15554
int icnt2 = (int)$int_cnt2$$constant;
@@ -15495,14 +15562,15 @@ instruct string_indexof_conLL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
15495
15562
%}
15496
15563
15497
15564
instruct string_indexof_conUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
15498
- immI_1 int_cnt2, iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2 ,
15499
- iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15565
+ immI_1 int_cnt2, iRegI_R0 result, iRegINoSp tmp1,
15566
+ iRegINoSp tmp2, iRegINoSp tmp3, iRegINoSp tmp4, rFlagsReg cr)
15500
15567
%{
15501
15568
predicate(((StrIndexOfNode*)n)->encoding() == StrIntrinsicNode::UL);
15502
15569
match(Set result (StrIndexOf (Binary str1 cnt1) (Binary str2 int_cnt2)));
15503
15570
effect(USE_KILL str1, USE_KILL str2, USE_KILL cnt1,
15504
15571
TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, KILL cr);
15505
- format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UL)" %}
15572
+ format %{ "String IndexOf $str1,$cnt1,$str2,$int_cnt2 -> $result (UL) "
15573
+ "# KILL $str1 $cnt1 $str2 $tmp1 $tmp2 $tmp3 $tmp4 cr" %}
15506
15574
15507
15575
ins_encode %{
15508
15576
int icnt2 = (int)$int_cnt2$$constant;
@@ -15567,13 +15635,17 @@ instruct string_equalsU(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
15567
15635
15568
15636
instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
15569
15637
iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
15638
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
15639
+ vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, vRegD_V7 vtmp7,
15570
15640
iRegP_R10 tmp, rFlagsReg cr)
15571
15641
%{
15572
15642
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::LL);
15573
15643
match(Set result (AryEq ary1 ary2));
15574
- effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
15644
+ effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3,
15645
+ TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
15646
+ TEMP vtmp6, TEMP vtmp7, KILL cr);
15575
15647
15576
- format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
15648
+ format %{ "Array Equals $ary1,ary2 -> $result # KILL $ary1 $ary2 $tmp $tmp1 $tmp2 $tmp3 V0-V7 cr " %}
15577
15649
ins_encode %{
15578
15650
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
15579
15651
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
@@ -15588,13 +15660,17 @@ instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
15588
15660
15589
15661
instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
15590
15662
iRegP_R3 tmp1, iRegP_R4 tmp2, iRegP_R5 tmp3,
15663
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
15664
+ vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, vRegD_V7 vtmp7,
15591
15665
iRegP_R10 tmp, rFlagsReg cr)
15592
15666
%{
15593
15667
predicate(((AryEqNode*)n)->encoding() == StrIntrinsicNode::UU);
15594
15668
match(Set result (AryEq ary1 ary2));
15595
- effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
15669
+ effect(KILL tmp, USE_KILL ary1, USE_KILL ary2, TEMP tmp1, TEMP tmp2, TEMP tmp3,
15670
+ TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
15671
+ TEMP vtmp6, TEMP vtmp7, KILL cr);
15596
15672
15597
- format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
15673
+ format %{ "Array Equals $ary1,ary2 -> $result # KILL $ary1 $ary2 $tmp $tmp1 $tmp2 $tmp3 V0-V7 cr " %}
15598
15674
ins_encode %{
15599
15675
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
15600
15676
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
@@ -15624,35 +15700,40 @@ instruct has_negatives(iRegP_R1 ary1, iRegI_R2 len, iRegI_R0 result, rFlagsReg c
15624
15700
15625
15701
// fast char[] to byte[] compression
15626
15702
instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
15627
- vRegD_V0 tmp1 , vRegD_V1 tmp2 ,
15628
- vRegD_V2 tmp3, vRegD_V3 tmp4 ,
15703
+ vRegD_V0 vtmp0 , vRegD_V1 vtmp1, vRegD_V2 vtmp2 ,
15704
+ vRegD_V3 vtmp3, vRegD_V4 vtmp4, vRegD_V5 vtmp5 ,
15629
15705
iRegI_R0 result, rFlagsReg cr)
15630
15706
%{
15631
15707
match(Set result (StrCompressedCopy src (Binary dst len)));
15632
- effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15708
+ effect(TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3, TEMP vtmp4, TEMP vtmp5,
15709
+ USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15633
15710
15634
- format %{ "String Compress $src,$dst -> $result // KILL R1, R2, R3, R4 " %}
15711
+ format %{ "String Compress $src,$dst -> $result # KILL $src $dst $len V0-V5 cr " %}
15635
15712
ins_encode %{
15636
15713
__ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
15637
- $tmp1$$FloatRegister, $tmp2$$FloatRegister,
15638
- $tmp3$$FloatRegister, $tmp4$$FloatRegister,
15714
+ $vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
15715
+ $vtmp2$$FloatRegister, $vtmp3$$FloatRegister,
15716
+ $vtmp4$$FloatRegister, $vtmp5$$FloatRegister,
15639
15717
$result$$Register);
15640
15718
%}
15641
15719
ins_pipe( pipe_slow );
15642
15720
%}
15643
15721
15644
15722
// fast byte[] to char[] inflation
15645
- instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len,
15646
- vRegD_V0 tmp1, vRegD_V1 tmp2, vRegD_V2 tmp3, iRegP_R3 tmp4, rFlagsReg cr)
15723
+ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len, iRegP_R3 tmp,
15724
+ vRegD_V0 vtmp0, vRegD_V1 vtmp1, vRegD_V2 vtmp2, vRegD_V3 vtmp3,
15725
+ vRegD_V4 vtmp4, vRegD_V5 vtmp5, vRegD_V6 vtmp6, rFlagsReg cr)
15647
15726
%{
15648
15727
match(Set dummy (StrInflatedCopy src (Binary dst len)));
15649
- effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15728
+ effect(TEMP vtmp0, TEMP vtmp1, TEMP vtmp2, TEMP vtmp3,
15729
+ TEMP vtmp4, TEMP vtmp5, TEMP vtmp6, TEMP tmp,
15730
+ USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
15650
15731
15651
- format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2 " %}
15732
+ format %{ "String Inflate $src,$dst # KILL $tmp $src $dst $len V0-V6 cr " %}
15652
15733
ins_encode %{
15653
15734
address tpc = __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
15654
- $tmp1 $$FloatRegister, $tmp2 $$FloatRegister,
15655
- $tmp3 $$FloatRegister, $tmp4 $$Register);
15735
+ $vtmp0 $$FloatRegister, $vtmp1 $$FloatRegister,
15736
+ $vtmp2 $$FloatRegister, $tmp $$Register);
15656
15737
if (tpc == NULL) {
15657
15738
ciEnv::current()->record_failure("CodeCache is full");
15658
15739
return;
@@ -15663,19 +15744,20 @@ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len
15663
15744
15664
15745
// encode char[] to byte[] in ISO_8859_1
15665
15746
instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
15666
- vRegD_V0 Vtmp1 , vRegD_V1 Vtmp2 ,
15667
- vRegD_V2 Vtmp3, vRegD_V3 Vtmp4 ,
15747
+ vRegD_V0 vtmp0 , vRegD_V1 vtmp1, vRegD_V2 vtmp2 ,
15748
+ vRegD_V3 vtmp3, vRegD_V4 vtmp4, vRegD_V5 vtmp5 ,
15668
15749
iRegI_R0 result, rFlagsReg cr)
15669
15750
%{
15670
15751
match(Set result (EncodeISOArray src (Binary dst len)));
15671
- effect(USE_KILL src, USE_KILL dst, USE_KILL len,
15672
- KILL Vtmp1 , KILL Vtmp2 , KILL Vtmp3 , KILL Vtmp4 , KILL cr);
15752
+ effect(USE_KILL src, USE_KILL dst, USE_KILL len, KILL vtmp0, KILL vtmp1,
15753
+ KILL vtmp2 , KILL vtmp3 , KILL vtmp4 , KILL vtmp5 , KILL cr);
15673
15754
15674
- format %{ "Encode array $src,$dst,$len -> $result" %}
15755
+ format %{ "Encode array $src,$dst,$len -> $result # KILL $src $dst $len V0-V5 cr " %}
15675
15756
ins_encode %{
15676
15757
__ encode_iso_array($src$$Register, $dst$$Register, $len$$Register,
15677
- $result$$Register, $Vtmp1$$FloatRegister, $Vtmp2$$FloatRegister,
15678
- $Vtmp3$$FloatRegister, $Vtmp4$$FloatRegister);
15758
+ $result$$Register, $vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
15759
+ $vtmp2$$FloatRegister, $vtmp3$$FloatRegister,
15760
+ $vtmp4$$FloatRegister, $vtmp5$$FloatRegister);
15679
15761
%}
15680
15762
ins_pipe( pipe_class_memory );
15681
15763
%}
0 commit comments