summaryrefslogtreecommitdiffstats
path: root/src/cmd/asm/internal/asm/testdata/386enc.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/asm/internal/asm/testdata/386enc.s')
-rw-r--r--src/cmd/asm/internal/asm/testdata/386enc.s37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/cmd/asm/internal/asm/testdata/386enc.s b/src/cmd/asm/internal/asm/testdata/386enc.s
new file mode 100644
index 0000000..4af6de3
--- /dev/null
+++ b/src/cmd/asm/internal/asm/testdata/386enc.s
@@ -0,0 +1,37 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "../../../../../runtime/textflag.h"
+
+TEXT asmtest(SB),DUPOK|NOSPLIT,$0
+ // Instructions that were encoded with BYTE sequences.
+ // Included to simplify validation of CL that fixed that.
+ MOVQ (AX), M0 // 0f6f00
+ MOVQ M0, 8(SP) // 0f7f442408
+ MOVQ 8(SP), M0 // 0f6f442408
+ MOVQ M0, (AX) // 0f7f00
+ MOVQ M0, (BX) // 0f7f03
+ // On non-64bit arch, Go asm allowed uint32 offsets instead of int32.
+ // These tests check that property for backwards-compatibility.
+ MOVL 2147483648(AX), AX // 8b8000000080
+ MOVL -2147483648(AX), AX // 8b8000000080
+ ADDL 2147483648(AX), AX // 038000000080
+ ADDL -2147483648(AX), AX // 038000000080
+ // Make sure MOV CR/DR continues to work after changing its movtabs.
+ MOVL CR0, AX // 0f20c0
+ MOVL CR0, DX // 0f20c2
+ MOVL CR4, DI // 0f20e7
+ MOVL AX, CR0 // 0f22c0
+ MOVL DX, CR0 // 0f22c2
+ MOVL DI, CR4 // 0f22e7
+ MOVL DR0, AX // 0f21c0
+ MOVL DR6, DX // 0f21f2
+ MOVL DR7, SI // 0f21fe
+ // Test other movtab entries.
+ PUSHL SS // 16
+ PUSHL FS // 0fa0
+ POPL FS // 0fa1
+ POPL SS // 17
+ // End of tests.
+ RET