VirtualBox

source: vbox/trunk/src/VBox/Disassembler/testcase/tstDisasm-1A.asm@ 51696

Last change on this file since 51696 was 49346, checked in by vboxsync, 11 years ago

Disas: pmulhrw adjustment, seems it wasn't fixed in v1.2.0.0 but in git some time afterwards. Try check for build/patchlevel greater than 0 in addition to existing v1.2.0 requirement.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
1; $Id: tstDisasm-1A.asm 49346 2013-10-31 11:49:09Z vboxsync $
2;; @file
3; VBox disassembler: Assembler test routines
4;
5
6;
7; Copyright (C) 2006-2012 Oracle Corporation
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License (GPL) as published by the Free Software
13; Foundation, in version 2 as it comes in the "COPYING" file of the
14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16;
17
18;*******************************************************************************
19;* Header Files *
20;*******************************************************************************
21%include "iprt/asmdefs.mac"
22;%include "VBox/vmm/vm.mac"
23;%include "VBox/err.mac"
24;%include "VBox/vmm/stam.mac"
25;%include "iprt/x86.mac"
26
27BITS 32
28
29%if __YASM_VERSION_ID__ >= 001020001h ; v1.2.0.1 and greater, make sure to exclude v1.2.0.0.
30 %define pmulhrwa pmulhrw
31%endif
32
33
34BEGINCODE
35
36align 16
37BEGINPROC TestProc32
38 xor eax, eax
39 mov al, 4
40 lea edx, [4]
41 mov edx, 4
42 mov eax, 4
43 shl eax, 4
44 shl edx, 4
45 shr edx, 4
46 mov eax, edx
47 mov eax, ecx
48 mov edx, eax
49 mov ecx, eax
50 DB 0xF0, 0x0F, 0x22, 0xC0
51 DB 0xF0, 0x0F, 0x20, 0xC0
52 smsw word [edx+16]
53 ; invept eax, qword [ecx]
54 DB 0x66, 0x0F, 0x38, 0x80, 0x1
55 ; invept eax, qword [ecx]
56 DB 0x66, 0x0F, 0x38, 0x81, 0x1
57 mov eax, dword [ecx]
58 mov word [edi], 0123ah
59 movzx eax,byte [edx]
60 movzx eax,word [edx]
61 mov dword [es:ebx + 1234h], 0789h
62 mov word [fs:ebx + ecx], 0654h
63 mov byte [esi + eax*4], 054h
64 mov bl, byte [ds:ebp + 1234h]
65 mov al, [cs:1234h + ecx*8]
66 mov al, [cs:1234h]
67 mov ax, [cs:1234h]
68 mov eax, [cs:1234h]
69 lock cmpxchg [ecx], eax
70 lock cmpxchg [ecx], ax
71 lock cmpxchg [ecx], dl
72 movzx ESI,word [EAX]
73 in al, dx
74 in ax, dx
75 in eax, dx
76 mov ebx, [ecx + eax*4 + 17]
77 mov ebx, [ebp + eax*4 + 4]
78 mov ebx, [ebp + eax*4]
79 int 80h
80 in al, 60h
81 in ax, dx
82 out 64h, eax
83
84 movss xmm0, xmm1
85 movss xmm3, [eax]
86 movss [eax], xmm4
87 movsd xmm6, xmm1
88
89 pause
90 nop
91
92 ; 3Dnow!
93 pavgusb mm1, mm0
94 pf2id mm5, mm4
95 pf2iw mm6, mm3
96 pfacc mm7, mm2
97 pfadd mm5, mm4
98 pfcmpeq mm6, mm3
99 pfcmpge mm2, mm7
100 pfcmpgt mm4, mm5
101 pfmax mm3, mm6
102 pfmin mm1, mm0
103 pfmul mm5, mm4
104 pmulhrwa mm3, mm6
105 pfnacc mm4, mm5
106 pfpnacc mm3, mm6
107 pfrcp mm0, mm1
108 pfrcpit1 mm2, mm7
109 pfrcpit2 mm4, mm5
110 pfrsqrt mm7, mm2
111 pfrsqit1 mm1, mm0
112 pfsub mm6, mm3
113 pfsubr mm0, mm1
114 pi2fd mm7, mm2
115 pi2fw mm0, mm1
116 pswapd mm2, mm7
117
118 pavgusb mm1, qword [es:eax+000000010h]
119 pf2id mm5, qword [ds:esi+000101010h]
120 pf2iw mm6, qword [fs:esi+000101010h]
121 pfacc mm7, qword [gs:esi+000101010h]
122 pfadd mm5, qword [ esi+000101010h]
123 pfcmpeq mm6, qword [ edi*8+000101010h]
124 pfcmpge mm2, qword [es:esi+000100010h]
125 pfcmpgt mm4, qword [es:esi+000101010h]
126 pfmax mm3, qword [es:esi+000101010h]
127 pfmin mm1, qword [es:esi+000101010h]
128 pfmul mm5, qword [es:esi+000101000h]
129 pmulhrwa mm3, qword [es:eax+0ffffffffh]
130 pfnacc mm4, qword [es:ebx+000101010h]
131 pfpnacc mm3, qword [es:edx+000102900h]
132 pfrcp mm0, qword [es:ecx+000101020h]
133 pfrcpit1 mm2, qword [es:ebp+000101510h]
134 pfrcpit2 mm4, qword [es:esp+000101310h]
135 pfrsqrt mm7, qword [es:esi+0f0106010h]
136 pfrsqit1 mm1, qword [es:edi+0001f1010h]
137 pfsub mm6, qword [es:esi*2]
138 pfsubr mm0, qword [es:esi*3]
139 pi2fd mm7, qword [es:esi*4]
140 pi2fw mm0, qword [es:esi*5]
141 pswapd mm2, qword [es:esi*8]
142
143 pmulhrwa mm0, qword [ds:ebp+edi*8+00f000001h]
144
145 ; MMX
146 psubusb mm1, mm3
147 cvtpi2pd xmm0, mm3
148 paddd mm1, mm3
149 paddd xmm1, xmm3
150ENDPROC TestProc32
151
152
153%ifndef RT_OS_OS2
154BITS 64
155align 16
156BEGINPROC TestProc64
157 mov cr8, rax
158 mov cr8, rbx
159 mov [0xfffe0080], rax
160 mov [0xfffe0080], rbx
161 mov rax, cr8
162 mov rbx, cr8
163 mov rax, [0xfffe0080]
164 mov rbx, [0xfffe0080]
165 divsd xmm1, xmm0
166 ; invept rdi, qword [rsi]
167 DB 0x66, 0x0F, 0x38, 0x80, 0x3E
168 ; invept rcx, qword [rdx]
169 DB 0x66, 0x0F, 0x38, 0x80, 0xA
170 ;invvpid rdi, qword [rsi]
171 DB 0x66, 0x0F, 0x38, 0x81, 0x3E
172 ; invvpid rcx, qword [rdx]
173 DB 0x66, 0x0F, 0x38, 0x81, 0xA
174 mov rdi, [rsi]
175 mov rcx, [rdx]
176 db 48h
177 db 0c7h
178 db 42h
179 db 18h
180 db 20h
181 db 3eh
182 db 23h
183 db 80h
184 call qword [r8+10h]
185 ; test
186 db 48h
187 db 8bh
188 db 44h
189 db 0ah
190 db 0f8h
191 ;incorrectly assembled by yasm; REX.W should not be added!
192 ;test rax, dword 0cc90cc90h
193 db 8bh
194 db 04h
195 db 8dh
196 db 00h
197 db 00h
198 db 0feh
199 db 0ffh
200 mov qword [rcx+rdx], 0
201 mov dword [rcx+rdx], 0
202 and [r15], rax
203 movzx rcx, sil
204 and sil, 3
205 movzx ecx, ah
206 and ah, 3
207
208 sub rcx, 1234h
209 mov rax, qword [0cc90cc90h]
210 mov rax, qword [00c90cc90h]
211 mov rax, dword 0cc90cc90h
212 mov rax, qword 0ffffcc90cc90h
213
214 movzx rax,byte [edx]
215 movzx rax,word [edx]
216 movzx rax,byte [rdx]
217 lock cmpxchg [rcx], rax
218 lock cmpxchg [rcx], ax
219 lock cmpxchg [r15], dl
220 movzx RSI, word [R8]
221 in al, dx
222 in ax, dx
223 in eax, dx
224 mov rbx, [rcx + rax*4 + 17]
225 mov rbx, [rbp + rax*4 + 4]
226 mov rbx, [rbp + rax*4]
227 mov rbx, [ebp + eax*4]
228 int 80h
229 in al, 60h
230 in ax, dx
231 out 64h, eax
232
233 movss xmm0, xmm14
234 movsd xmm6, xmm1
235
236 ret
237ENDPROC TestProc64
238%endif ; !OS2
239
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette