Changeset 97127 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Oct 13, 2022 12:45:24 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h
r96947 r97127 3762 3762 3763 3763 /** Opcode VEX.0F 0x77 - vzeroupperv vzeroallv */ 3764 FNIEMOP_STUB(iemOp_vzeroupperv__vzeroallv); 3764 FNIEMOP_DEF(iemOp_vzeroupperv__vzeroallv) 3765 { 3766 Assert(pVCpu->iem.s.uVexLength <= 1); 3767 if (pVCpu->iem.s.uVexLength == 0) 3768 { 3769 /* 3770 * 128-bit: vzeroupper 3771 */ 3772 IEMOP_MNEMONIC(vzeroupper, "vzeroupper"); 3773 IEM_MC_BEGIN(0, 0); 3774 3775 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV(); 3776 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3777 IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE(); 3778 3779 IEM_MC_CLEAR_YREG_128_UP(0); 3780 IEM_MC_CLEAR_YREG_128_UP(1); 3781 IEM_MC_CLEAR_YREG_128_UP(2); 3782 IEM_MC_CLEAR_YREG_128_UP(3); 3783 IEM_MC_CLEAR_YREG_128_UP(4); 3784 IEM_MC_CLEAR_YREG_128_UP(5); 3785 IEM_MC_CLEAR_YREG_128_UP(6); 3786 IEM_MC_CLEAR_YREG_128_UP(7); 3787 3788 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 3789 { 3790 IEM_MC_CLEAR_YREG_128_UP( 8); 3791 IEM_MC_CLEAR_YREG_128_UP( 9); 3792 IEM_MC_CLEAR_YREG_128_UP(10); 3793 IEM_MC_CLEAR_YREG_128_UP(11); 3794 IEM_MC_CLEAR_YREG_128_UP(12); 3795 IEM_MC_CLEAR_YREG_128_UP(13); 3796 IEM_MC_CLEAR_YREG_128_UP(14); 3797 IEM_MC_CLEAR_YREG_128_UP(15); 3798 } 3799 3800 IEM_MC_ADVANCE_RIP(); 3801 IEM_MC_END(); 3802 } 3803 else 3804 { 3805 /* 3806 * 256-bit: vzeroall 3807 */ 3808 IEMOP_MNEMONIC(vzeroall, "vzeroall"); 3809 IEM_MC_BEGIN(0, 1); 3810 IEM_MC_LOCAL(uint32_t, uZero); 3811 3812 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV(); 3813 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3814 IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE(); 3815 3816 IEM_MC_ASSIGN(uZero, 0); 3817 IEM_MC_STORE_YREG_U32_ZX_VLMAX(0, uZero); 3818 IEM_MC_STORE_YREG_U32_ZX_VLMAX(1, uZero); 3819 IEM_MC_STORE_YREG_U32_ZX_VLMAX(2, uZero); 3820 IEM_MC_STORE_YREG_U32_ZX_VLMAX(3, uZero); 3821 IEM_MC_STORE_YREG_U32_ZX_VLMAX(4, uZero); 3822 IEM_MC_STORE_YREG_U32_ZX_VLMAX(5, uZero); 3823 IEM_MC_STORE_YREG_U32_ZX_VLMAX(6, uZero); 3824 IEM_MC_STORE_YREG_U32_ZX_VLMAX(7, uZero); 3825 3826 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 3827 { 3828 IEM_MC_STORE_YREG_U32_ZX_VLMAX( 8, uZero); 3829 IEM_MC_STORE_YREG_U32_ZX_VLMAX( 9, uZero); 3830 IEM_MC_STORE_YREG_U32_ZX_VLMAX(10, uZero); 3831 IEM_MC_STORE_YREG_U32_ZX_VLMAX(11, uZero); 3832 IEM_MC_STORE_YREG_U32_ZX_VLMAX(12, uZero); 3833 IEM_MC_STORE_YREG_U32_ZX_VLMAX(13, uZero); 3834 IEM_MC_STORE_YREG_U32_ZX_VLMAX(14, uZero); 3835 IEM_MC_STORE_YREG_U32_ZX_VLMAX(15, uZero); 3836 } 3837 3838 IEM_MC_ADVANCE_RIP(); 3839 IEM_MC_END(); 3840 } 3841 return VINF_SUCCESS; 3842 } 3843 3844 3765 3845 /* Opcode VEX.66.0F 0x77 - invalid */ 3766 3846 /* Opcode VEX.F3.0F 0x77 - invalid */
Note:
See TracChangeset
for help on using the changeset viewer.