mirror of
https://github.com/FEX-Emu/FEX.git
synced 2025-02-13 03:02:47 +00:00
Extends PEXTRW and PINSRW unit tests
Ensures that an index past the max element is correctly masked
This commit is contained in:
parent
cef2f693a5
commit
ae7aa51b0c
73
unittests/ASM/OpSize/66_C4_2.asm
Normal file
73
unittests/ASM/OpSize/66_C4_2.asm
Normal file
@ -0,0 +1,73 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"XMM0": ["0x4142434445467778", "0x5152535455565758"],
|
||||
"XMM1": ["0x4142434477784748", "0x5152535455565758"],
|
||||
"XMM2": ["0x4142777845464748", "0x5152535455565758"],
|
||||
"XMM3": ["0x7778434445464748", "0x5152535455565758"],
|
||||
"XMM4": ["0x4142434445464748", "0x5152535455567778"],
|
||||
"XMM5": ["0x4142434445464748", "0x5152535477785758"],
|
||||
"XMM6": ["0x4142434445464748", "0x5152777855565758"],
|
||||
"XMM7": ["0x4142434445464748", "0x7778535455565758"],
|
||||
"XMM8": ["0x4142434445467778", "0x5152535455565758"],
|
||||
"XMM9": ["0x4142434477784748", "0x5152535455565758"],
|
||||
"XMM10": ["0x4142777845464748", "0x5152535455565758"],
|
||||
"XMM11": ["0x7778434445464748", "0x5152535455565758"],
|
||||
"XMM12": ["0x4142434445464748", "0x5152535455567778"],
|
||||
"XMM13": ["0x4142434445464748", "0x5152535477785758"],
|
||||
"XMM14": ["0x4142434445464748", "0x5152777855565758"],
|
||||
"XMM15": ["0x4142434445464748", "0x7778535455565758"]
|
||||
},
|
||||
"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, 0x7172737475767778
|
||||
mov [rdx + 8 * 2], 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 * 0]
|
||||
movapd xmm9, [rdx + 8 * 0]
|
||||
movapd xmm10, [rdx + 8 * 0]
|
||||
movapd xmm11, [rdx + 8 * 0]
|
||||
movapd xmm12, [rdx + 8 * 0]
|
||||
movapd xmm13, [rdx + 8 * 0]
|
||||
movapd xmm14, [rdx + 8 * 0]
|
||||
movapd xmm15, [rdx + 8 * 0]
|
||||
|
||||
pinsrw xmm0, rax, 0
|
||||
pinsrw xmm1, rax, 1
|
||||
pinsrw xmm2, rax, 2
|
||||
pinsrw xmm3, rax, 3
|
||||
pinsrw xmm4, rax, 4
|
||||
pinsrw xmm5, rax, 5
|
||||
pinsrw xmm6, rax, 6
|
||||
pinsrw xmm7, rax, 7
|
||||
|
||||
pinsrw xmm8, rax, 8
|
||||
pinsrw xmm9, rax, 9
|
||||
pinsrw xmm10, rax, 10
|
||||
pinsrw xmm11, rax, 11
|
||||
pinsrw xmm12, rax, 12
|
||||
pinsrw xmm13, rax, 13
|
||||
pinsrw xmm14, rax, 14
|
||||
pinsrw xmm15, rax, 15
|
||||
|
||||
hlt
|
62
unittests/ASM/OpSize/66_C5_2.asm
Normal file
62
unittests/ASM/OpSize/66_C5_2.asm
Normal file
@ -0,0 +1,62 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x4748",
|
||||
"RBX": "0x4546",
|
||||
"RCX": "0x4344",
|
||||
"RDX": "0x4142",
|
||||
"RBP": "0x5758",
|
||||
"RSI": "0x5556",
|
||||
"RDI": "0x5354",
|
||||
"RSP": "0x5152",
|
||||
"R8": "0x4748",
|
||||
"R9": "0x4546",
|
||||
"R10": "0x4344",
|
||||
"R11": "0x4142",
|
||||
"R12": "0x5758",
|
||||
"R13": "0x5556",
|
||||
"R14": "0x5354",
|
||||
"R15": "0x5152"
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
movapd xmm0, [rdx + 8 * 0]
|
||||
|
||||
mov rax, -1
|
||||
mov rbx, -1
|
||||
mov rcx, -1
|
||||
mov rdx, -1
|
||||
mov rbp, -1
|
||||
mov rsi, -1
|
||||
mov rdi, -1
|
||||
mov rsp, -1
|
||||
|
||||
pextrw rax, xmm0, 0
|
||||
pextrw rbx, xmm0, 1
|
||||
pextrw rcx, xmm0, 2
|
||||
pextrw rdx, xmm0, 3
|
||||
pextrw rbp, xmm0, 4
|
||||
pextrw rsi, xmm0, 5
|
||||
pextrw rdi, xmm0, 6
|
||||
pextrw rsp, xmm0, 7
|
||||
pextrw r8, xmm0, 8
|
||||
pextrw r9, xmm0, 9
|
||||
pextrw r10, xmm0, 10
|
||||
pextrw r11, xmm0, 11
|
||||
pextrw r12, xmm0, 12
|
||||
pextrw r13, xmm0, 13
|
||||
pextrw r14, xmm0, 14
|
||||
pextrw r15, xmm0, 15
|
||||
|
||||
hlt
|
46
unittests/ASM/TwoByte/0F_C4_2.asm
Normal file
46
unittests/ASM/TwoByte/0F_C4_2.asm
Normal file
@ -0,0 +1,46 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"MM0": "0x4142434445467778",
|
||||
"MM1": "0x4142434477784748",
|
||||
"MM2": "0x4142777845464748",
|
||||
"MM3": "0x7778434445464748",
|
||||
"MM4": "0x4142434445467778",
|
||||
"MM5": "0x4142434477784748",
|
||||
"MM6": "0x4142777845464748",
|
||||
"MM7": "0x7778434445464748"
|
||||
},
|
||||
"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, 0x7172737475767778
|
||||
|
||||
movq mm0, [rdx + 8 * 0]
|
||||
movq mm1, [rdx + 8 * 0]
|
||||
movq mm2, [rdx + 8 * 0]
|
||||
movq mm3, [rdx + 8 * 0]
|
||||
movq mm4, [rdx + 8 * 0]
|
||||
movq mm5, [rdx + 8 * 0]
|
||||
movq mm6, [rdx + 8 * 0]
|
||||
movq mm7, [rdx + 8 * 0]
|
||||
|
||||
pinsrw mm0, eax, 0
|
||||
pinsrw mm1, eax, 1
|
||||
pinsrw mm2, eax, 2
|
||||
pinsrw mm3, eax, 3
|
||||
pinsrw mm4, eax, 4
|
||||
pinsrw mm5, eax, 5
|
||||
pinsrw mm6, eax, 6
|
||||
pinsrw mm7, eax, 7
|
||||
|
||||
hlt
|
43
unittests/ASM/TwoByte/0F_C5_2.asm
Normal file
43
unittests/ASM/TwoByte/0F_C5_2.asm
Normal file
@ -0,0 +1,43 @@
|
||||
%ifdef CONFIG
|
||||
{
|
||||
"RegData": {
|
||||
"RAX": "0x4748",
|
||||
"RBX": "0x4546",
|
||||
"RCX": "0x4344",
|
||||
"RDX": "0x4142",
|
||||
"RSI": "0x4748",
|
||||
"RDI": "0x4546",
|
||||
"RBP": "0x4344",
|
||||
"RSP": "0x4142"
|
||||
},
|
||||
"MemoryRegions": {
|
||||
"0x100000000": "4096"
|
||||
}
|
||||
}
|
||||
%endif
|
||||
|
||||
mov rdx, 0xe0000000
|
||||
|
||||
mov rax, 0x4142434445464748
|
||||
mov [rdx + 8 * 0], rax
|
||||
mov rax, 0x5152535455565758
|
||||
mov [rdx + 8 * 1], rax
|
||||
|
||||
movq mm0, [rdx + 8 * 0]
|
||||
|
||||
mov rax, -1
|
||||
mov rbx, -1
|
||||
mov rcx, -1
|
||||
mov rdx, -1
|
||||
|
||||
pextrw eax, mm0, 0
|
||||
pextrw ebx, mm0, 1
|
||||
pextrw ecx, mm0, 2
|
||||
pextrw edx, mm0, 3
|
||||
pextrw esi, mm0, 4
|
||||
pextrw edi, mm0, 5
|
||||
pextrw ebp, mm0, 6
|
||||
pextrw esp, mm0, 7
|
||||
|
||||
|
||||
hlt
|
Loading…
x
Reference in New Issue
Block a user