Changeset 96454 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
- Timestamp:
- Aug 24, 2022 12:53:47 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r96438 r96454 4955 4955 IEMIMPL_MEDIA_AVX_VSHUFPX vshufps 4956 4956 IEMIMPL_MEDIA_AVX_VSHUFPX vshufpd 4957 4958 4959 ;; 4960 ; One of the [p]blendv{b,ps,pd} variants 4961 ; 4962 ; @param 1 The instruction 4963 ; 4964 ; @param A0 Pointer to the first media register sized operand (input/output). 4965 ; @param A1 Pointer to the second media sized value (input). 4966 ; @param A2 Pointer to the media register sized mask value (input). 4967 ; 4968 %macro IEMIMPL_P_BLEND 1 4969 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 16 4970 PROLOGUE_3_ARGS 4971 IEMIMPL_SSE_PROLOGUE 4972 4973 movdqu xmm0, [A2] ; This is implicit 4974 movdqu xmm1, [A0] 4975 movdqu xmm2, [A1] ; @todo Do I need to save the original value here first? 4976 %1 xmm1, xmm2 4977 movdqu [A0], xmm1 4978 4979 IEMIMPL_SSE_PROLOGUE 4980 EPILOGUE_3_ARGS 4981 ENDPROC iemAImpl_ %+ %1 %+ _u128 4982 %endmacro 4983 4984 IEMIMPL_P_BLEND pblendvb 4985 IEMIMPL_P_BLEND blendvps 4986 IEMIMPL_P_BLEND blendvpd 4987 4988 4989 ;; 4990 ; One of the v[p]blendv{b,ps,pd} variants 4991 ; 4992 ; @param 1 The instruction 4993 ; 4994 ; @param A0 Pointer to the first media register sized operand (output). 4995 ; @param A1 Pointer to the first media register sized operand (input). 4996 ; @param A2 Pointer to the second media register sized operand (input). 4997 ; @param A3 Pointer to the media register sized mask value (input); 4998 %macro IEMIMPL_AVX_P_BLEND 1 4999 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 16 5000 PROLOGUE_4_ARGS 5001 IEMIMPL_AVX_PROLOGUE 5002 5003 vmovdqu xmm0, [A1] 5004 vmovdqu xmm1, [A2] 5005 vmovdqu xmm2, [A3] 5006 %1 xmm0, xmm0, xmm1, xmm2 5007 vmovdqu [A0], xmm0 5008 5009 IEMIMPL_AVX_PROLOGUE 5010 EPILOGUE_4_ARGS 5011 ENDPROC iemAImpl_ %+ %1 %+ _u128 5012 5013 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u256, 16 5014 PROLOGUE_4_ARGS 5015 IEMIMPL_AVX_PROLOGUE 5016 5017 vmovdqu ymm0, [A1] 5018 vmovdqu ymm1, [A2] 5019 vmovdqu ymm2, [A3] 5020 %1 ymm0, ymm0, ymm1, ymm2 5021 vmovdqu [A0], ymm0 5022 5023 IEMIMPL_AVX_PROLOGUE 5024 EPILOGUE_4_ARGS 5025 ENDPROC iemAImpl_ %+ %1 %+ _u256 5026 %endmacro 5027 5028 IEMIMPL_AVX_P_BLEND vpblendvb 5029 IEMIMPL_AVX_P_BLEND vblendvps 5030 IEMIMPL_AVX_P_BLEND vblendvpd
Note:
See TracChangeset
for help on using the changeset viewer.