@@ -1517,7 +1517,7 @@ def UImm3s8Operand : UImmScaledMemoryIndexed<3, 8>;
1517
1517
1518
1518
def uimm3s8 : Operand<i64>, ImmLeaf<i64,
1519
1519
[{ return Imm >= 0 && Imm <= 56 && ((Imm % 8) == 0); }], UImmS8XForm> {
1520
- let PrintMethod = "printVectorIndex <8>";
1520
+ let PrintMethod = "printMatrixIndex <8>";
1521
1521
let ParserMatchClass = UImm3s8Operand;
1522
1522
}
1523
1523
@@ -6011,11 +6011,11 @@ multiclass SIMDLogicalThreeVectorTied<bit U, bits<2> size,
6011
6011
6012
6012
// ARMv8.2-A Dot Product Instructions (Vector): These instructions extract
6013
6013
// bytes from S-sized elements.
6014
- class BaseSIMDThreeSameVectorDot<bit Q, bit U, bit Mixed, string asm , string kind1 ,
6015
- string kind2, RegisterOperand RegType,
6014
+ class BaseSIMDThreeSameVectorDot<bit Q, bit U, bits<2> sz, bits<4> opc , string asm ,
6015
+ string kind1, string kind2, RegisterOperand RegType,
6016
6016
ValueType AccumType, ValueType InputType,
6017
6017
SDPatternOperator OpNode> :
6018
- BaseSIMDThreeSameVectorTied<Q, U, 0b100, {0b1001, Mixed }, RegType, asm, kind1,
6018
+ BaseSIMDThreeSameVectorTied<Q, U, {sz, 0b0}, {0b1, opc }, RegType, asm, kind1,
6019
6019
[(set (AccumType RegType:$dst),
6020
6020
(OpNode (AccumType RegType:$Rd),
6021
6021
(InputType RegType:$Rn),
@@ -6024,9 +6024,9 @@ class BaseSIMDThreeSameVectorDot<bit Q, bit U, bit Mixed, string asm, string kin
6024
6024
}
6025
6025
6026
6026
multiclass SIMDThreeSameVectorDot<bit U, bit Mixed, string asm, SDPatternOperator OpNode> {
6027
- def v8i8 : BaseSIMDThreeSameVectorDot<0, U, Mixed, asm, ".2s", ".8b", V64,
6027
+ def v8i8 : BaseSIMDThreeSameVectorDot<0, U, 0b10, {0b001, Mixed} , asm, ".2s", ".8b", V64,
6028
6028
v2i32, v8i8, OpNode>;
6029
- def v16i8 : BaseSIMDThreeSameVectorDot<1, U, Mixed, asm, ".4s", ".16b", V128,
6029
+ def v16i8 : BaseSIMDThreeSameVectorDot<1, U, 0b10, {0b001, Mixed} , asm, ".4s", ".16b", V128,
6030
6030
v4i32, v16i8, OpNode>;
6031
6031
}
6032
6032
@@ -8482,12 +8482,12 @@ class SIMDThreeSameVectorMatMul<bit B, bit U, string asm, SDPatternOperator OpNo
8482
8482
8483
8483
//----------------------------------------------------------------------------
8484
8484
// ARMv8.2-A Dot Product Instructions (Indexed)
8485
- class BaseSIMDThreeSameVectorDotIndex <bit Q, bit U, bit Mixed , bits<2> size , string asm,
8485
+ class BaseSIMDThreeSameVectorIndexS <bit Q, bit U, bits<2> size , bits<4> opc , string asm,
8486
8486
string dst_kind, string lhs_kind, string rhs_kind,
8487
8487
RegisterOperand RegType,
8488
8488
ValueType AccumType, ValueType InputType,
8489
8489
SDPatternOperator OpNode> :
8490
- BaseSIMDIndexedTied<Q, U, 0b0, size, {0b111, Mixed} , RegType, RegType, V128,
8490
+ BaseSIMDIndexedTied<Q, U, 0b0, size, opc , RegType, RegType, V128,
8491
8491
VectorIndexS, asm, "", dst_kind, lhs_kind, rhs_kind,
8492
8492
[(set (AccumType RegType:$dst),
8493
8493
(AccumType (OpNode (AccumType RegType:$Rd),
@@ -8502,20 +8502,20 @@ class BaseSIMDThreeSameVectorDotIndex<bit Q, bit U, bit Mixed, bits<2> size, str
8502
8502
8503
8503
multiclass SIMDThreeSameVectorDotIndex<bit U, bit Mixed, bits<2> size, string asm,
8504
8504
SDPatternOperator OpNode> {
8505
- def v8i8 : BaseSIMDThreeSameVectorDotIndex <0, U, Mixed, size , asm, ".2s", ".8b", ".4b",
8505
+ def v8i8 : BaseSIMDThreeSameVectorIndexS <0, U, size, {0b111, Mixed} , asm, ".2s", ".8b", ".4b",
8506
8506
V64, v2i32, v8i8, OpNode>;
8507
- def v16i8 : BaseSIMDThreeSameVectorDotIndex <1, U, Mixed, size , asm, ".4s", ".16b", ".4b",
8507
+ def v16i8 : BaseSIMDThreeSameVectorIndexS <1, U, size, {0b111, Mixed} , asm, ".4s", ".16b", ".4b",
8508
8508
V128, v4i32, v16i8, OpNode>;
8509
8509
}
8510
8510
8511
8511
// ARMv8.2-A Fused Multiply Add-Long Instructions (Indexed)
8512
8512
let mayRaiseFPException = 1, Uses = [FPCR] in
8513
- class BaseSIMDThreeSameVectorFMLIndex <bit Q, bit U, bits<4> opc, string asm,
8513
+ class BaseSIMDThreeSameVectorIndexH <bit Q, bit U, bits<2> sz , bits<4> opc, string asm,
8514
8514
string dst_kind, string lhs_kind,
8515
8515
string rhs_kind, RegisterOperand RegType,
8516
- ValueType AccumType , ValueType InputType ,
8517
- SDPatternOperator OpNode> :
8518
- BaseSIMDIndexedTied<Q, U, 0, 0b10 , opc, RegType, RegType, V128_lo ,
8516
+ RegisterOperand RegType_lo , ValueType AccumType ,
8517
+ ValueType InputType, SDPatternOperator OpNode> :
8518
+ BaseSIMDIndexedTied<Q, U, 0, sz , opc, RegType, RegType, RegType_lo ,
8519
8519
VectorIndexH, asm, "", dst_kind, lhs_kind, rhs_kind,
8520
8520
[(set (AccumType RegType:$dst),
8521
8521
(AccumType (OpNode (AccumType RegType:$Rd),
@@ -8531,10 +8531,10 @@ class BaseSIMDThreeSameVectorFMLIndex<bit Q, bit U, bits<4> opc, string asm,
8531
8531
8532
8532
multiclass SIMDThreeSameVectorFMLIndex<bit U, bits<4> opc, string asm,
8533
8533
SDPatternOperator OpNode> {
8534
- def v4f16 : BaseSIMDThreeSameVectorFMLIndex <0, U, opc, asm, ".2s", ".2h", ".h",
8535
- V64, v2f32, v4f16, OpNode>;
8536
- def v8f16 : BaseSIMDThreeSameVectorFMLIndex <1, U, opc, asm, ".4s", ".4h", ".h",
8537
- V128, v4f32, v8f16, OpNode>;
8534
+ def v4f16 : BaseSIMDThreeSameVectorIndexH <0, U, 0b10 , opc, asm, ".2s", ".2h", ".h",
8535
+ V64, V128_lo, v2f32, v4f16, OpNode>;
8536
+ def v8f16 : BaseSIMDThreeSameVectorIndexH <1, U, 0b10 , opc, asm, ".4s", ".4h", ".h",
8537
+ V128, V128_lo, v4f32, v8f16, OpNode>;
8538
8538
}
8539
8539
8540
8540
multiclass SIMDFPIndexed<bit U, bits<4> opc, string asm,
0 commit comments