test.h
Go to the documentation of this file.
1 //
2 // Bareflank Hypervisor
3 //
4 // Copyright (C) 2015 Assured Information Security, Inc.
5 // Author: Rian Quinn <quinnr@ainfosec.com>
6 // Author: Brendan Kerrigan <kerriganb@ainfosec.com>
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Lesser General Public
10 // License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 
22 #ifndef TEST_H
23 #define TEST_H
24 
25 #include <unittest.h>
26 
27 class intrinsics_ut : public unittest
28 {
29 public:
30 
31  intrinsics_ut();
32  ~intrinsics_ut() override = default;
33 
34 protected:
35 
36  bool init() override;
37  bool fini() override;
38  bool list() override;
39 
40 private:
41 
42  void test_gdt_reg_set_get();
43  void test_gdt_reg_base_set_get();
44  void test_gdt_reg_limit_set_get();
45  void test_gdt_constructor_no_size();
46  void test_gdt_constructor_zero_size();
47  void test_gdt_constructor_size();
48  void test_gdt_base();
49  void test_gdt_limit();
50  void test_gdt_set_base_zero_index();
51  void test_gdt_set_base_invalid_index();
52  void test_gdt_set_base_tss_at_end_of_gdt();
53  void test_gdt_set_base_descriptor_success();
54  void test_gdt_set_base_tss_success();
55  void test_gdt_base_zero_index();
56  void test_gdt_base_invalid_index();
57  void test_gdt_base_tss_at_end_of_gdt();
58  void test_gdt_base_descriptor_success();
59  void test_gdt_base_tss_success();
60  void test_gdt_set_limit_zero_index();
61  void test_gdt_set_limit_invalid_index();
62  void test_gdt_set_limit_descriptor_success();
63  void test_gdt_limit_zero_index();
64  void test_gdt_limit_invalid_index();
65  void test_gdt_limit_descriptor_success();
66  void test_gdt_limit_descriptor_in_bytes_success();
67  void test_gdt_set_access_rights_zero_index();
68  void test_gdt_set_access_rights_invalid_index();
69  void test_gdt_set_access_rights_descriptor_success();
70  void test_gdt_access_rights_zero_index();
71  void test_gdt_access_rights_invalid_index();
72  void test_gdt_access_rights_descriptor_success();
73 
74  void test_idt_reg_set_get();
75  void test_idt_reg_base_set_get();
76  void test_idt_reg_limit_set_get();
77  void test_idt_constructor_no_size();
78  void test_idt_constructor_zero_size();
79  void test_idt_constructor_size();
80  void test_idt_base();
81  void test_idt_limit();
82 
83  void test_general_msr_access();
84  void test_ia32_feature_control();
85  void test_ia32_feature_control_lock_bit();
86  void test_ia32_feature_control_enable_vmx_inside_smx();
87  void test_ia32_feature_control_enable_vmx_outside_smx();
88  void test_ia32_feature_control_senter_local_function_enables();
89  void test_ia32_feature_control_senter_gloabl_function_enable();
90  void test_ia32_feature_control_sgx_launch_control_enable();
91  void test_ia32_feature_control_sgx_global_enable();
92  void test_ia32_feature_control_lmce();
93  void test_ia32_sysenter_cs();
94  void test_ia32_sysenter_esp();
95  void test_ia32_sysenter_eip();
96  void test_ia32_debugctl();
97  void test_ia32_debugctl_lbr();
98  void test_ia32_debugctl_btf();
99  void test_ia32_debugctl_tr();
100  void test_ia32_debugctl_bts();
101  void test_ia32_debugctl_btint();
102  void test_ia32_debugctl_bt_off_os();
103  void test_ia32_debugctl_bt_off_user();
104  void test_ia32_debugctl_freeze_lbrs_on_pmi();
105  void test_ia32_debugctl_freeze_perfmon_on_pmi();
106  void test_ia32_debugctl_enable_uncore_pmi();
107  void test_ia32_debugctl_freeze_while_smm();
108  void test_ia32_debugctl_rtm_debug();
109  void test_ia32_debugctl_reserved();
110  void test_ia32_pat();
111  void test_ia32_pat_pa0();
112  void test_ia32_pat_pa1();
113  void test_ia32_pat_pa2();
114  void test_ia32_pat_pa3();
115  void test_ia32_pat_pa4();
116  void test_ia32_pat_pa5();
117  void test_ia32_pat_pa6();
118  void test_ia32_pat_pa7();
119  void test_ia32_pat_pa();
120  void test_ia32_perf_global_ctrl();
121  void test_ia32_perf_global_ctrl_pmc0();
122  void test_ia32_perf_global_ctrl_pmc1();
123  void test_ia32_perf_global_ctrl_pmc2();
124  void test_ia32_perf_global_ctrl_pmc3();
125  void test_ia32_perf_global_ctrl_pmc4();
126  void test_ia32_perf_global_ctrl_pmc5();
127  void test_ia32_perf_global_ctrl_pmc6();
128  void test_ia32_perf_global_ctrl_pmc7();
129  void test_ia32_perf_global_ctrl_fixed_ctr0();
130  void test_ia32_perf_global_ctrl_fixed_ctr1();
131  void test_ia32_perf_global_ctrl_fixed_ctr2();
132  void test_ia32_vmx_basic();
133  void test_ia32_vmx_basic_revision_id();
134  void test_ia32_vmx_basic_vmxon_vmcs_region_size();
135  void test_ia32_vmx_basic_physical_address_width();
136  void test_ia32_vmx_basic_dual_monitor_mode_support();
137  void test_ia32_vmx_basic_memory_type();
138  void test_ia32_vmx_basic_ins_outs_exit_information();
139  void test_ia32_vmx_basic_true_based_controls();
140  void test_ia32_vmx_misc();
141  void test_ia32_vmx_misc_preemption_timer_decrement();
142  void test_ia32_vmx_misc_store_efer_lma_on_vm_exit();
143  void test_ia32_vmx_misc_activity_state_hlt_support();
144  void test_ia32_vmx_misc_activity_state_shutdown_support();
145  void test_ia32_vmx_misc_activity_state_wait_for_sipi_support();
146  void test_ia32_vmx_misc_processor_trace_support();
147  void test_ia32_vmx_misc_rdmsr_in_smm_support();
148  void test_ia32_vmx_misc_cr3_targets();
149  void test_ia32_vmx_misc_max_num_msr_load_store_on_exit();
150  void test_ia32_vmx_misc_vmxoff_blocked_smi_support();
151  void test_ia32_vmx_misc_vmwrite_all_fields_support();
152  void test_ia32_vmx_misc_injection_with_instruction_length_of_zero();
153  void test_ia32_vmx_cr0_fixed0();
154  void test_ia32_vmx_cr0_fixed1();
155  void test_ia32_vmx_cr4_fixed0();
156  void test_ia32_vmx_cr4_fixed1();
157  void test_ia32_vmx_procbased_ctls2();
158  void test_ia32_vmx_procbased_ctls2_virtualize_apic_accesses();
159  void test_ia32_vmx_procbased_ctls2_enable_ept();
160  void test_ia32_vmx_procbased_ctls2_descriptor_table_exiting();
161  void test_ia32_vmx_procbased_ctls2_enable_rdtscp();
162  void test_ia32_vmx_procbased_ctls2_virtualize_x2apic_mode();
163  void test_ia32_vmx_procbased_ctls2_enable_vpid();
164  void test_ia32_vmx_procbased_ctls2_wbinvd_exiting();
165  void test_ia32_vmx_procbased_ctls2_unrestricted_guest();
166  void test_ia32_vmx_procbased_ctls2_apic_register_virtualization();
167  void test_ia32_vmx_procbased_ctls2_virtual_interrupt_delivery();
168  void test_ia32_vmx_procbased_ctls2_pause_loop_exiting();
169  void test_ia32_vmx_procbased_ctls2_rdrand_exiting();
170  void test_ia32_vmx_procbased_ctls2_enable_invpcid();
171  void test_ia32_vmx_procbased_ctls2_enable_vm_functions();
172  void test_ia32_vmx_procbased_ctls2_vmcs_shadowing();
173  void test_ia32_vmx_procbased_ctls2_rdseed_exiting();
174  void test_ia32_vmx_procbased_ctls2_enable_pml();
175  void test_ia32_vmx_procbased_ctls2_ept_violation_ve();
176  void test_ia32_vmx_procbased_ctls2_enable_xsaves_xrstors();
177  void test_ia32_vmx_ept_vpid_cap();
178  void test_ia32_vmx_ept_vpid_cap_execute_only_translation();
179  void test_ia32_vmx_ept_vpid_cap_page_walk_length_of_4();
180  void test_ia32_vmx_ept_vpid_cap_memory_type_uncacheable_supported();
181  void test_ia32_vmx_ept_vpid_cap_memory_type_write_back_supported();
182  void test_ia32_vmx_ept_vpid_cap_pde_2mb_support();
183  void test_ia32_vmx_ept_vpid_cap_pdpte_1gb_support();
184  void test_ia32_vmx_ept_vpid_cap_invept_support();
185  void test_ia32_vmx_ept_vpid_cap_accessed_dirty_support();
186  void test_ia32_vmx_ept_vpid_cap_invept_single_context_support();
187  void test_ia32_vmx_ept_vpid_cap_invept_all_context_support();
188  void test_ia32_vmx_ept_vpid_cap_invvpid_support();
189  void test_ia32_vmx_ept_vpid_cap_invvpid_individual_address_support();
190  void test_ia32_vmx_ept_vpid_cap_invvpid_single_context_support();
191  void test_ia32_vmx_ept_vpid_cap_invvpid_all_context_support();
192  void test_ia32_vmx_ept_vpid_cap_invvpid_single_context_retaining_globals_support();
193  void test_ia32_vmx_true_pinbased_ctls();
194  void test_ia32_vmx_true_pinbased_ctls_external_interrupt_exiting();
195  void test_ia32_vmx_true_pinbased_ctls_nmi_exiting();
196  void test_ia32_vmx_true_pinbased_ctls_virtual_nmis();
197  void test_ia32_vmx_true_pinbased_ctls_activate_vmx_preemption_timer();
198  void test_ia32_vmx_true_pinbased_ctls_process_posted_interrupts();
199  void test_ia32_vmx_true_procbased_ctls();
200  void test_ia32_vmx_true_procbased_ctls_interrupt_window_exiting();
201  void test_ia32_vmx_true_procbased_ctls_use_tsc_offsetting();
202  void test_ia32_vmx_true_procbased_ctls_hlt_exiting();
203  void test_ia32_vmx_true_procbased_ctls_invlpg_exiting();
204  void test_ia32_vmx_true_procbased_ctls_mwait_exiting();
205  void test_ia32_vmx_true_procbased_ctls_rdpmc_exiting();
206  void test_ia32_vmx_true_procbased_ctls_rdtsc_exiting();
207  void test_ia32_vmx_true_procbased_ctls_cr3_load_exiting();
208  void test_ia32_vmx_true_procbased_ctls_cr3_store_exiting();
209  void test_ia32_vmx_true_procbased_ctls_cr8_load_exiting();
210  void test_ia32_vmx_true_procbased_ctls_cr8_store_exiting();
211  void test_ia32_vmx_true_procbased_ctls_use_tpr_shadow();
212  void test_ia32_vmx_true_procbased_ctls_nmi_window_exiting();
213  void test_ia32_vmx_true_procbased_ctls_mov_dr_exiting();
214  void test_ia32_vmx_true_procbased_ctls_unconditional_io_exiting();
215  void test_ia32_vmx_true_procbased_ctls_use_io_bitmaps();
216  void test_ia32_vmx_true_procbased_ctls_monitor_trap_flag();
217  void test_ia32_vmx_true_procbased_ctls_use_msr_bitmap();
218  void test_ia32_vmx_true_procbased_ctls_monitor_exiting();
219  void test_ia32_vmx_true_procbased_ctls_pause_exiting();
220  void test_ia32_vmx_true_procbased_ctls_activate_secondary_controls();
221  void test_ia32_vmx_true_exit_ctls();
222  void test_ia32_vmx_true_exit_ctls_save_debug_controls();
223  void test_ia32_vmx_true_exit_ctls_host_address_space_size();
224  void test_ia32_vmx_true_exit_ctls_load_ia32_perf_global_ctrl();
225  void test_ia32_vmx_true_exit_ctls_acknowledge_interrupt_on_exit();
226  void test_ia32_vmx_true_exit_ctls_save_ia32_pat();
227  void test_ia32_vmx_true_exit_ctls_load_ia32_pat();
228  void test_ia32_vmx_true_exit_ctls_save_ia32_efer();
229  void test_ia32_vmx_true_exit_ctls_load_ia32_efer();
230  void test_ia32_vmx_true_exit_ctls_save_vmx_preemption_timer_value();
231  void test_ia32_vmx_true_exit_ctls_clear_ia32_bndcfgs();
232  void test_ia32_vmx_true_entry_ctls();
233  void test_ia32_vmx_true_entry_ctls_load_debug_controls();
234  void test_ia32_vmx_true_entry_ctls_ia_32e_mode_guest();
235  void test_ia32_vmx_true_entry_ctls_entry_to_smm();
236  void test_ia32_vmx_true_entry_ctls_deactivate_dual_monitor_treatment();
237  void test_ia32_vmx_true_entry_ctls_load_ia32_perf_global_ctrl();
238  void test_ia32_vmx_true_entry_ctls_load_ia32_pat();
239  void test_ia32_vmx_true_entry_ctls_load_ia32_efer();
240  void test_ia32_vmx_true_entry_ctls_load_ia32_bndcfgs();
241  void test_ia32_vmx_vmfunc();
242  void test_ia32_vmx_vmfunc_eptp_switching();
243  void test_ia32_efer();
244  void test_ia32_efer_sce();
245  void test_ia32_efer_lme();
246  void test_ia32_efer_lma();
247  void test_ia32_efer_nxe();
248  void test_ia32_efer_reserved();
249  void test_ia32_fs_base();
250  void test_ia32_gs_base();
251 
252  void test_rflags_x64();
253  void test_rflags_x64_carry_flag();
254  void test_rflags_x64_parity_flag();
255  void test_rflags_x64_auxiliary_carry_flag();
256  void test_rflags_x64_zero_flag();
257  void test_rflags_x64_sign_flag();
258  void test_rflags_x64_trap_flag();
259  void test_rflags_x64_interrupt_enable_flag();
260  void test_rflags_x64_direction_flag();
261  void test_rflags_x64_overflow_flag();
262  void test_rflags_x64_privilege_level();
263  void test_rflags_x64_nested_task();
264  void test_rflags_x64_resume_flag();
265  void test_rflags_x64_virtual_8086_mode();
266  void test_rflags_x64_alignment_check_access_control();
267  void test_rflags_x64_virtual_interupt_flag();
268  void test_rflags_x64_virtual_interupt_pending();
269  void test_rflags_x64_id_flag();
270  void test_rflags_x64_reserved();
271  void test_rflags_x64_always_disabled();
272  void test_rflags_x64_always_enabled();
273 
274  void test_cr0_intel_x64();
275  void test_cr0_intel_x64_protection_enable();
276  void test_cr0_intel_x64_monitor_coprocessor();
277  void test_cr0_intel_x64_emulation();
278  void test_cr0_intel_x64_task_switched();
279  void test_cr0_intel_x64_extension_type();
280  void test_cr0_intel_x64_numeric_error();
281  void test_cr0_intel_x64_write_protect();
282  void test_cr0_intel_x64_alignment_mask();
283  void test_cr0_intel_x64_not_write_through();
284  void test_cr0_intel_x64_cache_disable();
285  void test_cr0_intel_x64_paging();
286  void test_cr2_intel_x64();
287  void test_cr3_intel_x64();
288  void test_cr4_intel_x64();
289  void test_cr4_intel_x64_v8086_mode_extensions();
290  void test_cr4_intel_x64_protected_mode_virtual_interrupts();
291  void test_cr4_intel_x64_time_stamp_disable();
292  void test_cr4_intel_x64_debugging_extensions();
293  void test_cr4_intel_x64_page_size_extensions();
294  void test_cr4_intel_x64_physical_address_extensions();
295  void test_cr4_intel_x64_machine_check_enable();
296  void test_cr4_intel_x64_page_global_enable();
297  void test_cr4_intel_x64_performance_monitor_counter_enable();
298  void test_cr4_intel_x64_osfxsr();
299  void test_cr4_intel_x64_osxmmexcpt();
300  void test_cr4_intel_x64_vmx_enable_bit();
301  void test_cr4_intel_x64_smx_enable_bit();
302  void test_cr4_intel_x64_fsgsbase_enable_bit();
303  void test_cr4_intel_x64_pcid_enable_bit();
304  void test_cr4_intel_x64_osxsave();
305  void test_cr4_intel_x64_smep_enable_bit();
306  void test_cr4_intel_x64_smap_enable_bit();
307  void test_cr4_intel_x64_protection_key_enable_bit();
308 
309  void test_srs_x64_es();
310  void test_srs_x64_es_rpl();
311  void test_srs_x64_es_ti();
312  void test_srs_x64_es_index();
313  void test_srs_x64_cs();
314  void test_srs_x64_cs_rpl();
315  void test_srs_x64_cs_ti();
316  void test_srs_x64_cs_index();
317  void test_srs_x64_ss();
318  void test_srs_x64_ss_rpl();
319  void test_srs_x64_ss_ti();
320  void test_srs_x64_ss_index();
321  void test_srs_x64_ds();
322  void test_srs_x64_ds_rpl();
323  void test_srs_x64_ds_ti();
324  void test_srs_x64_ds_index();
325  void test_srs_x64_fs();
326  void test_srs_x64_fs_rpl();
327  void test_srs_x64_fs_ti();
328  void test_srs_x64_fs_index();
329  void test_srs_x64_gs();
330  void test_srs_x64_gs_rpl();
331  void test_srs_x64_gs_ti();
332  void test_srs_x64_gs_index();
333  void test_srs_x64_ldtr();
334  void test_srs_x64_ldtr_rpl();
335  void test_srs_x64_ldtr_ti();
336  void test_srs_x64_ldtr_index();
337  void test_srs_x64_tr();
338  void test_srs_x64_tr_rpl();
339  void test_srs_x64_tr_ti();
340  void test_srs_x64_tr_index();
341 
342  void test_portio_x64_byte();
343  void test_portio_x64_word();
344  void test_portio_x64_doubleword();
345 
346  void test_vmx_intel_x64_vmxon_nullptr();
347  void test_vmx_intel_x64_vmxon_failure();
348  void test_vmx_intel_x64_vmxon_success();
349  void test_vmx_intel_x64_vmxoff_failure();
350  void test_vmx_intel_x64_vmxoff_success();
351  void test_vmx_intel_x64_vmclear_nullptr();
352  void test_vmx_intel_x64_vmclear_failure();
353  void test_vmx_intel_x64_vmclear_success();
354  void test_vmx_intel_x64_vmload_nullptr();
355  void test_vmx_intel_x64_vmload_failure();
356  void test_vmx_intel_x64_vmload_success();
357  void test_vmx_intel_x64_vmreset_nullptr();
358  void test_vmx_intel_x64_vmreset_failure();
359  void test_vmx_intel_x64_vmreset_success();
360  void test_vmx_intel_x64_vmread_failure();
361  void test_vmx_intel_x64_vmwrite_failure();
362  void test_vmx_intel_x64_vmread_vmwrite_succcess();
363  void test_vmx_intel_x64_vmlaunch_demote_failure();
364  void test_vmx_intel_x64_vmlaunch_demote_success();
365  void test_vmx_intel_x64_invept();
366  void test_vmx_intel_x64_invvpid();
367 
368  void test_cpuid_x64_cpuid();
369  void test_cpuid_x64_cpuid_eax();
370  void test_cpuid_x64_cpuid_ebx();
371  void test_cpuid_x64_cpuid_ecx();
372  void test_cpuid_x64_cpuid_edx();
373  void test_cpuid_x64_cpuid_addr_size_phys();
374  void test_cpuid_x64_cpuid_addr_size_linear();
375  void test_cpuid_x64_cpuid_feature_information_ecx_sse3();
376  void test_cpuid_x64_cpuid_feature_information_ecx_pclmulqdq();
377  void test_cpuid_x64_cpuid_feature_information_ecx_dtes64();
378  void test_cpuid_x64_cpuid_feature_information_ecx_monitor();
379  void test_cpuid_x64_cpuid_feature_information_ecx_ds_cpl();
380  void test_cpuid_x64_cpuid_feature_information_ecx_vmx();
381  void test_cpuid_x64_cpuid_feature_information_ecx_smx();
382  void test_cpuid_x64_cpuid_feature_information_ecx_eist();
383  void test_cpuid_x64_cpuid_feature_information_ecx_tm2();
384  void test_cpuid_x64_cpuid_feature_information_ecx_ssse3();
385  void test_cpuid_x64_cpuid_feature_information_ecx_cnxt_id();
386  void test_cpuid_x64_cpuid_feature_information_ecx_sdbg();
387  void test_cpuid_x64_cpuid_feature_information_ecx_fma();
388  void test_cpuid_x64_cpuid_feature_information_ecx_cmpxchg16b();
389  void test_cpuid_x64_cpuid_feature_information_ecx_xtpr_update_control();
390  void test_cpuid_x64_cpuid_feature_information_ecx_pdcm();
391  void test_cpuid_x64_cpuid_feature_information_ecx_pcid();
392  void test_cpuid_x64_cpuid_feature_information_ecx_dca();
393  void test_cpuid_x64_cpuid_feature_information_ecx_sse41();
394  void test_cpuid_x64_cpuid_feature_information_ecx_sse42();
395  void test_cpuid_x64_cpuid_feature_information_ecx_x2apic();
396  void test_cpuid_x64_cpuid_feature_information_ecx_movbe();
397  void test_cpuid_x64_cpuid_feature_information_ecx_popcnt();
398  void test_cpuid_x64_cpuid_feature_information_ecx_tsc_deadline();
399  void test_cpuid_x64_cpuid_feature_information_ecx_aesni();
400  void test_cpuid_x64_cpuid_feature_information_ecx_xsave();
401  void test_cpuid_x64_cpuid_feature_information_ecx_osxsave();
402  void test_cpuid_x64_cpuid_feature_information_ecx_avx();
403  void test_cpuid_x64_cpuid_feature_information_ecx_f16c();
404  void test_cpuid_x64_cpuid_feature_information_ecx_rdrand();
405  void test_cpuid_x64_cpuid_feature_information_ecx_dump();
406  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_fsgsbase();
407  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_ia32_tsc_adjust();
408  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_sgx();
409  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_bmi1();
410  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_hle();
411  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_avx2();
412  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_fdp_excptn_only();
413  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_smep();
414  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_bmi2();
415  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_enhanced_rep();
416  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_invpcid();
417  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rtm();
418  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdt_m();
419  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_depreciated_fpu_cs_ds();
420  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_mpx();
421  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdt_a();
422  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_rdseed();
423  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_adx();
424  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_smap();
425  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_clflushopt();
426  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_clwb();
427  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_processor_trace();
428  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_sha();
429  void test_cpuid_x64_cpuid_extended_feature_flags_subleaf0_ebx_dump();
430  void test_cpuid_x64_cpuid_arch_perf_monitoring_eax_version_id();
431  void test_cpuid_x64_cpuid_arch_perf_monitoring_eax_gppmc_count();
432  void test_cpuid_x64_cpuid_arch_perf_monitoring_eax_gppmc_bit_width();
433  void test_cpuid_x64_cpuid_arch_perf_monitoring_eax_ebx_enumeration_length();
434  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_core_cycle_event();
435  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_instr_retired_event();
436  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_reference_cycles_event();
437  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_llc_reference_event();
438  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_llc_misses_event();
439  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_branch_instr_retired_event();
440  void test_cpuid_x64_cpuid_arch_perf_monitoring_ebx_branch_mispredict_retired_event();
441  void test_cpuid_x64_cpuid_arch_perf_monitoring_edx_ffpmc_count();
442  void test_cpuid_x64_cpuid_arch_perf_monitoring_edx_ffpmc_bit_width();
443 
444  void test_pm_x64_halt();
445  void test_pm_x64_stop();
446 
447  void test_cache_x64_invd();
448  void test_cache_x64_wbinvd();
449  void test_cache_x64_clflush();
450 
451  void test_tlb_x64_invlpg();
452 
453  void test_debug_x64_dr7();
454 
455  void test_pdpte_x64_reserved_mask();
456  void test_pdpte_x64_page_directory_addr_mask();
457 
458  void test_rdtsc_x64();
459  void test_rdtscp_x64();
460 };
461 
462 #endif
intrinsics_ut()
Definition: test.cpp:24
bool init() override
Definition: test.cpp:29
~intrinsics_ut() override=default
bool list() override
Definition: test.cpp:41
bool fini() override
Definition: test.cpp:35