aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/memclr_s390x.s
diff options
context:
space:
mode:
authorMichael Munday <munday@ca.ibm.com>2016-09-12 13:33:00 -0400
committerMichael Munday <munday@ca.ibm.com>2016-09-12 18:06:01 +0000
commitf1515a01fd5d77b964194d3830d36ae006823ea3 (patch)
tree227d76c14f9e173dbfb1d6e8d1e6bda4302b3eee /src/runtime/memclr_s390x.s
parent43bdfa9337c136f4e19122914c082f34045d9509 (diff)
downloadgo-f1515a01fd5d77b964194d3830d36ae006823ea3.tar.gz
go-f1515a01fd5d77b964194d3830d36ae006823ea3.zip
runtime, math/big: allow R0 on s390x to contain values other than 0
The new SSA backend for s390x can use R0 as a general purpose register. This change modifies assembly code to either avoid using R0 entirely or explicitly set R0 to 0. R0 can still be safely used as 0 in address calculations. Change-Id: I3efa723e9ef322a91a408bd8c31768d7858526c8 Reviewed-on: https://go-review.googlesource.com/28976 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/runtime/memclr_s390x.s')
-rw-r--r--src/runtime/memclr_s390x.s70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/runtime/memclr_s390x.s b/src/runtime/memclr_s390x.s
index 86eafec0a9..846131e9f5 100644
--- a/src/runtime/memclr_s390x.s
+++ b/src/runtime/memclr_s390x.s
@@ -16,8 +16,8 @@ start:
CMPBLE R5, $15, clear12to15
CMP R5, $32
BGE clearmt32
- MOVD R0, 0(R4)
- MOVD R0, 8(R4)
+ MOVD $0, 0(R4)
+ MOVD $0, 8(R4)
ADD $16, R4
SUB $16, R5
BR start
@@ -25,79 +25,79 @@ start:
clear0to3:
CMPBEQ R5, $0, done
CMPBNE R5, $1, clear2
- MOVB R0, 0(R4)
+ MOVB $0, 0(R4)
RET
clear2:
CMPBNE R5, $2, clear3
- MOVH R0, 0(R4)
+ MOVH $0, 0(R4)
RET
clear3:
- MOVH R0, 0(R4)
- MOVB R0, 2(R4)
+ MOVH $0, 0(R4)
+ MOVB $0, 2(R4)
RET
clear4to7:
CMPBNE R5, $4, clear5
- MOVW R0, 0(R4)
+ MOVW $0, 0(R4)
RET
clear5:
CMPBNE R5, $5, clear6
- MOVW R0, 0(R4)
- MOVB R0, 4(R4)
+ MOVW $0, 0(R4)
+ MOVB $0, 4(R4)
RET
clear6:
CMPBNE R5, $6, clear7
- MOVW R0, 0(R4)
- MOVH R0, 4(R4)
+ MOVW $0, 0(R4)
+ MOVH $0, 4(R4)
RET
clear7:
- MOVW R0, 0(R4)
- MOVH R0, 4(R4)
- MOVB R0, 6(R4)
+ MOVW $0, 0(R4)
+ MOVH $0, 4(R4)
+ MOVB $0, 6(R4)
RET
clear8to11:
CMPBNE R5, $8, clear9
- MOVD R0, 0(R4)
+ MOVD $0, 0(R4)
RET
clear9:
CMPBNE R5, $9, clear10
- MOVD R0, 0(R4)
- MOVB R0, 8(R4)
+ MOVD $0, 0(R4)
+ MOVB $0, 8(R4)
RET
clear10:
CMPBNE R5, $10, clear11
- MOVD R0, 0(R4)
- MOVH R0, 8(R4)
+ MOVD $0, 0(R4)
+ MOVH $0, 8(R4)
RET
clear11:
- MOVD R0, 0(R4)
- MOVH R0, 8(R4)
- MOVB R0, 10(R4)
+ MOVD $0, 0(R4)
+ MOVH $0, 8(R4)
+ MOVB $0, 10(R4)
RET
clear12to15:
CMPBNE R5, $12, clear13
- MOVD R0, 0(R4)
- MOVW R0, 8(R4)
+ MOVD $0, 0(R4)
+ MOVW $0, 8(R4)
RET
clear13:
CMPBNE R5, $13, clear14
- MOVD R0, 0(R4)
- MOVW R0, 8(R4)
- MOVB R0, 12(R4)
+ MOVD $0, 0(R4)
+ MOVW $0, 8(R4)
+ MOVB $0, 12(R4)
RET
clear14:
CMPBNE R5, $14, clear15
- MOVD R0, 0(R4)
- MOVW R0, 8(R4)
- MOVH R0, 12(R4)
+ MOVD $0, 0(R4)
+ MOVW $0, 8(R4)
+ MOVH $0, 12(R4)
RET
clear15:
- MOVD R0, 0(R4)
- MOVW R0, 8(R4)
- MOVH R0, 12(R4)
- MOVB R0, 14(R4)
+ MOVD $0, 0(R4)
+ MOVW $0, 8(R4)
+ MOVH $0, 12(R4)
+ MOVB $0, 14(R4)
RET
clearmt32:
@@ -117,6 +117,6 @@ done:
// DO NOT CALL - target for exrl (execute relative long) instruction.
TEXT runtime·memclr_s390x_exrl_xc(SB),NOSPLIT|NOFRAME,$0-0
XC $1, 0(R4), 0(R4)
- MOVD R0, 0(R0)
+ MOVD $0, 0(R0)
RET