mirror of
https://github.com/FEX-Emu/FEX.git
synced 2024-12-04 12:43:40 +00:00
Adds a bunch of new OpSize table unit tests
This commit is contained in:
parent
a2afd684ae
commit
b9326ce613
21
unittests/ASM/OpSize/66_10.asm
Normal file
21
unittests/ASM/OpSize/66_10.asm
Normal file
@ -0,0 +1,21 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
movupd xmm0, [rdx]
|
||||
|
||||
hlt
|
28
unittests/ASM/OpSize/66_11.asm
Normal file
28
unittests/ASM/OpSize/66_11.asm
Normal file
@ -0,0 +1,28 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movupd xmm1, [rdx + 8 * 2]
|
||||
movupd [rdx + 8 * 0], xmm1
|
||||
movupd xmm0, [rdx + 8 * 0]
|
||||
|
||||
hlt
|
27
unittests/ASM/OpSize/66_12.asm
Normal file
27
unittests/ASM/OpSize/66_12.asm
Normal file
@ -0,0 +1,27 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x6162636465666768", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
|
||||
; Lower 64bits
|
||||
movlpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_13.asm
Normal file
33
unittests/ASM/OpSize/66_13.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x4142434445464748",
|
||||
"RBX": "0x0",
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
|
||||
; Lower 64bits
|
||||
movlpd [rdx + 8 * 2], xmm0
|
||||
|
||||
mov rax, [rdx + 8 * 2]
|
||||
mov rbx, [rdx + 8 * 3] ;Ensure this wasn't overwritten
|
||||
|
||||
hlt
|
29
unittests/ASM/OpSize/66_14.asm
Normal file
29
unittests/ASM/OpSize/66_14.asm
Normal file
@ -0,0 +1,29 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x6162636465666768"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
movupd xmm1, [rdx + 8 * 2]
|
||||
|
||||
unpcklpd xmm0, xmm1
|
||||
|
||||
hlt
|
29
unittests/ASM/OpSize/66_15.asm
Normal file
29
unittests/ASM/OpSize/66_15.asm
Normal file
@ -0,0 +1,29 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x5152535455565758", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
movupd xmm1, [rdx + 8 * 2]
|
||||
|
||||
unpckhpd xmm0, xmm1
|
||||
|
||||
hlt
|
28
unittests/ASM/OpSize/66_16.asm
Normal file
28
unittests/ASM/OpSize/66_16.asm
Normal file
@ -0,0 +1,28 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x6162636465666768"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
|
||||
movhpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_17.asm
Normal file
33
unittests/ASM/OpSize/66_17.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x5152535455565758",
|
||||
"RBX": "0x0",
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
; Preload
|
||||
movupd xmm0, [rdx]
|
||||
|
||||
movhpd [rdx + 8 * 2], xmm0
|
||||
|
||||
mov rax, [rdx + 8 * 2]
|
||||
mov rbx, [rdx + 8 * 3] ;Ensure this wasn't overwritten
|
||||
|
||||
|
||||
hlt
|
27
unittests/ASM/OpSize/66_28.asm
Normal file
27
unittests/ASM/OpSize/66_28.asm
Normal file
@ -0,0 +1,27 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
movapd xmm1, xmm0
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_29.asm
Normal file
33
unittests/ASM/OpSize/66_29.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x4142434445464748",
|
||||
"RBX": "0x5152535455565758",
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
movapd [rdx + 8 * 2], xmm0
|
||||
movapd xmm1, xmm0
|
||||
|
||||
mov rax, [rdx + 8 * 2]
|
||||
mov rbx, [rdx + 8 * 3]
|
||||
|
||||
hlt
|
23
unittests/ASM/OpSize/66_50.asm
Normal file
23
unittests/ASM/OpSize/66_50.asm
Normal file
@ -0,0 +1,23 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x2",
|
||||
"XMM0": ["0x0", "0x8000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x8000000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
movmskpd rax, xmm0
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_54.asm
Normal file
33
unittests/ASM/OpSize/66_54.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x1010101010101010", "0x0"],
|
||||
"XMM1": ["0x1010101010101010", "0x0"],
|
||||
"XMM2": ["0x1010101010101010", "0xFFFFFFFFFFFFFFFF"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x1010101010101010
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
andpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
andpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_55.asm
Normal file
33
unittests/ASM/OpSize/66_55.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x0", "0xFFFFFFFFFFFFFFFF"],
|
||||
"XMM1": ["0x0", "0xFFFFFFFFFFFFFFFF"],
|
||||
"XMM2": ["0x1010101010101010", "0xFFFFFFFFFFFFFFFF"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x1010101010101010
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
andnpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
andnpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_56.asm
Normal file
33
unittests/ASM/OpSize/66_56.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x1111111111111111", "0x2222222222222222"],
|
||||
"XMM1": ["0x1111111111111111", "0x2222222222222222"],
|
||||
"XMM2": ["0x0101010101010101", "0x0202020202020202"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x1010101010101010
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x2020202020202020
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x0101010101010101
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x0202020202020202
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
orpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
orpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_57.asm
Normal file
33
unittests/ASM/OpSize/66_57.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x2424242424242424", "0x2424242424242424"],
|
||||
"XMM1": ["0x2424242424242424", "0x2424242424242424"],
|
||||
"XMM2": ["0x1818181818181818", "0x1818181818181818"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x3C3C3C3C3C3C3C3C
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x3C3C3C3C3C3C3C3C
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x1818181818181818
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x1818181818181818
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
xorpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
xorpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_58.asm
Normal file
33
unittests/ASM/OpSize/66_58.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4008000000000000", "0x4008000000000000"],
|
||||
"XMM1": ["0x4008000000000000", "0x4008000000000000"],
|
||||
"XMM2": ["0x4000000000000000", "0x4000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
addpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
addpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_59.asm
Normal file
33
unittests/ASM/OpSize/66_59.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4018000000000000", "0x4018000000000000"],
|
||||
"XMM1": ["0x4018000000000000", "0x4018000000000000"],
|
||||
"XMM2": ["0x4000000000000000", "0x4000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
mulpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
mulpd xmm1, xmm2
|
||||
|
||||
hlt
|
30
unittests/ASM/OpSize/66_5A.asm
Normal file
30
unittests/ASM/OpSize/66_5A.asm
Normal file
@ -0,0 +1,30 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x404000003F800000", "0x0"],
|
||||
"XMM1": ["0x3FF0000000000000", "0x4008000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0xFFFFFFFFFFFFFFFF
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx + 8 * 2]
|
||||
movapd xmm1, [rdx]
|
||||
|
||||
cvtpd2ps xmm0, xmm1
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_5C.asm
Normal file
33
unittests/ASM/OpSize/66_5C.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x3FF0000000000000", "0x3FF0000000000000"],
|
||||
"XMM1": ["0x3FF0000000000000", "0x3FF0000000000000"],
|
||||
"XMM2": ["0x4000000000000000", "0x4000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
subpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
subpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_5D.asm
Normal file
33
unittests/ASM/OpSize/66_5D.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x3FF0000000000000", "0x4000000000000000"],
|
||||
"XMM1": ["0x3FF0000000000000", "0x4000000000000000"],
|
||||
"XMM2": ["0x3FF0000000000000", "0x4008000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
minpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
minpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_5E.asm
Normal file
33
unittests/ASM/OpSize/66_5E.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x3FE0000000000000", "0x3FE0000000000000"],
|
||||
"XMM1": ["0x3FE0000000000000", "0x3FE0000000000000"],
|
||||
"XMM2": ["0x4000000000000000", "0x4000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
divpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
divpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_5F.asm
Normal file
33
unittests/ASM/OpSize/66_5F.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4008000000000000", "0x4000000000000000"],
|
||||
"XMM1": ["0x4008000000000000", "0x4000000000000000"],
|
||||
"XMM2": ["0x3FF0000000000000", "0x4000000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x3FF0000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
maxpd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
maxpd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_60.asm
Normal file
33
unittests/ASM/OpSize/66_60.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x6545664667476848", "0x6141624263436444"],
|
||||
"XMM1": ["0x6545664667476848", "0x6141624263436444"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpcklbw xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpcklbw xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_61.asm
Normal file
33
unittests/ASM/OpSize/66_61.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x6566454667684748", "0x6162414263644344"],
|
||||
"XMM1": ["0x6566454667684748", "0x6162414263644344"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpcklwd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpcklwd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_62.asm
Normal file
33
unittests/ASM/OpSize/66_62.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x6566676845464748", "0x6162636441424344"],
|
||||
"XMM1": ["0x6566676845464748", "0x6162636441424344"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpckldq xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpckldq xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_64.asm
Normal file
33
unittests/ASM/OpSize/66_64.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM1": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM2": ["0x6162636465666768", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpgtb xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpgtb xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_65.asm
Normal file
33
unittests/ASM/OpSize/66_65.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM1": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM2": ["0x6162636465666768", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpgtw xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpgtw xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_66.asm
Normal file
33
unittests/ASM/OpSize/66_66.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM1": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM2": ["0x6162636465666768", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpgtd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpgtd xmm1, xmm2
|
||||
|
||||
hlt
|
37
unittests/ASM/OpSize/66_67.asm
Normal file
37
unittests/ASM/OpSize/66_67.asm
Normal file
@ -0,0 +1,37 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x00007F4100007F41", "0x00007F4100007F41"],
|
||||
"XMM1": ["0x00007F4100007F41", "0x00007F4100007F41"],
|
||||
"XMM2": ["0x0000FFFF007F0041", "0x0000FFFF007F0041"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
; 16bit signed -> 8bit unsigned (saturated)
|
||||
; input > 0x7F(SCHAR_MAX, 127) = 0xFF(UCHAR_MAX, 255)
|
||||
; input < 0x00(Negative) = 0x0
|
||||
|
||||
mov rax, 0x0000FFFF007F0041
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x0000FFFF007F0041
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x0000FFFF007F0041
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x0000FFFF007F0041
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
packuswb xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
packuswb xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_68.asm
Normal file
33
unittests/ASM/OpSize/66_68.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x7555765677577858", "0x7151725273537454"],
|
||||
"XMM1": ["0x7555765677577858", "0x7151725273537454"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpckhbw xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpckhbw xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_69.asm
Normal file
33
unittests/ASM/OpSize/66_69.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x7576555677785758", "0x7172515273745354"],
|
||||
"XMM1": ["0x7576555677785758", "0x7172515273745354"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpckhwd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpckhwd xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_6A.asm
Normal file
33
unittests/ASM/OpSize/66_6A.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x7576777855565758", "0x7172737451525354"],
|
||||
"XMM1": ["0x7576777855565758", "0x7172737451525354"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpckhdq xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpckhdq xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_6C.asm
Normal file
33
unittests/ASM/OpSize/66_6C.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x6162636465666768"],
|
||||
"XMM1": ["0x4142434445464748", "0x6162636465666768"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpcklqdq xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpcklqdq xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_6D.asm
Normal file
33
unittests/ASM/OpSize/66_6D.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x5152535455565758", "0x7172737475767778"],
|
||||
"XMM1": ["0x5152535455565758", "0x7172737475767778"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
punpckhqdq xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
punpckhqdq xmm1, xmm2
|
||||
|
||||
hlt
|
35
unittests/ASM/OpSize/66_6E.asm
Normal file
35
unittests/ASM/OpSize/66_6E.asm
Normal file
@ -0,0 +1,35 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x45464748", "0x0"],
|
||||
"XMM1": ["0x5152535455565758", "0x0"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 4], rax
|
||||
mov [rdx + 8 * 5], rax
|
||||
|
||||
movaps xmm2, [rdx + 8 * 2]
|
||||
movaps xmm3, [rdx + 8 * 3]
|
||||
|
||||
movd xmm0, dword [rdx + 8 * 0]
|
||||
; AMD's Architecture programmer's manual claims this mnemonic is still movd, but compilers only accept movq
|
||||
movq xmm1, qword [rdx + 8 * 1]
|
||||
hlt
|
32
unittests/ASM/OpSize/66_6F.asm
Normal file
32
unittests/ASM/OpSize/66_6F.asm
Normal file
@ -0,0 +1,32 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x6162636465666768", "0x7172737475767778"],
|
||||
"XMM2": ["0x6162636465666768", "0x7172737475767778"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movdqa xmm0, [rdx + 8 * 0]
|
||||
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
|
||||
movdqa xmm1, xmm2
|
||||
|
||||
hlt
|
32
unittests/ASM/OpSize/66_70.asm
Normal file
32
unittests/ASM/OpSize/66_70.asm
Normal file
@ -0,0 +1,32 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x6162636465666768", "0x7172737475767778"],
|
||||
"XMM2": ["0x4546474845464748", "0x4546474845464748"],
|
||||
"XMM3": ["0x5152535451525354", "0x5152535451525354"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
movapd xmm1, [rdx + 8 * 2]
|
||||
pshufd xmm2, xmm0, 0x0
|
||||
pshufd xmm3, xmm0, 0xFF
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_74.asm
Normal file
33
unittests/ASM/OpSize/66_74.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x00000000000000FF", "0x00000000000000FF"],
|
||||
"XMM1": ["0x00000000000000FF", "0x00000000000000FF"],
|
||||
"XMM2": ["0x6162636465666778", "0x5152535455565748"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666778
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455565748
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpeqb xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpeqb xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_75.asm
Normal file
33
unittests/ASM/OpSize/66_75.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x000000000000FFFF", "0x000000000000FFFF"],
|
||||
"XMM1": ["0x000000000000FFFF", "0x000000000000FFFF"],
|
||||
"XMM2": ["0x6162636465667778", "0x5152535455564748"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465667778
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x5152535455564748
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpeqw xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpeqw xmm1, xmm2
|
||||
|
||||
hlt
|
33
unittests/ASM/OpSize/66_76.asm
Normal file
33
unittests/ASM/OpSize/66_76.asm
Normal file
@ -0,0 +1,33 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x00000000FFFFFFFF", "0x00000000FFFFFFFF"],
|
||||
"XMM1": ["0x00000000FFFFFFFF", "0x00000000FFFFFFFF"],
|
||||
"XMM2": ["0x61626364FFFFFFFF", "0x51525354FFFFFFFF"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x71727374FFFFFFFF
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x41424344FFFFFFFF
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x61626364FFFFFFFF
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x51525354FFFFFFFF
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx]
|
||||
pcmpeqd xmm0, [rdx + 8 * 2]
|
||||
|
||||
movapd xmm1, [rdx]
|
||||
movapd xmm2, [rdx + 8 * 2]
|
||||
pcmpeqd xmm1, xmm2
|
||||
|
||||
hlt
|
44
unittests/ASM/OpSize/66_7E.asm
Normal file
44
unittests/ASM/OpSize/66_7E.asm
Normal file
@ -0,0 +1,44 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x65666768",
|
||||
"RBX": "0x6162636465666768",
|
||||
"RCX": "0x75767778",
|
||||
"RSI": "0x7172737475767778"
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x6162636465666768
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x7172737475767778
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
mov rax, 0x0
|
||||
mov [rdx + 8 * 4], rax
|
||||
mov [rdx + 8 * 5], rax
|
||||
|
||||
movaps xmm2, [rdx + 8 * 2]
|
||||
movaps xmm3, [rdx + 8 * 3]
|
||||
|
||||
movd dword [rdx + 8 * 4], xmm2
|
||||
; AMD's Architecture programmer's manual claims this mnemonic is still movd, but compilers only accept movq
|
||||
movq qword [rdx + 8 * 5], xmm2
|
||||
|
||||
mov rax, [rdx + 8 * 4]
|
||||
mov rbx, [rdx + 8 * 5]
|
||||
|
||||
movd ecx, xmm3
|
||||
movq rsi, xmm3
|
||||
|
||||
hlt
|
32
unittests/ASM/OpSize/66_7F.asm
Normal file
32
unittests/ASM/OpSize/66_7F.asm
Normal file
@ -0,0 +1,32 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM1": ["0x4142434445464748", "0x5152535455565758"],
|
||||
"XMM2": ["0x4142434445464748", "0x5152535455565758"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx + 8 * 0]
|
||||
movdqa [rdx + 8 * 2], xmm0
|
||||
movapd xmm1, [rdx + 8 * 2]
|
||||
|
||||
movdqa xmm2, xmm0
|
||||
|
||||
hlt
|
51
unittests/ASM/OpSize/66_C2.asm
Normal file
51
unittests/ASM/OpSize/66_C2.asm
Normal file
@ -0,0 +1,51 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM1": ["0x0", "0xFFFFFFFFFFFFFFFF"],
|
||||
"XMM2": ["0xFFFFFFFFFFFFFFFF", "0xFFFFFFFFFFFFFFFF"],
|
||||
"XMM3": ["0x3ff0000000000000", "0x4000000000000000"],
|
||||
"XMM4": ["0x0", "0xFFFFFFFFFFFFFFFF"],
|
||||
"XMM5": ["0xFFFFFFFFFFFFFFFF", "0x0"],
|
||||
"XMM6": ["0x0", "0x0"],
|
||||
"XMM7": ["0x3ff0000000000000", "0x4000000000000000"],
|
||||
"XMM8": ["0x3ff0000000000000", "0x4008000000000000"]
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x3ff0000000000000
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x4000000000000000
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
mov rax, 0x3ff0000000000000
|
||||
mov [rdx + 8 * 2], rax
|
||||
mov rax, 0x4008000000000000
|
||||
mov [rdx + 8 * 3], rax
|
||||
|
||||
movapd xmm0, [rdx + 8 * 0]
|
||||
movapd xmm1, [rdx + 8 * 0]
|
||||
movapd xmm2, [rdx + 8 * 0]
|
||||
movapd xmm3, [rdx + 8 * 0]
|
||||
movapd xmm4, [rdx + 8 * 0]
|
||||
movapd xmm5, [rdx + 8 * 0]
|
||||
movapd xmm6, [rdx + 8 * 0]
|
||||
movapd xmm7, [rdx + 8 * 0]
|
||||
movapd xmm8, [rdx + 8 * 2]
|
||||
|
||||
cmppd xmm0, xmm8, 0x00 ; EQ
|
||||
cmppd xmm1, xmm8, 0x01 ; LT
|
||||
cmppd xmm2, xmm8, 0x02 ; LTE
|
||||
;cmppd xmm3, xmm8, 0x03 ; Unordered
|
||||
cmppd xmm4, xmm8, 0x04 ; NEQ
|
||||
cmppd xmm5, xmm8, 0x05 ; NLT
|
||||
cmppd xmm6, xmm8, 0x06 ; NLTE
|
||||
;cmppd xmm7, xmm8, 0x07 ; Ordered
|
||||
|
||||
hlt
|
Loading…
Reference in New Issue
Block a user