diff --git a/unittests/ASM/X87/invalid_fist_nan_16bit.asm b/unittests/ASM/X87/invalid_fist_nan_16bit.asm new file mode 100644 index 000000000..7cff4fc0a --- /dev/null +++ b/unittests/ASM/X87/invalid_fist_nan_16bit.asm @@ -0,0 +1,24 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "1", + "RBX": "0x8000" + } +} +%endif + +fldz +fldz +fdiv + +fistp word [rel .dummy] + +fstsw ax +and rax, 1 + +movzx ebx, word [rel .dummy] + +hlt + +align 4096 +.dummy: dw 0 diff --git a/unittests/ASM/X87/invalid_fist_nan_32bit.asm b/unittests/ASM/X87/invalid_fist_nan_32bit.asm new file mode 100644 index 000000000..e6e5f8f2b --- /dev/null +++ b/unittests/ASM/X87/invalid_fist_nan_32bit.asm @@ -0,0 +1,24 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "1", + "RBX": "0x80000000" + } +} +%endif + +fldz +fldz +fdiv + +fistp dword [rel .dummy] + +fstsw ax +and rax, 1 + +mov ebx, dword [rel .dummy] + +hlt + +align 4096 +.dummy: dd 0 diff --git a/unittests/ASM/X87/invalid_fist_nan_64bit.asm b/unittests/ASM/X87/invalid_fist_nan_64bit.asm new file mode 100644 index 000000000..d0bd90b52 --- /dev/null +++ b/unittests/ASM/X87/invalid_fist_nan_64bit.asm @@ -0,0 +1,24 @@ +%ifdef CONFIG +{ + "RegData": { + "RAX": "1", + "RBX": "0x8000000000000000" + } +} +%endif + +fldz +fldz +fdiv + +fistp qword [rel .dummy] + +fstsw ax +and rax, 1 + +mov rbx, qword [rel .dummy] + +hlt + +align 4096 +.dummy: dq 0 diff --git a/unittests/ASM/X87/invalid_fist_overflow_16bit.asm b/unittests/ASM/X87/invalid_fist_overflow_16bit.asm index b36ed68e3..38cb21c4d 100644 --- a/unittests/ASM/X87/invalid_fist_overflow_16bit.asm +++ b/unittests/ASM/X87/invalid_fist_overflow_16bit.asm @@ -1,7 +1,8 @@ %ifdef CONFIG { "RegData": { - "RAX": "1" + "RAX": "1", + "RBX": "0x8000" } } %endif @@ -21,6 +22,8 @@ fistp word [rel .dummy] fstsw ax and rax, 1 +movzx ebx, word [rel .dummy] + hlt align 4096 diff --git a/unittests/ASM/X87/invalid_fist_overflow_32bit.asm b/unittests/ASM/X87/invalid_fist_overflow_32bit.asm index 5aa534304..467c96116 100644 --- a/unittests/ASM/X87/invalid_fist_overflow_32bit.asm +++ b/unittests/ASM/X87/invalid_fist_overflow_32bit.asm @@ -1,7 +1,8 @@ %ifdef CONFIG { "RegData": { - "RAX": "1" + "RAX": "1", + "RBX": "0x80000000" } } %endif @@ -21,6 +22,8 @@ fistp dword [rel .dummy] fstsw ax and rax, 1 +mov ebx, dword [rel .dummy] + hlt align 4096 diff --git a/unittests/ASM/X87/invalid_fist_overflow_64bit.asm b/unittests/ASM/X87/invalid_fist_overflow_64bit.asm index e0980e0da..17d904b6d 100644 --- a/unittests/ASM/X87/invalid_fist_overflow_64bit.asm +++ b/unittests/ASM/X87/invalid_fist_overflow_64bit.asm @@ -1,7 +1,8 @@ %ifdef CONFIG { "RegData": { - "RAX": "1" + "RAX": "1", + "RBX": "0x8000000000000000" } } %endif @@ -21,6 +22,8 @@ fistp qword [rel .dummy] fstsw ax and rax, 1 +mov rbx, qword [rel .dummy] + hlt align 4096