]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/arm64: add TRN1 and TRN2 instructions support
authorfanzha02 <fannie.zhang@arm.com>
Mon, 14 Mar 2022 02:40:25 +0000 (02:40 +0000)
committerFannie Zhang <Fannie.Zhang@arm.com>
Tue, 15 Mar 2022 01:25:23 +0000 (01:25 +0000)
Add test cases.

Fixes #51628

Change-Id: I433367d87e6bb5da5579c4be540079b92701c1fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/392294
Trust: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Trust: Fannie Zhang <Fannie.Zhang@arm.com>

src/cmd/asm/internal/asm/testdata/arm64.s
src/cmd/internal/obj/arm64/a.out.go
src/cmd/internal/obj/arm64/anames.go
src/cmd/internal/obj/arm64/asm7.go

index a4b56b0696b33a8524243df796ac9c7fee0ea4be..8a7dd299aababc2127f83d4ca7dd1c2d18fbbc6f 100644 (file)
@@ -241,6 +241,10 @@ TEXT       foo(SB), DUPOK|NOSPLIT, $-8
        FADDS   F2, F3, F4                      // 6428221e
        FADDD   F1, F2                          // 4228611e
        VDUP    V19.S[0], V17.S4                // 7106044e
+       VTRN1   V3.D2, V2.D2, V20.D2            // 5428c34e
+       VTRN2   V3.D2, V2.D2, V21.D2            // 5568c34e
+       VTRN1   V5.D2, V4.D2, V22.D2            // 9628c54e
+       VTRN2   V5.D2, V4.D2, V23.D2            // 9768c54e
 
 
 // special
index aa7c54df9aefa9180e9e755386af2efacc902485..f3480e0f5e18b88694b8b943768ed9083f848974 100644 (file)
@@ -1053,6 +1053,8 @@ const (
        AVUADDW2
        AVUADDW
        AVUSRA
+       AVTRN1
+       AVTRN2
        ALAST
        AB  = obj.AJMP
        ABL = obj.ACALL
index 9cc58716488ee0cbec4e22f87a5d3abb7963fe21..ab97a1a1307f2dc9b2545fb621b93de8054dcf65 100644 (file)
@@ -537,5 +537,7 @@ var Anames = []string{
        "VUADDW2",
        "VUADDW",
        "VUSRA",
+       "VTRN1",
+       "VTRN2",
        "LAST",
 }
index 5435b2248fa37fcacb4b2cbb68802eec752fae57..244430eb8fc6820499b71e20c714ccd4cd8e2557 100644 (file)
@@ -2985,6 +2985,8 @@ func buildop(ctxt *obj.Link) {
 
                case AVZIP1:
                        oprangeset(AVZIP2, t)
+                       oprangeset(AVTRN1, t)
+                       oprangeset(AVTRN2, t)
 
                case AVUXTL:
                        oprangeset(AVUXTL2, t)
@@ -6179,6 +6181,12 @@ func (c *ctxt7) oprrr(p *obj.Prog, a obj.As) uint32 {
 
        case AVUADDW, AVUADDW2:
                return 0x17<<25 | 1<<21 | 1<<12
+
+       case AVTRN1:
+               return 7<<25 | 5<<11
+
+       case AVTRN2:
+               return 7<<25 | 1<<14 | 5<<11
        }
 
        c.ctxt.Diag("%v: bad rrr %d %v", p, a, a)