diff options
| author | Cherry Zhang <cherryyz@google.com> | 2016-06-29 15:20:48 -0400 |
|---|---|---|
| committer | Cherry Zhang <cherryyz@google.com> | 2016-07-20 18:15:37 +0000 |
| commit | 7b9873b9b9daba332be582cf8a9249b7430311f8 (patch) | |
| tree | 983800f50dc1b2e963be3dee7fe0f8f70aa89aa8 /src/cmd/internal/obj/arm | |
| parent | 4a33af6bb63eaa69a4a2cc0d4f222d37d7531b9c (diff) | |
| download | go-7b9873b9b9daba332be582cf8a9249b7430311f8.tar.xz | |
[dev.ssa] cmd/internal/obj, etc.: add and use NEGF, NEGD instructions on ARM
Updates #15365.
Change-Id: I372a5617c2c7d91de545cac0464809b96711b63a
Reviewed-on: https://go-review.googlesource.com/24646
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/internal/obj/arm')
| -rw-r--r-- | src/cmd/internal/obj/arm/a.out.go | 2 | ||||
| -rw-r--r-- | src/cmd/internal/obj/arm/anames.go | 2 | ||||
| -rw-r--r-- | src/cmd/internal/obj/arm/asm5.go | 8 | ||||
| -rw-r--r-- | src/cmd/internal/obj/arm/obj5.go | 4 |
4 files changed, 14 insertions, 2 deletions
diff --git a/src/cmd/internal/obj/arm/a.out.go b/src/cmd/internal/obj/arm/a.out.go index 4234b5967c..9fcc483b9a 100644 --- a/src/cmd/internal/obj/arm/a.out.go +++ b/src/cmd/internal/obj/arm/a.out.go @@ -234,6 +234,8 @@ const ( ASQRTD AABSF AABSD + ANEGF + ANEGD ASRL ASRA diff --git a/src/cmd/internal/obj/arm/anames.go b/src/cmd/internal/obj/arm/anames.go index 0ef68a6be2..6d7db2dee6 100644 --- a/src/cmd/internal/obj/arm/anames.go +++ b/src/cmd/internal/obj/arm/anames.go @@ -59,6 +59,8 @@ var Anames = []string{ "SQRTD", "ABSF", "ABSD", + "NEGF", + "NEGD", "SRL", "SRA", "SLL", diff --git a/src/cmd/internal/obj/arm/asm5.go b/src/cmd/internal/obj/arm/asm5.go index d37091fe45..2158cf19fa 100644 --- a/src/cmd/internal/obj/arm/asm5.go +++ b/src/cmd/internal/obj/arm/asm5.go @@ -1434,6 +1434,8 @@ func buildop(ctxt *obj.Link) { opset(AMOVDF, r0) opset(AABSF, r0) opset(AABSD, r0) + opset(ANEGF, r0) + opset(ANEGD, r0) case ACMPF: opset(ACMPD, r0) @@ -1930,7 +1932,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) { r := int(p.Reg) if r == 0 { r = rt - if p.As == AMOVF || p.As == AMOVD || p.As == AMOVFD || p.As == AMOVDF || p.As == ASQRTF || p.As == ASQRTD || p.As == AABSF || p.As == AABSD { + if p.As == AMOVF || p.As == AMOVD || p.As == AMOVFD || p.As == AMOVDF || p.As == ASQRTF || p.As == ASQRTD || p.As == AABSF || p.As == AABSD || p.As == ANEGF || p.As == ANEGD { r = 0 } } @@ -2508,6 +2510,10 @@ func oprrr(ctxt *obj.Link, a obj.As, sc int) uint32 { return o | 0xe<<24 | 0xb<<20 | 0<<16 | 0xb<<8 | 0xc<<4 case AABSF: return o | 0xe<<24 | 0xb<<20 | 0<<16 | 0xa<<8 | 0xc<<4 + case ANEGD: + return o | 0xe<<24 | 0xb<<20 | 1<<16 | 0xb<<8 | 0x4<<4 + case ANEGF: + return o | 0xe<<24 | 0xb<<20 | 1<<16 | 0xa<<8 | 0x4<<4 case ACMPD: return o | 0xe<<24 | 0xb<<20 | 4<<16 | 0xb<<8 | 0xc<<4 case ACMPF: diff --git a/src/cmd/internal/obj/arm/obj5.go b/src/cmd/internal/obj/arm/obj5.go index 9cf2f2918e..a3d421eb6b 100644 --- a/src/cmd/internal/obj/arm/obj5.go +++ b/src/cmd/internal/obj/arm/obj5.go @@ -669,7 +669,9 @@ func softfloat(ctxt *obj.Link, cursym *obj.LSym) { ASQRTF, ASQRTD, AABSF, - AABSD: + AABSD, + ANEGF, + ANEGD: goto soft default: |
