From e1f8fe8dff31136ec2c3f3ba83fbeee9f2ef4c3b Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Seo Date: Wed, 10 Jan 2018 15:29:50 -0200 Subject: cmd/internal/obj/ppc64: implement full operand support for l*arx instructions The current implementation of l*arx instructions does not accept non-zero offsets in RA nor the EH field. This change adds full functionality to those instructions. Updates #23845 Change-Id: If113f70d11de5f35f8389520b049390dbc40e863 Reviewed-on: https://go-review.googlesource.com/99635 Run-TryBot: Lynn Boger TryBot-Result: Gobot Gobot Reviewed-by: Lynn Boger --- src/cmd/asm/internal/asm/testdata/ppc64.s | 20 ++++++++++++++++++++ src/cmd/asm/internal/asm/testdata/ppc64enc.s | 14 ++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'src/cmd/asm') diff --git a/src/cmd/asm/internal/asm/testdata/ppc64.s b/src/cmd/asm/internal/asm/testdata/ppc64.s index e34671231f..c6150573fc 100644 --- a/src/cmd/asm/internal/asm/testdata/ppc64.s +++ b/src/cmd/asm/internal/asm/testdata/ppc64.s @@ -1199,6 +1199,26 @@ label1: CALL foo(SB) RET foo(SB) +// load-and-reserve +// L*AR (RB)(RA*1),EH,RT produces +// l*arx RT,RA,RB,EH +// +// Extended forms also accepted. Assumes RA=0, EH=0: +// L*AR (RB),RT +// L*AR (RB),EH,RT + LBAR (R4)(R3*1), $1, R5 + LBAR (R4), $0, R5 + LBAR (R3), R5 + LHAR (R4)(R3*1), $1, R5 + LHAR (R4), $0, R5 + LHAR (R3), R5 + LWAR (R4)(R3*1), $1, R5 + LWAR (R4), $0, R5 + LWAR (R3), R5 + LDAR (R4)(R3*1), $1, R5 + LDAR (R4), $0, R5 + LDAR (R3), R5 + // END // // LEND comma // asm doesn't support the trailing comma. diff --git a/src/cmd/asm/internal/asm/testdata/ppc64enc.s b/src/cmd/asm/internal/asm/testdata/ppc64enc.s index f39c0728eb..7ab1a578f8 100644 --- a/src/cmd/asm/internal/asm/testdata/ppc64enc.s +++ b/src/cmd/asm/internal/asm/testdata/ppc64enc.s @@ -84,4 +84,18 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0 XOR $1234567, R5 // 641f001263ffd6877fe52a78 XOR $1234567, R5, R3 // 641f001263ffd6877fe32a78 + // load-and-reserve + LBAR (R4)(R3*1),$1,R5 // 7ca32069 + LBAR (R4),$0,R5 // 7ca02068 + LBAR (R3),R5 // 7ca01868 + LHAR (R4)(R3*1),$1,R5 // 7ca320e9 + LHAR (R4),$0,R5 // 7ca020e8 + LHAR (R3),R5 // 7ca018e8 + LWAR (R4)(R3*1),$1,R5 // 7ca32029 + LWAR (R4),$0,R5 // 7ca02028 + LWAR (R3),R5 // 7ca01828 + LDAR (R4)(R3*1),$1,R5 // 7ca320a9 + LDAR (R4),$0,R5 // 7ca020a8 + LDAR (R3),R5 // 7ca018a8 + RET -- cgit v1.3-5-g9baa