diff --git a/src/cmd/compile/internal/ppc64/prog.go b/src/cmd/compile/internal/ppc64/prog.go index dbcf68f256..d26d09fce1 100644 --- a/src/cmd/compile/internal/ppc64/prog.go +++ b/src/cmd/compile/internal/ppc64/prog.go @@ -111,6 +111,8 @@ var progtable = [ppc64.ALAST & obj.AMask]gc.ProgInfo{ ppc64.AFMOVSX & obj.AMask: {Flags: gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Move | gc.Conv}, ppc64.AFMOVSZ & obj.AMask: {Flags: gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Move | gc.Conv}, ppc64.AFMOVD & obj.AMask: {Flags: gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move}, + ppc64.AMFVSRD & obj.AMask: {Flags: gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move}, + ppc64.AMTVSRD & obj.AMask: {Flags: gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move}, // Jumps ppc64.ABR & obj.AMask: {Flags: gc.Jump | gc.Break}, diff --git a/src/cmd/compile/internal/ppc64/ssa.go b/src/cmd/compile/internal/ppc64/ssa.go index 2c0cbad06f..762a118084 100644 --- a/src/cmd/compile/internal/ppc64/ssa.go +++ b/src/cmd/compile/internal/ppc64/ssa.go @@ -177,27 +177,23 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) { { x := v.Args[0].Reg() y := v.Reg() - p := gc.Prog(ppc64.AFMOVD) + + p := gc.Prog(ppc64.AMFVSRD) p.From.Type = obj.TYPE_REG p.From.Reg = x - s.AddrScratch(&p.To) - p = gc.Prog(ppc64.AMOVD) p.To.Type = obj.TYPE_REG p.To.Reg = y - s.AddrScratch(&p.From) } case ssa.OpPPC64Xi2f64: { x := v.Args[0].Reg() y := v.Reg() - p := gc.Prog(ppc64.AMOVD) + + p := gc.Prog(ppc64.AMTVSRD) p.From.Type = obj.TYPE_REG p.From.Reg = x - s.AddrScratch(&p.To) - p = gc.Prog(ppc64.AFMOVD) p.To.Type = obj.TYPE_REG p.To.Reg = y - s.AddrScratch(&p.From) } case ssa.OpPPC64LoweredGetClosurePtr: