@@ -199,11 +199,11 @@ multiclass I3<string OpcStr, SDNode OpNode> {
199
199
def i32rr :
200
200
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, Int32Regs:$b),
201
201
!strconcat(OpcStr, "32 \t$dst, $a, $b;"),
202
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, Int32Regs:$b))]>;
202
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a), (i32 Int32Regs:$b) ))]>;
203
203
def i32ri :
204
204
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, i32imm:$b),
205
205
!strconcat(OpcStr, "32 \t$dst, $a, $b;"),
206
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, imm:$b))]>;
206
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a) , imm:$b))]>;
207
207
def i16rr :
208
208
NVPTXInst<(outs Int16Regs:$dst), (ins Int16Regs:$a, Int16Regs:$b),
209
209
!strconcat(OpcStr, "16 \t$dst, $a, $b;"),
@@ -221,11 +221,11 @@ multiclass ADD_SUB_INT_CARRY<string OpcStr, SDNode OpNode> {
221
221
def i32rr :
222
222
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, Int32Regs:$b),
223
223
!strconcat(OpcStr, ".s32 \t$dst, $a, $b;"),
224
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, Int32Regs:$b))]>;
224
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a), (i32 Int32Regs:$b) ))]>;
225
225
def i32ri :
226
226
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, i32imm:$b),
227
227
!strconcat(OpcStr, ".s32 \t$dst, $a, $b;"),
228
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, imm:$b))]>;
228
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a) , imm:$b))]>;
229
229
def i64rr :
230
230
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a, Int64Regs:$b),
231
231
!strconcat(OpcStr, ".s64 \t$dst, $a, $b;"),
@@ -811,14 +811,14 @@ defm UREM : I3<"rem.u", urem>;
811
811
// Integer absolute value. NumBits should be one minus the bit width of RC.
812
812
// This idiom implements the algorithm at
813
813
// http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs.
814
- multiclass ABS<RegisterClass RC, string SizeName> {
814
+ multiclass ABS<ValueType T, RegisterClass RC, string SizeName> {
815
815
def : NVPTXInst<(outs RC:$dst), (ins RC:$a),
816
816
!strconcat("abs", SizeName, " \t$dst, $a;"),
817
- [(set RC:$dst, (abs RC:$a))]>;
817
+ [(set (T RC:$dst) , (abs (T RC:$a) ))]>;
818
818
}
819
- defm ABS_16 : ABS<Int16Regs, ".s16">;
820
- defm ABS_32 : ABS<Int32Regs, ".s32">;
821
- defm ABS_64 : ABS<Int64Regs, ".s64">;
819
+ defm ABS_16 : ABS<i16, Int16Regs, ".s16">;
820
+ defm ABS_32 : ABS<i32, Int32Regs, ".s32">;
821
+ defm ABS_64 : ABS<i64, Int64Regs, ".s64">;
822
822
823
823
// Integer min/max.
824
824
defm SMAX : I3<"max.s", smax>;
@@ -890,13 +890,13 @@ def : Pat<(i32 (mul_wide_unsigned Int16Regs:$a, imm:$b)),
890
890
def : Pat<(i64 (mul_wide_signed i32:$a, i32:$b)),
891
891
(MULWIDES64 Int32Regs:$a, Int32Regs:$b)>,
892
892
Requires<[doMulWide]>;
893
- def : Pat<(i64 (mul_wide_signed Int32Regs:$a, imm:$b)),
893
+ def : Pat<(i64 (mul_wide_signed (i32 Int32Regs:$a) , imm:$b)),
894
894
(MULWIDES64Imm Int32Regs:$a, imm:$b)>,
895
895
Requires<[doMulWide]>;
896
896
def : Pat<(i64 (mul_wide_unsigned i32:$a, i32:$b)),
897
897
(MULWIDEU64 Int32Regs:$a, Int32Regs:$b)>,
898
898
Requires<[doMulWide]>;
899
- def : Pat<(i64 (mul_wide_unsigned Int32Regs:$a, imm:$b)),
899
+ def : Pat<(i64 (mul_wide_unsigned (i32 Int32Regs:$a) , imm:$b)),
900
900
(MULWIDEU64Imm Int32Regs:$a, imm:$b)>,
901
901
Requires<[doMulWide]>;
902
902
@@ -1022,22 +1022,22 @@ def MAD32rrr :
1022
1022
NVPTXInst<(outs Int32Regs:$dst),
1023
1023
(ins Int32Regs:$a, Int32Regs:$b, Int32Regs:$c),
1024
1024
"mad.lo.s32 \t$dst, $a, $b, $c;",
1025
- [(set Int32Regs:$dst, (imad Int32Regs:$a, Int32Regs:$b, Int32Regs:$c))]>;
1025
+ [(set (i32 Int32Regs:$dst) , (imad (i32 Int32Regs:$a), (i32 Int32Regs:$b), (i32 Int32Regs:$c) ))]>;
1026
1026
def MAD32rri :
1027
1027
NVPTXInst<(outs Int32Regs:$dst),
1028
1028
(ins Int32Regs:$a, Int32Regs:$b, i32imm:$c),
1029
1029
"mad.lo.s32 \t$dst, $a, $b, $c;",
1030
- [(set Int32Regs:$dst, (imad Int32Regs:$a, Int32Regs:$b, imm:$c))]>;
1030
+ [(set (i32 Int32Regs:$dst) , (imad (i32 Int32Regs:$a), (i32 Int32Regs:$b) , imm:$c))]>;
1031
1031
def MAD32rir :
1032
1032
NVPTXInst<(outs Int32Regs:$dst),
1033
1033
(ins Int32Regs:$a, i32imm:$b, Int32Regs:$c),
1034
1034
"mad.lo.s32 \t$dst, $a, $b, $c;",
1035
- [(set Int32Regs:$dst, (imad Int32Regs:$a, imm:$b, Int32Regs:$c))]>;
1035
+ [(set (i32 Int32Regs:$dst) , (imad (i32 Int32Regs:$a) , imm:$b, (i32 Int32Regs:$c) ))]>;
1036
1036
def MAD32rii :
1037
1037
NVPTXInst<(outs Int32Regs:$dst),
1038
1038
(ins Int32Regs:$a, i32imm:$b, i32imm:$c),
1039
1039
"mad.lo.s32 \t$dst, $a, $b, $c;",
1040
- [(set Int32Regs:$dst, (imad Int32Regs:$a, imm:$b, imm:$c))]>;
1040
+ [(set (i32 Int32Regs:$dst) , (imad (i32 Int32Regs:$a) , imm:$b, imm:$c))]>;
1041
1041
1042
1042
def MAD64rrr :
1043
1043
NVPTXInst<(outs Int64Regs:$dst),
@@ -1067,7 +1067,7 @@ def INEG16 :
1067
1067
def INEG32 :
1068
1068
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src),
1069
1069
"neg.s32 \t$dst, $src;",
1070
- [(set Int32Regs:$dst, (ineg Int32Regs:$src))]>;
1070
+ [(set (i32 Int32Regs:$dst) , (ineg (i32 Int32Regs:$src) ))]>;
1071
1071
def INEG64 :
1072
1072
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$src),
1073
1073
"neg.s64 \t$dst, $src;",
@@ -1458,11 +1458,11 @@ multiclass BITWISE<string OpcStr, SDNode OpNode> {
1458
1458
def b32rr :
1459
1459
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, Int32Regs:$b),
1460
1460
!strconcat(OpcStr, ".b32 \t$dst, $a, $b;"),
1461
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, Int32Regs:$b))]>;
1461
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a), (i32 Int32Regs:$b) ))]>;
1462
1462
def b32ri :
1463
1463
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, i32imm:$b),
1464
1464
!strconcat(OpcStr, ".b32 \t$dst, $a, $b;"),
1465
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, imm:$b))]>;
1465
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a) , imm:$b))]>;
1466
1466
def b64rr :
1467
1467
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a, Int64Regs:$b),
1468
1468
!strconcat(OpcStr, ".b64 \t$dst, $a, $b;"),
@@ -1485,7 +1485,7 @@ def NOT16 : NVPTXInst<(outs Int16Regs:$dst), (ins Int16Regs:$src),
1485
1485
[(set Int16Regs:$dst, (not Int16Regs:$src))]>;
1486
1486
def NOT32 : NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src),
1487
1487
"not.b32 \t$dst, $src;",
1488
- [(set Int32Regs:$dst, (not Int32Regs:$src))]>;
1488
+ [(set (i32 Int32Regs:$dst) , (not (i32 Int32Regs:$src) ))]>;
1489
1489
def NOT64 : NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$src),
1490
1490
"not.b64 \t$dst, $src;",
1491
1491
[(set Int64Regs:$dst, (not Int64Regs:$src))]>;
@@ -1499,27 +1499,27 @@ multiclass SHIFT<string OpcStr, SDNode OpNode> {
1499
1499
def i64rr :
1500
1500
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a, Int32Regs:$b),
1501
1501
!strconcat(OpcStr, "64 \t$dst, $a, $b;"),
1502
- [(set Int64Regs:$dst, (OpNode Int64Regs:$a, Int32Regs:$b))]>;
1502
+ [(set Int64Regs:$dst, (OpNode Int64Regs:$a, (i32 Int32Regs:$b) ))]>;
1503
1503
def i64ri :
1504
1504
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a, i32imm:$b),
1505
1505
!strconcat(OpcStr, "64 \t$dst, $a, $b;"),
1506
1506
[(set Int64Regs:$dst, (OpNode Int64Regs:$a, (i32 imm:$b)))]>;
1507
1507
def i32rr :
1508
1508
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, Int32Regs:$b),
1509
1509
!strconcat(OpcStr, "32 \t$dst, $a, $b;"),
1510
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, Int32Regs:$b))]>;
1510
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a), (i32 Int32Regs:$b) ))]>;
1511
1511
def i32ri :
1512
1512
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a, i32imm:$b),
1513
1513
!strconcat(OpcStr, "32 \t$dst, $a, $b;"),
1514
- [(set Int32Regs:$dst, (OpNode Int32Regs:$a, (i32 imm:$b)))]>;
1514
+ [(set Int32Regs:$dst, (OpNode (i32 Int32Regs:$a) , (i32 imm:$b)))]>;
1515
1515
def i32ii :
1516
1516
NVPTXInst<(outs Int32Regs:$dst), (ins i32imm:$a, i32imm:$b),
1517
1517
!strconcat(OpcStr, "32 \t$dst, $a, $b;"),
1518
1518
[(set Int32Regs:$dst, (OpNode (i32 imm:$a), (i32 imm:$b)))]>;
1519
1519
def i16rr :
1520
1520
NVPTXInst<(outs Int16Regs:$dst), (ins Int16Regs:$a, Int32Regs:$b),
1521
1521
!strconcat(OpcStr, "16 \t$dst, $a, $b;"),
1522
- [(set Int16Regs:$dst, (OpNode Int16Regs:$a, Int32Regs:$b))]>;
1522
+ [(set Int16Regs:$dst, (OpNode Int16Regs:$a, (i32 Int32Regs:$b) ))]>;
1523
1523
def i16ri :
1524
1524
NVPTXInst<(outs Int16Regs:$dst), (ins Int16Regs:$a, i32imm:$b),
1525
1525
!strconcat(OpcStr, "16 \t$dst, $a, $b;"),
@@ -1534,7 +1534,7 @@ defm SRL : SHIFT<"shr.u", srl>;
1534
1534
def BREV32 :
1535
1535
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a),
1536
1536
"brev.b32 \t$dst, $a;",
1537
- [(set Int32Regs:$dst, (bitreverse Int32Regs:$a))]>;
1537
+ [(set Int32Regs:$dst, (bitreverse (i32 Int32Regs:$a) ))]>;
1538
1538
def BREV64 :
1539
1539
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a),
1540
1540
"brev.b64 \t$dst, $a;",
@@ -1550,13 +1550,13 @@ def BREV64 :
1550
1550
def ROTL32imm_hw :
1551
1551
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src, i32imm:$amt),
1552
1552
"shf.l.wrap.b32 \t$dst, $src, $src, $amt;",
1553
- [(set Int32Regs:$dst, (rotl Int32Regs:$src, (i32 imm:$amt)))]>,
1553
+ [(set Int32Regs:$dst, (rotl (i32 Int32Regs:$src) , (i32 imm:$amt)))]>,
1554
1554
Requires<[hasHWROT32]>;
1555
1555
1556
1556
def ROTL32reg_hw :
1557
1557
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src, Int32Regs:$amt),
1558
1558
"shf.l.wrap.b32 \t$dst, $src, $src, $amt;",
1559
- [(set Int32Regs:$dst, (rotl Int32Regs:$src, Int32Regs:$amt))]>,
1559
+ [(set Int32Regs:$dst, (rotl (i32 Int32Regs:$src), (i32 Int32Regs:$amt) ))]>,
1560
1560
Requires<[hasHWROT32]>;
1561
1561
1562
1562
// 32 bit r2 = rotr r1, n
@@ -1565,13 +1565,13 @@ def ROTL32reg_hw :
1565
1565
def ROTR32imm_hw :
1566
1566
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src, i32imm:$amt),
1567
1567
"shf.r.wrap.b32 \t$dst, $src, $src, $amt;",
1568
- [(set Int32Regs:$dst, (rotr Int32Regs:$src, (i32 imm:$amt)))]>,
1568
+ [(set Int32Regs:$dst, (rotr (i32 Int32Regs:$src) , (i32 imm:$amt)))]>,
1569
1569
Requires<[hasHWROT32]>;
1570
1570
1571
1571
def ROTR32reg_hw :
1572
1572
NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$src, Int32Regs:$amt),
1573
1573
"shf.r.wrap.b32 \t$dst, $src, $src, $amt;",
1574
- [(set Int32Regs:$dst, (rotr Int32Regs:$src, Int32Regs:$amt))]>,
1574
+ [(set Int32Regs:$dst, (rotr (i32 Int32Regs:$src), (i32 Int32Regs:$amt) ))]>,
1575
1575
Requires<[hasHWROT32]>;
1576
1576
1577
1577
// 32-bit software rotate by immediate. $amt2 should equal 32 - $amt1.
@@ -1591,10 +1591,10 @@ def SUB_FRM_32 : SDNodeXForm<imm, [{
1591
1591
return CurDAG->getTargetConstant(32 - N->getZExtValue(), SDLoc(N), MVT::i32);
1592
1592
}]>;
1593
1593
1594
- def : Pat<(rotl Int32Regs:$src, (i32 imm:$amt)),
1594
+ def : Pat<(rotl (i32 Int32Regs:$src) , (i32 imm:$amt)),
1595
1595
(ROT32imm_sw Int32Regs:$src, imm:$amt, (SUB_FRM_32 node:$amt))>,
1596
1596
Requires<[noHWROT32]>;
1597
- def : Pat<(rotr Int32Regs:$src, (i32 imm:$amt)),
1597
+ def : Pat<(rotr (i32 Int32Regs:$src) , (i32 imm:$amt)),
1598
1598
(ROT32imm_sw Int32Regs:$src, (SUB_FRM_32 node:$amt), imm:$amt)>,
1599
1599
Requires<[noHWROT32]>;
1600
1600
@@ -1610,7 +1610,7 @@ def ROTL32reg_sw :
1610
1610
"shr.b32 \t%rhs, $src, %amt2;\n\t"
1611
1611
"add.u32 \t$dst, %lhs, %rhs;\n\t"
1612
1612
"}}",
1613
- [(set Int32Regs:$dst, (rotl Int32Regs:$src, Int32Regs:$amt))]>,
1613
+ [(set Int32Regs:$dst, (rotl (i32 Int32Regs:$src), (i32 Int32Regs:$amt) ))]>,
1614
1614
Requires<[noHWROT32]>;
1615
1615
1616
1616
// 32-bit software rotate right by register.
@@ -1625,7 +1625,7 @@ def ROTR32reg_sw :
1625
1625
"shl.b32 \t%rhs, $src, %amt2;\n\t"
1626
1626
"add.u32 \t$dst, %lhs, %rhs;\n\t"
1627
1627
"}}",
1628
- [(set Int32Regs:$dst, (rotr Int32Regs:$src, Int32Regs:$amt))]>,
1628
+ [(set Int32Regs:$dst, (rotr (i32 Int32Regs:$src), (i32 Int32Regs:$amt) ))]>,
1629
1629
Requires<[noHWROT32]>;
1630
1630
1631
1631
// 64-bit software rotate by immediate. $amt2 should equal 64 - $amt1.
@@ -1662,7 +1662,7 @@ def ROTL64reg_sw :
1662
1662
"shr.b64 \t%rhs, $src, %amt2;\n\t"
1663
1663
"add.u64 \t$dst, %lhs, %rhs;\n\t"
1664
1664
"}}",
1665
- [(set Int64Regs:$dst, (rotl Int64Regs:$src, Int32Regs:$amt))]>;
1665
+ [(set Int64Regs:$dst, (rotl Int64Regs:$src, (i32 Int32Regs:$amt) ))]>;
1666
1666
1667
1667
def ROTR64reg_sw :
1668
1668
NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$src, Int32Regs:$amt),
@@ -1675,7 +1675,7 @@ def ROTR64reg_sw :
1675
1675
"shl.b64 \t%rhs, $src, %amt2;\n\t"
1676
1676
"add.u64 \t$dst, %lhs, %rhs;\n\t"
1677
1677
"}}",
1678
- [(set Int64Regs:$dst, (rotr Int64Regs:$src, Int32Regs:$amt))]>;
1678
+ [(set Int64Regs:$dst, (rotr Int64Regs:$src, (i32 Int32Regs:$amt) ))]>;
1679
1679
1680
1680
//
1681
1681
// Funnnel shift in clamp mode
@@ -1691,14 +1691,14 @@ def FUNSHFLCLAMP :
1691
1691
(ins Int32Regs:$lo, Int32Regs:$hi, Int32Regs:$amt),
1692
1692
"shf.l.clamp.b32 \t$dst, $lo, $hi, $amt;",
1693
1693
[(set Int32Regs:$dst,
1694
- (FUN_SHFL_CLAMP Int32Regs:$lo, Int32Regs:$hi, Int32Regs:$amt))]>;
1694
+ (FUN_SHFL_CLAMP (i32 Int32Regs:$lo), (i32 Int32Regs:$hi), (i32 Int32Regs:$amt) ))]>;
1695
1695
1696
1696
def FUNSHFRCLAMP :
1697
1697
NVPTXInst<(outs Int32Regs:$dst),
1698
1698
(ins Int32Regs:$lo, Int32Regs:$hi, Int32Regs:$amt),
1699
1699
"shf.r.clamp.b32 \t$dst, $lo, $hi, $amt;",
1700
1700
[(set Int32Regs:$dst,
1701
- (FUN_SHFR_CLAMP Int32Regs:$lo, Int32Regs:$hi, Int32Regs:$amt))]>;
1701
+ (FUN_SHFR_CLAMP (i32 Int32Regs:$lo), (i32 Int32Regs:$hi), (i32 Int32Regs:$amt) ))]>;
1702
1702
1703
1703
//
1704
1704
// BFE - bit-field extract
@@ -1915,7 +1915,7 @@ def IMOV16ri : NVPTXInst<(outs Int16Regs:$dst), (ins i16imm:$src),
1915
1915
[(set Int16Regs:$dst, imm:$src)]>;
1916
1916
def IMOV32ri : NVPTXInst<(outs Int32Regs:$dst), (ins i32imm:$src),
1917
1917
"mov.u32 \t$dst, $src;",
1918
- [(set Int32Regs:$dst, imm:$src)]>;
1918
+ [(set (i32 Int32Regs:$dst) , imm:$src)]>;
1919
1919
def IMOV64ri : NVPTXInst<(outs Int64Regs:$dst), (ins i64imm:$src),
1920
1920
"mov.u64 \t$dst, $src;",
1921
1921
[(set Int64Regs:$dst, imm:$src)]>;
@@ -1978,9 +1978,9 @@ multiclass ISET_FORMAT<PatFrag OpNode, PatLeaf Mode,
1978
1978
// i32 -> pred
1979
1979
def : Pat<(i1 (OpNode i32:$a, i32:$b)),
1980
1980
(setp_32rr Int32Regs:$a, Int32Regs:$b, Mode)>;
1981
- def : Pat<(i1 (OpNode Int32Regs:$a, imm:$b)),
1981
+ def : Pat<(i1 (OpNode (i32 Int32Regs:$a) , imm:$b)),
1982
1982
(setp_32ri Int32Regs:$a, imm:$b, Mode)>;
1983
- def : Pat<(i1 (OpNode imm:$a, Int32Regs:$b)),
1983
+ def : Pat<(i1 (OpNode imm:$a, (i32 Int32Regs:$b) )),
1984
1984
(setp_32ir imm:$a, Int32Regs:$b, Mode)>;
1985
1985
// i64 -> pred
1986
1986
def : Pat<(i1 (OpNode Int64Regs:$a, Int64Regs:$b)),
@@ -2000,9 +2000,9 @@ multiclass ISET_FORMAT<PatFrag OpNode, PatLeaf Mode,
2000
2000
// i32 -> i32
2001
2001
def : Pat<(i32 (OpNode i32:$a, i32:$b)),
2002
2002
(set_32rr Int32Regs:$a, Int32Regs:$b, Mode)>;
2003
- def : Pat<(i32 (OpNode Int32Regs:$a, imm:$b)),
2003
+ def : Pat<(i32 (OpNode (i32 Int32Regs:$a) , imm:$b)),
2004
2004
(set_32ri Int32Regs:$a, imm:$b, Mode)>;
2005
- def : Pat<(i32 (OpNode imm:$a, Int32Regs:$b)),
2005
+ def : Pat<(i32 (OpNode imm:$a, (i32 Int32Regs:$b) )),
2006
2006
(set_32ir imm:$a, Int32Regs:$b, Mode)>;
2007
2007
// i64 -> i32
2008
2008
def : Pat<(i32 (OpNode Int64Regs:$a, Int64Regs:$b)),
@@ -3207,25 +3207,25 @@ def : Pat<(sext_inreg Int64Regs:$a, i32), (CVT_INREG_s64_s32 Int64Regs:$a)>;
3207
3207
3208
3208
3209
3209
// Select instructions with 32-bit predicates
3210
- def : Pat<(select Int32Regs:$pred, i16:$a, i16:$b),
3210
+ def : Pat<(select (i32 Int32Regs:$pred) , i16:$a, i16:$b),
3211
3211
(SELP_b16rr Int16Regs:$a, Int16Regs:$b,
3212
3212
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3213
- def : Pat<(select Int32Regs:$pred, i32:$a, i32:$b),
3213
+ def : Pat<(select (i32 Int32Regs:$pred) , i32:$a, i32:$b),
3214
3214
(SELP_b32rr Int32Regs:$a, Int32Regs:$b,
3215
3215
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3216
- def : Pat<(select Int32Regs:$pred, Int64Regs:$a, Int64Regs:$b),
3216
+ def : Pat<(select (i32 Int32Regs:$pred) , Int64Regs:$a, Int64Regs:$b),
3217
3217
(SELP_b64rr Int64Regs:$a, Int64Regs:$b,
3218
3218
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3219
- def : Pat<(select Int32Regs:$pred, (f16 Int16Regs:$a), (f16 Int16Regs:$b)),
3219
+ def : Pat<(select (i32 Int32Regs:$pred) , (f16 Int16Regs:$a), (f16 Int16Regs:$b)),
3220
3220
(SELP_f16rr Int16Regs:$a, Int16Regs:$b,
3221
3221
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3222
- def : Pat<(select Int32Regs:$pred, (bf16 Int16Regs:$a), (bf16 Int16Regs:$b)),
3222
+ def : Pat<(select (i32 Int32Regs:$pred) , (bf16 Int16Regs:$a), (bf16 Int16Regs:$b)),
3223
3223
(SELP_bf16rr Int16Regs:$a, Int16Regs:$b,
3224
3224
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3225
- def : Pat<(select Int32Regs:$pred, Float32Regs:$a, Float32Regs:$b),
3225
+ def : Pat<(select (i32 Int32Regs:$pred) , Float32Regs:$a, Float32Regs:$b),
3226
3226
(SELP_f32rr Float32Regs:$a, Float32Regs:$b,
3227
3227
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3228
- def : Pat<(select Int32Regs:$pred, Float64Regs:$a, Float64Regs:$b),
3228
+ def : Pat<(select (i32 Int32Regs:$pred) , Float64Regs:$a, Float64Regs:$b),
3229
3229
(SELP_f64rr Float64Regs:$a, Float64Regs:$b,
3230
3230
(SETP_b32ri (ANDb32ri Int32Regs:$pred, 1), 1, CmpEQ))>;
3231
3231
@@ -3309,7 +3309,7 @@ let hasSideEffects = false in {
3309
3309
}
3310
3310
3311
3311
// 32-bit has a direct PTX instruction
3312
- def : Pat<(ctlz Int32Regs:$a), (CLZr32 Int32Regs:$a)>;
3312
+ def : Pat<(i32 ( ctlz (i32 Int32Regs:$a)) ), (CLZr32 Int32Regs:$a)>;
3313
3313
3314
3314
// The return type of the ctlz ISD node is the same as its input, but the PTX
3315
3315
// ctz instruction always returns a 32-bit value. For ctlz.i64, convert the
@@ -3347,7 +3347,7 @@ let hasSideEffects = false in {
3347
3347
}
3348
3348
3349
3349
// 32-bit has a direct PTX instruction
3350
- def : Pat<(ctpop Int32Regs:$a), (POPCr32 Int32Regs:$a)>;
3350
+ def : Pat<(i32 ( ctpop (i32 Int32Regs:$a)) ), (POPCr32 Int32Regs:$a)>;
3351
3351
3352
3352
// For 64-bit, the result in PTX is actually 32-bit so we zero-extend to 64-bit
3353
3353
// to match the LLVM semantics. Just as with ctlz.i64, we provide a second
@@ -3460,7 +3460,7 @@ let isTerminator=1 in {
3460
3460
"bra.uni \t$target;", [(br bb:$target)]>;
3461
3461
}
3462
3462
3463
- def : Pat<(brcond Int32Regs:$a, bb:$target),
3463
+ def : Pat<(brcond (i32 Int32Regs:$a) , bb:$target),
3464
3464
(CBranch (SETP_u32ri Int32Regs:$a, 0, CmpNE), bb:$target)>;
3465
3465
3466
3466
// SelectionDAGBuilder::visitSWitchCase() will invert the condition of a
0 commit comments