@@ -653,43 +653,26 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
653
653
gc .AddAux (& p .From , v )
654
654
p .To .Type = obj .TYPE_REG
655
655
p .To .Reg = v .Reg ()
656
- case ssa .OpAMD64MOVQloadidx8 , ssa .OpAMD64MOVSDloadidx8 , ssa .OpAMD64MOVLloadidx8 :
657
- p := s .Prog (v .Op .Asm ())
658
- p .From .Type = obj .TYPE_MEM
659
- p .From .Reg = v .Args [0 ].Reg ()
660
- gc .AddAux (& p .From , v )
661
- p .From .Scale = 8
662
- p .From .Index = v .Args [1 ].Reg ()
663
- p .To .Type = obj .TYPE_REG
664
- p .To .Reg = v .Reg ()
665
- case ssa .OpAMD64MOVLloadidx4 , ssa .OpAMD64MOVSSloadidx4 :
666
- p := s .Prog (v .Op .Asm ())
667
- p .From .Type = obj .TYPE_MEM
668
- p .From .Reg = v .Args [0 ].Reg ()
669
- gc .AddAux (& p .From , v )
670
- p .From .Scale = 4
671
- p .From .Index = v .Args [1 ].Reg ()
672
- p .To .Type = obj .TYPE_REG
673
- p .To .Reg = v .Reg ()
674
- case ssa .OpAMD64MOVWloadidx2 :
675
- p := s .Prog (v .Op .Asm ())
676
- p .From .Type = obj .TYPE_MEM
677
- p .From .Reg = v .Args [0 ].Reg ()
678
- gc .AddAux (& p .From , v )
679
- p .From .Scale = 2
680
- p .From .Index = v .Args [1 ].Reg ()
681
- p .To .Type = obj .TYPE_REG
682
- p .To .Reg = v .Reg ()
683
- case ssa .OpAMD64MOVBloadidx1 , ssa .OpAMD64MOVWloadidx1 , ssa .OpAMD64MOVLloadidx1 , ssa .OpAMD64MOVQloadidx1 , ssa .OpAMD64MOVSSloadidx1 , ssa .OpAMD64MOVSDloadidx1 :
656
+ case ssa .OpAMD64MOVBloadidx1 , ssa .OpAMD64MOVWloadidx1 , ssa .OpAMD64MOVLloadidx1 , ssa .OpAMD64MOVQloadidx1 , ssa .OpAMD64MOVSSloadidx1 , ssa .OpAMD64MOVSDloadidx1 ,
657
+ ssa .OpAMD64MOVQloadidx8 , ssa .OpAMD64MOVSDloadidx8 , ssa .OpAMD64MOVLloadidx8 , ssa .OpAMD64MOVLloadidx4 , ssa .OpAMD64MOVSSloadidx4 , ssa .OpAMD64MOVWloadidx2 :
684
658
r := v .Args [0 ].Reg ()
685
659
i := v .Args [1 ].Reg ()
686
- if i == x86 .REG_SP {
687
- r , i = i , r
688
- }
689
660
p := s .Prog (v .Op .Asm ())
690
661
p .From .Type = obj .TYPE_MEM
662
+ switch v .Op {
663
+ case ssa .OpAMD64MOVBloadidx1 , ssa .OpAMD64MOVWloadidx1 , ssa .OpAMD64MOVLloadidx1 , ssa .OpAMD64MOVQloadidx1 , ssa .OpAMD64MOVSSloadidx1 , ssa .OpAMD64MOVSDloadidx1 :
664
+ if i == x86 .REG_SP {
665
+ r , i = i , r
666
+ }
667
+ p .From .Scale = 1
668
+ case ssa .OpAMD64MOVQloadidx8 , ssa .OpAMD64MOVSDloadidx8 , ssa .OpAMD64MOVLloadidx8 :
669
+ p .From .Scale = 8
670
+ case ssa .OpAMD64MOVLloadidx4 , ssa .OpAMD64MOVSSloadidx4 :
671
+ p .From .Scale = 4
672
+ case ssa .OpAMD64MOVWloadidx2 :
673
+ p .From .Scale = 2
674
+ }
691
675
p .From .Reg = r
692
- p .From .Scale = 1
693
676
p .From .Index = i
694
677
gc .AddAux (& p .From , v )
695
678
p .To .Type = obj .TYPE_REG
@@ -704,45 +687,28 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
704
687
p .To .Type = obj .TYPE_MEM
705
688
p .To .Reg = v .Args [0 ].Reg ()
706
689
gc .AddAux (& p .To , v )
707
- case ssa .OpAMD64MOVQstoreidx8 , ssa .OpAMD64MOVSDstoreidx8 , ssa .OpAMD64MOVLstoreidx8 :
708
- p := s .Prog (v .Op .Asm ())
709
- p .From .Type = obj .TYPE_REG
710
- p .From .Reg = v .Args [2 ].Reg ()
711
- p .To .Type = obj .TYPE_MEM
712
- p .To .Reg = v .Args [0 ].Reg ()
713
- p .To .Scale = 8
714
- p .To .Index = v .Args [1 ].Reg ()
715
- gc .AddAux (& p .To , v )
716
- case ssa .OpAMD64MOVSSstoreidx4 , ssa .OpAMD64MOVLstoreidx4 :
717
- p := s .Prog (v .Op .Asm ())
718
- p .From .Type = obj .TYPE_REG
719
- p .From .Reg = v .Args [2 ].Reg ()
720
- p .To .Type = obj .TYPE_MEM
721
- p .To .Reg = v .Args [0 ].Reg ()
722
- p .To .Scale = 4
723
- p .To .Index = v .Args [1 ].Reg ()
724
- gc .AddAux (& p .To , v )
725
- case ssa .OpAMD64MOVWstoreidx2 :
726
- p := s .Prog (v .Op .Asm ())
727
- p .From .Type = obj .TYPE_REG
728
- p .From .Reg = v .Args [2 ].Reg ()
729
- p .To .Type = obj .TYPE_MEM
730
- p .To .Reg = v .Args [0 ].Reg ()
731
- p .To .Scale = 2
732
- p .To .Index = v .Args [1 ].Reg ()
733
- gc .AddAux (& p .To , v )
734
- case ssa .OpAMD64MOVBstoreidx1 , ssa .OpAMD64MOVWstoreidx1 , ssa .OpAMD64MOVLstoreidx1 , ssa .OpAMD64MOVQstoreidx1 , ssa .OpAMD64MOVSSstoreidx1 , ssa .OpAMD64MOVSDstoreidx1 :
690
+ case ssa .OpAMD64MOVBstoreidx1 , ssa .OpAMD64MOVWstoreidx1 , ssa .OpAMD64MOVLstoreidx1 , ssa .OpAMD64MOVQstoreidx1 , ssa .OpAMD64MOVSSstoreidx1 , ssa .OpAMD64MOVSDstoreidx1 ,
691
+ ssa .OpAMD64MOVQstoreidx8 , ssa .OpAMD64MOVSDstoreidx8 , ssa .OpAMD64MOVLstoreidx8 , ssa .OpAMD64MOVSSstoreidx4 , ssa .OpAMD64MOVLstoreidx4 , ssa .OpAMD64MOVWstoreidx2 :
735
692
r := v .Args [0 ].Reg ()
736
693
i := v .Args [1 ].Reg ()
737
- if i == x86 .REG_SP {
738
- r , i = i , r
739
- }
740
694
p := s .Prog (v .Op .Asm ())
741
695
p .From .Type = obj .TYPE_REG
742
696
p .From .Reg = v .Args [2 ].Reg ()
743
697
p .To .Type = obj .TYPE_MEM
698
+ switch v .Op {
699
+ case ssa .OpAMD64MOVBstoreidx1 , ssa .OpAMD64MOVWstoreidx1 , ssa .OpAMD64MOVLstoreidx1 , ssa .OpAMD64MOVQstoreidx1 , ssa .OpAMD64MOVSSstoreidx1 , ssa .OpAMD64MOVSDstoreidx1 :
700
+ if i == x86 .REG_SP {
701
+ r , i = i , r
702
+ }
703
+ p .To .Scale = 1
704
+ case ssa .OpAMD64MOVQstoreidx8 , ssa .OpAMD64MOVSDstoreidx8 , ssa .OpAMD64MOVLstoreidx8 :
705
+ p .To .Scale = 8
706
+ case ssa .OpAMD64MOVSSstoreidx4 , ssa .OpAMD64MOVLstoreidx4 :
707
+ p .To .Scale = 4
708
+ case ssa .OpAMD64MOVWstoreidx2 :
709
+ p .To .Scale = 2
710
+ }
744
711
p .To .Reg = r
745
- p .To .Scale = 1
746
712
p .To .Index = i
747
713
gc .AddAux (& p .To , v )
748
714
case ssa .OpAMD64ADDQconstmodify , ssa .OpAMD64ADDLconstmodify :
0 commit comments