@@ -1496,7 +1496,6 @@ instruct vand_notL_masked(vReg dst_src1, vReg src2, immL_M1 m1, pRegGov pg) %{
1496
1496
// vector abs
1497
1497
1498
1498
instruct vabsB(vReg dst, vReg src) %{
1499
- predicate(!n->as_Vector()->is_predicated_vector());
1500
1499
match(Set dst (AbsVB src));
1501
1500
format %{ "vabsB $dst, $src" %}
1502
1501
ins_encode %{
@@ -1512,7 +1511,6 @@ instruct vabsB(vReg dst, vReg src) %{
1512
1511
%}
1513
1512
1514
1513
instruct vabsS(vReg dst, vReg src) %{
1515
- predicate(!n->as_Vector()->is_predicated_vector());
1516
1514
match(Set dst (AbsVS src));
1517
1515
format %{ "vabsS $dst, $src" %}
1518
1516
ins_encode %{
@@ -1528,7 +1526,6 @@ instruct vabsS(vReg dst, vReg src) %{
1528
1526
%}
1529
1527
1530
1528
instruct vabsI(vReg dst, vReg src) %{
1531
- predicate(!n->as_Vector()->is_predicated_vector());
1532
1529
match(Set dst (AbsVI src));
1533
1530
format %{ "vabsI $dst, $src" %}
1534
1531
ins_encode %{
@@ -1544,7 +1541,6 @@ instruct vabsI(vReg dst, vReg src) %{
1544
1541
%}
1545
1542
1546
1543
instruct vabsL(vReg dst, vReg src) %{
1547
- predicate(!n->as_Vector()->is_predicated_vector());
1548
1544
match(Set dst (AbsVL src));
1549
1545
format %{ "vabsL $dst, $src" %}
1550
1546
ins_encode %{
@@ -1560,7 +1556,6 @@ instruct vabsL(vReg dst, vReg src) %{
1560
1556
%}
1561
1557
1562
1558
instruct vabsF(vReg dst, vReg src) %{
1563
- predicate(!n->as_Vector()->is_predicated_vector());
1564
1559
match(Set dst (AbsVF src));
1565
1560
format %{ "vabsF $dst, $src" %}
1566
1561
ins_encode %{
@@ -1576,7 +1571,6 @@ instruct vabsF(vReg dst, vReg src) %{
1576
1571
%}
1577
1572
1578
1573
instruct vabsD(vReg dst, vReg src) %{
1579
- predicate(!n->as_Vector()->is_predicated_vector());
1580
1574
match(Set dst (AbsVD src));
1581
1575
format %{ "vabsD $dst, $src" %}
1582
1576
ins_encode %{
@@ -1658,8 +1652,7 @@ instruct vabsD_masked(vReg dst_src, pRegGov pg) %{
1658
1652
// vector fabs diff
1659
1653
1660
1654
instruct vfabd_neon(vReg dst, vReg src1, vReg src2) %{
1661
- predicate(VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) &&
1662
- !n->as_Vector()->is_predicated_vector());
1655
+ predicate(VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)));
1663
1656
match(Set dst (AbsVF (SubVF src1 src2)));
1664
1657
match(Set dst (AbsVD (SubVD src1 src2)));
1665
1658
format %{ "vfabd_neon $dst, $src1, $src2" %}
@@ -1671,8 +1664,7 @@ instruct vfabd_neon(vReg dst, vReg src1, vReg src2) %{
1671
1664
%}
1672
1665
1673
1666
instruct vfabd_sve(vReg dst_src1, vReg src2) %{
1674
- predicate(!VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)) &&
1675
- !n->as_Vector()->is_predicated_vector());
1667
+ predicate(!VM_Version::use_neon_for_vector(Matcher::vector_length_in_bytes(n)));
1676
1668
match(Set dst_src1 (AbsVF (SubVF dst_src1 src2)));
1677
1669
match(Set dst_src1 (AbsVD (SubVD dst_src1 src2)));
1678
1670
format %{ "vfabd_sve $dst_src1, $dst_src1, $src2" %}
@@ -1705,7 +1697,6 @@ instruct vfabd_masked(vReg dst_src1, vReg src2, pRegGov pg) %{
1705
1697
// vector neg
1706
1698
1707
1699
instruct vnegI(vReg dst, vReg src) %{
1708
- predicate(!n->as_Vector()->is_predicated_vector());
1709
1700
match(Set dst (NegVI src));
1710
1701
format %{ "vnegI $dst, $src" %}
1711
1702
ins_encode %{
@@ -1723,7 +1714,6 @@ instruct vnegI(vReg dst, vReg src) %{
1723
1714
%}
1724
1715
1725
1716
instruct vnegL(vReg dst, vReg src) %{
1726
- predicate(!n->as_Vector()->is_predicated_vector());
1727
1717
match(Set dst (NegVL src));
1728
1718
format %{ "vnegL $dst, $src" %}
1729
1719
ins_encode %{
@@ -1739,7 +1729,6 @@ instruct vnegL(vReg dst, vReg src) %{
1739
1729
%}
1740
1730
1741
1731
instruct vnegF(vReg dst, vReg src) %{
1742
- predicate(!n->as_Vector()->is_predicated_vector());
1743
1732
match(Set dst (NegVF src));
1744
1733
format %{ "vnegF $dst, $src" %}
1745
1734
ins_encode %{
@@ -1755,7 +1744,6 @@ instruct vnegF(vReg dst, vReg src) %{
1755
1744
%}
1756
1745
1757
1746
instruct vnegD(vReg dst, vReg src) %{
1758
- predicate(!n->as_Vector()->is_predicated_vector());
1759
1747
match(Set dst (NegVD src));
1760
1748
format %{ "vnegD $dst, $src" %}
1761
1749
ins_encode %{
@@ -1819,7 +1807,6 @@ instruct vnegD_masked(vReg dst_src, pRegGov pg) %{
1819
1807
// vector sqrt
1820
1808
1821
1809
instruct vsqrtF(vReg dst, vReg src) %{
1822
- predicate(!n->as_Vector()->is_predicated_vector());
1823
1810
match(Set dst (SqrtVF src));
1824
1811
format %{ "vsqrtF $dst, $src" %}
1825
1812
ins_encode %{
@@ -1835,7 +1822,6 @@ instruct vsqrtF(vReg dst, vReg src) %{
1835
1822
%}
1836
1823
1837
1824
instruct vsqrtD(vReg dst, vReg src) %{
1838
- predicate(!n->as_Vector()->is_predicated_vector());
1839
1825
match(Set dst (SqrtVD src));
1840
1826
format %{ "vsqrtD $dst, $src" %}
1841
1827
ins_encode %{
@@ -2190,9 +2176,8 @@ instruct vmls_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2190
2176
// vector fmls
2191
2177
2192
2178
// dst_src1 = dst_src1 + -src2 * src3
2193
- // The NegVF/NegVD must not be predicated.
2194
2179
instruct vfmls1(vReg dst_src1, vReg src2, vReg src3) %{
2195
- predicate(UseFMA && !n->in(2)->in(1)->as_Vector()->is_predicated_vector() );
2180
+ predicate(UseFMA);
2196
2181
match(Set dst_src1 (FmaVF dst_src1 (Binary (NegVF src2) src3)));
2197
2182
match(Set dst_src1 (FmaVD dst_src1 (Binary (NegVD src2) src3)));
2198
2183
format %{ "vfmls1 $dst_src1, $src2, $src3" %}
@@ -2212,9 +2197,8 @@ instruct vfmls1(vReg dst_src1, vReg src2, vReg src3) %{
2212
2197
%}
2213
2198
2214
2199
// dst_src1 = dst_src1 + src2 * -src3
2215
- // The NegVF/NegVD must not be predicated.
2216
2200
instruct vfmls2(vReg dst_src1, vReg src2, vReg src3) %{
2217
- predicate(UseFMA && !n->in(2)->in(2)->as_Vector()->is_predicated_vector() );
2201
+ predicate(UseFMA);
2218
2202
match(Set dst_src1 (FmaVF dst_src1 (Binary src2 (NegVF src3))));
2219
2203
match(Set dst_src1 (FmaVD dst_src1 (Binary src2 (NegVD src3))));
2220
2204
format %{ "vfmls2 $dst_src1, $src2, $src3" %}
@@ -2236,10 +2220,8 @@ instruct vfmls2(vReg dst_src1, vReg src2, vReg src3) %{
2236
2220
// vector fmsb - predicated
2237
2221
2238
2222
// dst_src1 = dst_src1 * -src2 + src3
2239
- // The NegVF/NegVD must not be predicated.
2240
2223
instruct vfmsb_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2241
- predicate(UseFMA && UseSVE > 0 &&
2242
- !n->in(1)->in(2)->as_Vector()->is_predicated_vector());
2224
+ predicate(UseFMA && UseSVE > 0);
2243
2225
match(Set dst_src1 (FmaVF (Binary dst_src1 (NegVF src2)) (Binary src3 pg)));
2244
2226
match(Set dst_src1 (FmaVD (Binary dst_src1 (NegVD src2)) (Binary src3 pg)));
2245
2227
format %{ "vfmsb_masked $dst_src1, $pg, $src2, $src3" %}
@@ -2254,11 +2236,8 @@ instruct vfmsb_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2254
2236
// vector fnmla (sve)
2255
2237
2256
2238
// dst_src1 = -dst_src1 + -src2 * src3
2257
- // The NegVF/NegVD must not be predicated.
2258
2239
instruct vfnmla1(vReg dst_src1, vReg src2, vReg src3) %{
2259
- predicate(UseFMA && UseSVE > 0 &&
2260
- !n->in(1)->as_Vector()->is_predicated_vector() &&
2261
- !n->in(2)->in(1)->as_Vector()->is_predicated_vector());
2240
+ predicate(UseFMA && UseSVE > 0);
2262
2241
match(Set dst_src1 (FmaVF (NegVF dst_src1) (Binary (NegVF src2) src3)));
2263
2242
match(Set dst_src1 (FmaVD (NegVD dst_src1) (Binary (NegVD src2) src3)));
2264
2243
format %{ "vfnmla1 $dst_src1, $src2, $src3" %}
@@ -2271,11 +2250,8 @@ instruct vfnmla1(vReg dst_src1, vReg src2, vReg src3) %{
2271
2250
%}
2272
2251
2273
2252
// dst_src1 = -dst_src1 + src2 * -src3
2274
- // The NegVF/NegVD must not be predicated.
2275
2253
instruct vfnmla2(vReg dst_src1, vReg src2, vReg src3) %{
2276
- predicate(UseFMA && UseSVE > 0 &&
2277
- !n->in(1)->as_Vector()->is_predicated_vector() &&
2278
- !n->in(2)->in(2)->as_Vector()->is_predicated_vector());
2254
+ predicate(UseFMA && UseSVE > 0);
2279
2255
match(Set dst_src1 (FmaVF (NegVF dst_src1) (Binary src2 (NegVF src3))));
2280
2256
match(Set dst_src1 (FmaVD (NegVD dst_src1) (Binary src2 (NegVD src3))));
2281
2257
format %{ "vfnmla2 $dst_src1, $src2, $src3" %}
@@ -2290,11 +2266,8 @@ instruct vfnmla2(vReg dst_src1, vReg src2, vReg src3) %{
2290
2266
// vector fnmad - predicated
2291
2267
2292
2268
// dst_src1 = -src3 + dst_src1 * -src2
2293
- // The NegVF/NegVD must not be predicated.
2294
2269
instruct vfnmad_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2295
- predicate(UseFMA && UseSVE > 0 &&
2296
- !n->in(1)->in(2)->as_Vector()->is_predicated_vector() &&
2297
- !n->in(2)->in(1)->as_Vector()->is_predicated_vector());
2270
+ predicate(UseFMA && UseSVE > 0);
2298
2271
match(Set dst_src1 (FmaVF (Binary dst_src1 (NegVF src2)) (Binary (NegVF src3) pg)));
2299
2272
match(Set dst_src1 (FmaVD (Binary dst_src1 (NegVD src2)) (Binary (NegVD src3) pg)));
2300
2273
format %{ "vfnmad_masked $dst_src1, $pg, $src2, $src3" %}
@@ -2309,10 +2282,8 @@ instruct vfnmad_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2309
2282
// vector fnmls (sve)
2310
2283
2311
2284
// dst_src1 = -dst_src1 + src2 * src3
2312
- // The NegVF/NegVD must not be predicated.
2313
2285
instruct vfnmls(vReg dst_src1, vReg src2, vReg src3) %{
2314
- predicate(UseFMA && UseSVE > 0 &&
2315
- !n->in(1)->as_Vector()->is_predicated_vector());
2286
+ predicate(UseFMA && UseSVE > 0);
2316
2287
match(Set dst_src1 (FmaVF (NegVF dst_src1) (Binary src2 src3)));
2317
2288
match(Set dst_src1 (FmaVD (NegVD dst_src1) (Binary src2 src3)));
2318
2289
format %{ "vfnmls $dst_src1, $src2, $src3" %}
@@ -2327,10 +2298,8 @@ instruct vfnmls(vReg dst_src1, vReg src2, vReg src3) %{
2327
2298
// vector fnmsb - predicated
2328
2299
2329
2300
// dst_src1 = -src3 + dst_src1 * src2
2330
- // The NegVF/NegVD must not be predicated.
2331
2301
instruct vfnmsb_masked(vReg dst_src1, vReg src2, vReg src3, pRegGov pg) %{
2332
- predicate(UseFMA && UseSVE > 0 &&
2333
- !n->in(2)->in(1)->as_Vector()->is_predicated_vector());
2302
+ predicate(UseFMA && UseSVE > 0);
2334
2303
match(Set dst_src1 (FmaVF (Binary dst_src1 src2) (Binary (NegVF src3) pg)));
2335
2304
match(Set dst_src1 (FmaVD (Binary dst_src1 src2) (Binary (NegVD src3) pg)));
2336
2305
format %{ "vfnmsb_masked $dst_src1, $pg, $src2, $src3" %}
@@ -4691,8 +4660,7 @@ instruct vloadmask_neon(vReg dst, vReg src) %{
4691
4660
%}
4692
4661
4693
4662
instruct vloadmaskB_sve(pRegGov dst, vReg src, rFlagsReg cr) %{
4694
- predicate(UseSVE > 0 && !n->is_predicated_vector() &&
4695
- Matcher::vector_element_basic_type(n) == T_BYTE);
4663
+ predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) == T_BYTE);
4696
4664
match(Set dst (VectorLoadMask src));
4697
4665
effect(KILL cr);
4698
4666
format %{ "vloadmaskB_sve $dst, $src\t# KILL cr" %}
@@ -4704,8 +4672,7 @@ instruct vloadmaskB_sve(pRegGov dst, vReg src, rFlagsReg cr) %{
4704
4672
%}
4705
4673
4706
4674
instruct vloadmask_extend_sve(pRegGov dst, vReg src, vReg tmp, rFlagsReg cr) %{
4707
- predicate(UseSVE > 0 && !n->is_predicated_vector() &&
4708
- Matcher::vector_element_basic_type(n) != T_BYTE);
4675
+ predicate(UseSVE > 0 && Matcher::vector_element_basic_type(n) != T_BYTE);
4709
4676
match(Set dst (VectorLoadMask src));
4710
4677
effect(TEMP tmp, KILL cr);
4711
4678
format %{ "vloadmask_extend_sve $dst, $src\t# KILL $tmp, cr" %}
@@ -4812,7 +4779,7 @@ instruct vstoremask_narrow_sve(vReg dst, pRegGov src, immI_gt_1 size, vReg tmp)
4812
4779
4813
4780
// VectorLoadMask+LoadVector, and the VectorLoadMask is unpredicated.
4814
4781
instruct vloadmask_loadV(pRegGov dst, indirect mem, vReg tmp, rFlagsReg cr) %{
4815
- predicate(UseSVE > 0 && !n->is_predicated_vector() &&
4782
+ predicate(UseSVE > 0 &&
4816
4783
type2aelembytes(Matcher::vector_element_basic_type(n)) > 1);
4817
4784
match(Set dst (VectorLoadMask (LoadVector mem)));
4818
4785
effect(TEMP tmp, KILL cr);
@@ -4855,7 +4822,7 @@ instruct vloadmask_loadV_masked(pRegGov dst, indirect mem, pRegGov pg,
4855
4822
4856
4823
// VectorLoadMask+LoadVectorMasked, and the VectorLoadMask is unpredicated.
4857
4824
instruct vloadmask_loadVMasked(pRegGov dst, vmemA mem, pRegGov pg, vReg tmp, rFlagsReg cr) %{
4858
- predicate(UseSVE > 0 && !n->is_predicated_vector() &&
4825
+ predicate(UseSVE > 0 &&
4859
4826
type2aelembytes(Matcher::vector_element_basic_type(n)) > 1);
4860
4827
match(Set dst (VectorLoadMask (LoadVectorMasked mem pg)));
4861
4828
effect(TEMP tmp, KILL cr);
@@ -5309,7 +5276,7 @@ instruct vmask_firsttrue_8or16e(iRegINoSp dst, vReg src) %{
5309
5276
// them are set.
5310
5277
5311
5278
instruct vmask_firsttrue_sve(iRegINoSp dst, pReg src, pReg ptmp) %{
5312
- predicate(UseSVE > 0 && !n->is_predicated_vector() );
5279
+ predicate(UseSVE > 0);
5313
5280
match(Set dst (VectorMaskFirstTrue src));
5314
5281
effect(TEMP ptmp);
5315
5282
format %{ "vmask_firsttrue_sve $dst, $src\t# KILL $ptmp" %}
@@ -5471,7 +5438,7 @@ instruct vmaskAll_immI(pRegGov dst, immI src, rFlagsReg cr) %{
5471
5438
%}
5472
5439
5473
5440
instruct vmaskAllI(pRegGov dst, iRegIorL2I src, vReg tmp, rFlagsReg cr) %{
5474
- predicate(UseSVE > 0 && !n->is_predicated_vector() );
5441
+ predicate(UseSVE > 0);
5475
5442
match(Set dst (MaskAll src));
5476
5443
effect(TEMP tmp, KILL cr);
5477
5444
format %{ "vmaskAllI $dst, $src\t# KILL $tmp, cr" %}
@@ -5520,7 +5487,7 @@ instruct vmaskAll_immL(pRegGov dst, immL src, rFlagsReg cr) %{
5520
5487
%}
5521
5488
5522
5489
instruct vmaskAllL(pRegGov dst, iRegL src, vReg tmp, rFlagsReg cr) %{
5523
- predicate(UseSVE > 0 && !n->is_predicated_vector() );
5490
+ predicate(UseSVE > 0);
5524
5491
match(Set dst (MaskAll src));
5525
5492
effect(TEMP tmp, KILL cr);
5526
5493
format %{ "vmaskAllL $dst, $src\t# KILL $tmp, cr" %}
@@ -5593,7 +5560,6 @@ instruct vmask_gen_imm(pRegGov pd, immL con, rFlagsReg cr) %{
5593
5560
// vector popcount - INT
5594
5561
5595
5562
instruct vpopcountI(vReg dst, vReg src) %{
5596
- predicate(!n->as_Vector()->is_predicated_vector());
5597
5563
match(Set dst (PopCountVI src));
5598
5564
format %{ "vpopcountI $dst, $src" %}
5599
5565
ins_encode %{
@@ -5631,8 +5597,7 @@ instruct vpopcountI(vReg dst, vReg src) %{
5631
5597
// vector popcount - LONG
5632
5598
5633
5599
instruct vpopcountL(vReg dst, vReg src) %{
5634
- predicate(Matcher::vector_element_basic_type(n) == T_LONG &&
5635
- !n->as_Vector()->is_predicated_vector());
5600
+ predicate(Matcher::vector_element_basic_type(n) == T_LONG);
5636
5601
match(Set dst (PopCountVL src));
5637
5602
format %{ "vpopcountL $dst, $src" %}
5638
5603
ins_encode %{
@@ -5654,8 +5619,7 @@ instruct vpopcountL(vReg dst, vReg src) %{
5654
5619
// "vpopcountL" rule.
5655
5620
5656
5621
instruct vpopcountL_I(vReg dst, vReg src, vReg tmp) %{
5657
- predicate(Matcher::vector_element_basic_type(n) == T_INT &&
5658
- !n->as_Vector()->is_predicated_vector());
5622
+ predicate(Matcher::vector_element_basic_type(n) == T_INT);
5659
5623
match(Set dst (PopCountVL src));
5660
5624
effect(TEMP_DEF dst, TEMP tmp);
5661
5625
format %{ "vpopcountL_I $dst, $src\t# KILL $tmp" %}
@@ -6106,7 +6070,6 @@ instruct scatter_storeD_masked(indirect mem, vReg src, vReg idx, pRegGov pg, vRe
6106
6070
// ------------------------------ CountLeadingZerosV ---------------------------
6107
6071
6108
6072
instruct vcountLeadingZeros(vReg dst, vReg src) %{
6109
- predicate(!n->as_Vector()->is_predicated_vector());
6110
6073
match(Set dst (CountLeadingZerosV src));
6111
6074
format %{ "vcountLeadingZeros $dst, $src" %}
6112
6075
ins_encode %{
@@ -6154,7 +6117,6 @@ instruct vcountLeadingZeros_masked(vReg dst_src, pRegGov pg) %{
6154
6117
// ------------------------------ CountTrailingZerosV --------------------------
6155
6118
6156
6119
instruct vcountTrailingZeros(vReg dst, vReg src) %{
6157
- predicate(!n->as_Vector()->is_predicated_vector());
6158
6120
match(Set dst (CountTrailingZerosV src));
6159
6121
format %{ "vcountTrailingZeros $dst, $src" %}
6160
6122
ins_encode %{
@@ -6216,7 +6178,6 @@ instruct vcountTrailingZeros_masked(vReg dst_src, pRegGov pg) %{
6216
6178
// ------------------------------ ReverseV -------------------------------------
6217
6179
6218
6180
instruct vreverse(vReg dst, vReg src) %{
6219
- predicate(!n->as_Vector()->is_predicated_vector());
6220
6181
match(Set dst (ReverseV src));
6221
6182
format %{ "vreverse $dst, $src" %}
6222
6183
ins_encode %{
@@ -6263,7 +6224,6 @@ instruct vreverse_masked(vReg dst_src, pRegGov pg) %{
6263
6224
// ------------------------------ ReverseBytesV --------------------------------
6264
6225
6265
6226
instruct vreverseBytes(vReg dst, vReg src) %{
6266
- predicate(!n->as_Vector()->is_predicated_vector());
6267
6227
match(Set dst (ReverseBytesV src));
6268
6228
format %{ "vreverseBytes $dst, $src" %}
6269
6229
ins_encode %{
0 commit comments