@@ -157,6 +157,7 @@ def V2Write_20c_1V0 : SchedWriteRes<[V2UnitV0]> { let Latency = 20;
157157def V2Write_2c_1V1 : SchedWriteRes<[V2UnitV1]> { let Latency = 2; }
158158def V2Write_2c_1V13 : SchedWriteRes<[V2UnitV13]> { let Latency = 2; }
159159def V2Write_3c_1V1 : SchedWriteRes<[V2UnitV1]> { let Latency = 3; }
160+ def V2Write_3c_1V13 : SchedWriteRes<[V2UnitV13]> { let Latency = 3; }
160161def V2Write_4c_1V1 : SchedWriteRes<[V2UnitV1]> { let Latency = 4; }
161162def V2Write_4c_1V13 : SchedWriteRes<[V2UnitV13]> { let Latency = 4; }
162163def V2Write_6c_1V1 : SchedWriteRes<[V2UnitV1]> { let Latency = 6; }
@@ -256,8 +257,8 @@ def V2Write_4c_1L01_1V01 : SchedWriteRes<[V2UnitL01, V2UnitV01]> {
256257 let NumMicroOps = 2;
257258}
258259
259- def V2Write_4c_1V13_1V : SchedWriteRes<[V2UnitV13, V2UnitV]> {
260- let Latency = 4 ;
260+ def V2Write_5c_1V13_1V : SchedWriteRes<[V2UnitV13, V2UnitV]> {
261+ let Latency = 5 ;
261262 let NumMicroOps = 2;
262263}
263264
@@ -376,8 +377,8 @@ def V2Write_6c_1L_1S : SchedWriteRes<[V2UnitL, V2UnitS]> {
376377 let NumMicroOps = 2;
377378}
378379
379- def V2Write_4c_2V13 : SchedWriteRes<[V2UnitV13, V2UnitV13]> {
380- let Latency = 4 ;
380+ def V2Write_6c_2V13 : SchedWriteRes<[V2UnitV13, V2UnitV13]> {
381+ let Latency = 6 ;
381382 let NumMicroOps = 2;
382383}
383384
@@ -1468,14 +1469,14 @@ def : SchedAlias<WriteVq, V2Write_2c_1V>;
14681469def : InstRW<[V2Wr_VA, V2Rd_VA], (instregex "^[SU]ABAL?v")>;
14691470
14701471// ASIMD arith, reduce, 4H/4S
1471- def : InstRW<[V2Write_2c_1V13 ], (instregex "^(ADDV|[SU]ADDLV)v4(i16|i32)v$")>;
1472+ def : InstRW<[V2Write_3c_1V13 ], (instregex "^(ADDV|[SU]ADDLV)v4(i16|i32)v$")>;
14721473
14731474// ASIMD arith, reduce, 8B/8H
1474- def : InstRW<[V2Write_4c_1V13_1V ],
1475+ def : InstRW<[V2Write_5c_1V13_1V ],
14751476 (instregex "^(ADDV|[SU]ADDLV)v8(i8|i16)v$")>;
14761477
14771478// ASIMD arith, reduce, 16B
1478- def : InstRW<[V2Write_4c_2V13 ], (instregex "^(ADDV|[SU]ADDLV)v16i8v$")>;
1479+ def : InstRW<[V2Write_6c_2V13 ], (instregex "^(ADDV|[SU]ADDLV)v16i8v$")>;
14791480
14801481// ASIMD dot product
14811482// ASIMD dot product using signed and unsigned integers
@@ -1486,15 +1487,15 @@ def : InstRW<[V2Wr_VDOT, V2Rd_VDOT],
14861487def : InstRW<[V2Wr_VMMA, V2Rd_VMMA], (instrs SMMLA, UMMLA, USMMLA)>;
14871488
14881489// ASIMD max/min, reduce, 4H/4S
1489- def : InstRW<[V2Write_2c_1V13 ], (instregex "^[SU](MAX|MIN)Vv4i16v$",
1490+ def : InstRW<[V2Write_3c_1V13 ], (instregex "^[SU](MAX|MIN)Vv4i16v$",
14901491 "^[SU](MAX|MIN)Vv4i32v$")>;
14911492
14921493// ASIMD max/min, reduce, 8B/8H
1493- def : InstRW<[V2Write_4c_1V13_1V ], (instregex "^[SU](MAX|MIN)Vv8i8v$",
1494+ def : InstRW<[V2Write_5c_1V13_1V ], (instregex "^[SU](MAX|MIN)Vv8i8v$",
14941495 "^[SU](MAX|MIN)Vv8i16v$")>;
14951496
14961497// ASIMD max/min, reduce, 16B
1497- def : InstRW<[V2Write_4c_2V13 ], (instregex "[SU](MAX|MIN)Vv16i8v$")>;
1498+ def : InstRW<[V2Write_6c_2V13 ], (instregex "[SU](MAX|MIN)Vv16i8v$")>;
14981499
14991500// ASIMD multiply
15001501def : InstRW<[V2Write_4c_1V02], (instregex "^MULv", "^SQ(R)?DMULHv")>;
0 commit comments