Adds a bunch of new OpSize table unit tests

This commit is contained in:
Ryan Houdek 2020-03-03 21:31:32 -08:00 committed by Stefanos Kornilios Mitsis Poiitidis
parent a2afd684ae
commit b9326ce613
43 changed files with 1396 additions and 0 deletions

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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