Changeset 95522 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
- Timestamp:
- Jul 5, 2022 9:36:07 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r95509 r95522 3624 3624 3625 3625 ;; 3626 ; Media instruction working on two full sized registers, but no FXSAVE state argument. 3627 ; 3628 ; @param 1 The instruction 3629 ; @param 2 Whether there is an MMX variant (1) or not (0). 3630 ; 3631 ; @param A0 Pointer to the first media register size operand (input/output). 3632 ; @param A1 Pointer to the second media register size operand (input). 3633 ; 3634 %macro IEMIMPL_MEDIA_OPT_F2 2 3635 %if %2 != 0 3636 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 8 3637 PROLOGUE_2_ARGS 3638 IEMIMPL_MMX_PROLOGUE 3639 3640 movq mm0, [A0] 3641 movq mm1, [A1] 3642 %1 mm0, mm1 3643 movq [A0], mm0 3644 3645 IEMIMPL_MMX_EPILOGUE 3646 EPILOGUE_2_ARGS 3647 ENDPROC iemAImpl_ %+ %1 %+ _u64 3648 %endif 3649 3650 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 8 3651 PROLOGUE_2_ARGS 3652 IEMIMPL_SSE_PROLOGUE 3653 3654 movdqu xmm0, [A0] 3655 movdqu xmm1, [A1] 3656 %1 xmm0, xmm1 3657 movdqu [A0], xmm0 3658 3659 IEMIMPL_SSE_EPILOGUE 3660 EPILOGUE_2_ARGS 3661 ENDPROC iemAImpl_ %+ %1 %+ _u128 3662 %endmacro 3663 3664 IEMIMPL_MEDIA_OPT_F2 packsswb, 1 3665 IEMIMPL_MEDIA_OPT_F2 packssdw, 1 3666 IEMIMPL_MEDIA_OPT_F2 packuswb, 1 3667 IEMIMPL_MEDIA_OPT_F2 packusdw, 0 3668 3669 3670 ;; 3626 3671 ; Media instruction working on one full sized and one half sized register (lower half). 3627 3672 ; … … 3926 3971 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u256, 16 3927 3972 PROLOGUE_4_ARGS 3928 IEMIMPL_ SSE_PROLOGUE3973 IEMIMPL_AVX_PROLOGUE 3929 3974 3930 3975 vmovdqu ymm0, [A2] … … 3961 4006 3962 4007 4008 ;; 4009 ; Media instruction working on two full sized source registers and one destination (AVX), 4010 ; but no XSAVE state pointer argument. 4011 ; 4012 ; @param 1 The instruction 4013 ; 4014 ; @param A0 Pointer to the destination media register size operand (output). 4015 ; @param A1 Pointer to the first source media register size operand (input). 4016 ; @param A2 Pointer to the second source media register size operand (input). 4017 ; 4018 %macro IEMIMPL_MEDIA_OPT_F3 1 4019 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 12 4020 PROLOGUE_3_ARGS 4021 IEMIMPL_AVX_PROLOGUE 4022 4023 vmovdqu xmm0, [A1] 4024 vmovdqu xmm1, [A2] 4025 %1 xmm0, xmm0, xmm1 4026 vmovdqu [A0], xmm0 4027 4028 IEMIMPL_AVX_PROLOGUE 4029 EPILOGUE_3_ARGS 4030 ENDPROC iemAImpl_ %+ %1 %+ _u128 4031 4032 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u256, 12 4033 PROLOGUE_3_ARGS 4034 IEMIMPL_AVX_PROLOGUE 4035 4036 vmovdqu ymm0, [A1] 4037 vmovdqu ymm1, [A2] 4038 %1 ymm0, ymm0, ymm1 4039 vmovdqu [A0], ymm0 4040 4041 IEMIMPL_AVX_PROLOGUE 4042 EPILOGUE_3_ARGS 4043 ENDPROC iemAImpl_ %+ %1 %+ _u256 4044 %endmacro 4045 4046 IEMIMPL_MEDIA_OPT_F3 vpacksswb 4047 IEMIMPL_MEDIA_OPT_F3 vpackssdw 4048 IEMIMPL_MEDIA_OPT_F3 vpackuswb 4049 IEMIMPL_MEDIA_OPT_F3 vpackusdw 4050 4051 3963 4052 ; 3964 4053 ; The SSE 4.2 crc32
Note:
See TracChangeset
for help on using the changeset viewer.