@@ -279,10 +279,10 @@ def OP_CVT_F32_BF16
279
279
280
280
// Splat operation - performs a range-checked splat over a vector
281
281
def SPLAT : WInst<"splat_lane", ".(!q)I",
282
- "UcUsUicsilPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlhdQhQdPlQPl ",
282
+ "UcUsUicsilPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlhdQhQdPlQPlmQm ",
283
283
[ImmCheck<1, ImmCheckLaneIndex, 0>]>;
284
284
def SPLATQ : WInst<"splat_laneq", ".(!Q)I",
285
- "UcUsUicsilPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlhdQhQdPlQPl ",
285
+ "UcUsUicsilPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlhdQhQdPlQPlmQm ",
286
286
[ImmCheck<1, ImmCheckLaneIndex, 0>]>;
287
287
288
288
let TargetGuard = "bf16,neon" in {
@@ -547,40 +547,40 @@ def VST4_LANE_F16 : WInst<"vst4_lane", "v*(4!)I", "hQh",
547
547
// E.3.16 Extract lanes from a vector
548
548
let InstName = "vmov" in
549
549
def VGET_LANE : IInst<"vget_lane", "1.I",
550
- "UcUsUicsiPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUl ",
550
+ "UcUsUicsiPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlmQm ",
551
551
[ImmCheck<1, ImmCheckLaneIndex, 0>]>;
552
552
553
553
////////////////////////////////////////////////////////////////////////////////
554
554
// E.3.17 Set lanes within a vector
555
555
let InstName = "vmov" in
556
556
def VSET_LANE : IInst<"vset_lane", ".1.I",
557
- "UcUsUicsiPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUl ",
557
+ "UcUsUicsiPcPsfQUcQUsQUiQcQsQiQPcQPsQflUlQlQUlmQm ",
558
558
[ImmCheck<2, ImmCheckLaneIndex, 1>]>;
559
559
560
560
////////////////////////////////////////////////////////////////////////////////
561
561
// E.3.18 Initialize a vector from bit pattern
562
- def VCREATE : NoTestOpInst<"vcreate", ".(IU>)", "csihfUcUsUiUlPcPsl ", OP_CAST> {
562
+ def VCREATE : NoTestOpInst<"vcreate", ".(IU>)", "csihfUcUsUiUlPcPslm ", OP_CAST> {
563
563
let BigEndianSafe = 1;
564
564
}
565
565
566
566
////////////////////////////////////////////////////////////////////////////////
567
567
// E.3.19 Set all lanes to same value
568
568
let InstName = "vmov" in {
569
569
def VDUP_N : WOpInst<"vdup_n", ".1",
570
- "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUl ",
570
+ "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUlmQm ",
571
571
OP_DUP>;
572
572
def VMOV_N : WOpInst<"vmov_n", ".1",
573
- "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUl ",
573
+ "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUlmQm ",
574
574
OP_DUP>;
575
575
}
576
576
let InstName = "" in
577
577
def VDUP_LANE: WOpInst<"vdup_lane", ".qI",
578
- "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUl ",
578
+ "UcUsUicsiPcPshfQUcQUsQUiQcQsQiQPcQPsQhQflUlQlQUlmQm ",
579
579
OP_DUP_LN>;
580
580
581
581
////////////////////////////////////////////////////////////////////////////////
582
582
// E.3.20 Combining vectors
583
- def VCOMBINE : NoTestOpInst<"vcombine", "Q..", "csilhfUcUsUiUlPcPs ", OP_CONC>;
583
+ def VCOMBINE : NoTestOpInst<"vcombine", "Q..", "csilhfUcUsUiUlPcPsm ", OP_CONC>;
584
584
585
585
////////////////////////////////////////////////////////////////////////////////
586
586
// E.3.21 Splitting vectors
@@ -589,8 +589,8 @@ def VCOMBINE : NoTestOpInst<"vcombine", "Q..", "csilhfUcUsUiUlPcPs", OP_CONC>;
589
589
// versions of these intrinsics in both AArch32 and AArch64 architectures. See
590
590
// D45668 for more details.
591
591
let InstName = "vmov" in {
592
- def VGET_HIGH : NoTestOpInst<"vget_high", ".Q", "csilhfUcUsUiUlPcPs ", OP_HI>;
593
- def VGET_LOW : NoTestOpInst<"vget_low", ".Q", "csilhfUcUsUiUlPcPs ", OP_LO>;
592
+ def VGET_HIGH : NoTestOpInst<"vget_high", ".Q", "csilhfUcUsUiUlPcPsm ", OP_HI>;
593
+ def VGET_LOW : NoTestOpInst<"vget_low", ".Q", "csilhfUcUsUiUlPcPsm ", OP_LO>;
594
594
}
595
595
596
596
////////////////////////////////////////////////////////////////////////////////
@@ -619,16 +619,16 @@ def VQMOVUN : SInst<"vqmovun", "(<U)Q", "sil">;
619
619
////////////////////////////////////////////////////////////////////////////////
620
620
// E.3.23-24 Table lookup, Extended table lookup
621
621
let InstName = "vtbl" in {
622
- def VTBL1 : WInst<"vtbl1", "..p", "UccPc ">;
623
- def VTBL2 : WInst<"vtbl2", ".2p", "UccPc ">;
624
- def VTBL3 : WInst<"vtbl3", ".3p", "UccPc ">;
625
- def VTBL4 : WInst<"vtbl4", ".4p", "UccPc ">;
622
+ def VTBL1 : WInst<"vtbl1", "..p", "UccPcm ">;
623
+ def VTBL2 : WInst<"vtbl2", ".2p", "UccPcm ">;
624
+ def VTBL3 : WInst<"vtbl3", ".3p", "UccPcm ">;
625
+ def VTBL4 : WInst<"vtbl4", ".4p", "UccPcm ">;
626
626
}
627
627
let InstName = "vtbx" in {
628
- def VTBX1 : WInst<"vtbx1", "...p", "UccPc ">;
629
- def VTBX2 : WInst<"vtbx2", "..2p", "UccPc ">;
630
- def VTBX3 : WInst<"vtbx3", "..3p", "UccPc ">;
631
- def VTBX4 : WInst<"vtbx4", "..4p", "UccPc ">;
628
+ def VTBX1 : WInst<"vtbx1", "...p", "UccPcm ">;
629
+ def VTBX2 : WInst<"vtbx2", "..2p", "UccPcm ">;
630
+ def VTBX3 : WInst<"vtbx3", "..3p", "UccPcm ">;
631
+ def VTBX4 : WInst<"vtbx4", "..4p", "UccPcm ">;
632
632
}
633
633
634
634
////////////////////////////////////////////////////////////////////////////////
@@ -677,15 +677,15 @@ def VQDMLSL_N : SOpInst<"vqdmlsl_n", "(>Q)(>Q).1", "si", OP_QDMLSL_N>;
677
677
////////////////////////////////////////////////////////////////////////////////
678
678
// E.3.26 Vector Extract
679
679
def VEXT : WInst<"vext", "...I",
680
- "cUcPcsUsPsiUilUlfQcQUcQPcQsQUsQPsQiQUiQlQUlQf ",
680
+ "cUcPcsUsPsiUilUlfQcQUcQPcQsQUsQPsQiQUiQlQUlQfmQm ",
681
681
[ImmCheck<2, ImmCheckLaneIndex, 0>]>;
682
682
683
683
////////////////////////////////////////////////////////////////////////////////
684
684
// E.3.27 Reverse vector elements
685
- def VREV64 : WOpInst<"vrev64", "..", "csiUcUsUiPcPsfQcQsQiQUcQUsQUiQPcQPsQf ",
685
+ def VREV64 : WOpInst<"vrev64", "..", "csiUcUsUiPcPsfQcQsQiQUcQUsQUiQPcQPsQfmQm ",
686
686
OP_REV64>;
687
- def VREV32 : WOpInst<"vrev32", "..", "csUcUsPcPsQcQsQUcQUsQPcQPs ", OP_REV32>;
688
- def VREV16 : WOpInst<"vrev16", "..", "cUcPcQcQUcQPc ", OP_REV16>;
687
+ def VREV32 : WOpInst<"vrev32", "..", "csUcUsPcPsQcQsQUcQUsQPcQPsmQm ", OP_REV32>;
688
+ def VREV16 : WOpInst<"vrev16", "..", "cUcPcQcQUcQPcmQm ", OP_REV16>;
689
689
690
690
////////////////////////////////////////////////////////////////////////////////
691
691
// E.3.28 Other single operand arithmetic
@@ -709,13 +709,13 @@ def VBIC : LOpInst<"vbic", "...", "csilUcUsUiUlQcQsQiQlQUcQUsQUiQUl", OP_ANDN>;
709
709
def VORN : LOpInst<"vorn", "...", "csilUcUsUiUlQcQsQiQlQUcQUsQUiQUl", OP_ORN>;
710
710
let isHiddenLInst = 1 in
711
711
def VBSL : SInst<"vbsl", ".U..",
712
- "csilUcUsUiUlfPcPsQcQsQiQlQUcQUsQUiQUlQfQPcQPs ">;
712
+ "csilUcUsUiUlfPcPsQcQsQiQlQUcQUsQUiQUlQfQPcQPsmQm ">;
713
713
714
714
////////////////////////////////////////////////////////////////////////////////
715
715
// E.3.30 Transposition operations
716
- def VTRN : WInst<"vtrn", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPs ">;
717
- def VZIP : WInst<"vzip", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPs ">;
718
- def VUZP : WInst<"vuzp", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPs ">;
716
+ def VTRN : WInst<"vtrn", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPsmQm ">;
717
+ def VZIP : WInst<"vzip", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPsmQm ">;
718
+ def VUZP : WInst<"vuzp", "2..", "csiUcUsUifPcPsQcQsQiQUcQUsQUiQfQPcQPsmQm ">;
719
719
720
720
////////////////////////////////////////////////////////////////////////////////
721
721
@@ -1028,19 +1028,19 @@ def GET_LANE : IInst<"vget_lane", "1.I", "dQdPlQPl",
1028
1028
def SET_LANE : IInst<"vset_lane", ".1.I", "dQdPlQPl",
1029
1029
[ImmCheck<2, ImmCheckLaneIndex, 1>]>;
1030
1030
def COPY_LANE : IOpInst<"vcopy_lane", "..I.I",
1031
- "csilUcUsUiUlPcPsPlfd ", OP_COPY_LN>;
1031
+ "csilUcUsUiUlPcPsPlfdm ", OP_COPY_LN>;
1032
1032
def COPYQ_LANE : IOpInst<"vcopy_lane", "..IqI",
1033
- "QcQsQiQlQUcQUsQUiQUlQPcQPsQfQdQPl ", OP_COPY_LN>;
1033
+ "QcQsQiQlQUcQUsQUiQUlQPcQPsQfQdQPlQm ", OP_COPY_LN>;
1034
1034
def COPY_LANEQ : IOpInst<"vcopy_laneq", "..IQI",
1035
- "csilPcPsPlUcUsUiUlfd ", OP_COPY_LN>;
1035
+ "csilPcPsPlUcUsUiUlfdm ", OP_COPY_LN>;
1036
1036
def COPYQ_LANEQ : IOpInst<"vcopy_laneq", "..I.I",
1037
- "QcQsQiQlQUcQUsQUiQUlQPcQPsQfQdQPl ", OP_COPY_LN>;
1037
+ "QcQsQiQlQUcQUsQUiQUlQPcQPsQfQdQPlQm ", OP_COPY_LN>;
1038
1038
1039
1039
////////////////////////////////////////////////////////////////////////////////
1040
1040
// Set all lanes to same value
1041
1041
def VDUP_LANE1: WOpInst<"vdup_lane", ".qI", "dQdPlQPl", OP_DUP_LN>;
1042
1042
def VDUP_LANE2: WOpInst<"vdup_laneq", ".QI",
1043
- "csilUcUsUiUlPcPshfdQcQsQiQlQPcQPsQUcQUsQUiQUlQhQfQdPlQPl ",
1043
+ "csilUcUsUiUlPcPshfdQcQsQiQlQPcQPsQUcQUsQUiQUlQhQfQdPlQPlmQm ",
1044
1044
OP_DUP_LN>;
1045
1045
def DUP_N : WOpInst<"vdup_n", ".1", "dQdPlQPl", OP_DUP>;
1046
1046
def MOV_N : WOpInst<"vmov_n", ".1", "dQdPlQPl", OP_DUP>;
@@ -1266,31 +1266,31 @@ def FMINNM_S64 : SInst<"vminnm", "...", "dQd">;
1266
1266
////////////////////////////////////////////////////////////////////////////////
1267
1267
// Permutation
1268
1268
def VTRN1 : SOpInst<"vtrn1", "...",
1269
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_TRN1>;
1269
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_TRN1>;
1270
1270
def VZIP1 : SOpInst<"vzip1", "...",
1271
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_ZIP1>;
1271
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_ZIP1>;
1272
1272
def VUZP1 : SOpInst<"vuzp1", "...",
1273
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_UZP1>;
1273
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_UZP1>;
1274
1274
def VTRN2 : SOpInst<"vtrn2", "...",
1275
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_TRN2>;
1275
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_TRN2>;
1276
1276
def VZIP2 : SOpInst<"vzip2", "...",
1277
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_ZIP2>;
1277
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_ZIP2>;
1278
1278
def VUZP2 : SOpInst<"vuzp2", "...",
1279
- "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPl ", OP_UZP2>;
1279
+ "csiUcUsUifPcPsQcQsQiQlQUcQUsQUiQUlQfQdQPcQPsQPlmQm ", OP_UZP2>;
1280
1280
1281
1281
////////////////////////////////////////////////////////////////////////////////
1282
1282
// Table lookup
1283
1283
let InstName = "vtbl" in {
1284
- def VQTBL1_A64 : WInst<"vqtbl1", ".QU", "UccPcQUcQcQPc ">;
1285
- def VQTBL2_A64 : WInst<"vqtbl2", ".(2Q)U", "UccPcQUcQcQPc ">;
1286
- def VQTBL3_A64 : WInst<"vqtbl3", ".(3Q)U", "UccPcQUcQcQPc ">;
1287
- def VQTBL4_A64 : WInst<"vqtbl4", ".(4Q)U", "UccPcQUcQcQPc ">;
1284
+ def VQTBL1_A64 : WInst<"vqtbl1", ".QU", "UccPcQUcQcQPcmQm ">;
1285
+ def VQTBL2_A64 : WInst<"vqtbl2", ".(2Q)U", "UccPcQUcQcQPcmQm ">;
1286
+ def VQTBL3_A64 : WInst<"vqtbl3", ".(3Q)U", "UccPcQUcQcQPcmQm ">;
1287
+ def VQTBL4_A64 : WInst<"vqtbl4", ".(4Q)U", "UccPcQUcQcQPcmQm ">;
1288
1288
}
1289
1289
let InstName = "vtbx" in {
1290
- def VQTBX1_A64 : WInst<"vqtbx1", "..QU", "UccPcQUcQcQPc ">;
1291
- def VQTBX2_A64 : WInst<"vqtbx2", "..(2Q)U", "UccPcQUcQcQPc ">;
1292
- def VQTBX3_A64 : WInst<"vqtbx3", "..(3Q)U", "UccPcQUcQcQPc ">;
1293
- def VQTBX4_A64 : WInst<"vqtbx4", "..(4Q)U", "UccPcQUcQcQPc ">;
1290
+ def VQTBX1_A64 : WInst<"vqtbx1", "..QU", "UccPcQUcQcQPcmQm ">;
1291
+ def VQTBX2_A64 : WInst<"vqtbx2", "..(2Q)U", "UccPcQUcQcQPcmQm ">;
1292
+ def VQTBX3_A64 : WInst<"vqtbx3", "..(3Q)U", "UccPcQUcQcQPcmQm ">;
1293
+ def VQTBX4_A64 : WInst<"vqtbx4", "..(4Q)U", "UccPcQUcQcQPcmQm ">;
1294
1294
}
1295
1295
1296
1296
////////////////////////////////////////////////////////////////////////////////
@@ -1654,9 +1654,9 @@ def SCALAR_SQRDMLSH_LANE : SOpInst<"vqrdmlsh_lane", "111.I", "SsSi", OP_SCALAR_Q
1654
1654
def SCALAR_SQRDMLSH_LANEQ : SOpInst<"vqrdmlsh_laneq", "111QI", "SsSi", OP_SCALAR_QRDMLSH_LN>;
1655
1655
} // TargetGuard = "v8.1a"
1656
1656
1657
- def SCALAR_VDUP_LANE : IInst<"vdup_lane", "1.I", "ScSsSiSlSfSdSUcSUsSUiSUlSPcSPs ",
1657
+ def SCALAR_VDUP_LANE : IInst<"vdup_lane", "1.I", "ScSsSiSlSfSdSUcSUsSUiSUlSPcSPsSm ",
1658
1658
[ImmCheck<1, ImmCheckLaneIndex, 0>]>;
1659
- def SCALAR_VDUP_LANEQ : IInst<"vdup_laneq", "1QI", "ScSsSiSlSfSdSUcSUsSUiSUlSPcSPs ",
1659
+ def SCALAR_VDUP_LANEQ : IInst<"vdup_laneq", "1QI", "ScSsSiSlSfSdSUcSUsSUiSUlSPcSPsSm ",
1660
1660
[ImmCheck<1, ImmCheckLaneIndex, 0>]>;
1661
1661
1662
1662
} // ArchGuard = "defined(__aarch64__) || defined(__arm64ec__)"
@@ -2090,17 +2090,17 @@ let ArchGuard = "defined(__aarch64__) || defined(__arm64ec__)", TargetGuard = "r
2090
2090
2091
2091
// Lookup table read with 2-bit/4-bit indices
2092
2092
let ArchGuard = "defined(__aarch64__)", TargetGuard = "lut" in {
2093
- def VLUTI2_B : SInst<"vluti2_lane", "Q.(qU)I", "cUcPcQcQUcQPc ",
2093
+ def VLUTI2_B : SInst<"vluti2_lane", "Q.(qU)I", "cUcPcmQcQUcQPcQm ",
2094
2094
[ImmCheck<2, ImmCheck0_1>]>;
2095
- def VLUTI2_B_Q : SInst<"vluti2_laneq", "Q.(QU)I", "cUcPcQcQUcQPc ",
2095
+ def VLUTI2_B_Q : SInst<"vluti2_laneq", "Q.(QU)I", "cUcPcmQcQUcQPcQm ",
2096
2096
[ImmCheck<2, ImmCheck0_3>]>;
2097
2097
def VLUTI2_H : SInst<"vluti2_lane", "Q.(<qU)I", "sUsPshQsQUsQPsQh",
2098
2098
[ImmCheck<2, ImmCheck0_3>]>;
2099
2099
def VLUTI2_H_Q : SInst<"vluti2_laneq", "Q.(<QU)I", "sUsPshQsQUsQPsQh",
2100
2100
[ImmCheck<2, ImmCheck0_7>]>;
2101
- def VLUTI4_B : SInst<"vluti4_lane", "..(qU)I", "QcQUcQPc ",
2101
+ def VLUTI4_B : SInst<"vluti4_lane", "..(qU)I", "QcQUcQPcQm ",
2102
2102
[ImmCheck<2, ImmCheck0_0>]>;
2103
- def VLUTI4_B_Q : SInst<"vluti4_laneq", "..UI", "QcQUcQPc ",
2103
+ def VLUTI4_B_Q : SInst<"vluti4_laneq", "..UI", "QcQUcQPcQm ",
2104
2104
[ImmCheck<2, ImmCheck0_1>]>;
2105
2105
def VLUTI4_H_X2 : SInst<"vluti4_lane_x2", ".2(<qU)I", "QsQUsQPsQh",
2106
2106
[ImmCheck<3, ImmCheck0_1>]>;
0 commit comments