]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/internal/obj/ppc64: rework argument classifications
authorPaul E. Murphy <murp@ibm.com>
Mon, 9 Aug 2021 16:17:08 +0000 (11:17 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Thu, 21 Oct 2021 20:12:09 +0000 (20:12 +0000)
commit5a3d0f5a6361a2a1ccba19ad8d8da8b4367ea2c9
tree9896777c134a7daec6f77c893ad9293665cf82fb
parentb8da7e4c4c9e97b3d1ebfb07506acdd61277b988
cmd/internal/obj/ppc64: rework argument classifications

This introduces a number of new classifications which will make it
easier to generate functions to assemble the new instructions of
ISA 3.1, and potentially earlier versions.

No code generation changes should occur as a result of these. These
allow finer control over how an opcode is matched to an optab entry.

Literal values are now classified based on the smallest number of bits
needed to encode, and matching rules will accept a literal if it
can be zero/sign extended to fit a larger literal class.

Likewise, support classifying even register numbers for GPR, VSX, and
FPR instructions. Some instructions require and even/odd register pair,
and these are usually represented by specifying the even register, and
similarly encoded.

Likewise, add a unit test for the argument classifier function (aclass).
This caught an off-by-one bug in aclass which is also fixed.

Updates #44549

Change-Id: Ia03013aea8b56c4d59b7c3812cdd67ddb3b720b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/350152
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
src/cmd/internal/obj/ppc64/a.out.go
src/cmd/internal/obj/ppc64/anames9.go
src/cmd/internal/obj/ppc64/asm9.go
src/cmd/internal/obj/ppc64/asm_test.go