@@ -190,31 +190,58 @@ static const NEONLdStTableEntry NEONLdStTable[] = {
190
190
{ ARM::VLD1LNq8Pseudo_UPD, ARM::VLD1LNd8_UPD, true , true , true , EvenDblSpc, 1 , 8 ,true },
191
191
192
192
{ ARM::VLD1d16QPseudo, ARM::VLD1d16Q, true , false , false , SingleSpc, 4 , 4 ,false },
193
+ { ARM::VLD1d16QPseudoWB_fixed, ARM::VLD1d16Qwb_fixed, true , true , false , SingleSpc, 4 , 4 ,false },
194
+ { ARM::VLD1d16QPseudoWB_register, ARM::VLD1d16Qwb_register, true , true , true , SingleSpc, 4 , 4 ,false },
193
195
{ ARM::VLD1d16TPseudo, ARM::VLD1d16T, true , false , false , SingleSpc, 3 , 4 ,false },
196
+ { ARM::VLD1d16TPseudoWB_fixed, ARM::VLD1d16Twb_fixed, true , true , false , SingleSpc, 3 , 4 ,false },
197
+ { ARM::VLD1d16TPseudoWB_register, ARM::VLD1d16Twb_register, true , true , true , SingleSpc, 3 , 4 ,false },
198
+
194
199
{ ARM::VLD1d32QPseudo, ARM::VLD1d32Q, true , false , false , SingleSpc, 4 , 2 ,false },
200
+ { ARM::VLD1d32QPseudoWB_fixed, ARM::VLD1d32Qwb_fixed, true , true , false , SingleSpc, 4 , 2 ,false },
201
+ { ARM::VLD1d32QPseudoWB_register, ARM::VLD1d32Qwb_register, true , true , true , SingleSpc, 4 , 2 ,false },
195
202
{ ARM::VLD1d32TPseudo, ARM::VLD1d32T, true , false , false , SingleSpc, 3 , 2 ,false },
203
+ { ARM::VLD1d32TPseudoWB_fixed, ARM::VLD1d32Twb_fixed, true , true , false , SingleSpc, 3 , 2 ,false },
204
+ { ARM::VLD1d32TPseudoWB_register, ARM::VLD1d32Twb_register, true , true , true , SingleSpc, 3 , 2 ,false },
205
+
196
206
{ ARM::VLD1d64QPseudo, ARM::VLD1d64Q, true , false , false , SingleSpc, 4 , 1 ,false },
197
207
{ ARM::VLD1d64QPseudoWB_fixed, ARM::VLD1d64Qwb_fixed, true , true , false , SingleSpc, 4 , 1 ,false },
198
208
{ ARM::VLD1d64QPseudoWB_register, ARM::VLD1d64Qwb_register, true , true , true , SingleSpc, 4 , 1 ,false },
199
209
{ ARM::VLD1d64TPseudo, ARM::VLD1d64T, true , false , false , SingleSpc, 3 , 1 ,false },
200
210
{ ARM::VLD1d64TPseudoWB_fixed, ARM::VLD1d64Twb_fixed, true , true , false , SingleSpc, 3 , 1 ,false },
201
211
{ ARM::VLD1d64TPseudoWB_register, ARM::VLD1d64Twb_register, true , true , true , SingleSpc, 3 , 1 ,false },
212
+
202
213
{ ARM::VLD1d8QPseudo, ARM::VLD1d8Q, true , false , false , SingleSpc, 4 , 8 ,false },
214
+ { ARM::VLD1d8QPseudoWB_fixed, ARM::VLD1d8Qwb_fixed, true , true , false , SingleSpc, 4 , 8 ,false },
215
+ { ARM::VLD1d8QPseudoWB_register, ARM::VLD1d8Qwb_register, true , true , true , SingleSpc, 4 , 8 ,false },
203
216
{ ARM::VLD1d8TPseudo, ARM::VLD1d8T, true , false , false , SingleSpc, 3 , 8 ,false },
217
+ { ARM::VLD1d8TPseudoWB_fixed, ARM::VLD1d8Twb_fixed, true , true , false , SingleSpc, 3 , 8 ,false },
218
+ { ARM::VLD1d8TPseudoWB_register, ARM::VLD1d8Twb_register, true , true , true , SingleSpc, 3 , 8 ,false },
219
+
204
220
{ ARM::VLD1q16HighQPseudo, ARM::VLD1d16Q, true , false , false , SingleHighQSpc, 4 , 4 ,false },
221
+ { ARM::VLD1q16HighQPseudo_UPD, ARM::VLD1d16Qwb_fixed, true , true , true , SingleHighQSpc, 4 , 4 ,false },
205
222
{ ARM::VLD1q16HighTPseudo, ARM::VLD1d16T, true , false , false , SingleHighTSpc, 3 , 4 ,false },
223
+ { ARM::VLD1q16HighTPseudo_UPD, ARM::VLD1d16Twb_fixed, true , true , true , SingleHighTSpc, 3 , 4 ,false },
206
224
{ ARM::VLD1q16LowQPseudo_UPD, ARM::VLD1d16Qwb_fixed, true , true , true , SingleLowSpc, 4 , 4 ,false },
207
225
{ ARM::VLD1q16LowTPseudo_UPD, ARM::VLD1d16Twb_fixed, true , true , true , SingleLowSpc, 3 , 4 ,false },
226
+
208
227
{ ARM::VLD1q32HighQPseudo, ARM::VLD1d32Q, true , false , false , SingleHighQSpc, 4 , 2 ,false },
228
+ { ARM::VLD1q32HighQPseudo_UPD, ARM::VLD1d32Qwb_fixed, true , true , true , SingleHighQSpc, 4 , 2 ,false },
209
229
{ ARM::VLD1q32HighTPseudo, ARM::VLD1d32T, true , false , false , SingleHighTSpc, 3 , 2 ,false },
230
+ { ARM::VLD1q32HighTPseudo_UPD, ARM::VLD1d32Twb_fixed, true , true , true , SingleHighTSpc, 3 , 2 ,false },
210
231
{ ARM::VLD1q32LowQPseudo_UPD, ARM::VLD1d32Qwb_fixed, true , true , true , SingleLowSpc, 4 , 2 ,false },
211
232
{ ARM::VLD1q32LowTPseudo_UPD, ARM::VLD1d32Twb_fixed, true , true , true , SingleLowSpc, 3 , 2 ,false },
233
+
212
234
{ ARM::VLD1q64HighQPseudo, ARM::VLD1d64Q, true , false , false , SingleHighQSpc, 4 , 1 ,false },
235
+ { ARM::VLD1q64HighQPseudo_UPD, ARM::VLD1d64Qwb_fixed, true , true , true , SingleHighQSpc, 4 , 1 ,false },
213
236
{ ARM::VLD1q64HighTPseudo, ARM::VLD1d64T, true , false , false , SingleHighTSpc, 3 , 1 ,false },
237
+ { ARM::VLD1q64HighTPseudo_UPD, ARM::VLD1d64Twb_fixed, true , true , true , SingleHighTSpc, 3 , 1 ,false },
214
238
{ ARM::VLD1q64LowQPseudo_UPD, ARM::VLD1d64Qwb_fixed, true , true , true , SingleLowSpc, 4 , 1 ,false },
215
239
{ ARM::VLD1q64LowTPseudo_UPD, ARM::VLD1d64Twb_fixed, true , true , true , SingleLowSpc, 3 , 1 ,false },
240
+
216
241
{ ARM::VLD1q8HighQPseudo, ARM::VLD1d8Q, true , false , false , SingleHighQSpc, 4 , 8 ,false },
242
+ { ARM::VLD1q8HighQPseudo_UPD, ARM::VLD1d8Qwb_fixed, true , true , true , SingleHighQSpc, 4 , 8 ,false },
217
243
{ ARM::VLD1q8HighTPseudo, ARM::VLD1d8T, true , false , false , SingleHighTSpc, 3 , 8 ,false },
244
+ { ARM::VLD1q8HighTPseudo_UPD, ARM::VLD1d8Twb_fixed, true , true , true , SingleHighTSpc, 3 , 8 ,false },
218
245
{ ARM::VLD1q8LowQPseudo_UPD, ARM::VLD1d8Qwb_fixed, true , true , true , SingleLowSpc, 4 , 8 ,false },
219
246
{ ARM::VLD1q8LowTPseudo_UPD, ARM::VLD1d8Twb_fixed, true , true , true , SingleLowSpc, 3 , 8 ,false },
220
247
@@ -2578,8 +2605,14 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
2578
2605
case ARM::VLD3d16Pseudo:
2579
2606
case ARM::VLD3d32Pseudo:
2580
2607
case ARM::VLD1d8TPseudo:
2608
+ case ARM::VLD1d8TPseudoWB_fixed:
2609
+ case ARM::VLD1d8TPseudoWB_register:
2581
2610
case ARM::VLD1d16TPseudo:
2611
+ case ARM::VLD1d16TPseudoWB_fixed:
2612
+ case ARM::VLD1d16TPseudoWB_register:
2582
2613
case ARM::VLD1d32TPseudo:
2614
+ case ARM::VLD1d32TPseudoWB_fixed:
2615
+ case ARM::VLD1d32TPseudoWB_register:
2583
2616
case ARM::VLD1d64TPseudo:
2584
2617
case ARM::VLD1d64TPseudoWB_fixed:
2585
2618
case ARM::VLD1d64TPseudoWB_register:
@@ -2599,26 +2632,40 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
2599
2632
case ARM::VLD4d16Pseudo:
2600
2633
case ARM::VLD4d32Pseudo:
2601
2634
case ARM::VLD1d8QPseudo:
2635
+ case ARM::VLD1d8QPseudoWB_fixed:
2636
+ case ARM::VLD1d8QPseudoWB_register:
2602
2637
case ARM::VLD1d16QPseudo:
2638
+ case ARM::VLD1d16QPseudoWB_fixed:
2639
+ case ARM::VLD1d16QPseudoWB_register:
2603
2640
case ARM::VLD1d32QPseudo:
2641
+ case ARM::VLD1d32QPseudoWB_fixed:
2642
+ case ARM::VLD1d32QPseudoWB_register:
2604
2643
case ARM::VLD1d64QPseudo:
2605
2644
case ARM::VLD1d64QPseudoWB_fixed:
2606
2645
case ARM::VLD1d64QPseudoWB_register:
2607
2646
case ARM::VLD1q8HighQPseudo:
2647
+ case ARM::VLD1q8HighQPseudo_UPD:
2608
2648
case ARM::VLD1q8LowQPseudo_UPD:
2609
2649
case ARM::VLD1q8HighTPseudo:
2650
+ case ARM::VLD1q8HighTPseudo_UPD:
2610
2651
case ARM::VLD1q8LowTPseudo_UPD:
2611
2652
case ARM::VLD1q16HighQPseudo:
2653
+ case ARM::VLD1q16HighQPseudo_UPD:
2612
2654
case ARM::VLD1q16LowQPseudo_UPD:
2613
2655
case ARM::VLD1q16HighTPseudo:
2656
+ case ARM::VLD1q16HighTPseudo_UPD:
2614
2657
case ARM::VLD1q16LowTPseudo_UPD:
2615
2658
case ARM::VLD1q32HighQPseudo:
2659
+ case ARM::VLD1q32HighQPseudo_UPD:
2616
2660
case ARM::VLD1q32LowQPseudo_UPD:
2617
2661
case ARM::VLD1q32HighTPseudo:
2662
+ case ARM::VLD1q32HighTPseudo_UPD:
2618
2663
case ARM::VLD1q32LowTPseudo_UPD:
2619
2664
case ARM::VLD1q64HighQPseudo:
2665
+ case ARM::VLD1q64HighQPseudo_UPD:
2620
2666
case ARM::VLD1q64LowQPseudo_UPD:
2621
2667
case ARM::VLD1q64HighTPseudo:
2668
+ case ARM::VLD1q64HighTPseudo_UPD:
2622
2669
case ARM::VLD1q64LowTPseudo_UPD:
2623
2670
case ARM::VLD4d8Pseudo_UPD:
2624
2671
case ARM::VLD4d16Pseudo_UPD:
0 commit comments