]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: enable MOVSD in the encoding end-to-end test
authorDamien Lespiau <damien.lespiau@intel.com>
Sun, 7 May 2017 14:58:03 +0000 (15:58 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sun, 7 May 2017 17:00:58 +0000 (17:00 +0000)
MOVSD is properly handled but its encoding test wasn't enabled. Enable
it.

For reference this was found with a little tool I wrote [1] to explore
which instructions are missing or not tested in the go obj package and
assembler:

"which SSE2 instructions aren't tested? And don't list instructions
which can take MMX operands"

$ x86db-gogen list --extension SSE2 --not-tested --not-mmx
CLFLUSH mem           [m:  np 0f ae /7] WILLAMETTE,SSE2
MOVSD   xmmreg,xmmreg [rm: f2 0f 10 /r] WILLAMETTE,SSE2
MOVSD   xmmreg,xmmreg [mr: f2 0f 11 /r] WILLAMETTE,SSE2
MOVSD   mem64,xmmreg  [mr: f2 0f 11 /r] WILLAMETTE,SSE2
MOVSD   xmmreg,mem64  [rm: f2 0f 10 /r] WILLAMETTE,SSE2

(CLFLUSH was introduced with SSE2, but has its own CPUID bit)

[1] https://github.com/dlespiau/x86db

Change-Id: Ic3af3028cb8d4f02e53fdebb9b30fb311f4ee454
Reviewed-on: https://go-review.googlesource.com/42814
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/asm/internal/asm/testdata/amd64enc.s

index dbc4023f9f120258ccff55477d4524d1ef3f7ef0..ec888bced37d94fc7bd0dfced63ae0d84f8670ae 100644 (file)
@@ -2687,18 +2687,18 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        MOVQOZX M3, X11                         // f3440fd6db
        MOVSB                                   // a4
        MOVSL                                   // a5
-       //TODO: MOVSD (BX), X2                  // f20f1013
-       //TODO: MOVSD (R11), X2                 // f2410f1013
-       //TODO: MOVSD X2, X2                    // f20f10d2 or f20f11d2
-       //TODO: MOVSD X11, X2                   // f2410f10d3 or f2440f11da
-       //TODO: MOVSD (BX), X11                 // f2440f101b
-       //TODO: MOVSD (R11), X11                // f2450f101b
-       //TODO: MOVSD X2, X11                   // f2440f10da or f2410f11d3
-       //TODO: MOVSD X11, X11                  // f2450f10db or f2450f11db
-       //TODO: MOVSD X2, (BX)                  // f20f1113
-       //TODO: MOVSD X11, (BX)                 // f2440f111b
-       //TODO: MOVSD X2, (R11)                 // f2410f1113
-       //TODO: MOVSD X11, (R11)                // f2450f111b
+       MOVSD (BX), X2                          // f20f1013
+       MOVSD (R11), X2                         // f2410f1013
+       MOVSD X2, X2                            // f20f10d2 or f20f11d2
+       MOVSD X11, X2                           // f2410f10d3 or f2440f11da
+       MOVSD (BX), X11                         // f2440f101b
+       MOVSD (R11), X11                        // f2450f101b
+       MOVSD X2, X11                           // f2440f10da or f2410f11d3
+       MOVSD X11, X11                          // f2450f10db or f2450f11db
+       MOVSD X2, (BX)                          // f20f1113
+       MOVSD X11, (BX)                         // f2440f111b
+       MOVSD X2, (R11)                         // f2410f1113
+       MOVSD X11, (R11)                        // f2450f111b
        MOVSHDUP (BX), X2                       // f30f1613
        MOVSHDUP (R11), X2                      // f3410f1613
        MOVSHDUP X2, X2                         // f30f16d2