@@ -377,7 +377,7 @@ def : InstRW<[N1Write_4c_1L, N1Write_0c_0Z], (instrs LDPWi, LDNPWi)>;
377
377
def : InstRW<[N1Write_5c_1I_1L, N1Write_0c_0Z], (instrs LDPSWi)>;
378
378
379
379
// Load pair, immed post or pre-index, signed words
380
- def : InstRW<[N1Write_5c_1I_1L, N1Write_0c_0Z, WriteAdr ],
380
+ def : InstRW<[WriteAdr, N1Write_5c_1I_1L, N1Write_0c_0Z ],
381
381
(instrs LDPSWpost, LDPSWpre)>;
382
382
383
383
@@ -477,7 +477,7 @@ def : InstRW<[N1Write_5c_1L, ReadAdrBase], (instregex "^LDR[SDQ]l$",
477
477
478
478
// Load vector reg, immed post-index
479
479
// Load vector reg, immed pre-index
480
- def : InstRW<[N1Write_5c_1L, WriteAdr ],
480
+ def : InstRW<[WriteAdr, N1Write_5c_1L ],
481
481
(instregex "^LDR[BHSDQ](post|pre)$")>;
482
482
483
483
// Load vector reg, unsigned immed
@@ -501,12 +501,12 @@ def : InstRW<[N1Write_7c_1I_1L, WriteLDHi], (instregex "^LDPN?[HQ]i$")>;
501
501
502
502
// Load vector pair, immed post-index, S/D-form
503
503
// Load vector pair, immed pre-index, S/D-form
504
- def : InstRW<[N1Write_5c_1L, WriteLDHi, WriteAdr ],
504
+ def : InstRW<[WriteAdr, N1Write_5c_1L, WriteLDHi ],
505
505
(instregex "^LDP[SD](pre|post)$")>;
506
506
507
507
// Load vector pair, immed post-index, Q-form
508
508
// Load vector pair, immed pre-index, Q-form
509
- def : InstRW<[N1Write_7c_1L, WriteLDHi, WriteAdr ],
509
+ def : InstRW<[WriteAdr, N1Write_7c_1L, WriteLDHi ],
510
510
(instrs LDPQpost, LDPQpre)>;
511
511
512
512
@@ -521,11 +521,11 @@ def : InstRW<[N1Write_2c_2I_2L], (instrs STURQi)>;
521
521
522
522
// Store vector reg, immed post-index, B/H/S/D-form
523
523
// Store vector reg, immed pre-index, B/H/S/D-form
524
- def : InstRW<[N1Write_2c_1L_1V, WriteAdr ], (instregex "^STR[BHSD](pre|post)$")>;
524
+ def : InstRW<[WriteAdr, N1Write_2c_1L_1V ], (instregex "^STR[BHSD](pre|post)$")>;
525
525
526
526
// Store vector reg, immed pre-index, Q-form
527
527
// Store vector reg, immed post-index, Q-form
528
- def : InstRW<[N1Write_2c_2L_2V, WriteAdr ], (instrs STRQpre, STRQpost)>;
528
+ def : InstRW<[WriteAdr, N1Write_2c_2L_2V ], (instrs STRQpre, STRQpost)>;
529
529
530
530
// Store vector reg, unsigned immed, B/H/S/D-form
531
531
def : InstRW<[N1Write_2c_1L_1V], (instregex "^STR[BHSD]ui$")>;
@@ -562,15 +562,15 @@ def : InstRW<[N1Write_3c_4L_2V], (instrs STPQi, STNPQi)>;
562
562
563
563
// Store vector pair, immed post-index, S-form
564
564
// Store vector pair, immed pre-index, S-form
565
- def : InstRW<[N1Write_2c_1L_1V, WriteAdr ], (instrs STPSpre, STPSpost)>;
565
+ def : InstRW<[WriteAdr, N1Write_2c_1L_1V ], (instrs STPSpre, STPSpost)>;
566
566
567
567
// Store vector pair, immed post-index, D-form
568
568
// Store vector pair, immed pre-index, D-form
569
- def : InstRW<[N1Write_2c_2L_2V, WriteAdr ], (instrs STPDpre, STPDpost)>;
569
+ def : InstRW<[WriteAdr, N1Write_2c_2L_2V ], (instrs STPDpre, STPDpost)>;
570
570
571
571
// Store vector pair, immed post-index, Q-form
572
572
// Store vector pair, immed pre-index, Q-form
573
- def : InstRW<[N1Write_3c_4L_2V, WriteAdr ], (instrs STPQpre, STPQpost)>;
573
+ def : InstRW<[WriteAdr, N1Write_3c_4L_2V ], (instrs STPQpre, STPQpost)>;
574
574
575
575
576
576
// ASIMD integer instructions
@@ -818,33 +818,33 @@ def : InstRW<[N1Write_5c_1M_1V], (instregex "^INSvi(8|16|32|64)gpr$")>;
818
818
// ASIMD load, 1 element, multiple, 1 reg
819
819
def : InstRW<[N1Write_5c_1L],
820
820
(instregex "^LD1Onev(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
821
- def : InstRW<[N1Write_5c_1L, WriteAdr ],
821
+ def : InstRW<[WriteAdr, N1Write_5c_1L ],
822
822
(instregex "^LD1Onev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
823
823
824
824
// ASIMD load, 1 element, multiple, 2 reg
825
825
def : InstRW<[N1Write_5c_2L],
826
826
(instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
827
- def : InstRW<[N1Write_5c_2L, WriteAdr ],
827
+ def : InstRW<[WriteAdr, N1Write_5c_2L ],
828
828
(instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
829
829
830
830
// ASIMD load, 1 element, multiple, 3 reg
831
831
def : InstRW<[N1Write_6c_3L],
832
832
(instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
833
- def : InstRW<[N1Write_6c_3L, WriteAdr ],
833
+ def : InstRW<[WriteAdr, N1Write_6c_3L ],
834
834
(instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
835
835
836
836
// ASIMD load, 1 element, multiple, 4 reg
837
837
def : InstRW<[N1Write_6c_4L],
838
838
(instregex "^LD1Fourv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
839
- def : InstRW<[N1Write_6c_4L, WriteAdr ],
839
+ def : InstRW<[WriteAdr, N1Write_6c_4L ],
840
840
(instregex "^LD1Fourv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
841
841
842
842
// ASIMD load, 1 element, one lane
843
843
// ASIMD load, 1 element, all lanes
844
844
def : InstRW<[N1Write_7c_1L_1V],
845
845
(instregex "LD1(i|Rv)(8|16|32|64)$",
846
846
"LD1Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
847
- def : InstRW<[N1Write_7c_1L_1V, WriteAdr ],
847
+ def : InstRW<[WriteAdr, N1Write_7c_1L_1V ],
848
848
(instregex "LD1i(8|16|32|64)_POST$",
849
849
"LD1Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
850
850
@@ -855,44 +855,44 @@ def : InstRW<[N1Write_7c_2L_2V],
855
855
(instregex "LD2Twov(8b|16b|4h|8h|2s|4s|2d)$",
856
856
"LD2i(8|16|32|64)$",
857
857
"LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
858
- def : InstRW<[N1Write_7c_2L_2V, WriteAdr ],
858
+ def : InstRW<[WriteAdr, N1Write_7c_2L_2V ],
859
859
(instregex "LD2Twov(8b|16b|4h|8h|2s|4s|2d)_POST$",
860
860
"LD2i(8|16|32|64)_POST$",
861
861
"LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
862
862
863
863
// ASIMD load, 3 element, multiple
864
864
def : InstRW<[N1Write_8c_3L_3V],
865
865
(instregex "LD3Threev(8b|16b|4h|8h|2s|4s|2d)$")>;
866
- def : InstRW<[N1Write_8c_3L_3V, WriteAdr ],
866
+ def : InstRW<[WriteAdr, N1Write_8c_3L_3V ],
867
867
(instregex "LD3Threev(8b|16b|4h|8h|2s|4s|2d)_POST$")>;
868
868
869
869
// ASIMD load, 3 element, one lane
870
870
// ASIMD load, 3 element, all lanes
871
871
def : InstRW<[N1Write_7c_2L_3V],
872
872
(instregex "LD3i(8|16|32|64)$",
873
873
"LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
874
- def : InstRW<[N1Write_7c_2L_3V, WriteAdr ],
874
+ def : InstRW<[WriteAdr, N1Write_7c_2L_3V ],
875
875
(instregex "LD3i(8|16|32|64)_POST$",
876
876
"LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
877
877
878
878
// ASIMD load, 4 element, multiple, D-form
879
879
def : InstRW<[N1Write_8c_3L_4V],
880
880
(instregex "LD4Fourv(8b|4h|2s)$")>;
881
- def : InstRW<[N1Write_8c_3L_4V, WriteAdr],
881
+ def : InstRW<[WriteAdr, N1Write_8c_3L_4V],
882
882
(instregex "LD4Fourv(8b|4h|2s)_POST$")>;
883
883
884
884
// ASIMD load, 4 element, multiple, Q-form
885
885
def : InstRW<[N1Write_10c_4L_4V],
886
886
(instregex "LD4Fourv(16b|8h|4s|2d)$")>;
887
- def : InstRW<[N1Write_10c_4L_4V, WriteAdr ],
887
+ def : InstRW<[WriteAdr, N1Write_10c_4L_4V ],
888
888
(instregex "LD4Fourv(16b|8h|4s|2d)_POST$")>;
889
889
890
890
// ASIMD load, 4 element, one lane
891
891
// ASIMD load, 4 element, all lanes
892
892
def : InstRW<[N1Write_8c_4L_4V],
893
893
(instregex "LD4i(8|16|32|64)$",
894
894
"LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
895
- def : InstRW<[N1Write_8c_4L_4V, WriteAdr ],
895
+ def : InstRW<[WriteAdr, N1Write_8c_4L_4V ],
896
896
(instregex "LD4i(8|16|32|64)_POST$",
897
897
"LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
898
898
@@ -903,127 +903,127 @@ def : InstRW<[N1Write_8c_4L_4V, WriteAdr],
903
903
// ASIMD store, 1 element, multiple, 1 reg, D-form
904
904
def : InstRW<[N1Write_2c_1L_1V],
905
905
(instregex "ST1Onev(8b|4h|2s|1d)$")>;
906
- def : InstRW<[N1Write_2c_1L_1V, WriteAdr ],
906
+ def : InstRW<[WriteAdr, N1Write_2c_1L_1V ],
907
907
(instregex "ST1Onev(8b|4h|2s|1d)_POST$")>;
908
908
909
909
// ASIMD store, 1 element, multiple, 1 reg, Q-form
910
910
def : InstRW<[N1Write_2c_1L_1V],
911
911
(instregex "ST1Onev(16b|8h|4s|2d)$")>;
912
- def : InstRW<[N1Write_2c_1L_1V, WriteAdr ],
912
+ def : InstRW<[WriteAdr, N1Write_2c_1L_1V ],
913
913
(instregex "ST1Onev(16b|8h|4s|2d)_POST$")>;
914
914
915
915
// ASIMD store, 1 element, multiple, 2 reg, D-form
916
916
def : InstRW<[N1Write_2c_1L_2V],
917
917
(instregex "ST1Twov(8b|4h|2s|1d)$")>;
918
- def : InstRW<[N1Write_2c_1L_2V, WriteAdr ],
918
+ def : InstRW<[WriteAdr, N1Write_2c_1L_2V ],
919
919
(instregex "ST1Twov(8b|4h|2s|1d)_POST$")>;
920
920
921
921
// ASIMD store, 1 element, multiple, 2 reg, Q-form
922
922
def : InstRW<[N1Write_3c_2L_2V],
923
923
(instregex "ST1Twov(16b|8h|4s|2d)$")>;
924
- def : InstRW<[N1Write_3c_2L_2V, WriteAdr ],
924
+ def : InstRW<[WriteAdr, N1Write_3c_2L_2V ],
925
925
(instregex "ST1Twov(16b|8h|4s|2d)_POST$")>;
926
926
927
927
// ASIMD store, 1 element, multiple, 3 reg, D-form
928
928
def : InstRW<[N1Write_3c_2L_3V],
929
929
(instregex "ST1Threev(8b|4h|2s|1d)$")>;
930
- def : InstRW<[N1Write_3c_2L_3V, WriteAdr],
930
+ def : InstRW<[WriteAdr, N1Write_3c_2L_3V],
931
931
(instregex "ST1Threev(8b|4h|2s|1d)_POST$")>;
932
932
933
933
// ASIMD store, 1 element, multiple, 3 reg, Q-form
934
934
def : InstRW<[N1Write_4c_3L_3V],
935
935
(instregex "ST1Threev(16b|8h|4s|2d)$")>;
936
- def : InstRW<[N1Write_4c_3L_3V, WriteAdr ],
936
+ def : InstRW<[WriteAdr, N1Write_4c_3L_3V ],
937
937
(instregex "ST1Threev(16b|8h|4s|2d)_POST$")>;
938
938
939
939
// ASIMD store, 1 element, multiple, 4 reg, D-form
940
940
def : InstRW<[N1Write_3c_2L_2V],
941
941
(instregex "ST1Fourv(8b|4h|2s|1d)$")>;
942
- def : InstRW<[N1Write_3c_2L_2V, WriteAdr ],
942
+ def : InstRW<[WriteAdr, N1Write_3c_2L_2V ],
943
943
(instregex "ST1Fourv(8b|4h|2s|1d)_POST$")>;
944
944
945
945
// ASIMD store, 1 element, multiple, 4 reg, Q-form
946
946
def : InstRW<[N1Write_5c_4L_4V],
947
947
(instregex "ST1Fourv(16b|8h|4s|2d)$")>;
948
- def : InstRW<[N1Write_5c_4L_4V, WriteAdr ],
948
+ def : InstRW<[WriteAdr, N1Write_5c_4L_4V ],
949
949
(instregex "ST1Fourv(16b|8h|4s|2d)_POST$")>;
950
950
951
951
// ASIMD store, 1 element, one lane
952
952
def : InstRW<[N1Write_4c_1L_1V],
953
953
(instregex "ST1i(8|16|32|64)$")>;
954
- def : InstRW<[N1Write_4c_1L_1V, WriteAdr ],
954
+ def : InstRW<[WriteAdr, N1Write_4c_1L_1V ],
955
955
(instregex "ST1i(8|16|32|64)_POST$")>;
956
956
957
957
// ASIMD store, 2 element, multiple, D-form, B/H/S
958
958
def : InstRW<[N1Write_4c_1L_1V],
959
959
(instregex "ST2Twov(8b|4h|2s)$")>;
960
- def : InstRW<[N1Write_4c_1L_1V, WriteAdr ],
960
+ def : InstRW<[WriteAdr, N1Write_4c_1L_1V ],
961
961
(instregex "ST2Twov(8b|4h|2s)_POST$")>;
962
962
963
963
// ASIMD store, 2 element, multiple, Q-form
964
964
def : InstRW<[N1Write_5c_2L_2V],
965
965
(instregex "ST2Twov(16b|8h|4s|2d)$")>;
966
- def : InstRW<[N1Write_5c_2L_2V, WriteAdr ],
966
+ def : InstRW<[WriteAdr, N1Write_5c_2L_2V ],
967
967
(instregex "ST2Twov(16b|8h|4s|2d)_POST$")>;
968
968
969
969
// ASIMD store, 2 element, one lane
970
970
def : InstRW<[N1Write_4c_1L_1V],
971
971
(instregex "ST2i(8|16|32|64)$")>;
972
- def : InstRW<[N1Write_4c_1L_1V, WriteAdr ],
972
+ def : InstRW<[WriteAdr, N1Write_4c_1L_1V ],
973
973
(instregex "ST2i(8|16|32|64)_POST$")>;
974
974
975
975
// ASIMD store, 3 element, multiple, D-form, B/H/S
976
976
def : InstRW<[N1Write_5c_2L_2V],
977
977
(instregex "ST3Threev(8b|4h|2s)$")>;
978
- def : InstRW<[N1Write_5c_2L_2V, WriteAdr ],
978
+ def : InstRW<[WriteAdr, N1Write_5c_2L_2V ],
979
979
(instregex "ST3Threev(8b|4h|2s)_POST$")>;
980
980
981
981
// ASIMD store, 3 element, multiple, Q-form
982
982
def : InstRW<[N1Write_6c_3L_3V],
983
983
(instregex "ST3Threev(16b|8h|4s|2d)$")>;
984
- def : InstRW<[N1Write_6c_3L_3V, WriteAdr ],
984
+ def : InstRW<[WriteAdr, N1Write_6c_3L_3V ],
985
985
(instregex "ST3Threev(16b|8h|4s|2d)_POST$")>;
986
986
987
987
// ASIMD store, 3 element, one lane, B/H/S
988
988
def : InstRW<[N1Write_4c_3L_3V],
989
989
(instregex "ST3i(8|16|32)$")>;
990
- def : InstRW<[N1Write_4c_3L_3V, WriteAdr ],
990
+ def : InstRW<[WriteAdr, N1Write_4c_3L_3V ],
991
991
(instregex "ST3i(8|16|32)_POST$")>;
992
992
993
993
// ASIMD store, 3 element, one lane, D
994
994
def : InstRW<[N1Write_5c_3L_3V],
995
995
(instrs ST3i64)>;
996
- def : InstRW<[N1Write_5c_3L_3V, WriteAdr ],
996
+ def : InstRW<[WriteAdr, N1Write_5c_3L_3V ],
997
997
(instrs ST3i64_POST)>;
998
998
999
999
// ASIMD store, 4 element, multiple, D-form, B/H/S
1000
1000
def : InstRW<[N1Write_7c_3L_3V],
1001
1001
(instregex "ST4Fourv(8b|4h|2s)$")>;
1002
- def : InstRW<[N1Write_7c_3L_3V, WriteAdr ],
1002
+ def : InstRW<[WriteAdr, N1Write_7c_3L_3V ],
1003
1003
(instregex "ST4Fourv(8b|4h|2s)_POST$")>;
1004
1004
1005
1005
// ASIMD store, 4 element, multiple, Q-form, B/H/S
1006
1006
def : InstRW<[N1Write_9c_6L_6V],
1007
1007
(instregex "ST4Fourv(16b|8h|4s)$")>;
1008
- def : InstRW<[N1Write_9c_6L_6V, WriteAdr ],
1008
+ def : InstRW<[WriteAdr, N1Write_9c_6L_6V ],
1009
1009
(instregex "ST4Fourv(16b|8h|4s)_POST$")>;
1010
1010
1011
1011
// ASIMD store, 4 element, multiple, Q-form, D
1012
1012
def : InstRW<[N1Write_6c_4L_4V],
1013
1013
(instrs ST4Fourv2d)>;
1014
- def : InstRW<[N1Write_6c_4L_4V, WriteAdr ],
1014
+ def : InstRW<[WriteAdr, N1Write_6c_4L_4V ],
1015
1015
(instrs ST4Fourv2d_POST)>;
1016
1016
1017
1017
// ASIMD store, 4 element, one lane, B/H/S
1018
1018
def : InstRW<[N1Write_5c_3L_3V],
1019
1019
(instregex "ST4i(8|16|32)$")>;
1020
- def : InstRW<[N1Write_5c_3L_3V, WriteAdr ],
1020
+ def : InstRW<[WriteAdr, N1Write_5c_3L_3V ],
1021
1021
(instregex "ST4i(8|16|32)_POST$")>;
1022
1022
1023
1023
// ASIMD store, 4 element, one lane, D
1024
1024
def : InstRW<[N1Write_4c_3L_3V],
1025
1025
(instrs ST4i64)>;
1026
- def : InstRW<[N1Write_4c_3L_3V, WriteAdr ],
1026
+ def : InstRW<[WriteAdr, N1Write_4c_3L_3V ],
1027
1027
(instrs ST4i64_POST)>;
1028
1028
1029
1029
0 commit comments