@@ -469,93 +469,152 @@ void RegistersView::InitMappings()
469
469
470
470
mRegisterMapping .insert (MM0, " MM0" );
471
471
mRegisterPlaces .insert (MM0, Register_Position (offset++, 0 , 4 , 8 * 2 ));
472
+ mRegisterRelativePlaces .insert (MM0, Register_Relative_Position (MxCsr_RC, MM1));
472
473
mRegisterMapping .insert (MM1, " MM1" );
473
474
mRegisterPlaces .insert (MM1, Register_Position (offset++, 0 , 4 , 8 * 2 ));
475
+ mRegisterRelativePlaces .insert (MM1, Register_Relative_Position (MM0, MM2));
474
476
mRegisterMapping .insert (MM2, " MM2" );
475
477
mRegisterPlaces .insert (MM2, Register_Position (offset++, 0 , 4 , 8 * 2 ));
478
+ mRegisterRelativePlaces .insert (MM2, Register_Relative_Position (MM1, MM3));
476
479
mRegisterMapping .insert (MM3, " MM3" );
477
480
mRegisterPlaces .insert (MM3, Register_Position (offset++, 0 , 4 , 8 * 2 ));
481
+ mRegisterRelativePlaces .insert (MM3, Register_Relative_Position (MM2, MM4));
478
482
mRegisterMapping .insert (MM4, " MM4" );
479
483
mRegisterPlaces .insert (MM4, Register_Position (offset++, 0 , 4 , 8 * 2 ));
484
+ mRegisterRelativePlaces .insert (MM4, Register_Relative_Position (MM3, MM5));
480
485
mRegisterMapping .insert (MM5, " MM5" );
481
486
mRegisterPlaces .insert (MM5, Register_Position (offset++, 0 , 4 , 8 * 2 ));
487
+ mRegisterRelativePlaces .insert (MM5, Register_Relative_Position (MM4, MM6));
482
488
mRegisterMapping .insert (MM6, " MM6" );
483
489
mRegisterPlaces .insert (MM6, Register_Position (offset++, 0 , 4 , 8 * 2 ));
490
+ mRegisterRelativePlaces .insert (MM6, Register_Relative_Position (MM5, MM7));
484
491
mRegisterMapping .insert (MM7, " MM7" );
485
492
mRegisterPlaces .insert (MM7, Register_Position (offset++, 0 , 4 , 8 * 2 ));
493
+ mRegisterRelativePlaces .insert (MM7, Register_Relative_Position (MM6, XMM0));
494
+
486
495
487
496
offset++;
488
497
489
498
mRegisterMapping .insert (XMM0, " XMM0" );
490
499
mRegisterPlaces .insert (XMM0, Register_Position (offset++, 0 , 6 , 16 * 2 ));
500
+ mRegisterRelativePlaces .insert (XMM0, Register_Relative_Position (MM7, XMM1));
491
501
mRegisterMapping .insert (XMM1, " XMM1" );
492
502
mRegisterPlaces .insert (XMM1, Register_Position (offset++, 0 , 6 , 16 * 2 ));
503
+ mRegisterRelativePlaces .insert (XMM1, Register_Relative_Position (XMM0, XMM2));
493
504
mRegisterMapping .insert (XMM2, " XMM2" );
494
505
mRegisterPlaces .insert (XMM2, Register_Position (offset++, 0 , 6 , 16 * 2 ));
506
+ mRegisterRelativePlaces .insert (XMM2, Register_Relative_Position (XMM1, XMM3));
495
507
mRegisterMapping .insert (XMM3, " XMM3" );
496
508
mRegisterPlaces .insert (XMM3, Register_Position (offset++, 0 , 6 , 16 * 2 ));
509
+ mRegisterRelativePlaces .insert (XMM3, Register_Relative_Position (XMM2, XMM4));
497
510
mRegisterMapping .insert (XMM4, " XMM4" );
498
511
mRegisterPlaces .insert (XMM4, Register_Position (offset++, 0 , 6 , 16 * 2 ));
512
+ mRegisterRelativePlaces .insert (XMM4, Register_Relative_Position (XMM3, XMM5));
499
513
mRegisterMapping .insert (XMM5, " XMM5" );
500
514
mRegisterPlaces .insert (XMM5, Register_Position (offset++, 0 , 6 , 16 * 2 ));
515
+ mRegisterRelativePlaces .insert (XMM5, Register_Relative_Position (XMM4, XMM6));
501
516
mRegisterMapping .insert (XMM6, " XMM6" );
502
517
mRegisterPlaces .insert (XMM6, Register_Position (offset++, 0 , 6 , 16 * 2 ));
518
+ mRegisterRelativePlaces .insert (XMM6, Register_Relative_Position (XMM5, XMM7));
519
+ #ifndef _WIN64
520
+ mRegisterMapping .insert (XMM7, " XMM7" );
521
+ mRegisterPlaces .insert (XMM7, Register_Position (offset++, 0 , 6 , 16 * 2 ));
522
+ mRegisterRelativePlaces .insert (XMM7, Register_Relative_Position (XMM6, YMM0));
523
+ #else
503
524
mRegisterMapping .insert (XMM7, " XMM7" );
504
525
mRegisterPlaces .insert (XMM7, Register_Position (offset++, 0 , 6 , 16 * 2 ));
526
+ mRegisterRelativePlaces .insert (XMM7, Register_Relative_Position (XMM6, XMM8));
527
+ #endif
505
528
#ifdef _WIN64
506
529
mRegisterMapping .insert (XMM8, " XMM8" );
507
530
mRegisterPlaces .insert (XMM8, Register_Position (offset++, 0 , 6 , 16 * 2 ));
531
+ mRegisterRelativePlaces .insert (XMM8, Register_Relative_Position (XMM7, XMM9));
508
532
mRegisterMapping .insert (XMM9, " XMM9" );
509
533
mRegisterPlaces .insert (XMM9, Register_Position (offset++, 0 , 6 , 16 * 2 ));
534
+ mRegisterRelativePlaces .insert (XMM9, Register_Relative_Position (XMM8, XMM10));
510
535
mRegisterMapping .insert (XMM10, " XMM10" );
511
536
mRegisterPlaces .insert (XMM10, Register_Position (offset++, 0 , 6 , 16 * 2 ));
537
+ mRegisterRelativePlaces .insert (XMM10, Register_Relative_Position (XMM9, XMM11));
512
538
mRegisterMapping .insert (XMM11, " XMM11" );
513
539
mRegisterPlaces .insert (XMM11, Register_Position (offset++, 0 , 6 , 16 * 2 ));
540
+ mRegisterRelativePlaces .insert (XMM11, Register_Relative_Position (XMM10, XMM12));
514
541
mRegisterMapping .insert (XMM12, " XMM12" );
515
542
mRegisterPlaces .insert (XMM12, Register_Position (offset++, 0 , 6 , 16 * 2 ));
543
+ mRegisterRelativePlaces .insert (XMM12, Register_Relative_Position (XMM11, XMM13));
516
544
mRegisterMapping .insert (XMM13, " XMM13" );
517
545
mRegisterPlaces .insert (XMM13, Register_Position (offset++, 0 , 6 , 16 * 2 ));
546
+ mRegisterRelativePlaces .insert (XMM13, Register_Relative_Position (XMM12, XMM14));
518
547
mRegisterMapping .insert (XMM14, " XMM14" );
519
548
mRegisterPlaces .insert (XMM14, Register_Position (offset++, 0 , 6 , 16 * 2 ));
549
+ mRegisterRelativePlaces .insert (XMM14, Register_Relative_Position (XMM13, XMM15));
520
550
mRegisterMapping .insert (XMM15, " XMM15" );
521
551
mRegisterPlaces .insert (XMM15, Register_Position (offset++, 0 , 6 , 16 * 2 ));
552
+ mRegisterRelativePlaces .insert (XMM15, Register_Relative_Position (XMM14, YMM0));
522
553
#endif
523
554
524
555
offset++;
525
556
557
+ #ifndef _WIN64
526
558
mRegisterMapping .insert (YMM0, " YMM0" );
527
559
mRegisterPlaces .insert (YMM0, Register_Position (offset++, 0 , 6 , 32 * 2 ));
560
+ mRegisterRelativePlaces .insert (YMM0, Register_Relative_Position (XMM7, YMM1));
561
+ #else
562
+ mRegisterMapping .insert (YMM0, " YMM0" );
563
+ mRegisterPlaces .insert (YMM0, Register_Position (offset++, 0 , 6 , 32 * 2 ));
564
+ mRegisterRelativePlaces .insert (YMM0, Register_Relative_Position (XMM15, YMM1));
565
+ #endif
528
566
mRegisterMapping .insert (YMM1, " YMM1" );
529
567
mRegisterPlaces .insert (YMM1, Register_Position (offset++, 0 , 6 , 32 * 2 ));
568
+ mRegisterRelativePlaces .insert (YMM1, Register_Relative_Position (YMM0, YMM2));
530
569
mRegisterMapping .insert (YMM2, " YMM2" );
531
570
mRegisterPlaces .insert (YMM2, Register_Position (offset++, 0 , 6 , 32 * 2 ));
571
+ mRegisterRelativePlaces .insert (YMM2, Register_Relative_Position (YMM1, YMM3));
532
572
mRegisterMapping .insert (YMM3, " YMM3" );
533
573
mRegisterPlaces .insert (YMM3, Register_Position (offset++, 0 , 6 , 32 * 2 ));
574
+ mRegisterRelativePlaces .insert (YMM3, Register_Relative_Position (YMM2, YMM4));
534
575
mRegisterMapping .insert (YMM4, " YMM4" );
535
576
mRegisterPlaces .insert (YMM4, Register_Position (offset++, 0 , 6 , 32 * 2 ));
577
+ mRegisterRelativePlaces .insert (YMM4, Register_Relative_Position (YMM3, YMM5));
536
578
mRegisterMapping .insert (YMM5, " YMM5" );
537
579
mRegisterPlaces .insert (YMM5, Register_Position (offset++, 0 , 6 , 32 * 2 ));
580
+ mRegisterRelativePlaces .insert (YMM5, Register_Relative_Position (YMM4, YMM6));
538
581
mRegisterMapping .insert (YMM6, " YMM6" );
539
582
mRegisterPlaces .insert (YMM6, Register_Position (offset++, 0 , 6 , 32 * 2 ));
583
+ mRegisterRelativePlaces .insert (YMM6, Register_Relative_Position (YMM5, YMM7));
584
+ #ifndef _WIN64
585
+ mRegisterMapping .insert (YMM7, " YMM7" );
586
+ mRegisterPlaces .insert (YMM7, Register_Position (offset++, 0 , 6 , 32 * 2 ));
587
+ mRegisterRelativePlaces .insert (YMM7, Register_Relative_Position (YMM6, DR0));
588
+ #else
540
589
mRegisterMapping .insert (YMM7, " YMM7" );
541
590
mRegisterPlaces .insert (YMM7, Register_Position (offset++, 0 , 6 , 32 * 2 ));
591
+ mRegisterRelativePlaces .insert (YMM7, Register_Relative_Position (YMM6, YMM8));
592
+ #endif
542
593
#ifdef _WIN64
543
594
mRegisterMapping .insert (YMM8, " YMM8" );
544
595
mRegisterPlaces .insert (YMM8, Register_Position (offset++, 0 , 6 , 32 * 2 ));
596
+ mRegisterRelativePlaces .insert (YMM8, Register_Relative_Position (YMM7, YMM9));
545
597
mRegisterMapping .insert (YMM9, " YMM9" );
546
598
mRegisterPlaces .insert (YMM9, Register_Position (offset++, 0 , 6 , 32 * 2 ));
599
+ mRegisterRelativePlaces .insert (YMM9, Register_Relative_Position (YMM8, YMM10));
547
600
mRegisterMapping .insert (YMM10, " YMM10" );
548
601
mRegisterPlaces .insert (YMM10, Register_Position (offset++, 0 , 6 , 32 * 2 ));
602
+ mRegisterRelativePlaces .insert (YMM10, Register_Relative_Position (YMM9, YMM11));
549
603
mRegisterMapping .insert (YMM11, " YMM11" );
550
604
mRegisterPlaces .insert (YMM11, Register_Position (offset++, 0 , 6 , 32 * 2 ));
605
+ mRegisterRelativePlaces .insert (YMM11, Register_Relative_Position (YMM10, YMM12));
551
606
mRegisterMapping .insert (YMM12, " YMM12" );
552
607
mRegisterPlaces .insert (YMM12, Register_Position (offset++, 0 , 6 , 32 * 2 ));
608
+ mRegisterRelativePlaces .insert (YMM12, Register_Relative_Position (YMM11, YMM13));
553
609
mRegisterMapping .insert (YMM13, " YMM13" );
554
610
mRegisterPlaces .insert (YMM13, Register_Position (offset++, 0 , 6 , 32 * 2 ));
611
+ mRegisterRelativePlaces .insert (YMM13, Register_Relative_Position (YMM12, YMM14));
555
612
mRegisterMapping .insert (YMM14, " YMM14" );
556
613
mRegisterPlaces .insert (YMM14, Register_Position (offset++, 0 , 6 , 32 * 2 ));
614
+ mRegisterRelativePlaces .insert (YMM14, Register_Relative_Position (YMM13, YMM15));
557
615
mRegisterMapping .insert (YMM15, " YMM15" );
558
616
mRegisterPlaces .insert (YMM15, Register_Position (offset++, 0 , 6 , 32 * 2 ));
617
+ mRegisterRelativePlaces .insert (YMM15, Register_Relative_Position (YMM14, UNKNOWN));
559
618
#endif
560
619
}
561
620
0 commit comments