]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.8] cmd/compile: mark MOVWF/MOVFW clobbering F15 on ARM
authorCherry Zhang <cherryyz@google.com>
Sun, 5 Mar 2017 16:37:09 +0000 (11:37 -0500)
committerAustin Clements <austin@google.com>
Wed, 5 Apr 2017 16:58:22 +0000 (16:58 +0000)
The assembler back end uses F15 as a temporary register in these
instructions.

Checked the assembler back end and made sure that this is the
only case clobbering F15.

Fixes #19403.

Change-Id: I02b9e00fdd9229db899f501c8e9b306e02912d83
Reviewed-on: https://go-review.googlesource.com/39598
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/compile/internal/ssa/gen/ARMOps.go
src/cmd/compile/internal/ssa/opGen.go

index e296d0600d0ad13419576fc683876d31990f4cd0..6d9a90acb2becdc48fef1de953dd17bb2897f70d 100644 (file)
@@ -119,8 +119,8 @@ func init() {
                fp01      = regInfo{inputs: nil, outputs: []regMask{fp}}
                fp11      = regInfo{inputs: []regMask{fp}, outputs: []regMask{fp}}
                fp1flags  = regInfo{inputs: []regMask{fp}}
-               fpgp      = regInfo{inputs: []regMask{fp}, outputs: []regMask{gp}}
-               gpfp      = regInfo{inputs: []regMask{gp}, outputs: []regMask{fp}}
+               fpgp      = regInfo{inputs: []regMask{fp}, outputs: []regMask{gp}, clobbers: buildReg("F15")} // int-float conversion uses F15 as tmp
+               gpfp      = regInfo{inputs: []regMask{gp}, outputs: []regMask{fp}, clobbers: buildReg("F15")}
                fp21      = regInfo{inputs: []regMask{fp, fp}, outputs: []regMask{fp}}
                fp2flags  = regInfo{inputs: []regMask{fp, fp}}
                fpload    = regInfo{inputs: []regMask{gpspsbg}, outputs: []regMask{fp}}
index 941e6466ae82e60261e27b3da461df7106377ccb..2938bd17062bf1b59ca377bfa866b838036ceb97 100644 (file)
@@ -10083,6 +10083,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
@@ -10096,6 +10097,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
@@ -10109,6 +10111,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
@@ -10122,6 +10125,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
@@ -10135,6 +10139,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
@@ -10148,6 +10153,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
@@ -10161,6 +10167,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },
@@ -10174,6 +10181,7 @@ var opcodeTable = [...]opInfo{
                        inputs: []inputInfo{
                                {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15
                        },
+                       clobbers: 2147483648, // F15
                        outputs: []outputInfo{
                                {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14
                        },