@@ -624,14 +624,14 @@ def : SchedAlias<WriteAdr, V1Write_1c_1I>;
624
624
// Load pair, immed offset
625
625
def : SchedAlias<WriteLDHi, V1Write_4c_1L>;
626
626
def : InstRW<[V1Write_4c_1L, V1Write_0c_0Z], (instrs LDPWi, LDNPWi)>;
627
- def : InstRW<[V1Write_4c_1L, V1Write_0c_0Z, WriteAdr ],
627
+ def : InstRW<[WriteAdr, V1Write_4c_1L, V1Write_0c_0Z ],
628
628
(instrs LDPWpost, LDPWpre)>;
629
629
630
630
// Load pair, signed immed offset, signed words
631
631
def : InstRW<[V1Write_5c_1I_1L, V1Write_0c_0Z], (instrs LDPSWi)>;
632
632
633
633
// Load pair, immed post or pre-index, signed words
634
- def : InstRW<[V1Write_5c_1I_1L, V1Write_0c_0Z, WriteAdr ],
634
+ def : InstRW<[WriteAdr, V1Write_5c_1I_1L, V1Write_0c_0Z ],
635
635
(instrs LDPSWpost, LDPSWpre)>;
636
636
637
637
@@ -735,7 +735,7 @@ def : InstRW<[V1Write_6c_1L, ReadAdrBase], (instregex "^LDR[SDQ]l$",
735
735
736
736
// Load vector reg, immed post-index
737
737
// Load vector reg, immed pre-index
738
- def : InstRW<[V1Write_6c_1L, WriteAdr ],
738
+ def : InstRW<[WriteAdr, V1Write_6c_1L ],
739
739
(instregex "^LDR[BHSDQ](post|pre)$")>;
740
740
741
741
// Load vector reg, register offset, basic
@@ -756,12 +756,12 @@ def : InstRW<[V1Write_6c_1L, WriteLDHi], (instrs LDPQi, LDNPQi)>;
756
756
757
757
// Load vector pair, immed post-index, S/D-form
758
758
// Load vector pair, immed pre-index, S/D-form
759
- def : InstRW<[V1Write_6c_1L, V1Write_0c_0Z, WriteAdr ],
759
+ def : InstRW<[WriteAdr, V1Write_6c_1L, V1Write_0c_0Z ],
760
760
(instregex "^LDP[SD](pre|post)$")>;
761
761
762
762
// Load vector pair, immed post-index, Q-form
763
763
// Load vector pair, immed pre-index, Q-form
764
- def : InstRW<[V1Write_6c_1L, WriteLDHi, WriteAdr ],
764
+ def : InstRW<[WriteAdr, V1Write_6c_1L, WriteLDHi ],
765
765
(instrs LDPQpost, LDPQpre)>;
766
766
767
767
@@ -773,7 +773,7 @@ def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STUR[BHSDQ]i$")>;
773
773
774
774
// Store vector reg, immed post-index, B/H/S/D/Q-form
775
775
// Store vector reg, immed pre-index, B/H/S/D/Q-form
776
- def : InstRW<[V1Write_2c_1L01_1V01, WriteAdr ],
776
+ def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01 ],
777
777
(instregex "^STR[BHSDQ](pre|post)$")>;
778
778
779
779
// Store vector reg, unsigned immed, B/H/S/D/Q-form
@@ -798,12 +798,12 @@ def : InstRW<[V1Write_2c_1L01_1V01], (instregex "^STN?P[SDQ]i$")>;
798
798
799
799
// Store vector pair, immed post-index, S/D-form
800
800
// Store vector pair, immed pre-index, S/D-form
801
- def : InstRW<[V1Write_2c_1L01_1V01, WriteAdr ],
801
+ def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01 ],
802
802
(instregex "^STP[SD](pre|post)$")>;
803
803
804
804
// Store vector pair, immed post-index, Q-form
805
805
// Store vector pair, immed pre-index, Q-form
806
- def : InstRW<[V1Write_2c_2L01_1V01, WriteAdr ], (instrs STPQpre, STPQpost)>;
806
+ def : InstRW<[WriteAdr, V1Write_2c_2L01_1V01 ], (instrs STPQpre, STPQpost)>;
807
807
808
808
809
809
// ASIMD integer instructions
@@ -1074,60 +1074,60 @@ def : InstRW<[V1Write_5c_1M0_1V], (instregex "^INSvi(8|16|32|64)gpr$")>;
1074
1074
// ASIMD load, 1 element, multiple, 1 reg
1075
1075
def : InstRW<[V1Write_6c_1L],
1076
1076
(instregex "^LD1Onev(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1077
- def : InstRW<[V1Write_6c_1L, WriteAdr ],
1077
+ def : InstRW<[WriteAdr, V1Write_6c_1L ],
1078
1078
(instregex "^LD1Onev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1079
1079
1080
1080
// ASIMD load, 1 element, multiple, 2 reg
1081
1081
def : InstRW<[V1Write_6c_2L],
1082
1082
(instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1083
- def : InstRW<[V1Write_6c_2L, WriteAdr ],
1083
+ def : InstRW<[WriteAdr, V1Write_6c_2L ],
1084
1084
(instregex "^LD1Twov(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1085
1085
1086
1086
// ASIMD load, 1 element, multiple, 3 reg
1087
1087
def : InstRW<[V1Write_6c_3L],
1088
1088
(instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1089
- def : InstRW<[V1Write_6c_3L, WriteAdr ],
1089
+ def : InstRW<[WriteAdr, V1Write_6c_3L ],
1090
1090
(instregex "^LD1Threev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1091
1091
1092
1092
// ASIMD load, 1 element, multiple, 4 reg, D-form
1093
1093
def : InstRW<[V1Write_6c_2L],
1094
1094
(instregex "^LD1Fourv(8b|4h|2s|1d)$")>;
1095
- def : InstRW<[V1Write_6c_2L, WriteAdr ],
1095
+ def : InstRW<[WriteAdr, V1Write_6c_2L ],
1096
1096
(instregex "^LD1Fourv(8b|4h|2s|1d)_POST$")>;
1097
1097
1098
1098
// ASIMD load, 1 element, multiple, 4 reg, Q-form
1099
1099
def : InstRW<[V1Write_7c_4L],
1100
1100
(instregex "^LD1Fourv(16b|8h|4s|2d)$")>;
1101
- def : InstRW<[V1Write_7c_4L, WriteAdr ],
1101
+ def : InstRW<[WriteAdr, V1Write_7c_4L ],
1102
1102
(instregex "^LD1Fourv(16b|8h|4s|2d)_POST$")>;
1103
1103
1104
1104
// ASIMD load, 1 element, one lane
1105
1105
// ASIMD load, 1 element, all lanes
1106
1106
def : InstRW<[V1Write_8c_1L_1V],
1107
1107
(instregex "^LD1(i|Rv)(8|16|32|64)$",
1108
1108
"^LD1Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1109
- def : InstRW<[V1Write_8c_1L_1V, WriteAdr ],
1109
+ def : InstRW<[WriteAdr, V1Write_8c_1L_1V ],
1110
1110
(instregex "^LD1i(8|16|32|64)_POST$",
1111
1111
"^LD1Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1112
1112
1113
1113
// ASIMD load, 2 element, multiple, D-form
1114
1114
def : InstRW<[V1Write_8c_1L_2V],
1115
1115
(instregex "^LD2Twov(8b|4h|2s)$")>;
1116
- def : InstRW<[V1Write_8c_1L_2V, WriteAdr ],
1116
+ def : InstRW<[WriteAdr, V1Write_8c_1L_2V ],
1117
1117
(instregex "^LD2Twov(8b|4h|2s)_POST$")>;
1118
1118
1119
1119
// ASIMD load, 2 element, multiple, Q-form
1120
1120
def : InstRW<[V1Write_8c_2L_2V],
1121
1121
(instregex "^LD2Twov(16b|8h|4s|2d)$")>;
1122
- def : InstRW<[V1Write_8c_2L_2V, WriteAdr ],
1122
+ def : InstRW<[WriteAdr, V1Write_8c_2L_2V ],
1123
1123
(instregex "^LD2Twov(16b|8h|4s|2d)_POST$")>;
1124
1124
1125
1125
// ASIMD load, 2 element, one lane
1126
1126
// ASIMD load, 2 element, all lanes
1127
1127
def : InstRW<[V1Write_8c_1L_2V],
1128
1128
(instregex "^LD2i(8|16|32|64)$",
1129
1129
"^LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1130
- def : InstRW<[V1Write_8c_1L_2V, WriteAdr ],
1130
+ def : InstRW<[WriteAdr, V1Write_8c_1L_2V ],
1131
1131
(instregex "^LD2i(8|16|32|64)_POST$",
1132
1132
"^LD2Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1133
1133
@@ -1138,15 +1138,15 @@ def : InstRW<[V1Write_8c_2L_3V],
1138
1138
(instregex "^LD3Threev(8b|4h|2s)$",
1139
1139
"^LD3i(8|16|32|64)$",
1140
1140
"^LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1141
- def : InstRW<[V1Write_8c_2L_3V, WriteAdr ],
1141
+ def : InstRW<[WriteAdr, V1Write_8c_2L_3V ],
1142
1142
(instregex "^LD3Threev(8b|4h|2s)_POST$",
1143
1143
"^LD3i(8|16|32|64)_POST$",
1144
1144
"^LD3Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1145
1145
1146
1146
// ASIMD load, 3 element, multiple, Q-form
1147
1147
def : InstRW<[V1Write_8c_3L_3V],
1148
1148
(instregex "^LD3Threev(16b|8h|4s|2d)$")>;
1149
- def : InstRW<[V1Write_8c_3L_3V, WriteAdr ],
1149
+ def : InstRW<[WriteAdr, V1Write_8c_3L_3V ],
1150
1150
(instregex "^LD3Threev(16b|8h|4s|2d)_POST$")>;
1151
1151
1152
1152
// ASIMD load, 4 element, multiple, D-form
@@ -1156,15 +1156,15 @@ def : InstRW<[V1Write_8c_3L_4V],
1156
1156
(instregex "^LD4Fourv(8b|4h|2s)$",
1157
1157
"^LD4i(8|16|32|64)$",
1158
1158
"^LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)$")>;
1159
- def : InstRW<[V1Write_8c_3L_4V, WriteAdr],
1159
+ def : InstRW<[WriteAdr, V1Write_8c_3L_4V],
1160
1160
(instregex "^LD4Fourv(8b|4h|2s)_POST$",
1161
1161
"^LD4i(8|16|32|64)_POST$",
1162
1162
"^LD4Rv(8b|16b|4h|8h|2s|4s|1d|2d)_POST$")>;
1163
1163
1164
1164
// ASIMD load, 4 element, multiple, Q-form
1165
1165
def : InstRW<[V1Write_9c_4L_4V],
1166
1166
(instregex "^LD4Fourv(16b|8h|4s|2d)$")>;
1167
- def : InstRW<[V1Write_9c_4L_4V, WriteAdr ],
1167
+ def : InstRW<[WriteAdr, V1Write_9c_4L_4V ],
1168
1168
(instregex "^LD4Fourv(16b|8h|4s|2d)_POST$")>;
1169
1169
1170
1170
@@ -1176,7 +1176,7 @@ def : InstRW<[V1Write_9c_4L_4V, WriteAdr],
1176
1176
def : InstRW<[V1Write_2c_1L01_1V01],
1177
1177
(instregex "^ST1Onev(8b|16b|4h|8h|2s|4s|1d|2d)$",
1178
1178
"^ST1Twov(8b|4h|2s|1d)$")>;
1179
- def : InstRW<[V1Write_2c_1L01_1V01, WriteAdr ],
1179
+ def : InstRW<[WriteAdr, V1Write_2c_1L01_1V01 ],
1180
1180
(instregex "^ST1Onev(8b|16b|4h|8h|2s|4s|1d|2d)_POST$",
1181
1181
"^ST1Twov(8b|4h|2s|1d)_POST$")>;
1182
1182
@@ -1187,21 +1187,21 @@ def : InstRW<[V1Write_2c_2L01_2V01],
1187
1187
(instregex "^ST1Twov(16b|8h|4s|2d)$",
1188
1188
"^ST1Threev(8b|4h|2s|1d)$",
1189
1189
"^ST1Fourv(8b|4h|2s|1d)$")>;
1190
- def : InstRW<[V1Write_2c_2L01_2V01, WriteAdr ],
1190
+ def : InstRW<[WriteAdr, V1Write_2c_2L01_2V01 ],
1191
1191
(instregex "^ST1Twov(16b|8h|4s|2d)_POST$",
1192
1192
"^ST1Threev(8b|4h|2s|1d)_POST$",
1193
1193
"^ST1Fourv(8b|4h|2s|1d)_POST$")>;
1194
1194
1195
1195
// ASIMD store, 1 element, multiple, 3 reg, Q-form
1196
1196
def : InstRW<[V1Write_2c_3L01_3V01],
1197
1197
(instregex "^ST1Threev(16b|8h|4s|2d)$")>;
1198
- def : InstRW<[V1Write_2c_3L01_3V01, WriteAdr ],
1198
+ def : InstRW<[WriteAdr, V1Write_2c_3L01_3V01 ],
1199
1199
(instregex "^ST1Threev(16b|8h|4s|2d)_POST$")>;
1200
1200
1201
1201
// ASIMD store, 1 element, multiple, 4 reg, Q-form
1202
1202
def : InstRW<[V1Write_2c_4L01_4V01],
1203
1203
(instregex "^ST1Fourv(16b|8h|4s|2d)$")>;
1204
- def : InstRW<[V1Write_2c_4L01_4V01, WriteAdr ],
1204
+ def : InstRW<[WriteAdr, V1Write_2c_4L01_4V01 ],
1205
1205
(instregex "^ST1Fourv(16b|8h|4s|2d)_POST$")>;
1206
1206
1207
1207
// ASIMD store, 1 element, one lane
@@ -1211,7 +1211,7 @@ def : InstRW<[V1Write_4c_1L01_1V01],
1211
1211
(instregex "^ST1i(8|16|32|64)$",
1212
1212
"^ST2Twov(8b|4h|2s)$",
1213
1213
"^ST2i(8|16|32|64)$")>;
1214
- def : InstRW<[V1Write_4c_1L01_1V01, WriteAdr ],
1214
+ def : InstRW<[WriteAdr, V1Write_4c_1L01_1V01 ],
1215
1215
(instregex "^ST1i(8|16|32|64)_POST$",
1216
1216
"^ST2Twov(8b|4h|2s)_POST$",
1217
1217
"^ST2i(8|16|32|64)_POST$")>;
@@ -1225,7 +1225,7 @@ def : InstRW<[V1Write_4c_2L01_2V01],
1225
1225
"^ST3Threev(8b|4h|2s)$",
1226
1226
"^ST3i(8|16|32|64)$",
1227
1227
"^ST4i64$")>;
1228
- def : InstRW<[V1Write_4c_2L01_2V01, WriteAdr ],
1228
+ def : InstRW<[WriteAdr, V1Write_4c_2L01_2V01 ],
1229
1229
(instregex "^ST2Twov(16b|8h|4s|2d)_POST$",
1230
1230
"^ST3Threev(8b|4h|2s)_POST$",
1231
1231
"^ST3i(8|16|32|64)_POST$",
@@ -1234,31 +1234,31 @@ def : InstRW<[V1Write_4c_2L01_2V01, WriteAdr],
1234
1234
// ASIMD store, 3 element, multiple, Q-form
1235
1235
def : InstRW<[V1Write_5c_3L01_3V01],
1236
1236
(instregex "^ST3Threev(16b|8h|4s|2d)$")>;
1237
- def : InstRW<[V1Write_5c_3L01_3V01, WriteAdr ],
1237
+ def : InstRW<[WriteAdr, V1Write_5c_3L01_3V01 ],
1238
1238
(instregex "^ST3Threev(16b|8h|4s|2d)_POST$")>;
1239
1239
1240
1240
// ASIMD store, 4 element, multiple, D-form
1241
1241
def : InstRW<[V1Write_6c_3L01_3V01],
1242
1242
(instregex "^ST4Fourv(8b|4h|2s)$")>;
1243
- def : InstRW<[V1Write_6c_3L01_3V01, WriteAdr ],
1243
+ def : InstRW<[WriteAdr, V1Write_6c_3L01_3V01 ],
1244
1244
(instregex "^ST4Fourv(8b|4h|2s)_POST$")>;
1245
1245
1246
1246
// ASIMD store, 4 element, multiple, Q-form, B/H/S
1247
1247
def : InstRW<[V1Write_7c_6L01_6V01],
1248
1248
(instregex "^ST4Fourv(16b|8h|4s)$")>;
1249
- def : InstRW<[V1Write_7c_6L01_6V01, WriteAdr ],
1249
+ def : InstRW<[WriteAdr, V1Write_7c_6L01_6V01 ],
1250
1250
(instregex "^ST4Fourv(16b|8h|4s)_POST$")>;
1251
1251
1252
1252
// ASIMD store, 4 element, multiple, Q-form, D
1253
1253
def : InstRW<[V1Write_4c_4L01_4V01],
1254
1254
(instrs ST4Fourv2d)>;
1255
- def : InstRW<[V1Write_4c_4L01_4V01, WriteAdr ],
1255
+ def : InstRW<[WriteAdr, V1Write_4c_4L01_4V01 ],
1256
1256
(instrs ST4Fourv2d_POST)>;
1257
1257
1258
1258
// ASIMD store, 4 element, one lane, B/H/S
1259
1259
def : InstRW<[V1Write_6c_3L_3V],
1260
1260
(instregex "^ST4i(8|16|32)$")>;
1261
- def : InstRW<[V1Write_6c_3L_3V, WriteAdr ],
1261
+ def : InstRW<[WriteAdr, V1Write_6c_3L_3V ],
1262
1262
(instregex "^ST4i(8|16|32)_POST$")>;
1263
1263
1264
1264
0 commit comments