Commit 72fa142f authored by Adam Langley's avatar Adam Langley

6l/8l: emit correct opcodes to F(SUB|DIV)R?D.

When the destination was not F0, 6l and 8l swapped FSUBD/FSUBRD and
FDIVD/FDIVRD.

R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/6498092
parent a7743d7a
......@@ -1199,25 +1199,25 @@ Optab optab[] =
{ AFSUBW, yfmvx, Px, 0xde,(04) },
{ AFSUBL, yfmvx, Px, 0xda,(04) },
{ AFSUBF, yfmvx, Px, 0xd8,(04) },
{ AFSUBD, yfadd, Px, 0xdc,(04),0xd8,(04),0xdc,(05) },
{ AFSUBD, yfadd, Px, 0xdc,(04),0xd8,(04),0xdc,(04) },
{ AFSUBRDP, yfaddp, Px, 0xde,(04) },
{ AFSUBRW, yfmvx, Px, 0xde,(05) },
{ AFSUBRL, yfmvx, Px, 0xda,(05) },
{ AFSUBRF, yfmvx, Px, 0xd8,(05) },
{ AFSUBRD, yfadd, Px, 0xdc,(05),0xd8,(05),0xdc,(04) },
{ AFSUBRD, yfadd, Px, 0xdc,(05),0xd8,(05),0xdc,(05) },
{ AFDIVDP, yfaddp, Px, 0xde,(07) },
{ AFDIVW, yfmvx, Px, 0xde,(06) },
{ AFDIVL, yfmvx, Px, 0xda,(06) },
{ AFDIVF, yfmvx, Px, 0xd8,(06) },
{ AFDIVD, yfadd, Px, 0xdc,(06),0xd8,(06),0xdc,(07) },
{ AFDIVD, yfadd, Px, 0xdc,(06),0xd8,(06),0xdc,(06) },
{ AFDIVRDP, yfaddp, Px, 0xde,(06) },
{ AFDIVRW, yfmvx, Px, 0xde,(07) },
{ AFDIVRL, yfmvx, Px, 0xda,(07) },
{ AFDIVRF, yfmvx, Px, 0xd8,(07) },
{ AFDIVRD, yfadd, Px, 0xdc,(07),0xd8,(07),0xdc,(06) },
{ AFDIVRD, yfadd, Px, 0xdc,(07),0xd8,(07),0xdc,(07) },
{ AFXCHD, yfxch, Px, 0xd9,(01),0xd9,(01) },
{ AFFREE },
......
......@@ -651,25 +651,25 @@ Optab optab[] =
{ AFSUBW, yfmvx, Px, 0xde,(04) },
{ AFSUBL, yfmvx, Px, 0xda,(04) },
{ AFSUBF, yfmvx, Px, 0xd8,(04) },
{ AFSUBD, yfadd, Px, 0xdc,(04),0xd8,(04),0xdc,(05) },
{ AFSUBD, yfadd, Px, 0xdc,(04),0xd8,(04),0xdc,(04) },
{ AFSUBRDP, yfaddp, Px, 0xde,(04) },
{ AFSUBRW, yfmvx, Px, 0xde,(05) },
{ AFSUBRL, yfmvx, Px, 0xda,(05) },
{ AFSUBRF, yfmvx, Px, 0xd8,(05) },
{ AFSUBRD, yfadd, Px, 0xdc,(05),0xd8,(05),0xdc,(04) },
{ AFSUBRD, yfadd, Px, 0xdc,(05),0xd8,(05),0xdc,(05) },
{ AFDIVDP, yfaddp, Px, 0xde,(07) },
{ AFDIVW, yfmvx, Px, 0xde,(06) },
{ AFDIVL, yfmvx, Px, 0xda,(06) },
{ AFDIVF, yfmvx, Px, 0xd8,(06) },
{ AFDIVD, yfadd, Px, 0xdc,(06),0xd8,(06),0xdc,(07) },
{ AFDIVD, yfadd, Px, 0xdc,(06),0xd8,(06),0xdc,(06) },
{ AFDIVRDP, yfaddp, Px, 0xde,(06) },
{ AFDIVRW, yfmvx, Px, 0xde,(07) },
{ AFDIVRL, yfmvx, Px, 0xda,(07) },
{ AFDIVRF, yfmvx, Px, 0xd8,(07) },
{ AFDIVRD, yfadd, Px, 0xdc,(07),0xd8,(07),0xdc,(06) },
{ AFDIVRD, yfadd, Px, 0xdc,(07),0xd8,(07),0xdc,(07) },
{ AFXCHD, yfxch, Px, 0xd9,(01),0xd9,(01) },
{ AFFREE },
......
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"strconv"
)
// These functions are implemented in bug453.s
func bug453a() float64
func bug453b() float64
func main() {
if v := bug453a(); v != -1 {
panic("a: bad result, want -1, got " + strconv.FormatFloat(v, 'f', -1, 64))
}
if v := bug453b(); v != 1 {
panic("b: bad result, want 1, got " + strconv.FormatFloat(v, 'f', -1, 64))
}
}
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build amd64 386
// func bug453a() float64
TEXT ·bug453a(SB),7,$0
FLD1
FLD1
FADDD F1,F0
// This should subtract F0 (2) from F1 (1) and put -1 in F1.
FSUBRD F0,F1
FMOVDP F0,r+0(FP)
FMOVDP F0,r+0(FP)
RET
// func bug453b() float64
TEXT ·bug453b(SB),7,$0
FLD1
FLD1
FADDD F1,F0
// This should subtract F1 (1) from F0 (2) and put 1 in F1.
FSUBD F0,F1
FMOVDP F0,r+0(FP)
FMOVDP F0,r+0(FP)
RET
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !amd64,!386
package main
// These functions are standins for the functions in the .s file on other platforms.
func bug453a() float64 {
return -1
}
func bug453b() float64 {
return 1
}
// compiledir
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
ignored
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment