Skip to content

Commit cf3fb0d

Browse files
committed
remove redundant MOV of old value to temp reg
1 parent 1c981fc commit cf3fb0d

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/runtime/internal/atomic/atomic_ppc64x.s

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,10 @@ TEXT ·Or32(SB), NOSPLIT, $0-20
368368
LWSYNC
369369
again:
370370
LWAR (R3), R6
371-
MOVW R6, R7
372-
OR R4, R6
373-
STWCCC R6, (R3)
371+
OR R4, R6, R7
372+
STWCCC R7, (R3)
374373
BNE again
375-
MOVW R7, ret+16(FP)
374+
MOVW R6, ret+16(FP)
376375
RET
377376

378377
// func And32(addr *uint32, v uint32) old uint32
@@ -382,11 +381,10 @@ TEXT ·And32(SB), NOSPLIT, $0-20
382381
LWSYNC
383382
again:
384383
LWAR (R3),R6
385-
MOVW R6, R7
386-
AND R4, R6
387-
STWCCC R6, (R3)
384+
AND R4, R6, R7
385+
STWCCC R7, (R3)
388386
BNE again
389-
MOVW R7, ret+16(FP)
387+
MOVW R6, ret+16(FP)
390388
RET
391389

392390
// func Or64(addr *uint64, v uint64) old uint64
@@ -396,11 +394,10 @@ TEXT ·Or64(SB), NOSPLIT, $0-24
396394
LWSYNC
397395
again:
398396
LDAR (R3), R6
399-
MOVD R6, R7
400-
OR R4, R6
401-
STDCCC R6, (R3)
397+
OR R4, R6, R7
398+
STDCCC R7, (R3)
402399
BNE again
403-
MOVD R7, ret+16(FP)
400+
MOVD R6, ret+16(FP)
404401
RET
405402

406403
// func And64(addr *uint64, v uint64) old uint64
@@ -410,11 +407,10 @@ TEXT ·And64(SB), NOSPLIT, $0-24
410407
LWSYNC
411408
again:
412409
LDAR (R3),R6
413-
MOVD R6, R7
414-
AND R4, R6
415-
STDCCC R6, (R3)
410+
AND R4, R6, R7
411+
STDCCC R7, (R3)
416412
BNE again
417-
MOVD R7, ret+16(FP)
413+
MOVD R6, ret+16(FP)
418414
RET
419415

420416
// func Anduintptr(addr *uintptr, v uintptr) old uintptr

0 commit comments

Comments
 (0)