diff --git a/aarch64-unknown-linux/cmake-mutators.txt b/aarch64-unknown-linux/cmake-mutators.txt index 0ae8b3073..ac65ec1c6 100644 --- a/aarch64-unknown-linux/cmake-mutators.txt +++ b/aarch64-unknown-linux/cmake-mutators.txt @@ -255,21 +255,11 @@ set (dyninst_OBJS_ALL_MUTATORS include_directories ("../src/instruction") set (instruction_MUTATORS - test_instruction_read_write test_instruction_profile - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd ) set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.o test_instruction_profile.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o ) @@ -299,10 +289,6 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd pc_addlibrary pc_breakpoint pc_detach @@ -406,7 +392,6 @@ set (MUTATOR_NAME_LIST test_fork_8 test_fork_9 test_instruction_profile - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -432,10 +417,6 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction testproccontrol testproccontrol testproccontrol @@ -539,7 +520,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -566,10 +546,6 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -673,7 +649,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_fork_8.C ${SRC}/dyninst/test_fork_9.C ${SRC}/instruction/test_instruction_profile.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -698,7 +673,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/symtab/test_type_info.C ) -foreach (val RANGE 129) +foreach (val RANGE 124) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/aarch64-unknown-linux/test_info_new.gen.C b/aarch64-unknown-linux/test_info_new.gen.C index 92c299de9..4c1e891db 100644 --- a/aarch64-unknown-linux/test_info_new.gen.C +++ b/aarch64-unknown-linux/test_info_new.gen.C @@ -4833,13 +4833,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -4847,34 +4840,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "64", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.dyn_gcc_64_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/aarch64-unknown-linux/tuples.gz b/aarch64-unknown-linux/tuples.gz index fcfa4a210..ccc71011b 100644 Binary files a/aarch64-unknown-linux/tuples.gz and b/aarch64-unknown-linux/tuples.gz differ diff --git a/amd64-unknown-freebsd7.2/cmake-mutators.txt b/amd64-unknown-freebsd7.2/cmake-mutators.txt index af566150d..33d547a6a 100644 --- a/amd64-unknown-freebsd7.2/cmake-mutators.txt +++ b/amd64-unknown-freebsd7.2/cmake-mutators.txt @@ -257,33 +257,11 @@ set (dyninst_OBJS_ALL_MUTATORS include_directories ("../src/instruction") set (instruction_MUTATORS - test_instruction_read_write - test_instruction_farcall - test_instruction_bind_eval test_instruction_profile - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft - fucompp - mov_size_details ) set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.o - test_instruction_farcall.o - test_instruction_bind_eval.o test_instruction_profile.o - power_decode.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o - power_cft.o - fucompp.o - mov_size_details.o ) @@ -313,14 +291,8 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd amd64_7_arg_call - fucompp init_fini_callback - mov_size_details pc_addlibrary pc_breakpoint pc_detach @@ -336,8 +308,6 @@ set (MUTATOR_NAME_LIST pc_thread pc_thread_cont pc_tls - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -423,10 +393,7 @@ set (MUTATOR_NAME_LIST test_fork_7 test_fork_8 test_fork_9 - test_instruction_bind_eval - test_instruction_farcall test_instruction_profile - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -453,14 +420,8 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction testdyninst - testinstruction testdyninst - testinstruction testproccontrol testproccontrol testproccontrol @@ -476,8 +437,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -564,9 +523,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testinstruction - testinstruction - testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -594,14 +550,8 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C ${SRC}/dyninst/amd64_7_arg_call.C - ${SRC}/instruction/fucompp.C ${SRC}/dyninst/init_fini_callback.C - ${SRC}/instruction/mov_size_details.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -617,8 +567,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C ${SRC}/proccontrol/pc_tls.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -704,10 +652,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_fork_7.C ${SRC}/dyninst/test_fork_8.C ${SRC}/dyninst/test_fork_9.C - ${SRC}/instruction/test_instruction_bind_eval.C - ${SRC}/instruction/test_instruction_farcall.C ${SRC}/instruction/test_instruction_profile.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -733,7 +678,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_write_param.C ) -foreach (val RANGE 136) +foreach (val RANGE 125) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/amd64-unknown-freebsd7.2/test_info_new.gen.C b/amd64-unknown-freebsd7.2/test_info_new.gen.C index b981c2338..44be90083 100644 --- a/amd64-unknown-freebsd7.2/test_info_new.gen.C +++ b/amd64-unknown-freebsd7.2/test_info_new.gen.C @@ -4455,20 +4455,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: post, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: binary}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -4511,27 +4497,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -4539,48 +4504,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "64", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.stat_gcc_64_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/amd64-unknown-freebsd7.2/tuples.gz b/amd64-unknown-freebsd7.2/tuples.gz index ce097b7b9..85f9b011c 100644 Binary files a/amd64-unknown-freebsd7.2/tuples.gz and b/amd64-unknown-freebsd7.2/tuples.gz differ diff --git a/i386-unknown-freebsd7.2/cmake-mutators.txt b/i386-unknown-freebsd7.2/cmake-mutators.txt index 0149baa62..556ba7fdf 100644 --- a/i386-unknown-freebsd7.2/cmake-mutators.txt +++ b/i386-unknown-freebsd7.2/cmake-mutators.txt @@ -257,33 +257,11 @@ set (dyninst_OBJS_ALL_MUTATORS include_directories ("../src/instruction") set (instruction_MUTATORS - test_instruction_read_write - test_instruction_farcall - test_instruction_bind_eval test_instruction_profile - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft - fucompp - mov_size_details ) set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.o - test_instruction_farcall.o - test_instruction_bind_eval.o test_instruction_profile.o - power_decode.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o - power_cft.o - fucompp.o - mov_size_details.o ) @@ -313,13 +291,7 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd - fucompp init_fini_callback - mov_size_details pc_addlibrary pc_breakpoint pc_detach @@ -335,8 +307,6 @@ set (MUTATOR_NAME_LIST pc_thread pc_thread_cont pc_tls - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -423,10 +393,7 @@ set (MUTATOR_NAME_LIST test_fork_7 test_fork_8 test_fork_9 - test_instruction_bind_eval - test_instruction_farcall test_instruction_profile - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -453,13 +420,7 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction - testinstruction testdyninst - testinstruction testproccontrol testproccontrol testproccontrol @@ -475,8 +436,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -564,9 +523,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testinstruction - testinstruction - testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -594,13 +550,7 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C - ${SRC}/instruction/fucompp.C ${SRC}/dyninst/init_fini_callback.C - ${SRC}/instruction/mov_size_details.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -616,8 +566,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C ${SRC}/proccontrol/pc_tls.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -704,10 +652,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_fork_7.C ${SRC}/dyninst/test_fork_8.C ${SRC}/dyninst/test_fork_9.C - ${SRC}/instruction/test_instruction_bind_eval.C - ${SRC}/instruction/test_instruction_farcall.C ${SRC}/instruction/test_instruction_profile.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -733,7 +678,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_write_param.C ) -foreach (val RANGE 136) +foreach (val RANGE 125) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/i386-unknown-freebsd7.2/test_info_new.gen.C b/i386-unknown-freebsd7.2/test_info_new.gen.C index 9826bc9bd..c1bf745e2 100644 --- a/i386-unknown-freebsd7.2/test_info_new.gen.C +++ b/i386-unknown-freebsd7.2/test_info_new.gen.C @@ -4455,20 +4455,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: post, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: binary}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -4511,27 +4497,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -4539,48 +4504,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "32", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.stat_gcc_32_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/i386-unknown-freebsd7.2/tuples.gz b/i386-unknown-freebsd7.2/tuples.gz index f2c09a4fe..1455d59e1 100644 Binary files a/i386-unknown-freebsd7.2/tuples.gz and b/i386-unknown-freebsd7.2/tuples.gz differ diff --git a/i386-unknown-linux2.4/cmake-mutators.txt b/i386-unknown-linux2.4/cmake-mutators.txt index 2f6f9466b..2ffc02c06 100644 --- a/i386-unknown-linux2.4/cmake-mutators.txt +++ b/i386-unknown-linux2.4/cmake-mutators.txt @@ -263,33 +263,11 @@ set (dyninst_OBJS_ALL_MUTATORS include_directories ("../src/instruction") set (instruction_MUTATORS - test_instruction_read_write - test_instruction_farcall - test_instruction_bind_eval test_instruction_profile - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft - fucompp - mov_size_details ) set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.o - test_instruction_farcall.o - test_instruction_bind_eval.o test_instruction_profile.o - power_decode.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o - power_cft.o - fucompp.o - mov_size_details.o ) @@ -321,13 +299,7 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd - fucompp init_fini_callback - mov_size_details pc_addlibrary pc_breakpoint pc_detach @@ -346,8 +318,6 @@ set (MUTATOR_NAME_LIST pc_thread pc_thread_cont pc_tls - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -435,10 +405,7 @@ set (MUTATOR_NAME_LIST test_fork_7 test_fork_8 test_fork_9 - test_instruction_bind_eval - test_instruction_farcall test_instruction_profile - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -465,13 +432,7 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction - testinstruction testdyninst - testinstruction testproccontrol testproccontrol testproccontrol @@ -490,8 +451,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -580,9 +539,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testinstruction - testinstruction - testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -610,13 +566,7 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C - ${SRC}/instruction/fucompp.C ${SRC}/dyninst/init_fini_callback.C - ${SRC}/instruction/mov_size_details.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -635,8 +585,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C ${SRC}/proccontrol/pc_tls.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -724,10 +672,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_fork_7.C ${SRC}/dyninst/test_fork_8.C ${SRC}/dyninst/test_fork_9.C - ${SRC}/instruction/test_instruction_bind_eval.C - ${SRC}/instruction/test_instruction_farcall.C ${SRC}/instruction/test_instruction_profile.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -753,7 +698,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_write_param.C ) -foreach (val RANGE 140) +foreach (val RANGE 129) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/i386-unknown-linux2.4/test_info_new.gen.C b/i386-unknown-linux2.4/test_info_new.gen.C index 1b50cb7ad..7a8adf68a 100644 --- a/i386-unknown-linux2.4/test_info_new.gen.C +++ b/i386-unknown-linux2.4/test_info_new.gen.C @@ -7339,20 +7339,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: post, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: binary}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -7395,27 +7381,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -7423,48 +7388,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "32", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.stat_gcc_32_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/i386-unknown-linux2.4/tuples.gz b/i386-unknown-linux2.4/tuples.gz index bbf3c9c4e..af05c945b 100644 Binary files a/i386-unknown-linux2.4/tuples.gz and b/i386-unknown-linux2.4/tuples.gz differ diff --git a/i386-unknown-nt4.0/cmake-mutators.txt b/i386-unknown-nt4.0/cmake-mutators.txt index df33ee84c..a5d2e586d 100644 --- a/i386-unknown-nt4.0/cmake-mutators.txt +++ b/i386-unknown-nt4.0/cmake-mutators.txt @@ -195,36 +195,6 @@ set (dyninst_OBJS_ALL_MUTATORS ) -include_directories ("../src/instruction") -set (instruction_MUTATORS - test_instruction_read_write - test_instruction_farcall - test_instruction_bind_eval - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft - fucompp - mov_size_details -) - -set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.obj - test_instruction_farcall.obj - test_instruction_bind_eval.obj - power_decode.obj - aarch64_decode.obj - aarch64_cft.obj - aarch64_decode_ldst.obj - aarch64_simd.obj - power_cft.obj - fucompp.obj - mov_size_details.obj -) - - include_directories ("../src/symtab") set (symtab_MUTATORS test_lookup_func @@ -247,12 +217,6 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd - fucompp - mov_size_details pc_addlibrary pc_breakpoint pc_detach @@ -268,8 +232,6 @@ set (MUTATOR_NAME_LIST pc_terminate_stopped pc_thread pc_thread_cont - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -333,9 +295,6 @@ set (MUTATOR_NAME_LIST test5_7 test5_8 test5_9 - test_instruction_bind_eval - test_instruction_farcall - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -354,12 +313,6 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction - testinstruction - testinstruction testproccontrol testproccontrol testproccontrol @@ -375,8 +328,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -440,9 +391,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testdyninst - testinstruction - testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -462,12 +410,6 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C - ${SRC}/instruction/fucompp.C - ${SRC}/instruction/mov_size_details.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -483,8 +425,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_terminate_stopped.C ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -548,9 +488,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test5_7.C ${SRC}/dyninst/test5_8.C ${SRC}/dyninst/test5_9.C - ${SRC}/instruction/test_instruction_bind_eval.C - ${SRC}/instruction/test_instruction_farcall.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -568,7 +505,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_write_param.C ) -foreach (val RANGE 103) +foreach (val RANGE 92) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/i386-unknown-nt4.0/test_info_new.gen.C b/i386-unknown-nt4.0/test_info_new.gen.C index 7407d098b..73bd3c951 100644 --- a/i386-unknown-nt4.0/test_info_new.gen.C +++ b/i386-unknown-nt4.0/test_info_new.gen.C @@ -2040,20 +2040,6 @@ void initialize_mutatees(std::vector &t) { "proccontrol", "VC++", "none", "32", "NONE"); add_test(rg, "{test: pc_mem_perm, mutator: pc_mem_perm, grouped: false, pic: none, start_state: selfattach, format: dynamicMutatee, process_mode: SingleProcess, abi: 32, thread_mode: SingleThreaded, mutateeruntime: pre, platmode: NONE, mutatee: pc_mem_perm, mutatorstart: local, optimization: none, mutateestart: local, compiler: VC++, run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -2082,69 +2068,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.dyn_VC_32_none_low.exe", STOPPED, CREATE, TNone, PNone, local, local, no_launch, diff --git a/i386-unknown-nt4.0/tuples.gz b/i386-unknown-nt4.0/tuples.gz index fe3ec6697..ac3402395 100644 Binary files a/i386-unknown-nt4.0/tuples.gz and b/i386-unknown-nt4.0/tuples.gz differ diff --git a/ppc64_linux/cmake-mutators.txt b/ppc64_linux/cmake-mutators.txt index b57f0d68e..a6af9c08d 100644 --- a/ppc64_linux/cmake-mutators.txt +++ b/ppc64_linux/cmake-mutators.txt @@ -255,26 +255,6 @@ set (dyninst_OBJS_ALL_MUTATORS ) -include_directories ("../src/instruction") -set (instruction_MUTATORS - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft -) - -set (instruction_OBJS_ALL_MUTATORS - power_decode.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o - power_cft.o -) - - include_directories ("../src/symtab") set (symtab_MUTATORS test_lookup_func @@ -301,10 +281,6 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd init_fini_callback pc_addlibrary pc_breakpoint @@ -323,8 +299,6 @@ set (MUTATOR_NAME_LIST pc_thread pc_thread_cont pc_tls - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -435,10 +409,6 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction testdyninst testproccontrol testproccontrol @@ -457,8 +427,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -570,10 +538,6 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C ${SRC}/dyninst/init_fini_callback.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C @@ -592,8 +556,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C ${SRC}/proccontrol/pc_tls.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -703,7 +665,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/symtab/test_type_info.C ) -foreach (val RANGE 130) +foreach (val RANGE 124) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/ppc64_linux/test_info_new.gen.C b/ppc64_linux/test_info_new.gen.C index cca73b2b9..19dc93681 100644 --- a/ppc64_linux/test_info_new.gen.C +++ b/ppc64_linux/test_info_new.gen.C @@ -4833,48 +4833,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.stat_gcc_64_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/ppc64_linux/tuples.gz b/ppc64_linux/tuples.gz index 995ddad35..0830b500f 100644 Binary files a/ppc64_linux/tuples.gz and b/ppc64_linux/tuples.gz differ diff --git a/src/instruction/aarch64_cft.C b/src/instruction/aarch64_cft.C deleted file mode 100644 index b1e42eb26..000000000 --- a/src/instruction/aarch64_cft.C +++ /dev/null @@ -1,234 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/aarch64_regs.h" -#include "test_lib.h" - -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class aarch64_cft_Mutator : public InstructionMutator { -public: - aarch64_cft_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* aarch64_cft_factory() { - return new aarch64_cft_Mutator(); -} - -static void reverseBuffer(unsigned char* buffer, int bufferSize) { - int elementCount = bufferSize / 4; - - for(int loop_index = 0; loop_index < elementCount; loop_index++) { - std::swap(buffer[0], buffer[3]); - std::swap(buffer[1], buffer[2]); - buffer += 4; - } -} - -struct cftExpected { - bool defined; - unsigned long long int expected; - bool call; - bool conditional; - bool indirect; - bool fallthrough; -}; - -test_results_t verifyTargetType(const Instruction::CFT& actual, const cftExpected& expected) { - if(actual.isCall != expected.call) { - logerror("FAILED: expected call = %d, actual = %d\n", expected.call, actual.isCall); - return FAILED; - } - if(actual.isIndirect != expected.indirect) { - logerror("FAILED: expected indirect = %d, actual = %d\n", expected.indirect, actual.isIndirect); - return FAILED; - } - if(actual.isConditional != expected.conditional) { - logerror("FAILED: expected conditional = %d, actual = %d\n", expected.conditional, actual.isConditional); - return FAILED; - } - if(actual.isFallthrough != expected.fallthrough) { - logerror("FAILED: expected fallthrough = %d, actual = %d\n", expected.fallthrough, actual.isFallthrough); - return FAILED; - } - return PASSED; -} - -test_results_t aarch64_cft_Mutator::executeTest() { - - struct test_insn { - std::array bytes; - std::vector expected_targets; - }; - - // clang-format off - auto tests = std::vector { - { - // B #-1 - {0x17, 0xFF, 0xFF, 0xFF}, - { - {true, 0x3FC, false, false, false, false} - } - }, - { - // BR X12 - {0xD6, 0x1F, 0x01, 0x80}, - { - {true, 0x90, false, false, true, false}, - } - }, - { - // RET X12 - {0xD6, 0x5F, 0x01, 0x80}, - { - {true, 0x90, false, false, true, false}, - } - }, - { - // CBZ W15, #-1 - {0x34, 0xFF, 0xFF, 0xEF}, - { - {true, 0x3FC, false, true, false, false}, - {true, 0x404, false, true, false, true}, - } - }, - { - // B.NE #-1 - {0x54, 0xFF, 0xFF, 0xE1}, - { - {true, 0x3FC, false, true, false, false}, - {true, 0x404, false, true, false, true}, - } - }, - { - // TBZ W4, #30, #-1 - {0x36, 0xF7, 0xFF, 0xE4}, - { - {true, 0x3FC, false, true, false, false}, - {true, 0x404, false, true, false, true}, - } - }, - { - // TBNZ X25, #0, #16 - {0xB7, 0x80, 0x02, 0x19}, - { - {true, 0x440, false, true, false, false}, - {true, 0x404, false, true, false, true}, - } - }, - { - // bl PC + 0x14 - {0x94, 0x00, 0x00, 0x05}, - { - {true, 0x414, true, false, false, false}, - {true, 0x404, false, false, false, true}, - } - }, - { - // BLR X12 - {0xD6, 0x3F, 0x01, 0x80}, - { - {true, 0x90, true, false, true, false}, - {true, 0x404, false, false, false, true}, - } - } - }; - // clang-format on - - Expression::Ptr theIP(new RegisterAST(aarch64::pc)); - Expression::Ptr link_reg(new RegisterAST(aarch64::x30)); - Expression::Ptr x_reg(new RegisterAST(aarch64::x12)); - - test_results_t retVal = PASSED; - auto test_id = 0; - - for(auto&& t : tests) { - test_id++; - - reverseBuffer(t.bytes.data(), t.bytes.size()); - InstructionDecoder d(t.bytes.data(), t.bytes.size(), Dyninst::Arch_aarch64); - - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", test_id); - retVal = FAILED; - continue; - } - - const size_t num_cft = std::distance(insn.cft_begin(), insn.cft_end()); - const auto num_expected_cft = t.expected_targets.size(); - - if(num_cft != num_expected_cft) { - logerror("FAILED: Number of targets mismatched for test %d '%s'. Found %u, expected %u\n", test_id, - insn.format().c_str(), num_cft, num_expected_cft); - retVal = FAILED; - continue; - } - - auto cft_all = boost::make_iterator_range(insn.cft_begin(), insn.cft_end()); - for(auto&& cft : boost::combine(cft_all, t.expected_targets)) { - Instruction::CFT cft_cur = cft.get<0>(); - auto target = cft_cur.target; - - if(!target) { - logerror("FAILED: No target for '%s'\n", insn.format().c_str()); - retVal = FAILED; - continue; - } - - target->bind(theIP.get(), Result(u64, 0x400)); - target->bind(x_reg.get(), Result(u64, 0x90)); - - cftExpected cft_expected = cft.get<1>(); - - auto status = verifyCFT(target, cft_expected.defined, cft_expected.expected, u64); - if(status == FAILED) { - retVal = FAILED; - } - - status = verifyTargetType(cft_cur, cft_expected); - if(status == FAILED) { - retVal = FAILED; - } - } - } - return retVal; -} diff --git a/src/instruction/aarch64_decode.C b/src/instruction/aarch64_decode.C deleted file mode 100644 index 8294562bd..000000000 --- a/src/instruction/aarch64_decode.C +++ /dev/null @@ -1,49 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "instruction_comp.h" -#include "test_lib.h" - -using namespace Dyninst; - -class aarch64_decode_Mutator : public InstructionMutator { -public: - aarch64_decode_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* aarch64_decode_factory() { - return new aarch64_decode_Mutator(); -} - -test_results_t aarch64_decode_Mutator::executeTest() { - return PASSED; -} diff --git a/src/instruction/aarch64_decode_ldst.C b/src/instruction/aarch64_decode_ldst.C deleted file mode 100644 index 8cc8f7e8d..000000000 --- a/src/instruction/aarch64_decode_ldst.C +++ /dev/null @@ -1,1074 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/aarch64_regs.h" -#include "test_lib.h" - -#include -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class aarch64_decode_ldst_Mutator : public InstructionMutator { -public: - aarch64_decode_ldst_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* aarch64_decode_ldst_factory() { - return new aarch64_decode_ldst_Mutator(); -} - -static void reverseBuffer(unsigned char* buffer, int bufferSize) { - int elementCount = bufferSize / 4; - - for(int loop_index = 0; loop_index < elementCount; loop_index++) { - std::swap(buffer[0], buffer[3]); - std::swap(buffer[1], buffer[2]); - buffer += 4; - } -} - -test_results_t aarch64_decode_ldst_Mutator::executeTest() { - constexpr auto num_tests = 136; - - // clang-format off - std::array buffer = { - //literal - 0x58, 0x00, 0x00, 0x21, // ldr x1, #4 - 0x58, 0x00, 0x08, 0x01, // ldr x1, #256 - 0x18, 0x00, 0x00, 0x21, // ldr w1, #4 - 0x18, 0x00, 0x08, 0x01, // ldr w1, #1048576 - - //post-inc - 0xf8, 0x40, 0x14, 0x41, // ldr, x1, [x2], #1 - 0xf8, 0x4f, 0xf4, 0x41, // ldr, x1, [x2], #255 - 0x38, 0x40, 0x14, 0x41, // ldrb, w1, [x2], #1 - 0x38, 0xc0, 0x14, 0x41, // ldrsb, w1, [x2], #1 - 0x78, 0x40, 0x14, 0x41, // ldrh, w1, [x2], #1 - 0x78, 0xc0, 0x14, 0x41, // ldrsh, x1, [x2], #1 - - //imm - 0xf9, 0x40, 0x04, 0x41, // ldr, x1, [x2, #8] - 0xf9, 0x40, 0x80, 0x41, // ldr, x1, [x2, #256] - 0x39, 0x40, 0x10, 0x41, // ldrb, w1, [x2, #4] - 0x39, 0xc0, 0x10, 0x41, // ldrsb, w1, [x2, #4] - 0x79, 0x40, 0x08, 0x41, // ldrh, w1, [x2, #4] - 0x79, 0xc0, 0x08, 0x41, // ldrsh, w1, [x2, #4] - 0xb9, 0x80, 0x04, 0x41, // ldrsw, x1, [x2, #4] - - //register off not ext - 0xf8, 0x63, 0x68, 0x41, // ldr, x1, [x2, x3] - 0x38, 0x63, 0x68, 0x41, // ldrb, w1, [x2, x3] - 0x38, 0xe3, 0x68, 0x41, // ldrsb, w1, [x2, x3] - 0x78, 0x63, 0x68, 0x41, // ldrh, w1, [x2, x3] - 0x78, 0xe3, 0x68, 0x41, // ldrsh, w1, [x2, x3] - 0xb8, 0xa3, 0x68, 0x41, // ldrsw, x1, [x2, x3] - - //pre-inc - 0xf8, 0x40, 0x1c, 0x41, // ldr, x1, [x2, #1]! - 0xf8, 0x4f, 0xfc, 0x41, // ldr, x1, [x2, #255]! - 0x38, 0x40, 0x1c, 0x41, // ldrb, w1, [x2, #1]! - 0x38, 0xc0, 0x1c, 0x41, // ldrsb, w1, [x2, #1]! - 0x78, 0x40, 0x1c, 0x41, // ldrh, w1, [x2, #1]! - 0x78, 0xc0, 0x1c, 0x41, // ldrsh, w1, [x2, #1]! - 0xb8, 0x80, 0x1c, 0x41, // ldrsw, x1, [x2, #1]! - - //exclusive - 0xc8, 0xdf, 0xfc, 0x41, //ldar x1, [x2] - 0x88, 0xdf, 0xfc, 0x41, //ldar w1, [x2] - 0x08, 0x5f, 0x7c, 0x41, //ldxrb w1, [x2] - 0x08, 0x5f, 0xfc, 0x41, //ldaxrb w1, [x2] - - 0x08, 0xdf, 0xfc, 0x41, //ldarb w1, [x2] - 0x48, 0x5f, 0x7c, 0x41, //ldxrh w1, [x2] - 0x48, 0x5f, 0xfc, 0x41, //ldaxrh w1, [x2] - 0x48, 0xdf, 0xfc, 0x41, //ldarh w1, [x2] - - 0xc8, 0x5f, 0x7c, 0x41, //ldxr x1, [x2] - 0xc8, 0x5f, 0xfc, 0x41, //ldaxr x1, [x2] - 0xc8, 0xdf, 0xfc, 0x41, //ldar x1, [x2] - 0x88, 0x5f, 0x7c, 0x41, //ldxr w1, [x2] - - 0x88, 0x5f, 0xfc, 0x41, //ldaxr w1, [x2] - 0x88, 0xdf, 0xfc, 0x41, //ldar w1, [x2] - 0xc8, 0x7f, 0x0c, 0x41, //ldxp x1, x3, [x2] - 0xc8, 0x7f, 0x8c, 0x41, //ldaxp x1, x3, [x2] - - 0x88, 0x7f, 0x0c, 0x41, //ldxp w1, w3, [x2] - 0x88, 0x7f, 0x8c, 0x41, //ldaxp w1, w3, [x2] - - //pair - 0xa8, 0x40, 0x88, 0x61, //ldnp x1, x2, [x3,#8] - 0xa9, 0x40, 0x88, 0x61, //ldp x1, x2, [x3,#8] - 0xa9, 0xc0, 0x88, 0x61, //ldp x1, x2, [x3,#8]! - 0xa8, 0xc0, 0x88, 0x61, //ldp x1, x2, [x3],#8 - 0xa8, 0xc0, 0x88, 0x61, //ldp x1, x2, [x3],#8 - - //unsacled - 0x38, 0x40, 0x10, 0x61, //ldurb w1, [x3,#1] - 0x38, 0x80, 0x10, 0x61, //ldursb x1, [x3,#1] - 0xf8, 0x40, 0x10, 0x61, //ldur x1, [x3,#1] - 0x78, 0x40, 0x10, 0x61, //ldurh w1, [x3,#1] - 0x78, 0x80, 0x10, 0x61, //ldursh x1, [x3,#1] - 0xb8, 0x80, 0x10, 0x61, //ldursw x1, [x3,#1] - - //unprevlidged - 0x38, 0x40, 0x18, 0x61, //ldtrb w1, [x3,#1] - 0x38, 0x80, 0x18, 0x61, //ldtrsb x1, [x3,#1] - 0xf8, 0x40, 0x18, 0x61, //ldtr x1, [x3,#1] - 0x78, 0x40, 0x18, 0x61, //ldtrh w1, [x3,#1] - 0x78, 0x80, 0x18, 0x61, //ldtrsh x1, [x3,#1] - 0xb8, 0x80, 0x18, 0x61, //ldtrsw x1, [x3,#1] - - //----store---- - 0xf8, 0x00, 0x14, 0x41, //str x1, [x2],#1 - 0xf8, 0x0f, 0xf4, 0x41, //str x1, [x2],#255 - 0x38, 0x00, 0x14, 0x41, //strb w1, [x2],#1 - 0x78, 0x00, 0x14, 0x41, //strh w1, [x2],#1 - - 0xf9, 0x00, 0x04, 0x41, //str x1, [x2,#8] - 0xf9, 0x00, 0x80, 0x41, //str x1, [x2,#256] - 0x39, 0x00, 0x10, 0x41, //strb w1, [x2,#4] - 0x79, 0x00, 0x08, 0x41, //strh w1, [x2,#4] - - 0xf8, 0x23, 0x68, 0x41, //str x1, [x2,x3] - 0xf8, 0x23, 0x68, 0x41, //str x1, [x2,x3] - 0x38, 0x23, 0x68, 0x41, //strb w1, [x2,x3] - 0x78, 0x23, 0x68, 0x41, //strh w1, [x2,x3] - - 0xf8, 0x00, 0x1c, 0x41, //str x1, [x2,#1]! - 0xf8, 0x0f, 0xfc, 0x41, //str x1, [x2,#255]! - 0x38, 0x00, 0x1c, 0x41, //strb w1, [x2,#1]! - 0x78, 0x00, 0x1c, 0x41, //strh w1, [x2,#1]! - - 0x08, 0x00, 0x7c, 0x41, //stxrb w0, w1, [x2] - 0x48, 0x00, 0x7c, 0x41, //stxrh w0, w1, [x2] - 0x88, 0x00, 0x7c, 0x41, //stxr w0, w1, [x2] - 0x88, 0x20, 0x0c, 0x41, //stxp w0, w1, w3, [x2] - - 0xa8, 0x00, 0x88, 0x61, //stnp x1, x2, [x3,#8] - 0xa9, 0x00, 0x88, 0x61, //stp x1, x2, [x3,#8] - 0xa9, 0x80, 0x88, 0x61, //stp x1, x2, [x3,#8]! - 0xa8, 0x80, 0x88, 0x61, //stp x1, x2, [x3],#8 - 0xa8, 0x80, 0x88, 0x61, //stp x1, x2, [x3],#8 - - 0x38, 0x00, 0x10, 0x61, //sturb w1, [x3,#1] - 0xf8, 0x00, 0x10, 0x61, //str x1, [x3,#1] - 0x78, 0x00, 0x10, 0x61, //strh w1, [x3,#1] - - 0xf8, 0x00, 0x18, 0x61, //sttr x1, [x3,#1] - 0x38, 0x00, 0x18, 0x61, //sttrb w1, [x3,#1] - 0x78, 0x00, 0x18, 0x61, //sttrh w1, [x3,#1] - - 0x08, 0x9f, 0xfc, 0x61, //stlrb w1, [x3] - 0xc8, 0x9f, 0xfc, 0x61, //stlr x1, [x3] - 0x48, 0x9f, 0xfc, 0x61, //stlrh w1, [x3] - 0xc8, 0x20, 0x88, 0x61, //stlxp w0, x1, x2, [x3] - 0x08, 0x00, 0xfc, 0x61, //stlxrb w0, w1, [x3] - 0xc8, 0x00, 0xfc, 0x61, //stlxr w0, x1, [x3] - 0x48, 0x00, 0xfc, 0x61, //stlxrh w0, w1, [x3] - - 0xf8, 0x63, 0x68, 0x41, //ldr x1, [x2,x3] - 0xf8, 0x63, 0x78, 0x41, //ldr x1, [x2,x3,lsl #3] - 0xb8, 0x63, 0x78, 0x41, //ldr w1, [x2,x3,lsl #2] - 0xf8, 0x63, 0x48, 0x41, //ldr x1, [x2,w3,uxtw] - - 0xf8, 0x63, 0xe8, 0x41, //ldr x1, [x2,x3,sxtx] - 0x9a, 0x82, 0x04, 0x20, //csinc x0, x1, x2, eq - 0xda, 0x82, 0x00, 0x20, //csinv x0, x1, x2, eq - 0xda, 0x82, 0x04, 0x20, //csneg x0, x1, x2, eq - - 0xd3, 0x7f, 0x00, 0x20, //ubfiz x0, x1, #1, #1 - 0x53, 0x00, 0x7c, 0x20, //lsr w0, w1, #0 - 0x92, 0x9f, 0xff, 0xe0, //mov x0, #0xffffffffffff0000 // #-65536 - 0x92, 0xff, 0xff, 0xe0, //mov x0, #0xffffffffffff // #281474976710655 - - 0x12, 0xbf, 0xff, 0xe0, //movn w0, #0xffff, lsl #16 - 0xd2, 0x9f, 0xff, 0xe0, //mov x0, #0xffff // #65535 - 0xd2, 0xff, 0xff, 0xe0, //mov x0, #0xffff000000000000 // #-281474976710656 - 0x52, 0xbf, 0xff, 0xe0, //mov w0, #0xffff0000 // #-65536 - - 0x18, 0x7f, 0xff, 0xbe, //ldr w30, 500630 0xffff4 - 0x58, 0xf3, 0xcb, 0x1e, //ldr x30, 3e7fa0 -0x184d0 - 0xb8, 0x4f, 0xf4, 0x0f, //ldr w15, [x0],#255 - 0xf8, 0x51, 0x07, 0xcf, //ldr x15, [x30],#-240 - - 0xb9, 0x7f, 0xff, 0xfd, //ldr w29, [sp,#16380] - 0xf9, 0x7f, 0xff, 0xfd, //ldr x29, [sp,#32760] - 0xf8, 0x7f, 0x68, 0x41, //ldr x1, [x2,x31] - 0xf8, 0x4f, 0xff, 0xe1, //ldr x1, [sp,#255]! - - //prfm - 0xd8, 0x00, 0x00, 0x3f, //prfm 1F, [pc + 4] - 0xd8, 0xff, 0xff, 0xe0, //prfm 0, [pc + fffffffffffffffc] - 0xd8, 0x0f, 0xd8, 0x08, //prfm 8, [pc + 1fb00] - 0xf9, 0x80, 0x04, 0x3d, //prfm 1d, [x1 + 8] - 0xf9, 0xbf, 0xff, 0xdf, //prfm 1f, [x30 + 7ff8] - 0xf8, 0xa5, 0x68, 0x44, //prfm 4, [x2 + x5 << 0] - 0xf8, 0xa1, 0x5b, 0xc5, //prfm 5, [x30 + w1 << 3] - 0xf8, 0xa5, 0xe9, 0x06, //prfm 6, [x8 + x5 << 0] - - 0xd5, 0x03, 0x20, 0x1f, //nop - }; - // clang-format on - - reverseBuffer(buffer.data(), buffer.size()); - InstructionDecoder d(buffer.data(), buffer.size(), Dyninst::Arch_aarch64); - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - auto create = [](MachRegister reg) { - return boost::make_shared(reg); - }; - - RegisterAST::Ptr x0 = create(aarch64::x0); - RegisterAST::Ptr x1 = create(aarch64::x1); - RegisterAST::Ptr x2 = create(aarch64::x2); - RegisterAST::Ptr x3 = create(aarch64::x3); - RegisterAST::Ptr x4 = create(aarch64::x4); - RegisterAST::Ptr x5 = create(aarch64::x5); - RegisterAST::Ptr x6 = create(aarch64::x6); - RegisterAST::Ptr x7 = create(aarch64::x7); - RegisterAST::Ptr x8 = create(aarch64::x8); - RegisterAST::Ptr x9 = create(aarch64::x9); - RegisterAST::Ptr x10 = create(aarch64::x10); - RegisterAST::Ptr x11 = create(aarch64::x11); - RegisterAST::Ptr x12 = create(aarch64::x12); - RegisterAST::Ptr x13 = create(aarch64::x13); - RegisterAST::Ptr x14 = create(aarch64::x14); - RegisterAST::Ptr x15 = create(aarch64::x15); - RegisterAST::Ptr x16 = create(aarch64::x16); - RegisterAST::Ptr x17 = create(aarch64::x17); - RegisterAST::Ptr x18 = create(aarch64::x18); - RegisterAST::Ptr x19 = create(aarch64::x19); - RegisterAST::Ptr x20 = create(aarch64::x20); - RegisterAST::Ptr x21 = create(aarch64::x21); - RegisterAST::Ptr x22 = create(aarch64::x22); - RegisterAST::Ptr x23 = create(aarch64::x23); - RegisterAST::Ptr x24 = create(aarch64::x24); - RegisterAST::Ptr x25 = create(aarch64::x25); - RegisterAST::Ptr x26 = create(aarch64::x26); - RegisterAST::Ptr x27 = create(aarch64::x27); - RegisterAST::Ptr x28 = create(aarch64::x28); - RegisterAST::Ptr x29 = create(aarch64::x29); - RegisterAST::Ptr x30 = create(aarch64::x30); - - RegisterAST::Ptr w0 = create(aarch64::w0); - RegisterAST::Ptr w1 = create(aarch64::w1); - RegisterAST::Ptr w2 = create(aarch64::w2); - RegisterAST::Ptr w3 = create(aarch64::w3); - RegisterAST::Ptr w4 = create(aarch64::w4); - RegisterAST::Ptr w5 = create(aarch64::w5); - RegisterAST::Ptr w6 = create(aarch64::w6); - RegisterAST::Ptr w7 = create(aarch64::w7); - RegisterAST::Ptr w8 = create(aarch64::w8); - RegisterAST::Ptr w9 = create(aarch64::w9); - RegisterAST::Ptr w10 = create(aarch64::w10); - RegisterAST::Ptr w11 = create(aarch64::w11); - RegisterAST::Ptr w12 = create(aarch64::w12); - RegisterAST::Ptr w13 = create(aarch64::w13); - RegisterAST::Ptr w14 = create(aarch64::w14); - RegisterAST::Ptr w15 = create(aarch64::w15); - RegisterAST::Ptr w16 = create(aarch64::w16); - RegisterAST::Ptr w17 = create(aarch64::w17); - RegisterAST::Ptr w18 = create(aarch64::w18); - RegisterAST::Ptr w19 = create(aarch64::w19); - RegisterAST::Ptr w20 = create(aarch64::w20); - RegisterAST::Ptr w21 = create(aarch64::w21); - RegisterAST::Ptr w22 = create(aarch64::w22); - RegisterAST::Ptr w23 = create(aarch64::w23); - RegisterAST::Ptr w24 = create(aarch64::w24); - RegisterAST::Ptr w25 = create(aarch64::w25); - RegisterAST::Ptr w26 = create(aarch64::w26); - RegisterAST::Ptr w27 = create(aarch64::w27); - RegisterAST::Ptr w28 = create(aarch64::w28); - RegisterAST::Ptr w29 = create(aarch64::w29); - RegisterAST::Ptr w30 = create(aarch64::w30); - - RegisterAST::Ptr q0 = create(aarch64::q0); - RegisterAST::Ptr q1 = create(aarch64::q1); - RegisterAST::Ptr q2 = create(aarch64::q2); - RegisterAST::Ptr q3 = create(aarch64::q3); - RegisterAST::Ptr q4 = create(aarch64::q4); - RegisterAST::Ptr q5 = create(aarch64::q5); - RegisterAST::Ptr q6 = create(aarch64::q6); - RegisterAST::Ptr q7 = create(aarch64::q7); - RegisterAST::Ptr q8 = create(aarch64::q8); - RegisterAST::Ptr q9 = create(aarch64::q9); - RegisterAST::Ptr q10 = create(aarch64::q10); - RegisterAST::Ptr q11 = create(aarch64::q11); - RegisterAST::Ptr q12 = create(aarch64::q12); - RegisterAST::Ptr q13 = create(aarch64::q13); - RegisterAST::Ptr q14 = create(aarch64::q14); - RegisterAST::Ptr q15 = create(aarch64::q15); - RegisterAST::Ptr q16 = create(aarch64::q16); - RegisterAST::Ptr q17 = create(aarch64::q17); - RegisterAST::Ptr q18 = create(aarch64::q18); - RegisterAST::Ptr q19 = create(aarch64::q19); - RegisterAST::Ptr q20 = create(aarch64::q20); - RegisterAST::Ptr q21 = create(aarch64::q21); - RegisterAST::Ptr q22 = create(aarch64::q22); - RegisterAST::Ptr q23 = create(aarch64::q23); - RegisterAST::Ptr q24 = create(aarch64::q24); - RegisterAST::Ptr q25 = create(aarch64::q25); - RegisterAST::Ptr q26 = create(aarch64::q26); - RegisterAST::Ptr q27 = create(aarch64::q27); - RegisterAST::Ptr q28 = create(aarch64::q28); - RegisterAST::Ptr q29 = create(aarch64::q29); - RegisterAST::Ptr q30 = create(aarch64::q30); - RegisterAST::Ptr q31 = create(aarch64::q31); - - RegisterAST::Ptr s0 = create(aarch64::s0); - RegisterAST::Ptr s1 = create(aarch64::s1); - RegisterAST::Ptr s2 = create(aarch64::s2); - RegisterAST::Ptr s3 = create(aarch64::s3); - RegisterAST::Ptr s4 = create(aarch64::s4); - RegisterAST::Ptr s5 = create(aarch64::s5); - RegisterAST::Ptr s6 = create(aarch64::s6); - RegisterAST::Ptr s7 = create(aarch64::s7); - RegisterAST::Ptr s8 = create(aarch64::s8); - RegisterAST::Ptr s9 = create(aarch64::s9); - RegisterAST::Ptr s10 = create(aarch64::s10); - RegisterAST::Ptr s11 = create(aarch64::s11); - RegisterAST::Ptr s12 = create(aarch64::s12); - RegisterAST::Ptr s13 = create(aarch64::s13); - RegisterAST::Ptr s14 = create(aarch64::s14); - RegisterAST::Ptr s15 = create(aarch64::s15); - RegisterAST::Ptr s16 = create(aarch64::s16); - RegisterAST::Ptr s17 = create(aarch64::s17); - RegisterAST::Ptr s18 = create(aarch64::s18); - RegisterAST::Ptr s19 = create(aarch64::s19); - RegisterAST::Ptr s20 = create(aarch64::s20); - RegisterAST::Ptr s21 = create(aarch64::s21); - RegisterAST::Ptr s22 = create(aarch64::s22); - RegisterAST::Ptr s23 = create(aarch64::s23); - RegisterAST::Ptr s24 = create(aarch64::s24); - RegisterAST::Ptr s25 = create(aarch64::s25); - RegisterAST::Ptr s26 = create(aarch64::s26); - RegisterAST::Ptr s27 = create(aarch64::s27); - RegisterAST::Ptr s28 = create(aarch64::s28); - RegisterAST::Ptr s29 = create(aarch64::s29); - RegisterAST::Ptr s30 = create(aarch64::s30); - RegisterAST::Ptr s31 = create(aarch64::s31); - - RegisterAST::Ptr h0 = create(aarch64::h0); - RegisterAST::Ptr h1 = create(aarch64::h1); - RegisterAST::Ptr h2 = create(aarch64::h2); - RegisterAST::Ptr h3 = create(aarch64::h3); - RegisterAST::Ptr h4 = create(aarch64::h4); - RegisterAST::Ptr h5 = create(aarch64::h5); - RegisterAST::Ptr h6 = create(aarch64::h6); - RegisterAST::Ptr h7 = create(aarch64::h7); - RegisterAST::Ptr h8 = create(aarch64::h8); - RegisterAST::Ptr h9 = create(aarch64::h9); - RegisterAST::Ptr h10 = create(aarch64::h10); - RegisterAST::Ptr h11 = create(aarch64::h11); - RegisterAST::Ptr h12 = create(aarch64::h12); - RegisterAST::Ptr h13 = create(aarch64::h13); - RegisterAST::Ptr h14 = create(aarch64::h14); - RegisterAST::Ptr h15 = create(aarch64::h15); - RegisterAST::Ptr h16 = create(aarch64::h16); - RegisterAST::Ptr h17 = create(aarch64::h17); - RegisterAST::Ptr h18 = create(aarch64::h18); - RegisterAST::Ptr h19 = create(aarch64::h19); - RegisterAST::Ptr h20 = create(aarch64::h20); - RegisterAST::Ptr h21 = create(aarch64::h21); - RegisterAST::Ptr h22 = create(aarch64::h22); - RegisterAST::Ptr h23 = create(aarch64::h23); - RegisterAST::Ptr h24 = create(aarch64::h24); - RegisterAST::Ptr h25 = create(aarch64::h25); - RegisterAST::Ptr h26 = create(aarch64::h26); - RegisterAST::Ptr h27 = create(aarch64::h27); - RegisterAST::Ptr h28 = create(aarch64::h28); - RegisterAST::Ptr h29 = create(aarch64::h29); - RegisterAST::Ptr h30 = create(aarch64::h30); - RegisterAST::Ptr h31 = create(aarch64::h31); - - RegisterAST::Ptr d0 = create(aarch64::d0); - RegisterAST::Ptr d1 = create(aarch64::d1); - RegisterAST::Ptr d2 = create(aarch64::d2); - RegisterAST::Ptr d3 = create(aarch64::d3); - RegisterAST::Ptr d4 = create(aarch64::d4); - RegisterAST::Ptr d5 = create(aarch64::d5); - RegisterAST::Ptr d6 = create(aarch64::d6); - RegisterAST::Ptr d7 = create(aarch64::d7); - RegisterAST::Ptr d8 = create(aarch64::d8); - RegisterAST::Ptr d9 = create(aarch64::d9); - RegisterAST::Ptr d10 = create(aarch64::d10); - RegisterAST::Ptr d11 = create(aarch64::d11); - RegisterAST::Ptr d12 = create(aarch64::d12); - RegisterAST::Ptr d13 = create(aarch64::d13); - RegisterAST::Ptr d14 = create(aarch64::d14); - RegisterAST::Ptr d15 = create(aarch64::d15); - RegisterAST::Ptr d16 = create(aarch64::d16); - RegisterAST::Ptr d17 = create(aarch64::d17); - RegisterAST::Ptr d18 = create(aarch64::d18); - RegisterAST::Ptr d19 = create(aarch64::d19); - RegisterAST::Ptr d20 = create(aarch64::d20); - RegisterAST::Ptr d21 = create(aarch64::d21); - RegisterAST::Ptr d22 = create(aarch64::d22); - RegisterAST::Ptr d23 = create(aarch64::d23); - RegisterAST::Ptr d24 = create(aarch64::d24); - RegisterAST::Ptr d25 = create(aarch64::d25); - RegisterAST::Ptr d26 = create(aarch64::d26); - RegisterAST::Ptr d27 = create(aarch64::d27); - RegisterAST::Ptr d28 = create(aarch64::d28); - RegisterAST::Ptr d29 = create(aarch64::d29); - RegisterAST::Ptr d30 = create(aarch64::d30); - RegisterAST::Ptr d31 = create(aarch64::d31); - - RegisterAST::Ptr b0 = create(aarch64::b0); - RegisterAST::Ptr b1 = create(aarch64::b1); - RegisterAST::Ptr b2 = create(aarch64::b2); - RegisterAST::Ptr b3 = create(aarch64::b3); - RegisterAST::Ptr b4 = create(aarch64::b4); - RegisterAST::Ptr b5 = create(aarch64::b5); - RegisterAST::Ptr b6 = create(aarch64::b6); - RegisterAST::Ptr b7 = create(aarch64::b7); - RegisterAST::Ptr b8 = create(aarch64::b8); - RegisterAST::Ptr b9 = create(aarch64::b9); - RegisterAST::Ptr b10 = create(aarch64::b10); - RegisterAST::Ptr b11 = create(aarch64::b11); - RegisterAST::Ptr b12 = create(aarch64::b12); - RegisterAST::Ptr b13 = create(aarch64::b13); - RegisterAST::Ptr b14 = create(aarch64::b14); - RegisterAST::Ptr b15 = create(aarch64::b15); - RegisterAST::Ptr b16 = create(aarch64::b16); - RegisterAST::Ptr b17 = create(aarch64::b17); - RegisterAST::Ptr b18 = create(aarch64::b18); - RegisterAST::Ptr b19 = create(aarch64::b19); - RegisterAST::Ptr b20 = create(aarch64::b20); - RegisterAST::Ptr b21 = create(aarch64::b21); - RegisterAST::Ptr b22 = create(aarch64::b22); - RegisterAST::Ptr b23 = create(aarch64::b23); - RegisterAST::Ptr b24 = create(aarch64::b24); - RegisterAST::Ptr b25 = create(aarch64::b25); - RegisterAST::Ptr b26 = create(aarch64::b26); - RegisterAST::Ptr b27 = create(aarch64::b27); - RegisterAST::Ptr b28 = create(aarch64::b28); - RegisterAST::Ptr b29 = create(aarch64::b29); - RegisterAST::Ptr b30 = create(aarch64::b30); - RegisterAST::Ptr b31 = create(aarch64::b31); - - RegisterAST::Ptr xzr = create(aarch64::xzr); - RegisterAST::Ptr wzr = create(aarch64::wzr); - RegisterAST::Ptr sp = create(aarch64::sp); - RegisterAST::Ptr wsp = create(aarch64::wsp); - RegisterAST::Ptr pc = create(aarch64::pc); - RegisterAST::Ptr nzcv = create(aarch64::nzcv); - - std::vector expectedRead, expectedWritten; - - // ldr x1, #4 - expectedRead.push_back({pc}); - expectedWritten.push_back({x1}); - - // ldr x1, #256 - expectedRead.push_back({pc}); - expectedWritten.push_back({x1}); - - // ldr w1, #4 - expectedRead.push_back({pc}); - expectedWritten.push_back({w1}); - - // ldr w1, #1048576 - expectedRead.push_back({pc}); - expectedWritten.push_back({w1}); - - // ldr, x1, [x2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldr, x1, [x2], #255 - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldrb, w1, [x2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsb, w1, [x2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrh, w1, [x2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsh, x1, [x2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldr, x1, [x2, #8] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldr, x1, [x2, #256] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldrb, w1, [x2, #4] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsb, w1, [x2, #4] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrh, w1, [x2, #4] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsh, w1, [x2, #4] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsw, x1, [x2, #4] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldr, x1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({x1}); - - // ldrb, w1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({w1}); - - // ldrsb, w1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({w1}); - - // ldrh, w1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({w1}); - - // ldrsh, w1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({w1}); - - // ldrsw, x1, [x2, x3] - expectedRead.push_back({x2, x3}); - expectedWritten.push_back({x1}); - - // ldr, x1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldr, x1, [x2, #255]! - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldrb, w1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsb, w1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrh, w1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsh, w1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldrsw, x1, [x2, #1]! - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldar x1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldar w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldxrb w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldaxrb w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldarb w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldxrh w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldaxrh w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldarh w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldxr x1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldaxr x1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldar x1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1}); - - // ldxr w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldaxr w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldar w1, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1}); - - // ldxp x1, x3, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1, x3}); - - // ldaxp x1, x3, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({x1, x3}); - - // ldxp w1, w3, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1, w3}); - - // ldaxp w1, w3, [x2] - expectedRead.push_back({x2}); - expectedWritten.push_back({w1, w3}); - - // ldnp x1, x2, [x3,#8] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1, x2}); - - // ldp x1, x2, [x3,#8] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1, x2}); - - // ldp x1, x2, [x3,#8]! - expectedRead.push_back({x3}); - expectedWritten.push_back({x1, x2}); - - // ldp x1, x2, [x3],#8 - expectedRead.push_back({x3}); - expectedWritten.push_back({x1, x2}); - - // ldp x1, x2, [x3],#8 - expectedRead.push_back({x3}); - expectedWritten.push_back({x1, x2}); - - // ldurb w1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({w1}); - - // ldursb x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldur x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldurh w1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({w1}); - - // ldursh x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldursw x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldtrb w1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({w1}); - - // ldtrsb x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldtr x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldtrh w1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({w1}); - - // ldtrsh x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // ldtrsw x1, [x3,#1] - expectedRead.push_back({x3}); - expectedWritten.push_back({x1}); - - // str x1, [x2],#1 - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // str x1, [x2],#255 - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // strb w1, [x2],#1 - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // strh w1, [x2],#1 - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // str x1, [x2,#8] - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // str x1, [x2,#256] - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // strb w1, [x2,#4] - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // strh w1, [x2,#4] - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // str x1, [x2,x3] - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // str x1, [x2,x3] - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // strb w1, [x2,x3] - expectedRead.push_back({x2, w1, x3}); - expectedWritten.push_back({}); - - // strh w1, [x2,x3] - expectedRead.push_back({x2, w1, x3}); - expectedWritten.push_back({}); - - // str x1, [x2,#1]! - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // str x1, [x2,#255]! - expectedRead.push_back({x2, x1}); - expectedWritten.push_back({}); - - // strb w1, [x2,#1]! - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // strh w1, [x2,#1]! - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({}); - - // stxrb w0, w1, [x2] - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({w0}); - - // stxrh w0, w1, [x2] - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({w0}); - - // stxr w0, w1, [x2] - expectedRead.push_back({x2, w1}); - expectedWritten.push_back({w0}); - - // stxp w0, w1, w3, [x2] - expectedRead.push_back({x2, w1, w3}); - expectedWritten.push_back({w0}); - - // stnp x1, x2, [x3,#8] - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // stp x1, x2, [x3,#8] - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // stp x1, x2, [x3,#8]! - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // stp x1, x2, [x3],#8 - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // stp x1, x2, [x3],#8 - expectedRead.push_back({x2, x1, x3}); - expectedWritten.push_back({}); - - // sturb w1, [x3,#1] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // str x1, [x3,#1] - expectedRead.push_back({x3, x1}); - expectedWritten.push_back({}); - - // strh w1, [x3,#1] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // sttr x1, [x3,#1] - expectedRead.push_back({x3, x1}); - expectedWritten.push_back({}); - - // sttrb w1, [x3,#1] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // sttrh w1, [x3,#1] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // stlrb w1, [x3] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // stlr x1, [x3] - expectedRead.push_back({x3, x1}); - expectedWritten.push_back({}); - - // stlrh w1, [x3] - expectedRead.push_back({x3, w1}); - expectedWritten.push_back({}); - - // stlxp w0, x1, x2, [x3] - expectedRead.push_back({x3, x1, x2}); - expectedWritten.push_back({w0}); - - // stlxrb w0, w1, [x3] - expectedRead.push_back({w1, x3}); - expectedWritten.push_back({w0}); - - // stlxr w0, x1, [x3] - expectedRead.push_back({x1, x3}); - expectedWritten.push_back({w0}); - - // stlxrh w0, w1, [x3] - expectedRead.push_back({w1, x3}); - expectedWritten.push_back({w0}); - - // ldr x1, [x2,x3] - expectedRead.push_back({x3, x2}); - expectedWritten.push_back({x1}); - - // ldr x1, [x2,x3,lsl #3] - expectedRead.push_back({x3, x2}); - expectedWritten.push_back({x1}); - - // ldr w1, [x2,x3,lsl #2] - expectedRead.push_back({x3, x2}); - expectedWritten.push_back({w1}); - - // ldr x1, [x2,w3,uxtw] - expectedRead.push_back({w3, x2}); - expectedWritten.push_back({x1}); - - // ldr x1, [x2,x3,sxtx] - expectedRead.push_back({x3, x2}); - expectedWritten.push_back({x1}); - - // csinc x0, x1, x2, eq - expectedRead.push_back({x1, x2, nzcv}); - expectedWritten.push_back({x0}); - - // csinv x0, x1, x2, eq - expectedRead.push_back({x1, x2, nzcv}); - expectedWritten.push_back({x0}); - - // csneg x0, x1, x2, eq - expectedRead.push_back({x1, x2, nzcv}); - expectedWritten.push_back({x0}); - - // ubfiz x0, x1, #1, #1 - expectedRead.push_back({x1}); - expectedWritten.push_back({x0}); - - // lsr w0, w1, #0 - expectedRead.push_back({w1}); - expectedWritten.push_back({w0}); - - // mov x0, #0xffffffffffff0000 - expectedRead.push_back({}); - expectedWritten.push_back({x0}); - - // mov x0, #0xffffffffffff - expectedRead.push_back({}); - expectedWritten.push_back({x0}); - - // movn w0, #0xffff, lsl #16 - expectedRead.push_back({}); - expectedWritten.push_back({w0}); - - // mov x0, #0xffff - expectedRead.push_back({}); - expectedWritten.push_back({x0}); - - // mov x0, #0xffff000000000000 - expectedRead.push_back({}); - expectedWritten.push_back({x0}); - - // mov w0, #0xffff0000 - expectedRead.push_back({}); - expectedWritten.push_back({w0}); - - // ldr w30, 500630 0xffff4 - expectedRead.push_back({pc}); - expectedWritten.push_back({w30}); - - // ldr x30, 3e7fa0 -0x184d0 - expectedRead.push_back({pc}); - expectedWritten.push_back({x30}); - - // ldr w15, [x0],#255 - expectedRead.push_back({x0}); - expectedWritten.push_back({w15}); - - // ldr x15, [x30],#-240 - expectedRead.push_back({x30}); - expectedWritten.push_back({x15}); - - // ldr w29, [sp,#16380] - expectedRead.push_back({sp}); - expectedWritten.push_back({w29}); - - // ldr x29, [sp,#32760] - expectedRead.push_back({sp}); - expectedWritten.push_back({x29}); - - // ldr x1, [x2,x31] - expectedRead.push_back({x2, xzr}); - expectedWritten.push_back({x1}); - - // ldr x1, [sp,#255]! - expectedRead.push_back({sp}); - expectedWritten.push_back({x1}); - - // prfm 1F, [pc + 4] - expectedRead.push_back({pc}); - expectedWritten.push_back({}); - - // prfm 0, [pc + fffffffffffffffc] - expectedRead.push_back({pc}); - expectedWritten.push_back({}); - - // prfm 8, [pc + 1fb00] - expectedRead.push_back({pc}); - expectedWritten.push_back({}); - - // prfm 1d, [x1 + 8] - expectedRead.push_back({x1}); - expectedWritten.push_back({}); - - // prfm 1f, [x30 + 7ff8] - expectedRead.push_back({x30}); - expectedWritten.push_back({}); - - // prfm 4, [x2 + x5 << 0] - expectedRead.push_back({x2, x5}); - expectedWritten.push_back({}); - - // prfm 5, [x30 + w1 << 3] - expectedRead.push_back({x30, w1}); - expectedWritten.push_back({}); - - // prfm 6, [x8 + x5 << 0] - expectedRead.push_back({x8, x5}); - expectedWritten.push_back({}); - - // nop - expectedRead.push_back({}); - expectedWritten.push_back({}); - - if(expectedRead.size() != expectedWritten.size()) { - logerror("FATAL: expectedRead.size() != expectedWritten.size()"); - return FAILED; - } - - if(expectedRead.size() != decodedInsns.size()) { - logerror("FATAL: expectedRead.size() != decodedInsns.size()"); - return FAILED; - } - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - - return retVal; -} diff --git a/src/instruction/aarch64_simd.C b/src/instruction/aarch64_simd.C deleted file mode 100644 index b184de3b5..000000000 --- a/src/instruction/aarch64_simd.C +++ /dev/null @@ -1,1041 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/aarch64_regs.h" -#include "test_lib.h" - -#include -#include -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class aarch64_simd_Mutator : public InstructionMutator { -public: - aarch64_simd_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* aarch64_simd_factory() { - return new aarch64_simd_Mutator(); -} - -void reverseBuffer(unsigned char* buffer, int bufferSize) { - int elementCount = bufferSize / 4; - - for(int loop_index = 0; loop_index < elementCount; loop_index++) { - std::swap(buffer[0], buffer[3]); - std::swap(buffer[1], buffer[2]); - buffer += 4; - } -} - -test_results_t aarch64_simd_Mutator::executeTest() { - constexpr auto num_tests = 131; - - // clang-format off - std::array buffer = { - 0x4e, 0x30, 0x38, 0x20, // saddlv h0, q1.8b - 0x0e, 0x30, 0xa9, 0x0f, // smaxv b15, d8 - 0x6e, 0x70, 0x38, 0x42, // uaddlv s2, q2 - 0x2e, 0x31, 0xa8, 0x05, // uminv b5, d0 - 0x6e, 0x30, 0xc8, 0x25, // fmaxnmv s5, q1 - 0x0e, 0x11, 0x04, 0x41, // dup d1, q2 - 0x4e, 0x02, 0x0c, 0xd8, // dup q20, w5 - 0x0e, 0x18, 0x0c, 0x40, // dup d0, x2 - 0x4e, 0x08, 0x1c, 0x04, // ins q4, x0 - 0x4e, 0x01, 0x1f, 0xff, // ins q31, wzr - 0x0e, 0x05, 0x2c, 0xa1, // smov w1, d5 - 0x4e, 0x10, 0x3c, 0x42, // umov x2, q2 - 0x6e, 0x01, 0x04, 0x00, // ins q0, d0 - 0x2e, 0x02, 0x28, 0x20, // ext d0, d1, d2, #5 - 0x6e, 0x02, 0x7a, 0x08, // ext q8, q16, q2, #15 - 0x0f, 0x00, 0xe5, 0x00, // movi d0, #8 - 0x4f, 0x07, 0xa7, 0xe1, // movi q1, ff lsl #8 - 0x0f, 0x00, 0x74, 0x05, // orr d5, #0 lsl #24 - 0x0f, 0x00, 0xb4, 0x05, // orr d5, #0 lsl #8 - 0x4f, 0x07, 0xf7, 0xe8, // fmov q8, ff - 0x6f, 0x00, 0xc5, 0x80, // mvni q0, #12 lsl #8 - 0x6f, 0x00, 0x97, 0x08, // bic d8, #24 lsl #0 - 0x2f, 0x07, 0xe7, 0xe2, // movi d2, (all ones) - 0x0e, 0x00, 0x1a, 0x08, // uzp1 d8, d16, d0 - 0x4e, 0x04, 0x28, 0x62, // trn1 q2, q3, q4 - 0x0e, 0x08, 0x79, 0x08, // zip2 d8, d8, d8 - 0x5e, 0x11, 0x04, 0x25, // dup b5, q1 - 0x5e, 0x08, 0x05, 0x08, // dup d8, d8 - 0x5e, 0xf1, 0xb8, 0xa2, // addp d2, q5 - 0x7e, 0x30, 0xc8, 0x81, // fmaxnmp s1, d4 - 0x7e, 0xf0, 0xc9, 0xef, // fminnmp d15, q15 - 0x5f, 0x78, 0x04, 0x82, // sshr d2, d4, #8 - 0x5f, 0x40, 0x14, 0x20, // ssra d0, d1, #64 - 0x5f, 0x41, 0x57, 0xff, // shl d31, d31, #1 - 0x5f, 0x0e, 0x76, 0x08, // sqshl b8, b16, 6 - 0x5f, 0x10, 0x9d, 0x02, // sqrshrn h2, h8, #16 - 0x5f, 0x20, 0xfc, 0x00, // fcvtzs s0, s0, #32 - 0x7f, 0x48, 0x55, 0x04, // sli d4, d8, #8 - 0x7f, 0x09, 0x94, 0x42, // uqshrn b2, h2, #7 - 0x5e, 0x60, 0x91, 0x08, // sqdmlal s8, h8, h0 - 0x5e, 0xa1, 0xb0, 0x82, // sqdmlsl d2, s4, s1 - 0x5e, 0x7f, 0xd0, 0x00, // sqdmull s0, h0, h31 - 0x5e, 0xe0, 0x34, 0x22, // cmgt d2, d1, d0 - 0x5e, 0x64, 0x4c, 0x40, // sqshl h0, h2, h4 - 0x5e, 0xa0, 0xb4, 0x3f, // sqdmulh s31, s1, s0 - 0x5e, 0x68, 0xfd, 0x08, // frecps d8, d8, d8 - 0x7e, 0xe2, 0x57, 0xe4, // urshl d4, d31, d2 - 0x7e, 0xb0, 0xe5, 0x02, // fcmgt s2, s8, s16 - 0x5e, 0x20, 0x39, 0x02, // suqadd b2, b8 - 0x5e, 0x61, 0x48, 0x04, // sqxtn h4, s0 - 0x5e, 0x61, 0xb8, 0x3f, // fcvtms d31, d1 - 0x5e, 0xa1, 0xd8, 0xa9, // frecpe s9, s5 - 0x7e, 0x21, 0x28, 0x48, // sqxtun b8, h2 - 0x7e, 0x61, 0x68, 0x4f, // fcvtxn s15, d2 - 0x7e, 0xa1, 0xdb, 0xff, // frsqrte s31, s31 - 0x5f, 0x49, 0x38, 0xa2, // sqdmlal s2, h5, q9 - 0x5f, 0x9f, 0x73, 0xe0, // sqdmlsl d0, s31, d31 - 0x5f, 0x4f, 0xd0, 0x88, // sqrdmulh h8, h4, d15 - 0x5f, 0x94, 0x18, 0x49, // fmla s9, s2, q20 - 0x5f, 0xd1, 0x50, 0xa8, // fmls d8, d5, d17 - 0x4e, 0x09, 0x01, 0x04, // tbl q4, q8, q9 - 0x0e, 0x03, 0x30, 0x20, // tbx d0, d1, d2, d3 - 0x4e, 0x1f, 0x43, 0x00, // tbl q0, q24, q25, q26, q31 - 0x0e, 0x15, 0x70, 0x14, // tbx d20, d0, d1, d2, d3, d21 - 0x4e, 0x23, 0x00, 0x41, // saddl q1, hq2, hq3 - 0x0e, 0x25, 0x20, 0x9f, // ssubl q31, d4, d5 - 0x4e, 0x30, 0x41, 0x02, // addhn hq2, q8, q16 - 0x0e, 0x68, 0x70, 0x45, // sabdl q5, d2, d8 - 0x4e, 0xa2, 0xb0, 0x20, // sqdmlsl q0, hq1, hq2 - 0x2e, 0x3f, 0x61, 0xe2, // rsubhn d2, q15, q31 - 0x4e, 0x63, 0x60, 0x48, // subhn hq8, q2,q3 - 0x0e, 0x25, 0x0c, 0x62, // sqadd d2, d3, d5 - 0x4e, 0x3f, 0x34, 0x20, // cmgt q0, q1, q31 - 0x0e, 0x2a, 0x7d, 0x28, // saba d8, d9, d10 - 0x6e, 0x66, 0x1c, 0xa4, // bsl q4, q5, q6 - 0x0e, 0x20, 0x59, 0x28, // cnt d8, d9 - 0x4e, 0x21, 0x2b, 0xe0, // xtn q0, q31 - 0x4e, 0x61, 0xc8, 0x62, // fcvtas q2, q3 - 0x2e, 0xa1, 0xf9, 0xff, // fsqrt d31, d15 - 0x0f, 0x40, 0x20, 0xa2, // smlal q2, d5, d0 - 0x4f, 0x85, 0x6b, 0xe1, // smlsl q1, hq31, q5 - 0x4f, 0x9f, 0x80, 0x49, // mul q9, q2, d31 - 0x0f, 0x45, 0xb8, 0x88, // sqdmull q8, d4, q5 - 0x0f, 0x83, 0xd0, 0x41, // sqrdmulh d1. d2, d3 - 0x4f, 0x8b, 0x59, 0x45, // fmls q5, q10, q11 - 0x6f, 0x9f, 0x21, 0x04, // umlal q4, hq8, d31 - 0x0f, 0x88, 0x19, 0x84, // fmla d4, d12, q8 - 0x4c, 0x00, 0x71, 0x04, // st1 q4, [x8] - 0x0c, 0x00, 0x83, 0xe9, // st2 d9, d10, [sp] - 0x4c, 0x00, 0xa3, 0xc2, // st1 q2, q3, [x30] - 0x4c, 0x40, 0x63, 0xfe, // ld1 q30, q31, q0, [sp] - 0x0c, 0x40, 0x20, 0x01, // ld1 d1, d2, d3, d4, [x0] - 0x4c, 0x40, 0x40, 0x25, // ld3 q5, q6, q7, [x1] - 0x0c, 0x94, 0x00, 0x40, // st4 d0, d1, d2, d3, [x2], x20 - 0x4c, 0x85, 0x23, 0xfe, // st1 q30, q31, q0, q1, [sp], x5 - 0x4c, 0x87, 0x61, 0x04, // st1 q4, q5, q6, [x8], x7 - 0x0c, 0xde, 0xa3, 0xff, // ld1 d31, d0, [sp], x30 - 0x4c, 0xc0, 0x71, 0x45, // ld1 q5, [x10], x0 - 0x0c, 0x9f, 0x43, 0xe5, // st3 d5, d6, d7, [sp], #24 - 0x4c, 0x9f, 0x20, 0x5f, // st1 q31, q0, q1, q2, [x2], #48 - 0x4c, 0xdf, 0x63, 0xe1, // ld1 q1, q2, q3, [sp], #48 - 0x0c, 0xdf, 0xa3, 0xdf, // ld1 d31, d0, [x30], #16 - 0x4c, 0x9f, 0x70, 0x04, // st1 q4, [x0], #16 - 0x4d, 0x00, 0x00, 0x45, // st1 q5, [x2] - 0x0d, 0x20, 0x43, 0xe4, // st2 d4, d5, [sp] - 0x4d, 0x00, 0xa1, 0x1f, // st3 q31, q0, q1, [x8] - 0x0d, 0x20, 0xa7, 0xe0, // st4 d0, d1, d2, d3, [sp] - 0x4d, 0x20, 0x43, 0xd5, // st2 q21, q22, [x30] - 0x0d, 0x20, 0xa4, 0x1e, // st4 d30, d31, d0, d1, [x0] - 0x4d, 0x40, 0x00, 0x45, // ld1 q5, [x2] - 0x0d, 0x60, 0x43, 0xe4, // ld2 d4, d5, [sp] - 0x4d, 0x40, 0xa1, 0x1f, // ld3 q31, q0, q1, [x8] - 0x0d, 0x60, 0xa7, 0xe0, // ld4 d0, d1, d2, d3, [sp] - 0x0d, 0x40, 0x80, 0x09, // ld1 d9, [x0] - 0x4d, 0x40, 0xa4, 0x21, // ld3 q1, q2, q3, [x1] - 0x4d, 0x88, 0x00, 0x45, // st1 q5, [x2], x8 - 0x0d, 0xbf, 0x43, 0xe4, // st2 d4, d5, [sp], #4 - 0x4d, 0x9e, 0xa1, 0x1f, // st3 q31, q0, q1, [x8], x30 - 0x0d, 0xbf, 0xa7, 0xe0, // st4 d0, d1, d2, d3, [sp], #32 - 0x4d, 0xdf, 0x00, 0x45, // ld1 q5,[x2], #1 - 0x0d, 0xe0, 0x43, 0xe4, // ld2 d4, d5, [sp], x0 - 0x4d, 0xdf, 0xa1, 0x1f, // ld3 q31, q0, q1, [x8], #12 - 0x0d, 0xe9, 0xa7, 0xe0, // ld4 d0, d1, d2, d3, [sp], x9 - 0x0f, 0x08, 0x04, 0x82, // sshr d2, d4, #8 - 0x4f, 0x40, 0x14, 0x20, // ssra q0, q1, #64 - 0x0f, 0x09, 0x57, 0xff, // shl d31, d31, #1 - 0x4f, 0x30, 0x76, 0x08, // sqshl q8, q16, #16 - 0x0f, 0x10, 0x9d, 0x02, // sqrshrn d2, d8, #16 - 0x4f, 0x20, 0xfc, 0x00, // fcvtzs q0, q0, #32 - 0x2f, 0x28, 0x55, 0x04, // sli d4, d8, #8 - 0x6f, 0x09, 0x94, 0xa2 // uqshrn q2, q6, #7 - }; - // clang-format on - - reverseBuffer(buffer.data(), buffer.size()); - InstructionDecoder d(buffer.data(), buffer.size(), Dyninst::Arch_aarch64); - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - auto create = [](MachRegister reg) { - return boost::make_shared(reg); - }; - - RegisterAST::Ptr xzr = create(aarch64::xzr); - RegisterAST::Ptr wzr = create(aarch64::wzr); - - RegisterAST::Ptr x0 = create(aarch64::x0); - RegisterAST::Ptr x1 = create(aarch64::x1); - RegisterAST::Ptr x2 = create(aarch64::x2); - RegisterAST::Ptr x3 = create(aarch64::x3); - RegisterAST::Ptr x4 = create(aarch64::x4); - RegisterAST::Ptr x5 = create(aarch64::x5); - RegisterAST::Ptr x6 = create(aarch64::x6); - RegisterAST::Ptr x7 = create(aarch64::x7); - RegisterAST::Ptr x8 = create(aarch64::x8); - RegisterAST::Ptr x9 = create(aarch64::x9); - RegisterAST::Ptr x10 = create(aarch64::x10); - RegisterAST::Ptr x11 = create(aarch64::x11); - RegisterAST::Ptr x12 = create(aarch64::x12); - RegisterAST::Ptr x13 = create(aarch64::x13); - RegisterAST::Ptr x14 = create(aarch64::x14); - RegisterAST::Ptr x15 = create(aarch64::x15); - RegisterAST::Ptr x16 = create(aarch64::x16); - RegisterAST::Ptr x17 = create(aarch64::x17); - RegisterAST::Ptr x18 = create(aarch64::x18); - RegisterAST::Ptr x19 = create(aarch64::x19); - RegisterAST::Ptr x20 = create(aarch64::x20); - RegisterAST::Ptr x21 = create(aarch64::x21); - RegisterAST::Ptr x22 = create(aarch64::x22); - RegisterAST::Ptr x23 = create(aarch64::x23); - RegisterAST::Ptr x24 = create(aarch64::x24); - RegisterAST::Ptr x25 = create(aarch64::x25); - RegisterAST::Ptr x26 = create(aarch64::x26); - RegisterAST::Ptr x27 = create(aarch64::x27); - RegisterAST::Ptr x28 = create(aarch64::x28); - RegisterAST::Ptr x29 = create(aarch64::x29); - RegisterAST::Ptr x30 = create(aarch64::x30); - - RegisterAST::Ptr w0 = create(aarch64::w0); - RegisterAST::Ptr w1 = create(aarch64::w1); - RegisterAST::Ptr w2 = create(aarch64::w2); - RegisterAST::Ptr w3 = create(aarch64::w3); - RegisterAST::Ptr w4 = create(aarch64::w4); - RegisterAST::Ptr w5 = create(aarch64::w5); - RegisterAST::Ptr w6 = create(aarch64::w6); - RegisterAST::Ptr w7 = create(aarch64::w7); - RegisterAST::Ptr w8 = create(aarch64::w8); - RegisterAST::Ptr w9 = create(aarch64::w9); - RegisterAST::Ptr w10 = create(aarch64::w10); - RegisterAST::Ptr w11 = create(aarch64::w11); - RegisterAST::Ptr w12 = create(aarch64::w12); - RegisterAST::Ptr w13 = create(aarch64::w13); - RegisterAST::Ptr w14 = create(aarch64::w14); - RegisterAST::Ptr w15 = create(aarch64::w15); - RegisterAST::Ptr w16 = create(aarch64::w16); - RegisterAST::Ptr w17 = create(aarch64::w17); - RegisterAST::Ptr w18 = create(aarch64::w18); - RegisterAST::Ptr w19 = create(aarch64::w19); - RegisterAST::Ptr w20 = create(aarch64::w20); - RegisterAST::Ptr w21 = create(aarch64::w21); - RegisterAST::Ptr w22 = create(aarch64::w22); - RegisterAST::Ptr w23 = create(aarch64::w23); - RegisterAST::Ptr w24 = create(aarch64::w24); - RegisterAST::Ptr w25 = create(aarch64::w25); - RegisterAST::Ptr w26 = create(aarch64::w26); - RegisterAST::Ptr w27 = create(aarch64::w27); - RegisterAST::Ptr w28 = create(aarch64::w28); - RegisterAST::Ptr w29 = create(aarch64::w29); - RegisterAST::Ptr w30 = create(aarch64::w30); - - RegisterAST::Ptr q0 = create(aarch64::q0); - RegisterAST::Ptr q1 = create(aarch64::q1); - RegisterAST::Ptr q2 = create(aarch64::q2); - RegisterAST::Ptr q3 = create(aarch64::q3); - RegisterAST::Ptr q4 = create(aarch64::q4); - RegisterAST::Ptr q5 = create(aarch64::q5); - RegisterAST::Ptr q6 = create(aarch64::q6); - RegisterAST::Ptr q7 = create(aarch64::q7); - RegisterAST::Ptr q8 = create(aarch64::q8); - RegisterAST::Ptr q9 = create(aarch64::q9); - RegisterAST::Ptr q10 = create(aarch64::q10); - RegisterAST::Ptr q11 = create(aarch64::q11); - RegisterAST::Ptr q12 = create(aarch64::q12); - RegisterAST::Ptr q13 = create(aarch64::q13); - RegisterAST::Ptr q14 = create(aarch64::q14); - RegisterAST::Ptr q15 = create(aarch64::q15); - RegisterAST::Ptr q16 = create(aarch64::q16); - RegisterAST::Ptr q17 = create(aarch64::q17); - RegisterAST::Ptr q18 = create(aarch64::q18); - RegisterAST::Ptr q19 = create(aarch64::q19); - RegisterAST::Ptr q20 = create(aarch64::q20); - RegisterAST::Ptr q21 = create(aarch64::q21); - RegisterAST::Ptr q22 = create(aarch64::q22); - RegisterAST::Ptr q23 = create(aarch64::q23); - RegisterAST::Ptr q24 = create(aarch64::q24); - RegisterAST::Ptr q25 = create(aarch64::q25); - RegisterAST::Ptr q26 = create(aarch64::q26); - RegisterAST::Ptr q27 = create(aarch64::q27); - RegisterAST::Ptr q28 = create(aarch64::q28); - RegisterAST::Ptr q29 = create(aarch64::q29); - RegisterAST::Ptr q30 = create(aarch64::q30); - RegisterAST::Ptr q31 = create(aarch64::q31); - - RegisterAST::Ptr s0 = create(aarch64::s0); - RegisterAST::Ptr s1 = create(aarch64::s1); - RegisterAST::Ptr s2 = create(aarch64::s2); - RegisterAST::Ptr s3 = create(aarch64::s3); - RegisterAST::Ptr s4 = create(aarch64::s4); - RegisterAST::Ptr s5 = create(aarch64::s5); - RegisterAST::Ptr s6 = create(aarch64::s6); - RegisterAST::Ptr s7 = create(aarch64::s7); - RegisterAST::Ptr s8 = create(aarch64::s8); - RegisterAST::Ptr s9 = create(aarch64::s9); - RegisterAST::Ptr s10 = create(aarch64::s10); - RegisterAST::Ptr s11 = create(aarch64::s11); - RegisterAST::Ptr s12 = create(aarch64::s12); - RegisterAST::Ptr s13 = create(aarch64::s13); - RegisterAST::Ptr s14 = create(aarch64::s14); - RegisterAST::Ptr s15 = create(aarch64::s15); - RegisterAST::Ptr s16 = create(aarch64::s16); - RegisterAST::Ptr s17 = create(aarch64::s17); - RegisterAST::Ptr s18 = create(aarch64::s18); - RegisterAST::Ptr s19 = create(aarch64::s19); - RegisterAST::Ptr s20 = create(aarch64::s20); - RegisterAST::Ptr s21 = create(aarch64::s21); - RegisterAST::Ptr s22 = create(aarch64::s22); - RegisterAST::Ptr s23 = create(aarch64::s23); - RegisterAST::Ptr s24 = create(aarch64::s24); - RegisterAST::Ptr s25 = create(aarch64::s25); - RegisterAST::Ptr s26 = create(aarch64::s26); - RegisterAST::Ptr s27 = create(aarch64::s27); - RegisterAST::Ptr s28 = create(aarch64::s28); - RegisterAST::Ptr s29 = create(aarch64::s29); - RegisterAST::Ptr s30 = create(aarch64::s30); - RegisterAST::Ptr s31 = create(aarch64::s31); - - RegisterAST::Ptr h0 = create(aarch64::h0); - RegisterAST::Ptr h1 = create(aarch64::h1); - RegisterAST::Ptr h2 = create(aarch64::h2); - RegisterAST::Ptr h3 = create(aarch64::h3); - RegisterAST::Ptr h4 = create(aarch64::h4); - RegisterAST::Ptr h5 = create(aarch64::h5); - RegisterAST::Ptr h6 = create(aarch64::h6); - RegisterAST::Ptr h7 = create(aarch64::h7); - RegisterAST::Ptr h8 = create(aarch64::h8); - RegisterAST::Ptr h9 = create(aarch64::h9); - RegisterAST::Ptr h10 = create(aarch64::h10); - RegisterAST::Ptr h11 = create(aarch64::h11); - RegisterAST::Ptr h12 = create(aarch64::h12); - RegisterAST::Ptr h13 = create(aarch64::h13); - RegisterAST::Ptr h14 = create(aarch64::h14); - RegisterAST::Ptr h15 = create(aarch64::h15); - RegisterAST::Ptr h16 = create(aarch64::h16); - RegisterAST::Ptr h17 = create(aarch64::h17); - RegisterAST::Ptr h18 = create(aarch64::h18); - RegisterAST::Ptr h19 = create(aarch64::h19); - RegisterAST::Ptr h20 = create(aarch64::h20); - RegisterAST::Ptr h21 = create(aarch64::h21); - RegisterAST::Ptr h22 = create(aarch64::h22); - RegisterAST::Ptr h23 = create(aarch64::h23); - RegisterAST::Ptr h24 = create(aarch64::h24); - RegisterAST::Ptr h25 = create(aarch64::h25); - RegisterAST::Ptr h26 = create(aarch64::h26); - RegisterAST::Ptr h27 = create(aarch64::h27); - RegisterAST::Ptr h28 = create(aarch64::h28); - RegisterAST::Ptr h29 = create(aarch64::h29); - RegisterAST::Ptr h30 = create(aarch64::h30); - RegisterAST::Ptr h31 = create(aarch64::h31); - - RegisterAST::Ptr d0 = create(aarch64::d0); - RegisterAST::Ptr d1 = create(aarch64::d1); - RegisterAST::Ptr d2 = create(aarch64::d2); - RegisterAST::Ptr d3 = create(aarch64::d3); - RegisterAST::Ptr d4 = create(aarch64::d4); - RegisterAST::Ptr d5 = create(aarch64::d5); - RegisterAST::Ptr d6 = create(aarch64::d6); - RegisterAST::Ptr d7 = create(aarch64::d7); - RegisterAST::Ptr d8 = create(aarch64::d8); - RegisterAST::Ptr d9 = create(aarch64::d9); - RegisterAST::Ptr d10 = create(aarch64::d10); - RegisterAST::Ptr d11 = create(aarch64::d11); - RegisterAST::Ptr d12 = create(aarch64::d12); - RegisterAST::Ptr d13 = create(aarch64::d13); - RegisterAST::Ptr d14 = create(aarch64::d14); - RegisterAST::Ptr d15 = create(aarch64::d15); - RegisterAST::Ptr d16 = create(aarch64::d16); - RegisterAST::Ptr d17 = create(aarch64::d17); - RegisterAST::Ptr d18 = create(aarch64::d18); - RegisterAST::Ptr d19 = create(aarch64::d19); - RegisterAST::Ptr d20 = create(aarch64::d20); - RegisterAST::Ptr d21 = create(aarch64::d21); - RegisterAST::Ptr d22 = create(aarch64::d22); - RegisterAST::Ptr d23 = create(aarch64::d23); - RegisterAST::Ptr d24 = create(aarch64::d24); - RegisterAST::Ptr d25 = create(aarch64::d25); - RegisterAST::Ptr d26 = create(aarch64::d26); - RegisterAST::Ptr d27 = create(aarch64::d27); - RegisterAST::Ptr d28 = create(aarch64::d28); - RegisterAST::Ptr d29 = create(aarch64::d29); - RegisterAST::Ptr d30 = create(aarch64::d30); - RegisterAST::Ptr d31 = create(aarch64::d31); - - RegisterAST::Ptr b0 = create(aarch64::b0); - RegisterAST::Ptr b1 = create(aarch64::b1); - RegisterAST::Ptr b2 = create(aarch64::b2); - RegisterAST::Ptr b3 = create(aarch64::b3); - RegisterAST::Ptr b4 = create(aarch64::b4); - RegisterAST::Ptr b5 = create(aarch64::b5); - RegisterAST::Ptr b6 = create(aarch64::b6); - RegisterAST::Ptr b7 = create(aarch64::b7); - RegisterAST::Ptr b8 = create(aarch64::b8); - RegisterAST::Ptr b9 = create(aarch64::b9); - RegisterAST::Ptr b10 = create(aarch64::b10); - RegisterAST::Ptr b11 = create(aarch64::b11); - RegisterAST::Ptr b12 = create(aarch64::b12); - RegisterAST::Ptr b13 = create(aarch64::b13); - RegisterAST::Ptr b14 = create(aarch64::b14); - RegisterAST::Ptr b15 = create(aarch64::b15); - RegisterAST::Ptr b16 = create(aarch64::b16); - RegisterAST::Ptr b17 = create(aarch64::b17); - RegisterAST::Ptr b18 = create(aarch64::b18); - RegisterAST::Ptr b19 = create(aarch64::b19); - RegisterAST::Ptr b20 = create(aarch64::b20); - RegisterAST::Ptr b21 = create(aarch64::b21); - RegisterAST::Ptr b22 = create(aarch64::b22); - RegisterAST::Ptr b23 = create(aarch64::b23); - RegisterAST::Ptr b24 = create(aarch64::b24); - RegisterAST::Ptr b25 = create(aarch64::b25); - RegisterAST::Ptr b26 = create(aarch64::b26); - RegisterAST::Ptr b27 = create(aarch64::b27); - RegisterAST::Ptr b28 = create(aarch64::b28); - RegisterAST::Ptr b29 = create(aarch64::b29); - RegisterAST::Ptr b30 = create(aarch64::b30); - RegisterAST::Ptr b31 = create(aarch64::b31); - - RegisterAST::Ptr hq0 = create(aarch64::hq0); - RegisterAST::Ptr hq1 = create(aarch64::hq1); - RegisterAST::Ptr hq2 = create(aarch64::hq2); - RegisterAST::Ptr hq3 = create(aarch64::hq3); - RegisterAST::Ptr hq4 = create(aarch64::hq4); - RegisterAST::Ptr hq5 = create(aarch64::hq5); - RegisterAST::Ptr hq6 = create(aarch64::hq6); - RegisterAST::Ptr hq7 = create(aarch64::hq7); - RegisterAST::Ptr hq8 = create(aarch64::hq8); - RegisterAST::Ptr hq9 = create(aarch64::hq9); - RegisterAST::Ptr hq10 = create(aarch64::hq10); - RegisterAST::Ptr hq11 = create(aarch64::hq11); - RegisterAST::Ptr hq12 = create(aarch64::hq12); - RegisterAST::Ptr hq13 = create(aarch64::hq13); - RegisterAST::Ptr hq14 = create(aarch64::hq14); - RegisterAST::Ptr hq15 = create(aarch64::hq15); - RegisterAST::Ptr hq16 = create(aarch64::hq16); - RegisterAST::Ptr hq17 = create(aarch64::hq17); - RegisterAST::Ptr hq18 = create(aarch64::hq18); - RegisterAST::Ptr hq19 = create(aarch64::hq19); - RegisterAST::Ptr hq20 = create(aarch64::hq20); - RegisterAST::Ptr hq21 = create(aarch64::hq21); - RegisterAST::Ptr hq22 = create(aarch64::hq22); - RegisterAST::Ptr hq23 = create(aarch64::hq23); - RegisterAST::Ptr hq24 = create(aarch64::hq24); - RegisterAST::Ptr hq25 = create(aarch64::hq25); - RegisterAST::Ptr hq26 = create(aarch64::hq26); - RegisterAST::Ptr hq27 = create(aarch64::hq27); - RegisterAST::Ptr hq28 = create(aarch64::hq28); - RegisterAST::Ptr hq29 = create(aarch64::hq29); - RegisterAST::Ptr hq30 = create(aarch64::hq30); - RegisterAST::Ptr hq31 = create(aarch64::hq31); - - RegisterAST::Ptr sp(new RegisterAST(aarch64::sp)); - - std::deque expectedRead, expectedWritten; - - // SADDLV H0, Q1.8B - expectedRead.push_back({q1}); - expectedWritten.push_back({h0}); - - // SMAXV B15, D8 - expectedRead.push_back({d8}); - expectedWritten.push_back({b15}); - - // UADDLV S2, Q2 - expectedRead.push_back({q2}); - expectedWritten.push_back({s2}); - - // UMINV B5, D0 - expectedRead.push_back({d0}); - expectedWritten.push_back({b5}); - - // FMAXNMV S5, Q1 - expectedRead.push_back({q1}); - expectedWritten.push_back({s5}); - - // DUP D1, Q2 - expectedRead.push_back({q2}); - expectedWritten.push_back({d1}); - - // DUP Q20, W5 - expectedRead.push_back({w6}); - expectedWritten.push_back({q24}); - - // DUP D0, X2 - expectedRead.push_back({x2}); - expectedWritten.push_back({d0}); - - // INS Q4, X0 - expectedRead.push_back({x0}); - expectedWritten.push_back({q4}); - - // INS Q31, WZR - expectedRead.push_back({wzr}); - expectedWritten.push_back({q31}); - - // SMOV W1, D5 - expectedRead.push_back({d5}); - expectedWritten.push_back({w1}); - - // UMOV X2, Q2 - expectedRead.push_back({q2}); - expectedWritten.push_back({x2}); - - // INS Q0, D0 - expectedRead.push_back({d0}); - expectedWritten.push_back({q0}); - - // EXT D0, D1, D2, #5 - expectedRead.push_back({d1, d2}); - expectedWritten.push_back({d0}); - - // EXT Q8, Q16, Q2, #15 - expectedRead.push_back({q16, q2}); - expectedWritten.push_back({q8}); - - // MOVI D0, #8 - expectedRead.push_back({}); - expectedWritten.push_back({d0}); - - // MOVI Q1, FF LSL #8 - expectedRead.push_back({}); - expectedWritten.push_back({q1}); - - // ORR D5, #0 LSL #24 - expectedRead.push_back({d5}); - expectedWritten.push_back({d5}); - - // ORR D5, #0 LSL #8 - expectedRead.push_back({d5}); - expectedWritten.push_back({d5}); - - // FMOV Q8, FF - expectedRead.push_back({}); - expectedWritten.push_back({q8}); - - // MVNI Q0, #12 LSL #8 - expectedRead.push_back({}); - expectedWritten.push_back({q0}); - - // BIC D8, #24 LSL #0 - expectedRead.push_back({q8}); - expectedWritten.push_back({q8}); - - // MOVI D2, (all ones) - expectedRead.push_back({}); - expectedWritten.push_back({d2}); - - // UZP1 D8, D16, D0 - expectedRead.push_back({d16, d0}); - expectedWritten.push_back({d8}); - - // TRN1 Q2, Q3, Q4 - expectedRead.push_back({q3, q4}); - expectedWritten.push_back({q2}); - - // ZIP2 D8, D8, D8 - expectedRead.push_back({d8}); - expectedWritten.push_back({d8}); - - // DUP B5, Q1 - expectedRead.push_back({q1}); - expectedWritten.push_back({b5}); - - // DUP D8, D8 - expectedRead.push_back({d8}); - expectedWritten.push_back({d8}); - - // ADDP D2, Q5 - expectedRead.push_back({q5}); - expectedWritten.push_back({d2}); - - // FMAXNMP S1, D4 - expectedRead.push_back({d4}); - expectedWritten.push_back({s1}); - - // FMINNMP D15, Q15 - expectedRead.push_back({q15}); - expectedWritten.push_back({d15}); - - // SSHR D2, D4, #8 - expectedRead.push_back({d4}); - expectedWritten.push_back({d2}); - - // SSRA D0, D1, #64 - expectedRead.push_back({d1}); - expectedWritten.push_back({d0}); - - // SHL D31, D31, #1 - expectedRead.push_back({d31}); - expectedWritten.push_back({d31}); - - // SQSHL B8, B16, 6 - expectedRead.push_back({b16}); - expectedWritten.push_back({b8}); - - // SQRSHRN H2, H8, #16 - expectedRead.push_back({s8}); - expectedWritten.push_back({h2}); - - // FCVTZS S0, S0, #32 - expectedRead.push_back({s0}); - expectedWritten.push_back({s0}); - - // SLI D4, D8, #8 - expectedRead.push_back({d8}); - expectedWritten.push_back({d4}); - - // UQSHRN B2, H2, #7 - expectedRead.push_back({h2}); - expectedWritten.push_back({b2}); - - // SQDMLAL S8, H8, H0 - expectedRead.push_back({h8, h0}); - expectedWritten.push_back({s8}); - - // SQDMLSL D2, S4, S1 - expectedRead.push_back({s4, s1}); - expectedWritten.push_back({d2}); - - // SQDMULL S0, H0, H31 - expectedRead.push_back({h0, h31}); - expectedWritten.push_back({s0}); - - // CMGT D2, D1, D0 - expectedRead.push_back({d1, d0}); - expectedWritten.push_back({d2}); - - // SQSHL H0, H2, H4 - expectedRead.push_back({h2, h4}); - expectedWritten.push_back({h0}); - - // SQDMULH S31, S1, S0 - expectedRead.push_back({s1, s0}); - expectedWritten.push_back({s31}); - - // FRECPS D8, D8, D8 - expectedRead.push_back({d8}); - expectedWritten.push_back({d8}); - - // URSHL D4, D31, D2 - expectedRead.push_back({d31, d2}); - expectedWritten.push_back({d4}); - - // FCMGT S2, S8, S16 - expectedRead.push_back({s8, s16}); - expectedWritten.push_back({s2}); - - // SUQADD B2, B8 - expectedRead.push_back({b8}); - expectedWritten.push_back({b2}); - - // SQXTN H4, S0 - expectedRead.push_back({s0}); - expectedWritten.push_back({h4}); - - // FCVTMS D31, D1 - expectedRead.push_back({d1}); - expectedWritten.push_back({d31}); - - // FRECPE S9, S5 - expectedRead.push_back({s5}); - expectedWritten.push_back({s9}); - - // SQXTUN B8, H2 - expectedRead.push_back({h2}); - expectedWritten.push_back({b8}); - - // FCVTXN S15, D2 - expectedRead.push_back({d2}); - expectedWritten.push_back({s15}); - - // FRSQRTE S31, S31 - expectedRead.push_back({s31}); - expectedWritten.push_back({s31}); - - // SQDMLAL S2, H5, Q9 - expectedRead.push_back({s2, h5, q9}); - expectedWritten.push_back({s2}); - - // SQDMLSL D0, S31, D31 - expectedRead.push_back({d0, d31, s31}); - expectedWritten.push_back({d0}); - - // SQRDMULH H8, H4, D15 - expectedRead.push_back({h4, d15}); - expectedWritten.push_back({h8}); - - // FMLA S9, S2, Q20 - expectedRead.push_back({s2, s9, q20}); - expectedWritten.push_back({s9}); - - // FMLS D8, D5, D17 - expectedRead.push_back({d5, d8, d17}); - expectedWritten.push_back({d8}); - - // TBL Q4, Q8, Q9 - expectedRead.push_back({q8, q9}); - expectedWritten.push_back({q4}); - - // TBX D0, D1, D2, D3 - expectedRead.push_back({d1, d2, d3}); - expectedWritten.push_back({d0}); - - // TBL Q0, Q24, Q25, Q26, Q31 - expectedRead.push_back({q24, q25, q26, q31}); - expectedWritten.push_back({q0}); - - // TBX D20, D0, D1, D2, D3, D21 - expectedRead.push_back({d0, d1, d2, d3, d21}); - expectedWritten.push_back({d20}); - - // SADDL Q1, HQ2, HQ3 - expectedRead.push_back({hq2, hq3}); - expectedWritten.push_back({q1}); - - // SSUBL Q31, D4, D5 - expectedRead.push_back({d4, d5}); - expectedWritten.push_back({q31}); - - // ADDHN HQ2, Q8, Q16 - expectedRead.push_back({q8, q16}); - expectedWritten.push_back({hq2}); - - // SABDL Q5, D2, D8 - expectedRead.push_back({d2, d8}); - expectedWritten.push_back({q5}); - - // SQDMLSL Q0, HQ1, HQ2 - expectedRead.push_back({hq1, hq2}); - expectedWritten.push_back({q0}); - - // RSUBHN D2, Q15, Q31 - expectedRead.push_back({q15, q31}); - expectedWritten.push_back({d2}); - - // SUBHN HQ8, Q2,Q3 - expectedRead.push_back({q2, q3}); - expectedWritten.push_back({hq8}); - - // SQADD D2, D3, D5 - expectedRead.push_back({d3, d5}); - expectedWritten.push_back({d2}); - - // CMGT Q0, Q1, Q31 - expectedRead.push_back({q1, q31}); - expectedWritten.push_back({q0}); - - // SABA D8, D9, D10 - expectedRead.push_back({d9, d10}); - expectedWritten.push_back({d8}); - - // BSL Q4, Q5, Q6 - expectedRead.push_back({q5, q6}); - expectedWritten.push_back({q4}); - - // CNT D8, D9 - expectedRead.push_back({d9}); - expectedWritten.push_back({d8}); - - // XTN Q0, Q31 - expectedRead.push_back({q31}); - expectedWritten.push_back({q0}); - - // FCVTAS Q2, Q3 - expectedRead.push_back({q3}); - expectedWritten.push_back({q2}); - - // FSQRT D31, D15 - expectedRead.push_back({d15}); - expectedWritten.push_back({d31}); - - // SMLAL Q2, D5, D0 - expectedRead.push_back({d5, d0, q2}); - expectedWritten.push_back({q2}); - - // SMLSL Q1, HQ31, Q5 - expectedRead.push_back({q1, hq31, q5}); - expectedWritten.push_back({q1}); - - // MUL Q9, Q2, D31 - expectedRead.push_back({q2, d31}); - expectedWritten.push_back({q9}); - - // SQDMULL Q8, D4, Q5 - expectedRead.push_back({d4, q5}); - expectedWritten.push_back({q8}); - - // SQRDMULH D1. D2, D3 - expectedRead.push_back({d2, d3}); - expectedWritten.push_back({d1}); - - // FMLS Q5, Q10, Q11 - expectedRead.push_back({q5, q10, q11}); - expectedWritten.push_back({q5}); - - // UMLAL Q4, HQ8, D31 - expectedRead.push_back({q4, hq8, d31}); - expectedWritten.push_back({q4}); - - // FMLA D4, D12, Q8 - expectedRead.push_back({d4, d12, q8}); - expectedWritten.push_back({d4}); - - // ST1 Q4, [X8] - expectedRead.push_back({q4, x8}); - expectedWritten.push_back({}); - - // ST2 D9, D10, [SP] - expectedRead.push_back({d9, d10, sp}); - expectedWritten.push_back({}); - - // ST1 Q2, Q3, [X30] - expectedRead.push_back({q2, q3, x30}); - expectedWritten.push_back({}); - - // LD1 Q30, Q31, Q0, [SP] - expectedRead.push_back({sp}); - expectedWritten.push_back({q0, q30, q31}); - - // LD1 D1, D2, D3, D4, [X0] - expectedRead.push_back({x0}); - expectedWritten.push_back({d1, d2, d3, d4}); - - // LD3 Q5, Q6, Q7, [X1] - expectedRead.push_back({x1}); - expectedWritten.push_back({q5, q6, q7}); - - // ST4 D0, D1, D2, D3, [X2], X20 - expectedRead.push_back({x2, x20, d0, d1, d2, d3}); - expectedWritten.push_back({x2}); - - // ST1 Q30, Q31, Q0, Q1, [SP], X5 - expectedRead.push_back({q30, q31, q0, q1, sp, x5}); - expectedWritten.push_back({sp}); - - // ST1 Q4, Q5, Q6, [X8], X7 - expectedRead.push_back({q4, q5, q6, x7, x8}); - expectedWritten.push_back({x8}); - - // LD1 D31, D0, [SP], X30 - expectedRead.push_back({sp, x30}); - expectedWritten.push_back({d0, d31, sp}); - - // LD1 Q5, [X10], X0 - expectedRead.push_back({x10, x0}); - expectedWritten.push_back({q5, x10}); - - // ST3 D5, D6, D7, [SP], #24 - expectedRead.push_back({d5, d6, d7, sp}); - expectedWritten.push_back({sp}); - - // ST1 Q31, Q0, Q1, Q2, [X2], #48 - expectedRead.push_back({q0, q1, q2, q31, x2}); - expectedWritten.push_back({x2}); - - // LD1 Q1, Q2, Q3, [SP], #48 - expectedRead.push_back({sp}); - expectedWritten.push_back({q1, q2, q3, sp}); - - // LD1 D31, D0, [X30], #16 - expectedRead.push_back({x30}); - expectedWritten.push_back({d0, d31, x30}); - - // ST1 Q4, [X0], #16 - expectedRead.push_back({q4, x0}); - expectedWritten.push_back({x0}); - - // ST1 Q5, [X2] - expectedRead.push_back({q5, x2}); - expectedWritten.push_back({}); - - // ST2 D4, D5, [SP] - expectedRead.push_back({d4, d5, sp}); - expectedWritten.push_back({}); - - // ST3 Q31, Q0, Q1, [X8] - expectedRead.push_back({q0, q1, q31, x8}); - expectedWritten.push_back({}); - - // ST4 D0, D1, D2, D3, [SP] - expectedRead.push_back({d0, d1, d2, d3, sp}); - expectedWritten.push_back({}); - - // ST2 Q21, Q22, [X30] - expectedRead.push_back({q21, q22, x30}); - expectedWritten.push_back({}); - - // ST4 D30, D31, D0, D1, [X0] - expectedRead.push_back({d0, d1, d30, d31, x0}); - expectedWritten.push_back({}); - - // LD1 Q5, [X2] - expectedRead.push_back({x2}); - expectedWritten.push_back({q5}); - - // LD2 D4, D5, [SP] - expectedRead.push_back({sp}); - expectedWritten.push_back({d4, d5}); - - // LD3 Q31, Q0, Q1, [X8] - expectedRead.push_back({x8}); - expectedWritten.push_back({q0, q1, q31}); - - // LD4 D0, D1, D2, D3, [SP] - expectedRead.push_back({sp}); - expectedWritten.push_back({d0, d1, d2, d3}); - - // LD1 D9, [X0] - expectedRead.push_back({x0}); - expectedWritten.push_back({d9}); - - // LD3 Q1, Q2, Q3, [X1] - expectedRead.push_back({x1}); - expectedWritten.push_back({q1, q2, q3}); - - // ST1 Q5, [X2], X8 - expectedRead.push_back({q5, x2, x8}); - expectedWritten.push_back({x2}); - - // ST2 D4, D5, [SP], #4 - expectedRead.push_back({d4, d5, sp}); - expectedWritten.push_back({sp}); - - // ST3 Q31, Q0, Q1, [X8], X30 - expectedRead.push_back({q0, q1, q31, x8, x30}); - expectedWritten.push_back({x8}); - - // ST4 D0, D1, D2, D3, [SP], #32 - expectedRead.push_back({d0, d1, d2, d3, sp}); - expectedWritten.push_back({sp}); - - // LD1 Q5,[X2], #1 - expectedRead.push_back({x2}); - expectedWritten.push_back({q5, x2}); - - // LD2 D4, D5, [SP], X0 - expectedRead.push_back({sp, x0}); - expectedWritten.push_back({sp, d4, d5}); - - // LD3 Q31, Q0, Q1, [X8], #12 - expectedRead.push_back({x8}); - expectedWritten.push_back({q0, q1, q31, x8}); - - // LD4 D0, D1, D2, D3, [SP], X9 - expectedRead.push_back({sp, x9}); - expectedWritten.push_back({d0, d1, d2, d3, sp}); - - // SSHR D2, D4, #8 - expectedRead.push_back({d4}); - expectedWritten.push_back({d2}); - - // SSRA Q0, Q1, #64 - expectedRead.push_back({q1}); - expectedWritten.push_back({q0}); - - // SHL D31, D31, #1 - expectedRead.push_back({d31}); - expectedWritten.push_back({d31}); - - // SQSHL Q8, Q16, #16 - expectedRead.push_back({q16}); - expectedWritten.push_back({q8}); - - // SQRSHRN D2, D8, #16 - expectedRead.push_back({d8}); - expectedWritten.push_back({d2}); - - // FCVTZS Q0, Q0, #32 - expectedRead.push_back({q0}); - expectedWritten.push_back({q0}); - - // SLI D4, D8, #8 - expectedRead.push_back({d8}); - expectedWritten.push_back({d4}); - - // UQSHRN Q2, Q6, #7 - expectedRead.push_back({q5}); - expectedWritten.push_back({q2}); - - if(expectedRead.size() != expectedWritten.size()) { - logerror("FATAL: expectedRead.size() != expectedWritten.size()"); - return FAILED; - } - - if(expectedRead.size() != decodedInsns.size()) { - logerror("FATAL: expectedRead.size() != decodedInsns.size()"); - return FAILED; - } - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - - return retVal; -} diff --git a/src/instruction/fucompp.C b/src/instruction/fucompp.C deleted file mode 100644 index a383a5af3..000000000 --- a/src/instruction/fucompp.C +++ /dev/null @@ -1,235 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Architecture.h" -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "registers/x86_regs.h" -#include "test_lib.h" - -#include -#include -#include -#include - -namespace di = Dyninst::InstructionAPI; - -class fucompp_Mutator : public InstructionMutator { -public: - fucompp_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* fucompp_factory() { - return new fucompp_Mutator(); -} - -test_results_t fucompp_Mutator::executeTest() { - constexpr auto num_tests = 24; - - // clang-format off - constexpr std::array buffer = { - // ordered comparisons - 0xd8, 0x55, 0x00, // fcom dword ptr [ebp] - 0xdc, 0x55, 0x00, // fcom qword ptr [ebp] - 0xd8, 0xd0, // fcom st0 - 0xd8, 0xd1, // fcom st1 - 0xd8, 0xd2, // fcom st2 - 0xd8, 0x5d, 0x00, // fcomp dword ptr [ebp] - 0xdc, 0x5d, 0x00, // fcomp qword ptr [ebp] - 0xd8, 0xd8, // fcomp st0 - 0xd8, 0xd9, // fcomp st1 - 0xd8, 0xda, // fcomp st2 - 0xde, 0xd9, // fcompp - - // compare and set eflags - 0xdb, 0xf0, // fcomi st0, st0 - 0xdf, 0xf0, // fcomip st0, st0 - 0xdf, 0xf1, // fcomip st0, st1 - 0xdb, 0xe8, // fucomi st0, st0 - 0xdb, 0xe9, // fucomi st0, st1 - 0xdf, 0xe8, // fucomip st0, st0 - 0xdf, 0xe9, // fucomip st0, st1 - - // unordered comparisons - 0xdd, 0xe0, // fucom st0 - 0xdd, 0xe1, // fucom st1 (aka, 'fucom') - 0xdd, 0xe2, // fucom st2 - 0xdd, 0xe8, // fucomp - 0xdd, 0xe9, // fucompp - 0xdd, 0xea, // fucomp st2 - }; - // clang-format on - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - - di::InstructionDecoder d(buffer.data(), buffer.size(), Dyninst::Arch_x86); - for(int idx = 0; idx < num_tests; idx++) { - di::Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode x86 test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - auto create = [](Dyninst::MachRegister reg) { - return boost::make_shared(reg); - }; - - di::RegisterAST::Ptr st0 = create(Dyninst::x86::st0); - di::RegisterAST::Ptr st1 = create(Dyninst::x86::st1); - di::RegisterAST::Ptr st2 = create(Dyninst::x86::st2); - di::RegisterAST::Ptr ebp = create(Dyninst::x86::ebp); - - std::vector expectedRead, expectedWritten; - - // fcom dword ptr [ebp] - expectedRead.push_back({st0, ebp}); - expectedWritten.push_back({st0}); - - // fcom qword ptr [ebp] - expectedRead.push_back({st0, ebp}); - expectedWritten.push_back({st0}); - - // fcom st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fcom st1 - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fcom st2 - expectedRead.push_back({st0, st2}); - expectedWritten.push_back({st0}); - - // fcomp dword ptr [ebp] - expectedRead.push_back({st0, ebp}); - expectedWritten.push_back({st0}); - - // fcomp qword ptr [ebp] - expectedRead.push_back({st0, ebp}); - expectedWritten.push_back({st0}); - - // fcomp st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fcomp st1 - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fcomp st2 - expectedRead.push_back({st0, st2}); - expectedWritten.push_back({st0}); - - // fcompp - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fcomi st0, st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fcomip st0, st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fcomip st0, st1 - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fucomi st0, st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fucomi st0, st1 - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fucomip st0, st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fucomip st0, st1 - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fucom st0 - expectedRead.push_back({st0}); - expectedWritten.push_back({}); - - // fucom st1 (aka, 'fucom') - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({}); - - // fucom st2 - expectedRead.push_back({st0, st2}); - expectedWritten.push_back({}); - - // fucomp - expectedRead.push_back({st0}); - expectedWritten.push_back({st0}); - - // fucompp - expectedRead.push_back({st0, st1}); - expectedWritten.push_back({st0}); - - // fucomp st(3) - expectedRead.push_back({st0, st2}); - expectedWritten.push_back({st0}); - - if(expectedRead.size() != expectedWritten.size()) { - logerror("FATAL: expectedRead.size() != expectedWritten.size()"); - return FAILED; - } - - if(expectedRead.size() != decodedInsns.size()) { - logerror("FATAL: expectedRead.size() != decodedInsns.size()"); - return FAILED; - } - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - return retVal; -} diff --git a/src/instruction/mov_size_details.C b/src/instruction/mov_size_details.C deleted file mode 100644 index 973aba539..000000000 --- a/src/instruction/mov_size_details.C +++ /dev/null @@ -1,123 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "test_lib.h" - -#include -#include -#include -#include - -namespace di = Dyninst::InstructionAPI; - -class mov_size_details_Mutator : public InstructionMutator { -public: - mov_size_details_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* mov_size_details_factory() { - return new mov_size_details_Mutator(); -} - -test_results_t mov_size_details_Mutator::executeTest() { - constexpr auto num_tests = 5; - - // clang-format off - constexpr std::array buffer = { - 0x66, 0x8c, 0xe8, // mov ax, gs - 0x89, 0xe8, // mov eax, ebp - 0xf2, 0x0f, 0x12, 0xc0, // movddup xmm0, xmm0 - 0x05, 0xef, 0xbe, 0xad, 0xde, // add eax, 0xdeadbeef - 0xd8, 0xd8, // fcomp st0, st0 - }; - // clang-format on - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - - di::InstructionDecoder d(buffer.data(), buffer.size(), Dyninst::Arch_x86); - for(int idx = 0; idx < num_tests; idx++) { - di::Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode x86 test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - std::vector> expected_sizes; - - // mov ax, gs - expected_sizes.push_back({2, 2}); - - // mov eax, ebp - expected_sizes.push_back({4, 4}); - - // movddup xmm0, xmm0 - expected_sizes.push_back({16, 16}); - - // add eax, 0xdeadbeef - expected_sizes.push_back({4, 4}); - - // fcomp st0, st0 - expected_sizes.push_back({8, 8}); // wrong. should be 80 bits - - if(decodedInsns.size() != expected_sizes.size()) { - logerror("FATAL: decodedInsns.size() != expected_sizes.size()"); - return FAILED; - } - - auto ret_val = PASSED; - for(auto&& x : boost::combine(decodedInsns, expected_sizes)) { - const auto insn = x.get<0>(); - const auto sizes = x.get<1>(); - - const auto lhs_size = std::get<0>(sizes); - const auto rhs_size = std::get<1>(sizes); - - di::Expression::Ptr lhs = insn.getOperand(0).getValue(); - di::Expression::Ptr rhs = insn.getOperand(1).getValue(); - - if(lhs->size() != lhs_size) { - logerror("LHS expected %d-bit, actual %d-bit (%s)\n", lhs_size * 8, lhs->size() * 8, lhs->format().c_str()); - ret_val = FAILED; - } - if(rhs->size() != rhs_size) { - logerror("RHS expected %d-bit, actual %d-bit (%s)\n", rhs_size, rhs->size() * 8, rhs->format().c_str()); - ret_val = FAILED; - } - } - return ret_val; -} diff --git a/src/instruction/power_cft.C b/src/instruction/power_cft.C deleted file mode 100644 index c84bc26cc..000000000 --- a/src/instruction/power_cft.C +++ /dev/null @@ -1,393 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/ppc64_regs.h" -#include "test_lib.h" - -#include -#include -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class power_cft_Mutator : public InstructionMutator { -public: - power_cft_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* power_cft_factory() { - return new power_cft_Mutator(); -} - -struct cftExpected { - bool is_call; - bool is_conditional; - bool is_indirect; - bool is_fallthrough; -}; - -test_results_t verifyTargetType(const Instruction::CFT& actual, const cftExpected& expected) { - if(actual.isCall != expected.is_call) { - logerror("FAILED: expected call = %d, actual = %d\n", expected.is_call, actual.isCall); - return FAILED; - } - if(actual.isIndirect != expected.is_indirect) { - logerror("FAILED: expected indirect = %d, actual = %d\n", expected.is_indirect, actual.isIndirect); - return FAILED; - } - if(actual.isConditional != expected.is_conditional) { - logerror("FAILED: expected conditional = %d, actual = %d\n", expected.is_conditional, actual.isConditional); - return FAILED; - } - if(actual.isFallthrough != expected.is_fallthrough) { - logerror("FAILED: expected fallthrough = %d, actual = %d\n", expected.is_fallthrough, actual.isFallthrough); - return FAILED; - } - - return PASSED; -} - -namespace { - struct test_cft { - uint32_t value; - cftExpected cft; - }; - struct test_insn { - const uint32_t opcode; - bool is_branch; - bool is_return; - boost::optional pc; // program counter - boost::optional ctr; // count register - boost::optional lr; // link register - boost::optional abs; // absolute value (AA=1 instructions) - boost::optional ft; // fallthrough target - }; - - constexpr auto pc_value = uint32_t{0x400}; - constexpr auto ctr_value = uint32_t{44}; - constexpr auto lr_value = uint32_t{0x200}; - - auto pc = boost::make_shared(ppc64::pc); - auto ctr = boost::make_shared(ppc64::ctr); - auto lr = boost::make_shared(ppc64::lr); - - std::vector make_tests(); -} - -test_results_t power_cft_Mutator::executeTest() { - test_results_t retVal = PASSED; - auto test_id = 0; - - for(auto const& t : make_tests()) { - test_id++; - - InstructionDecoder d(&(t.opcode), 4, Dyninst::Arch_ppc64); - Instruction insn = d.decode(); - - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", test_id); - retVal = FAILED; - continue; - } - - logstatus("\ntest %d: '%s'\n", test_id, insn.format().c_str()); - - auto all_cfts = boost::make_iterator_range(insn.cft_begin(), insn.cft_end()); - const auto num_cft = std::distance(insn.cft_begin(), insn.cft_end()); - - if(!num_cft) { - logerror("FAILED: No control flow targets found\n"); - retVal = FAILED; - continue; - } - - constexpr auto result_val_t = u64; - - auto bind_val = [](Instruction::CFT const& cur_cft, Expression::Ptr target, uint32_t value) { - cur_cft.target->bind(target.get(), Result(result_val_t, value)); - }; - - auto check_cft = [this](Instruction::CFT const& cur_cft, boost::optional test_reg) { - if(!test_reg.has_value()) { - logerror("FAILED: test does not use register, but should\n"); - return FAILED; - } - - constexpr auto defined = true; - auto status = verifyCFT(cur_cft.target, defined, test_reg->value, result_val_t); - if(status == FAILED) { - return FAILED; - } - - status = verifyTargetType(cur_cft, test_reg->cft); - if(status == FAILED) { - return FAILED; - } - - return PASSED; - }; - - int const num_targets_expected = [&t]() { - int n=0; - if(t.pc) n++; - if(t.ctr) n++; - if(t.lr) n++; - if(t.abs) n++; - if(t.ft) n++; - return n; - }(); - - int num_targets_seen = 0; - bool abs_was_used = false; - for(auto const& cur_cft : all_cfts) { - logstatus("Target %d: '%s'\n", num_targets_seen+1, cur_cft.target->format(Dyninst::Arch_ppc64).c_str()); - - if(t.abs && !abs_was_used) { - logstatus("Checking absolute address\n"); - num_targets_seen++; - bind_val(cur_cft, cur_cft.target, t.abs->value); - if(check_cft(cur_cft, t.abs) == FAILED) { - retVal = FAILED; - } - abs_was_used = true; - } - if(cur_cft.target->isUsed(pc)) { - logstatus("Checking PC\n"); - num_targets_seen++; - bind_val(cur_cft, pc, pc_value); - if(check_cft(cur_cft, t.pc) == FAILED) { - logstatus(" Trying fallthrough...\n"); - if(!t.ft || (check_cft(cur_cft, t.ft) == FAILED)) { - retVal = FAILED; - } - } - } - if(cur_cft.target->isUsed(ctr)) { - logstatus("Checking count register\n"); - num_targets_seen++; - bind_val(cur_cft, ctr, ctr_value); - if(check_cft(cur_cft, t.ctr) == FAILED) { - retVal = FAILED; - } - } - if(cur_cft.target->isUsed(lr)) { - logstatus("Checking link register\n"); - num_targets_seen++; - bind_val(cur_cft, lr, lr_value); - if(check_cft(cur_cft, t.lr) == FAILED) { - retVal = FAILED; - } - } - } - if(num_targets_seen != num_targets_expected) { - logerror("FAILED: instruction has too %s targets; expected %d, found %d\n", - (num_targets_seen < num_targets_expected) ? "few" : "many", - num_targets_expected, - num_targets_seen - ); - retVal = FAILED; - } - if(insn.isBranch() != t.is_branch) { - logerror("FAILED: instruction should %s be a branch\n", - (t.is_branch) ? "" : "not"); - retVal = FAILED; - } - if(insn.isReturn() != t.is_return) { - logerror("FAILED: instruction should %s be a return\n", - (t.is_return) ? "" : "not"); - retVal = FAILED; - } - } - - return retVal; -} - -namespace { - - constexpr auto is_call = true; - constexpr auto is_conditional = true; - constexpr auto is_indirect = true; - constexpr auto is_fallthrough = true; - constexpr auto is_branch = true; - constexpr auto is_return = true; - - // clang-format off - std::vector make_tests() { - return { - /* - * --- Branch I-form --- - */ - { // b +16 - 0x48000010, is_branch, !is_return, - test_cft{pc_value + 16, {!is_call, !is_conditional, !is_indirect, !is_fallthrough}}, - {}, {}, {}, {} - }, - { // ba -48 - 0x4bffffd2, is_branch, !is_return, - {}, {}, {}, {}, {} - }, - { // bl 0x100 - 0x48000101, !is_branch, !is_return, - test_cft{pc_value + 0x100, {is_call, !is_conditional, !is_indirect, !is_fallthrough}}, - {}, {}, {}, {} - }, - { // bla 0x100 - 0x48000103, !is_branch, !is_return, - {}, {}, {}, {}, {} - }, - - /* - * --- Branch Conditional B-form --- - */ - { // bc +32 - 0x42f00020, is_branch, !is_return, - test_cft{pc_value + 32, {!is_call, is_conditional, !is_indirect, !is_fallthrough}}, - {}, - {}, - {}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}} - }, - { // bca 32 - 0x42f00022, is_branch, !is_return, - {}, - {}, - {}, - test_cft{32, {!is_call, is_conditional, !is_indirect, !is_fallthrough}}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}}, - }, - { // bcl +32 (subroutine call to relative address) - 0x42f00021, !is_branch, !is_return, - test_cft{pc_value + 32, {is_call, is_conditional, !is_indirect, !is_fallthrough}}, - {}, - {}, - {}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}}, - }, - { // bcla 32 (subroutine call to immediate target) - 0x42f00023, !is_branch, !is_return, - {}, - {}, - {}, - test_cft{pc_value + 32, {is_call, is_conditional, !is_indirect, !is_fallthrough}}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}} - }, - - /* - * --- Branch Conditional to Link Register XL-form --- - * - * There are a large number of uses for this instruction. - */ - { // bclr with BH=0 (subroutine return) - 0x4e800020, !is_branch, is_return, - {}, - {}, - test_cft{lr_value, {!is_call, !is_conditional, is_indirect, !is_fallthrough}}, - {}, - {} - }, - { // bclrl (LK=1) - 0x4e800021, is_branch, !is_return, - {}, - {}, - test_cft{lr_value, {!is_call, is_conditional, is_indirect, !is_fallthrough}}, - {}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}}, - }, - { // bdnzfl gt, 0x100 - 0x40010101, !is_branch, !is_return, - test_cft{pc_value + 0x100, {is_call, is_conditional, !is_indirect, !is_fallthrough}}, - {}, - {}, - {}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}} - }, - { // bdnzf gt, 0x100 (bdnz cr0) - 0x40010100, is_branch, !is_return, - test_cft{pc_value + 0x100, {!is_call, is_conditional, !is_indirect, !is_fallthrough}}, - {}, - {}, - {}, - test_cft{pc_value + 4, {!is_call, !is_conditional, !is_indirect, is_fallthrough}}, - }, - { // bnslr - 0x4ca30020, !is_branch, is_return, - {}, - {}, - test_cft{lr_value, {!is_call, !is_conditional, is_indirect, !is_fallthrough}}, - {}, - {} - }, - - /* - * --- Branch Conditional to Count Register XL-form --- - */ - { // bctr (LK=0) - 0x4e800420, is_branch, !is_return, - {}, - test_cft{ctr_value, {!is_call, !is_conditional, is_indirect, !is_fallthrough}}, - {}, {}, {} - }, - { // bctrl (LK=1) - 0x4e800421, !is_branch, !is_return, - {}, - test_cft{ctr_value, {is_call, !is_conditional, is_indirect, !is_fallthrough}}, - {}, {}, {} - }, - { // bcctr 0x17, 4*cr4+lt, 0 - 0x4ef00420, is_branch, !is_return, - {}, - test_cft{ctr_value, {!is_call, !is_conditional, is_indirect, !is_fallthrough}}, - {}, {}, {} - }, - - /* - * --- Branch Conditional to Branch Target Address Register XL-form --- - * - * Dyninst can't decode these. - */ -// { // bctar (LK=0) -// 0x4e800460 -// }, -// { // bctarl (LK=1) -// 0x4e800461 -// }, - }; - // clang-format on - } -} diff --git a/src/instruction/power_decode.C b/src/instruction/power_decode.C deleted file mode 100644 index f9439cf81..000000000 --- a/src/instruction/power_decode.C +++ /dev/null @@ -1,290 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/ppc32_regs.h" -#include "registers/ppc64_regs.h" -#include "test_lib.h" - -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class power_decode_Mutator : public InstructionMutator { - test_results_t run(Dyninst::Architecture); - -public: - power_decode_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* power_decode_factory() { - return new power_decode_Mutator(); -} - -test_results_t power_decode_Mutator::executeTest() { - - // Decoding in 64-bit mode uses 32-bit registers - auto const arch = Dyninst::Arch_ppc32; - - constexpr auto num_tests = 27; - - // clang-format off - std::array buffer = { - 0x7d204215, // add. r9, r0, r8 - 0x7d204214, // add r9, r0, r8 - 0x7d204614, // addo r9, r0, r8 - 0xfc01102a, // fadd fpr0, fpr1, fpr2 - 0xfc01102b, // fadd. fpr0, fpr1, fpr2 - 0x38200001, // addi r1, 0, 1 - 0x38210001, // addi r1, r1, 1 - 0xff800800, // fcmpu fpscw7, fpr0, fpr1 - 0x7f800800, // fcmpu cr7, r0, r1 - 0x7c0aa120, // mtcrf cr0, cr2, cr4, cr6, r0 - // 10 - 0xfd54058e, // mtfsf fpscw0, fpscw2, fpscw4, fpscw6, fpr0 - 0x80010000, // lwz r0, 0(r1) - 0x84010000, // lwzu r0, 0(r1) - 0x7c01102e, // lwzx r0, r2(r1) - 0x7c01106e, // lwzux r0, r2(r1) - 0x7801440c, // rlimi r0, r1 - 0x00010090, // fpmul fpr0, fpr1 - 0x00010092, // fxmul fpr0, fpr1, or qvfxmadds - 0x00010094, // fxcpmul fpr0, fpr1 - 0x00010096, // fxcsmul fpr0, fpr1, or qvfxxnpmadds - // 20 - 0x40010101, // bdnzl cr0, +0x100 - 0x40010100, // bdnz cr0, +0x100 - 0x7ca74a6e, // lhzux r9, r7, r5 - 0x4e800020, // bclr (with BH=0, return from subroutine) - 0x4e800021, // blrl - 0x4e800420, // bctr (LK=0) - 0x4e800421, // bctr (LK=1) - }; - // clang-format on - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - - { - InstructionDecoder d(buffer.data(), buffer.size(), arch); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - } - - RegisterAST::Ptr r0(new RegisterAST(ppc32::r0)); - RegisterAST::Ptr r1(new RegisterAST(ppc32::r1)); - RegisterAST::Ptr r2(new RegisterAST(ppc32::r2)); - RegisterAST::Ptr r5(new RegisterAST(ppc32::r5)); - RegisterAST::Ptr r7(new RegisterAST(ppc32::r7)); - RegisterAST::Ptr r8(new RegisterAST(ppc32::r8)); - RegisterAST::Ptr r9(new RegisterAST(ppc32::r9)); - RegisterAST::Ptr cr0(new RegisterAST(ppc32::cr0)); - RegisterAST::Ptr cr2(new RegisterAST(ppc32::cr2)); - RegisterAST::Ptr cr4(new RegisterAST(ppc32::cr4)); - RegisterAST::Ptr cr6(new RegisterAST(ppc32::cr6)); - RegisterAST::Ptr cr7(new RegisterAST(ppc32::cr7)); - RegisterAST::Ptr xer(new RegisterAST(ppc32::xer)); - RegisterAST::Ptr fpr0(new RegisterAST(ppc32::fpr0)); - RegisterAST::Ptr fpr1(new RegisterAST(ppc32::fpr1)); - RegisterAST::Ptr fpr2(new RegisterAST(ppc32::fpr2)); - RegisterAST::Ptr fsr0(new RegisterAST(ppc32::fsr0)); - RegisterAST::Ptr fsr1(new RegisterAST(ppc32::fsr1)); - RegisterAST::Ptr fsr2(new RegisterAST(ppc32::fsr2)); - RegisterAST::Ptr fpscw(new RegisterAST(ppc32::fpscw)); - RegisterAST::Ptr fpscw0(new RegisterAST(ppc32::fpscw0)); - RegisterAST::Ptr fpscw2(new RegisterAST(ppc32::fpscw2)); - RegisterAST::Ptr fpscw4(new RegisterAST(ppc32::fpscw4)); - RegisterAST::Ptr fpscw6(new RegisterAST(ppc32::fpscw6)); - RegisterAST::Ptr fpscw7(new RegisterAST(ppc32::fpscw7)); - RegisterAST::Ptr pc(new RegisterAST(ppc32::pc)); - RegisterAST::Ptr ctr(new RegisterAST(ppc32::ctr)); - RegisterAST::Ptr lr(new RegisterAST(ppc32::lr)); - - std::vector expectedRead, expectedWritten; - - // add. r9, r0, r8 - expectedRead.push_back({r0, r8}); - expectedWritten.push_back({r9, cr0}); - - // add r9, r0, r8 - expectedRead.push_back({r0, r8}); - expectedWritten.push_back({r9}); - - // addo r9, r0, r8 - expectedRead.push_back({r0, r8}); - expectedWritten.push_back({r9, xer}); - - // fadd fpr0, fpr1, fpr2 - expectedRead.push_back({fpr1, fpr2}); - expectedWritten.push_back({fpr0}); - - // fadd. fpr0, fpr1, fpr2 - expectedRead.push_back({fpr1, fpr2}); - expectedWritten.push_back({fpr0, fpscw}); - - // addi r1, 0, 1 - expectedRead.push_back({}); - expectedWritten.push_back({r1}); - - // addi r1, r1, 1 - expectedRead.push_back({r1}); - expectedWritten.push_back({r1}); - - // fcmpu fpscw7, fpr0, fpr1 - expectedRead.push_back({fpr0, fpr1}); - expectedWritten.push_back({fpscw7}); - - // fcmpu cr7, r0, r1 - expectedRead.push_back({r0, r1}); - expectedWritten.push_back({cr7}); - - // mtcrf cr0, cr2, cr4, cr6, r0 - expectedRead.push_back({r0}); - expectedWritten.push_back({cr0, cr2, cr4, cr6}); - - // mtfsf fpscw0, fpscw2, fpscw4, fpscw6, fpr0 - expectedRead.push_back({fpr0}); - expectedWritten.push_back({fpscw0, fpscw2, fpscw4, fpscw6}); - - // lwz r0, 0(r1) - expectedRead.push_back({r1}); - expectedWritten.push_back({r0}); - - // lwzu r0, 0(r1) - expectedRead.push_back({r1}); - expectedWritten.push_back({r0, r1}); - - // lwzx r0, r2(r1) - expectedRead.push_back({r1, r2}); - expectedWritten.push_back({r0}); - - // lwzux r0, r2(r1) - expectedRead.push_back({r1, r2}); - expectedWritten.push_back({r0, r1}); - - // rlimi r0, r1 - expectedRead.push_back({r0}); - expectedWritten.push_back({r1}); - - // fpmul fpr0, fpr1 - expectedRead.push_back({fpr1, fpr2, fsr1, fsr2}); - expectedWritten.push_back({fpr0, fsr0}); - - // fxmul fpr0, fpr1, or qvfxmadds - expectedRead.push_back({fpr1, fpr2, fsr1, fsr2}); - expectedWritten.push_back({fpr0, fsr0}); - - // fxcpmul fpr0, fpr1 - expectedRead.push_back({fpr1, fpr2, fsr2}); - expectedWritten.push_back({fpr0, fsr0}); - - // fxcsmul fpr0, fpr1, or qvfxxnpmadds - expectedRead.push_back({fpr2, fsr1, fsr2}); - expectedWritten.push_back({fpr0, fsr0}); - - // bdnzl cr0, +0x100 - expectedRead.push_back({pc, cr0, ctr}); - expectedWritten.push_back({pc, ctr, lr}); - - // bdnz cr0, +0x100 - expectedRead.push_back({pc, cr0, ctr}); - expectedWritten.push_back({pc, ctr}); - - // lhzux r9, r7, r5 - expectedRead.push_back({r7, r9}); - expectedWritten.push_back({r5, r7}); - - // bclr (with BH=0, return from subroutine) - expectedRead.push_back({ctr, lr, cr0}); - expectedWritten.push_back({pc, ctr}); - - // bclrl - expectedRead.push_back({ctr, lr, cr0}); - expectedWritten.push_back({ctr, lr, pc}); - - // bctr (LK=0) - expectedRead.push_back({ctr, cr0}); - expectedWritten.push_back({pc}); - - // bctr (LK=1) - expectedRead.push_back({lr, ctr, cr0}); - expectedWritten.push_back({lr, pc}); - - if(expectedRead.size() != expectedWritten.size()) { - logerror("FATAL: expectedRead.size() != expectedWritten.size()\n"); - return FAILED; - } - - if(expectedRead.size() != decodedInsns.size()) { - logerror("FATAL: expectedRead.size() != decodedInsns.size()\n"); - return FAILED; - } - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - - { - uint32_t lhzux = 0x7ca74a6e; // lhzux r9, r7, r5 - InstructionDecoder d(&lhzux, 1, arch); - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode for memory test %d\n"); - return FAILED; - } - if(!insn.readsMemory()) { - logerror("**FAILED**: insn '%s' did not read memory.\n", insn.format().c_str()); - return FAILED; - } - } - return retVal; -} diff --git a/src/instruction/power_instruction_oprands.txt b/src/instruction/power_instruction_oprands.txt deleted file mode 100644 index 6665a107c..000000000 --- a/src/instruction/power_instruction_oprands.txt +++ /dev/null @@ -1,186 +0,0 @@ -lbz RT,D(RA) -lbzx RT,RA,RB -lbzu RT,D(RA) -lbzux RT,RA,RB -lhz RT,D(RA) -lhzx RT,RA,RB -lhzu RT,D(RA) -lhzux RT,RA,RB -lha RT,D(RA) -lhax RT,RA,RB -lhau RT,D(RA) -lhaux RT,RA,RB -lwz RT,D(RA) -lwzx RT,RA,RB -lwzu RT,D(RA) -lwzux RT,RA,RB -lwa RT,DS(RA) -lwax RT,RA,RB -lwaux RT,RA,RB -ld RT,DS(RA) -ldx RT,RA,RB -ldu RT,DS(RA) -ldux RT,RA,RB -stb RS,D(RA) -stbx RS,RA,RB -stbu RS,D(RA) -stbux RS,RA,RB -sth RS,D(RA) -sthx RS,RA,RB -sthu RS,D(RA) -sthux RS,RA,RB -stw RS,D(RA) -stwx RS,RA,RB -stwu RS,D(RA) -stwux RS,RA,RB -std RS,DS(RA) -stdx RS,RA,RB -stdu RS,DS(RA) -stdux RS,RA,RB -stq RSp,DS(RA) -lhbrx RT,RA,RB -sthbrx RS,RA,RB -lwbrx RT,RA,RB -lwbrx RT,RA,RB -ldbrx RT,RA,RB -stdbrx RS,RA,RB -lmw RT,D(RA) -stmw RS,D(RA) -lswi RT,RA,NB -lswx RT,RA,RB -stswi RS,RA,NB -stswx RS,RA,RB -addi RT,RA,SI -addis RT,RA,SI -addpcis RT,D -add RT,RA,RB(OE=0 Rc=0) -subf RT,RA,RB(OE=0 Rc=0) -addic RT,RA,SI -addic. RT,RA,SI -subfic RT,RA,SI -addc RT,RA,RB(OE=0 Rc=0) -subfc RT,RA,RB(OE=0 Rc=0) -adde RT,RA,RB(OE=0 Rc=0) -subfe RT,RA,RB(OE=0 Rc=0) -addme RT,RA(OE=0 Rc=0) -subfme RT,RA(OE=0 Rc=0) -addex RT,RA,RB,CY -subfze RT,RA (OE=0 Rc=0) -addze RT,RA(OE=0 Rc=0) -neg RT,RA(OE=0 Rc=0) -mulli RT,RA,SI -mulhw RT,RA,RB (Rc=0) -mullw RT,RA,RB(OE=0 Rc=0) -mulhwu RT,RA,RB(Rc=0) -divw RT,RA,RB(OE=0 Rc=0) -divwu RT,RA,RB(OE=0 Rc=0) -divwe RT,RA,RB(OE=0 Rc=0) -divweu RT,RA,RB(OE=0 Rc=0) -modsw RT,RA,RB -moduw RT,RA,RB -darn RT,L -mulld RT,RA,RB(OE=0 Rc=0) -mulhd RT,RA,RB(Rc=0) -mulhdu RT,RA,RB (Rc=0) -maddhd RT,RA.RB,RC -maddhdu RT,RA.RB,RC -maddld RT,RA.RB,RC -divd RT,RA,RB(OE=0 Rc=0) -divdu RT,RA,RB(OE=0 Rc=0) -divde RT,RA,RB(OE=0 Rc=0) -divdeu RT,RA,RB (OE=0 Rc=0) -modsd RT,RA,RB -modud RT,RA,RB -cmpi BF,L,RA,SI -cmp BF,L,RA,RB -cmpli BF,L,RA,UI -cmpl BF,L,RA,RB -cmprb BF,L,RA,RB -cmpeqb BF,RA,RB -twi TO,RA,SI -tw TO,RA,RB -tdi TO,RA,SI -td TO,RA,RB -isel RT,RA,RB,BC -andi. RA,RS,UI -ori RA,RS,UI -andis. RA,RS,UI -oris RA,RS,UI -xoris RA,RS,UI -xori RA,RS,UI -and RA,RS,RB(Rc=0) -or RA,RS,RB(Rc=0) -xor RA,RS,RB (Rc=0) -nand RA,RS,RB (Rc=0) -nor RA,RS,RB(Rc=0) -eqv RA,RS,RB(Rc=0) -andc RA,RS,RB(Rc=0) -orc RA,RS,RB(Rc=0) -extsb RA,RS(Rc=0) -extsh RA,RS(Rc=0) -cntlzw RA,RS(Rc=0) -cnttzw RA,RS(Rc=0) -cmpb RA,RS,RB -popcntb RA, RS -popcntw RA, RS -prtyd RA,RS -prtyw RA,RS -extsw RA,RS (Rc=0) -popcntd RA, RS -cntlzd RA,RS(Rc=0) -cnttzd RA,RS(Rc=0) -bpermd RA,RS,RB -rlwinm RA,RS,SH,MB,ME (Rc=0) -rlwnm RA,RS,RB,MB,ME(Rc=0) -rlwimi RA,RS,SH,MB,ME(Rc=0) -rldicl RA,RS,SH,MB(Rc=0) -rldicr RA,RS,SH,ME(Rc=0) -rldic RA,RS,SH,MB(Rc=0) -rldcl RA,RS,RB,MB(Rc=0) -rldcr RA,RS,RB,ME(Rc=0) -rldimi RA,RS,SH,MB(Rc=0) -slw RA,RS,RB(Rc=0) -srw RA,RS,RB(Rc=0) -srawi RA,RS,SH(Rc=0) -sraw RA,RS,RB(Rc=0) -sld RA,RS,RB (Rc=0) -srd RA,RS,RB (Rc=0) -sradi RA,RS,SH (Rc=0) -srad RA,RS,RB (Rc=0) -extswsli RA,RS,SH (Rc=0) -cdtbcd RA, RS -addg6s RT,RA,RB -cbcdtd RA, RS -mfvsrd RA,XS -mfvsrld RA,XS -mfvsrwz RA,XS -mtvsrd XT,RA -mtvsrwa XT,RA -mtvsrwz XT,RA -mtvsrdd XT,RA,RB -mtvsrws XT,RA -mtspr SPR,RS -mfspr RT,SPR -mcrxrx BF -mtocrf FXM,RS -mtcrf FXM,RS -mfocrf RT,FXM -mfcr RT - - - - - - - - - - - - - - - - - - diff --git a/src/instruction/power_instruction_table.txt b/src/instruction/power_instruction_table.txt deleted file mode 100644 index 53b2016ce..000000000 --- a/src/instruction/power_instruction_table.txt +++ /dev/null @@ -1,1862 +0,0 @@ -011111 ..... ..... ..... ..101 01010/ -addex -111111 ..... 10100 ..... 10010 00111/ -mffscdrn -111111 ..... 10101 //... 10010 00111/ -mffscdrni -111111 ..... 00001 ///// 10010 00111/ -mffsce -111111 ..... 10110 ..... 10010 00111/ -mffscrn -111111 ..... 10111 ///.. 10010 00111/ -mffscrni -111111 ..... 11000 ///// 10010 00111/ -mffsl -011111 ..... ///// ..... 11010 10010/ -slbiag -000100 ..... ..... ..... ..... 100011 -vmsumudm -010011 ..... ..... ..... ..... 00010. -addpcis -000100 ..... 00111 ..... 1.110 000001 -bcdcfn. -000100 ..... 00010 ..... 1.110 000001 -bcdcfsq. -000100 ..... 00110 ..... 1.110 000001 -bcdcfz. -000100 ..... ..... ..... 01101 000001 -bcdcpsgn. -000100 ..... 00101 ..... 1/110 000001 -bcdctn. -000100 ..... 00000 ..... 1/110 000001 -bcdctsq. -000100 ..... 00100 ..... 1.110 000001 -bcdctz. -000100 ..... ..... ..... 1.011 000001 -bcds. -000100 ..... 11111 ..... 1.110 000001 -bcdsetsgn. -000100 ..... ..... ..... 1.111 000001 -bcdsr. -000100 ..... ..... ..... 1.100 000001 -bcdtrunc. -000100 ..... ..... ..... 1/010 000001 -bcdus. -000100 ..... ..... ..... 1/101 000001 -bcdutrunc. -011111 ...// ..... ..... 00111 00000/ -cmpeqb -011111 .../. ..... ..... 00110 00000/ -cmprb -011111 ..... ..... ///// 10001 11010. -cnttzd[.] -011111 ..... ..... ///// 10000 11010. -cnttzw[.] -011111 ////. ..... ..... 11000 00110/ -copy -011111 ///// ///// ///// 11010 00110/ -cp_abort -011111 ..... ///.. ///// 10111 10011/ -darn -111011 ...// ..... ..... 10101 00011/ -dtstsfi -111111 ...// ..... ..... 10101 00011/ -dtstsfiq -011111 ..... ..... ..... 11011 1101.. -extswsli[.] -011111 ..... ..... ..... 10011 00110/ -ldat -011111 ..... ..... ..... 10010 00110/ -lwat -111001 ..... ..... ..... ..... ....10 -lxsd -011111 ..... ..... ..... 11000 01101. -lxsibzx -011111 ..... ..... ..... 11001 01101. -lxsihzx -111001 ..... ..... ..... ..... ....11 -lxssp -111101 ..... ..... ..... ..... ...001 -lxv -011111 ..... ..... ..... 11011 01100. -lxvb16x -011111 ..... ..... ..... 11001 01100. -lxvh8x -011111 ..... ..... ..... 01000 01101. -lxvl -011111 ..... ..... ..... 01001 01101. -lxvll -011111 ..... ..... ..... 01011 01100. -lxvwsx -011111 ..... ..... ..... 01000 01100. -lxvx -000100 ..... ..... ..... ..... 110000 -maddhd -000100 ..... ..... ..... ..... 110001 -maddhdu -000100 ..... ..... ..... ..... 110011 -maddld -011111 ...// ///// ///// 10010 00000/ -mcrxrx -011111 ..... ..... ///// 01001 10011. -mfvsrld -011111 ..... ..... ..... 11000 01001/ -modsd -011111 ..... ..... ..... 11000 01011/ -modsw -011111 ..... ..... ..... 01000 01001/ -modud -011111 ..... ..... ..... 01000 01011/ -moduw -011111 ///// ///// ///// 11011 10110/ -msgsync -011111 ..... ..... ..... 01101 10011. -mtvsrdd -011111 ..... ..... ///// 01100 10011. -mtvsrws -011111 ////. ..... ..... 11100 00110. -paste[.] -010011 ///// ///// ///// 00010 10010/ -rfscv -010001 ///// ///// ////. ..... .///01 -scv -011111 ..... ...// ///// 00100 000000 -setb -011111 ..... ///// ..... 01110 10010/ -slbieg -011111 ///// ///// ///// 01010 10010/ -slbsync -011111 ..... ..... ..... 10111 00110/ -stdat -010011 ///// ///// ///// 01011 10010/ -stop -011111 ..... ..... ..... 10110 00110/ -stwat -111101 ..... ..... ..... ..... ....10 -stxsd -011111 ..... ..... ..... 11100 01101. -stxsibx -011111 ..... ..... ..... 11101 01101. -stxsihx -111101 ..... ..... ..... ..... ....11 -stxssp -111101 ..... ..... ..... ..... ...101 -stxv -011111 ..... ..... ..... 11111 01100. -stxvb16x -011111 ..... ..... ..... 11101 01100. -stxvh8x -011111 ..... ..... ..... 01100 01101. -stxvl -011111 ..... ..... ..... 01101 01101. -stxvll -011111 ..... ..... ..... 01100 01100. -stxvx -000100 ..... ..... ..... 10000 000011 -vabsdub -000100 ..... ..... ..... 10001 000011 -vabsduh -000100 ..... ..... ..... 10010 000011 -vabsduw -000100 ..... ..... ..... 10111 001100 -vbpermd -000100 ..... 00000 ..... 11000 000010 -vclzlsbb -000100 ..... ..... ..... .0000 000111 -vcmpneb[.] -000100 ..... ..... ..... .0001 000111 -vcmpneh[.] -000100 ..... ..... ..... .0010 000111 -vcmpnew[.] -000100 ..... ..... ..... .0100 000111 -vcmpnezb[.] -000100 ..... ..... ..... .0101 000111 -vcmpnezh[.] -000100 ..... ..... ..... .0110 000111 -vcmpnezw[.] -000100 ..... 11100 ..... 11000 000010 -vctzb -000100 ..... 11111 ..... 11000 000010 -vctzd -000100 ..... 11101 ..... 11000 000010 -vctzh -000100 ..... 00001 ..... 11000 000010 -vctzlsbb -000100 ..... 11110 ..... 11000 000010 -vctzw -000100 ..... /.... ..... 01011 001101 -vextractd -000100 ..... /.... ..... 01000 001101 -vextractub -000100 ..... /.... ..... 01001 001101 -vextractuh -000100 ..... /.... ..... 01010 001101 -vextractuw -000100 ..... 11000 ..... 11000 000010 -vextsb2d -000100 ..... 10000 ..... 11000 000010 -vextsb2w -000100 ..... 11001 ..... 11000 000010 -vextsh2d -000100 ..... 10001 ..... 11000 000010 -vextsh2w -000100 ..... 11010 ..... 11000 000010 -vextsw2d -000100 ..... ..... ..... 11000 001101 -vextublx -000100 ..... ..... ..... 11100 001101 -vextubrx -000100 ..... ..... ..... 11001 001101 -vextuhlx -000100 ..... ..... ..... 11101 001101 -vextuhrx -000100 ..... ..... ..... 11010 001101 -vextuwlx -000100 ..... ..... ..... 11110 001101 -vextuwrx -000100 ..... /.... ..... 01100 001101 -vinsertb -000100 ..... /.... ..... 01111 001101 -vinsertd -000100 ..... /.... ..... 01101 001101 -vinserth -000100 ..... /.... ..... 01110 001101 -vinsertw -000100 ..... ..... ///// 00000 000001 -vmul10cuq -000100 ..... ..... ..... 00001 000001 -vmul10ecuq -000100 ..... ..... ..... 01001 000001 -vmul10euq -000100 ..... ..... ///// 01000 000001 -vmul10uq -000100 ..... 00111 ..... 11000 000010 -vnegd -000100 ..... 00110 ..... 11000 000010 -vnegw -000100 ..... ..... ..... ..... 111011 -vpermr -000100 ..... 01001 ..... 11000 000010 -vprtybd -000100 ..... 01010 ..... 11000 000010 -vprtybq -000100 ..... 01000 ..... 11000 000010 -vprtybw -000100 ..... ..... ..... 00011 000101 -vrldmi -000100 ..... ..... ..... 00111 000101 -vrldnm -000100 ..... ..... ..... 00010 000101 -vrlwmi -000100 ..... ..... ..... 00110 000101 -vrlwnm -000100 ..... ..... ..... 11101 000100 -vslv -000100 ..... ..... ..... 11100 000100 -vsrv -011111 ///.. ///// ///// 00000 11110/ -wait -111111 ..... 00000 ..... 11001 00100/ -xsabsqp -111111 ..... ..... ..... 00000 00100. -xsaddqp[o] -111100 ..... ..... ..... 00000 011... -xscmpeqdp -111100 ...// ..... ..... 00111 011../ -xscmpexpdp -111111 ...// ..... ..... 00101 00100/ -xscmpexpqp -111100 ..... ..... ..... 00010 011... -xscmpgedp -111100 ..... ..... ..... 00001 011... -xscmpgtdp -111111 ...// ..... ..... 00100 00100/ -xscmpoqp -111111 ...// ..... ..... 10100 00100/ -xscmpuqp -111111 ..... ..... ..... 00011 00100/ -xscpsgnqp -111100 ..... 10001 ..... 10101 1011.. -xscvdphp -111111 ..... 10110 ..... 11010 00100/ -xscvdpqp -111100 ..... 10000 ..... 10101 1011.. -xscvhpdp -111111 ..... 10100 ..... 11010 00100. -xscvqpdp[o] -111111 ..... 11001 ..... 11010 00100/ -xscvqpsdz -111111 ..... 01001 ..... 11010 00100/ -xscvqpswz -111111 ..... 10001 ..... 11010 00100/ -xscvqpudz -111111 ..... 00001 ..... 11010 00100/ -xscvqpuwz -111111 ..... 01010 ..... 11010 00100/ -xscvsdqp -111111 ..... 00010 ..... 11010 00100/ -xscvudqp -111111 ..... ..... ..... 10001 00100. -xsdivqp[o] -111100 ..... ..... ..... 11100 10110. -xsiexpdp -111111 ..... ..... ..... 11011 00100/ -xsiexpqp -111111 ..... ..... ..... 01100 00100. -xsmaddqp[o] -111100 ..... ..... ..... 10000 000... -xsmaxcdp -111100 ..... ..... ..... 10010 000... -xsmaxjdp -111100 ..... ..... ..... 10001 000... -xsmincdp -111100 ..... ..... ..... 10011 000... -xsminjdp -111111 ..... ..... ..... 01101 00100. -xsmsubqp[o] -111111 ..... ..... ..... 00001 00100. -xsmulqp[o] -111111 ..... 01000 ..... 11001 00100/ -xsnabsqp -111111 ..... 10000 ..... 11001 00100/ -xsnegqp -111111 ..... ..... ..... 01110 00100. -xsnmaddqp[o] -111111 ..... ..... ..... 01111 00100. -xsnmsubqp[o] -111111 ..... ////. ..... ..000 00101. -xsrqpi[x] -111111 ..... ////. ..... ..001 00101/ -xsrqpxp -111111 ..... 11011 ..... 11001 00100. -xssqrtqp[o] -111111 ..... ..... ..... 10000 00100. -xssubqp[o] -111100 ..... ..... ..... 10110 1010./ -xststdcdp -111111 ..... ..... ..... 10110 00100/ -xststdcqp -111100 ..... ..... ..... 10010 1010./ -xststdcsp -111100 ..... 00000 ..... 10101 1011./ -xsxexpdp -111111 ..... 00010 ..... 11001 00100/ -xsxexpqp -111100 ..... 00001 ..... 10101 1011./ -xsxsigdp -111111 ..... 10010 ..... 11001 00100/ -xsxsigqp -111100 ..... 11000 ..... 11101 1011.. -xvcvhpsp -111100 ..... 11001 ..... 11101 1011.. -xvcvsphp -111100 ..... ..... ..... 11111 000... -xviexpdp -111100 ..... ..... ..... 11011 000... -xviexpsp -111100 ..... ..... ..... 1111. 101... -xvtstdcdp -111100 ..... ..... ..... 1101. 101... -xvtstdcsp -111100 ..... 00000 ..... 11101 1011.. -xvxexpdp -111100 ..... 01000 ..... 11101 1011.. -xvxexpsp -111100 ..... 00001 ..... 11101 1011.. -xvxsigdp -111100 ..... 01001 ..... 11101 1011.. -xvxsigsp -111100 ..... 10111 ..... 11101 1011.. -xxbrd -111100 ..... 00111 ..... 11101 1011.. -xxbrh -111100 ..... 11111 ..... 11101 1011.. -xxbrq -111100 ..... 01111 ..... 11101 1011.. -xxbrw -111100 ..... /.... ..... 01010 0101.. -xxextractuw -111100 ..... /.... ..... 01011 0101.. -xxinsertw -111100 ..... ..... ..... 00011 010... -xxperm -111100 ..... ..... ..... 00111 010... -xxpermr -111100 ..... 00... ..... 01011 01000. -xxspltib -000100 ..... ..... ..... 1.000 000001 -bcdadd. -000100 ..... ..... ..... 1.001 000001 -bcdsub. -010011 ..... ..... ///.. 10001 10000. -bctar[l] -011111 ///// ///// ///// 01101 01110/ -clrbhrb -111111 ..... ..... ..... 11110 00110/ -fmrgew -111111 ..... ..... ..... 11010 00110/ -fmrgow -011111 /.... ..... ..... 00000 10110/ -icbt -011111 ..... ..... ..... 01000 10100. -lqarx -011111 ..... ..... ..... 00010 01100. -lxsiwax -011111 ..... ..... ..... 00000 01100. -lxsiwzx -011111 ..... ..... ..... 10000 01100. -lxsspx -011111 ..... ..... ..... 01001 01110/ -mfbhrbe -011111 ..... ..... ///// 00001 10011. -mfvsrd -011111 ..... ..... ///// 00011 10011. -mfvsrwz -011111 ///// ///// ..... 00111 01110/ -msgclr -011111 ///// ///// ..... 00101 01110/ -msgclrp -011111 ///// ///// ..... 00110 01110/ -msgsnd -011111 ///// ///// ..... 00100 01110/ -msgsndp -011111 ..... ..... ///// 00101 10011. -mtvsrd -011111 ..... ..... ///// 00110 10011. -mtvsrwa -011111 ..... ..... ///// 00111 10011. -mtvsrwz -010011 ///// ///// ////. 00100 10010/ -rfebb -011111 ..... ..... ..... 00101 101101 -stqcx. -011111 ..... ..... ..... 00100 01100. -stxsiwx -011111 ..... ..... ..... 10100 01100. -stxsspx -011111 ///// ..... ///// 11100 011101 -tabort. -011111 ..... ..... ..... 11001 011101 -tabortdc. -011111 ..... ..... ..... 11011 011101 -tabortdci. -011111 ..... ..... ..... 11000 011101 -tabortwc. -011111 ..... ..... ..... 11010 011101 -tabortwci. -011111 .///. ///// ///// 10100 011101 -tbegin. -011111 ...// ///// ///// 10110 01110/ -tcheck -011111 .//// ///// ///// 10101 01110/ -tend. -011111 ///// ///// ///// 11111 011101 -trechkpt. -011111 ///// ..... ///// 11101 011101 -treclaim. -011111 ////. ///// ///// 10111 01110/ -tsr. -000100 ..... ..... ..... 00101 000000 -vaddcuq -000100 ..... ..... ..... ..... 111101 -vaddecuq -000100 ..... ..... ..... ..... 111100 -vaddeuqm -000100 ..... ..... ..... 00011 000000 -vaddudm -000100 ..... ..... ..... 00100 000000 -vadduqm -000100 ..... ..... ..... 10101 001100 -vbpermq -000100 ..... ..... ..... 10100 001000 -vcipher -000100 ..... ..... ..... 10100 001001 -vcipherlast -000100 ..... ///// ..... 11100 000010 -vclzb -000100 ..... ///// ..... 11111 000010 -vclzd -000100 ..... ///// ..... 11101 000010 -vclzh -000100 ..... ///// ..... 11110 000010 -vclzw -000100 ..... ..... ..... .0011 000111 -vcmpequd[.] -000100 ..... ..... ..... .1111 000111 -vcmpgtsd[.] -000100 ..... ..... ..... .1011 000111 -vcmpgtud[.] -000100 ..... ..... ..... 11010 000100 -veqv -000100 ..... ///// ..... 10100 001100 -vgbbd -000100 ..... ..... ..... 00111 000010 -vmaxsd -000100 ..... ..... ..... 00011 000010 -vmaxud -000100 ..... ..... ..... 01111 000010 -vminsd -000100 ..... ..... ..... 01011 000010 -vminud -000100 ..... ..... ..... 11110 001100 -vmrgew -000100 ..... ..... ..... 11010 001100 -vmrgow -000100 ..... ..... ..... 01110 001000 -vmulesw -000100 ..... ..... ..... 01010 001000 -vmuleuw -000100 ..... ..... ..... 00110 001000 -vmulosw -000100 ..... ..... ..... 00010 001000 -vmulouw -000100 ..... ..... ..... 00010 001001 -vmuluwm -000100 ..... ..... ..... 10110 000100 -vnand -000100 ..... ..... ..... 10101 001000 -vncipher -000100 ..... ..... ..... 10101 001001 -vncipherlast -000100 ..... ..... ..... 10101 000100 -vorc -000100 ..... ..... ..... ..... 101101 -vpermxor -000100 ..... ..... ..... 10111 001110 -vpksdss -000100 ..... ..... ..... 10101 001110 -vpksdus -000100 ..... ..... ..... 10001 001110 -vpkudum -000100 ..... ..... ..... 10011 001110 -vpkudus -000100 ..... ..... ..... 10000 001000 -vpmsumb -000100 ..... ..... ..... 10011 001000 -vpmsumd -000100 ..... ..... ..... 10001 001000 -vpmsumh -000100 ..... ..... ..... 10010 001000 -vpmsumw -000100 ..... ///// ..... 11100 000011 -vpopcntb -000100 ..... ///// ..... 11111 000011 -vpopcntd -000100 ..... ///// ..... 11101 000011 -vpopcnth -000100 ..... ///// ..... 11110 000011 -vpopcntw -000100 ..... ..... ..... 00011 000100 -vrld -000100 ..... ..... ///// 10111 001000 -vsbox -000100 ..... ..... ..... 11011 000010 -vshasigmad -000100 ..... ..... ..... 11010 000010 -vshasigmaw -000100 ..... ..... ..... 10111 000100 -vsld -000100 ..... ..... ..... 01111 000100 -vsrad -000100 ..... ..... ..... 11011 000100 -vsrd -000100 ..... ..... ..... 10101 000000 -vsubcuq -000100 ..... ..... ..... ..... 111111 -vsubecuq -000100 ..... ..... ..... ..... 111110 -vsubeuqm -000100 ..... ..... ..... 10011 000000 -vsubudm -000100 ..... ..... ..... 10100 000000 -vsubuqm -000100 ..... ///// ..... 11001 001110 -vupkhsw -000100 ..... ///// ..... 11011 001110 -vupklsw -111100 ..... ..... ..... 00000 000... -xsaddsp -111100 ..... ///// ..... 10000 1011.. -xscvdpspn -111100 ..... ///// ..... 10100 1011.. -xscvspdpn -111100 ..... ///// ..... 10011 1000.. -xscvsxdsp -111100 ..... ///// ..... 10010 1000.. -xscvuxdsp -111100 ..... ..... ..... 00011 000... -xsdivsp -111100 ..... ..... ..... 00000 001... -xsmaddasp -111100 ..... ..... ..... 00001 001... -xsmaddmsp -111100 ..... ..... ..... 00010 001... -xsmsubasp -111100 ..... ..... ..... 00011 001... -xsmsubmsp -111100 ..... ..... ..... 00010 000... -xsmulsp -111100 ..... ..... ..... 10000 001... -xsnmaddasp -111100 ..... ..... ..... 10001 001... -xsnmaddmsp -111100 ..... ..... ..... 10010 001... -xsnmsubasp -111100 ..... ..... ..... 10011 001... -xsnmsubmsp -111100 ..... ///// ..... 00001 1010.. -xsresp -111100 ..... ///// ..... 10001 1001.. -xsrsp -111100 ..... ///// ..... 00000 1010.. -xsrsqrtesp -111100 ..... ///// ..... 00000 1011.. -xssqrtsp -111100 ..... ..... ..... 00001 000... -xssubsp -111100 ..... ..... ..... 10111 010... -xxleqv -111100 ..... ..... ..... 10110 010... -xxlnand -111100 ..... ..... ..... 10101 010... -xxlorc -011111 ..... ..... ..... /0010 01010/ -addg6s -011111 ..... ..... ..... 00111 11100/ -bpermd -011111 ..... ..... ///// 01001 11010/ -cbcdtd -011111 ..... ..... ///// 01000 11010/ -cdtbcd -111011 ..... ///// ..... 11001 00010. -dcffix[.] -011111 ..... ..... ..... .1101 01001. -divde[o][.] -011111 ..... ..... ..... .1100 01001. -divdeu[o][.] -011111 ..... ..... ..... .1101 01011. -divwe[o][.] -011111 ..... ..... ..... .1100 01011. -divweu[o][.] -111011 ..... ///// ..... 11010 01110. -fcfids[.] -111111 ..... ///// ..... 11110 01110. -fcfidu[.] -111011 ..... ///// ..... 11110 01110. -fcfidus[.] -111111 ..... ///// ..... 11101 01110. -fctidu[.] -111111 ..... ///// ..... 11101 01111. -fctiduz[.] -111111 ..... ///// ..... 00100 01110. -fctiwu[.] -111111 ..... ///// ..... 00100 01111. -fctiwuz[.] -111111 ...// ..... ..... 00100 00000/ -ftdiv -111111 ...// ///// ..... 00101 00000/ -ftsqrt -011111 ..... ..... ..... 00001 10100. -lbarx -011111 ..... ..... ..... 10000 10100/ -ldbrx -011111 ..... ..... ..... 11011 10111/ -lfiwzx -011111 ..... ..... ..... 00011 10100. -lharx -011111 ..... ..... ..... 10010 01100. -lxsdx -011111 ..... ..... ..... 11010 01100. -lxvd2x -011111 ..... ..... ..... 01010 01100. -lxvdsx -011111 ..... ..... ..... 11000 01100. -lxvw4x -011111 ..... ..... ///// 01111 11010/ -popcntd -011111 ..... ..... ///// 01011 11010/ -popcntw -011111 ..... ..... ..... 10101 101101 -stbcx. -011111 ..... ..... ..... 10100 10100/ -stdbrx -011111 ..... ..... ..... 10110 101101 -sthcx. -011111 ..... ..... ..... 10110 01100. -stxsdx -011111 ..... ..... ..... 11110 01100. -stxvd2x -011111 ..... ..... ..... 11100 01100. -stxvw4x -111100 ..... ///// ..... 10101 1001.. -xsabsdp -111100 ..... ..... ..... 00100 000... -xsadddp -111100 ...// ..... ..... 00101 011../ -xscmpodp -111100 ...// ..... ..... 00100 011../ -xscmpudp -111100 ..... ..... ..... 10110 000... -xscpsgndp -111100 ..... ///// ..... 10000 1001.. -xscvdpsp -111100 ..... ///// ..... 10101 1000.. -xscvdpsxds -111100 ..... ///// ..... 00101 1000.. -xscvdpsxws -111100 ..... ///// ..... 10100 1000.. -xscvdpuxds -111100 ..... ///// ..... 00100 1000.. -xscvdpuxws -111100 ..... ///// ..... 10100 1001.. -xscvspdp -111100 ..... ///// ..... 10111 1000.. -xscvsxddp -111100 ..... ///// ..... 10110 1000.. -xscvuxddp -111100 ..... ..... ..... 00111 000... -xsdivdp -111100 ..... ..... ..... 00100 001... -xsmaddadp -111100 ..... ..... ..... 00101 001... -xsmaddmdp -111100 ..... ..... ..... 10100 000... -xsmaxdp -111100 ..... ..... ..... 10101 000... -xsmindp -111100 ..... ..... ..... 00110 001... -xsmsubadp -111100 ..... ..... ..... 00111 001... -xsmsubmdp -111100 ..... ..... ..... 00110 000... -xsmuldp -111100 ..... ///// ..... 10110 1001.. -xsnabsdp -111100 ..... ///// ..... 10111 1001.. -xsnegdp -111100 ..... ..... ..... 10100 001... -xsnmaddadp -111100 ..... ..... ..... 10101 001... -xsnmaddmdp -111100 ..... ..... ..... 10110 001... -xsnmsubadp -111100 ..... ..... ..... 10111 001... -xsnmsubmdp -111100 ..... ///// ..... 00100 1001.. -xsrdpi -111100 ..... ///// ..... 00110 1011.. -xsrdpic -111100 ..... ///// ..... 00111 1001.. -xsrdpim -111100 ..... ///// ..... 00110 1001.. -xsrdpip -111100 ..... ///// ..... 00101 1001.. -xsrdpiz -111100 ..... ///// ..... 00101 1010.. -xsredp -111100 ..... ///// ..... 00100 1010.. -xsrsqrtedp -111100 ..... ///// ..... 00100 1011.. -xssqrtdp -111100 ..... ..... ..... 00101 000... -xssubdp -111100 ...// ..... ..... 00111 101../ -xstdivdp -111100 ...// ///// ..... 00110 1010./ -xstsqrtdp -111100 ..... ///// ..... 11101 1001.. -xvabsdp -111100 ..... ///// ..... 11001 1001.. -xvabssp -111100 ..... ..... ..... 01100 000... -xvadddp -111100 ..... ..... ..... 01000 000... -xvaddsp -111100 ..... ..... ..... .1100 011... -xvcmpeqdp[.] -111100 ..... ..... ..... .1000 011... -xvcmpeqsp[.] -111100 ..... ..... ..... .1110 011... -xvcmpgedp[.] -111100 ..... ..... ..... .1010 011... -xvcmpgesp[.] -111100 ..... ..... ..... .1101 011... -xvcmpgtdp[.] -111100 ..... ..... ..... .1001 011... -xvcmpgtsp[.] -111100 ..... ..... ..... 11110 000... -xvcpsgndp -111100 ..... ..... ..... 11010 000... -xvcpsgnsp -111100 ..... ///// ..... 11000 1001.. -xvcvdpsp -111100 ..... ///// ..... 11101 1000.. -xvcvdpsxds -111100 ..... ///// ..... 01101 1000.. -xvcvdpsxws -111100 ..... ///// ..... 11100 1000.. -xvcvdpuxds -111100 ..... ///// ..... 01100 1000.. -xvcvdpuxws -111100 ..... ///// ..... 11100 1001.. -xvcvspdp -111100 ..... ///// ..... 11001 1000.. -xvcvspsxds -111100 ..... ///// ..... 01001 1000.. -xvcvspsxws -111100 ..... ///// ..... 11000 1000.. -xvcvspuxds -111100 ..... ///// ..... 01000 1000.. -xvcvspuxws -111100 ..... ///// ..... 11111 1000.. -xvcvsxddp -111100 ..... ///// ..... 11011 1000.. -xvcvsxdsp -111100 ..... ///// ..... 01111 1000.. -xvcvsxwdp -111100 ..... ///// ..... 01011 1000.. -xvcvsxwsp -111100 ..... ///// ..... 11110 1000.. -xvcvuxddp -111100 ..... ///// ..... 11010 1000.. -xvcvuxdsp -111100 ..... ///// ..... 01110 1000.. -xvcvuxwdp -111100 ..... ///// ..... 01010 1000.. -xvcvuxwsp -111100 ..... ..... ..... 01111 000... -xvdivdp -111100 ..... ..... ..... 01011 000... -xvdivsp -111100 ..... ..... ..... 01100 001... -xvmaddadp -111100 ..... ..... ..... 01000 001... -xvmaddasp -111100 ..... ..... ..... 01101 001... -xvmaddmdp -111100 ..... ..... ..... 01001 001... -xvmaddmsp -111100 ..... ..... ..... 11100 000... -xvmaxdp -111100 ..... ..... ..... 11000 000... -xvmaxsp -111100 ..... ..... ..... 11101 000... -xvmindp -111100 ..... ..... ..... 11001 000... -xvminsp -111100 ..... ..... ..... 01110 001... -xvmsubadp -111100 ..... ..... ..... 01010 001... -xvmsubasp -111100 ..... ..... ..... 01111 001... -xvmsubmdp -111100 ..... ..... ..... 01011 001... -xvmsubmsp -111100 ..... ..... ..... 01110 000... -xvmuldp -111100 ..... ..... ..... 01010 000... -xvmulsp -111100 ..... ///// ..... 11110 1001.. -xvnabsdp -111100 ..... ///// ..... 11010 1001.. -xvnabssp -111100 ..... ///// ..... 11111 1001.. -xvnegdp -111100 ..... ///// ..... 11011 1001.. -xvnegsp -111100 ..... ..... ..... 11100 001... -xvnmaddadp -111100 ..... ..... ..... 11000 001... -xvnmaddasp -111100 ..... ..... ..... 11101 001... -xvnmaddmdp -111100 ..... ..... ..... 11001 001... -xvnmaddmsp -111100 ..... ..... ..... 11110 001... -xvnmsubadp -111100 ..... ..... ..... 11010 001... -xvnmsubasp -111100 ..... ..... ..... 11111 001... -xvnmsubmdp -111100 ..... ..... ..... 11011 001... -xvnmsubmsp -111100 ..... ///// ..... 01100 1001.. -xvrdpi -111100 ..... ///// ..... 01110 1011.. -xvrdpic -111100 ..... ///// ..... 01111 1001.. -xvrdpim -111100 ..... ///// ..... 01110 1001.. -xvrdpip -111100 ..... ///// ..... 01101 1001.. -xvrdpiz -111100 ..... ///// ..... 01101 1010.. -xvredp -111100 ..... ///// ..... 01001 1010.. -xvresp -111100 ..... ///// ..... 01000 1001.. -xvrspi -111100 ..... ///// ..... 01010 1011.. -xvrspic -111100 ..... ///// ..... 01011 1001.. -xvrspim -111100 ..... ///// ..... 01010 1001.. -xvrspip -111100 ..... ///// ..... 01001 1001.. -xvrspiz -111100 ..... ///// ..... 01100 1010.. -xvrsqrtedp -111100 ..... ///// ..... 01000 1010.. -xvrsqrtesp -111100 ..... ///// ..... 01100 1011.. -xvsqrtdp -111100 ..... ///// ..... 01000 1011.. -xvsqrtsp -111100 ..... ..... ..... 01101 000... -xvsubdp -111100 ..... ..... ..... 01001 000... -xvsubsp -111100 ...// ..... ..... 01111 101../ -xvtdivdp -111100 ...// ..... ..... 01011 101../ -xvtdivsp -111100 ...// ///// ..... 01110 1010./ -xvtsqrtdp -111100 ...// ///// ..... 01010 1010./ -xvtsqrtsp -111100 ..... ..... ..... 10000 010... -xxland -111100 ..... ..... ..... 10001 010... -xxlandc -111100 ..... ..... ..... 10100 010... -xxlnor -111100 ..... ..... ..... 10010 010... -xxlor -111100 ..... ..... ..... 10011 010... -xxlxor -111100 ..... ..... ..... 00010 010... -xxmrghw -111100 ..... ..... ..... 00110 010... -xxmrglw -111100 ..... ..... ..... 0..01 010... -xxpermdi -111100 ..... ..... ..... ..... 11.... -xxsel -111100 ..... ..... ..... 0..00 010... -xxsldwi -111100 ..... ///.. ..... 01010 0100.. -xxspltw -011111 ..... ..... ..... 01111 11100/ -cmpb -111011 ..... ..... ..... 00000 00010. -dadd[.] -111111 ..... ..... ..... 00000 00010. -daddq[.] -111111 ..... ///// ..... 11001 00010. -dcffixq[.] -111011 ...// ..... ..... 00100 00010/ -dcmpo -111111 ...// ..... ..... 00100 00010/ -dcmpoq -111011 ...// ..... ..... 10100 00010/ -dcmpu -111111 ...// ..... ..... 10100 00010/ -dcmpuq -111011 ..... ///// ..... 01000 00010. -dctdp[.] -111011 ..... ///// ..... 01001 00010. -dctfix[.] -111111 ..... ///// ..... 01001 00010. -dctfixq[.] -111111 ..... ///// ..... 01000 00010. -dctqpq[.] -111011 ..... ../// ..... 01010 00010. -ddedpd[.] -111111 ..... ../// ..... 01010 00010. -ddedpdq[.] -111011 ..... ..... ..... 10001 00010. -ddiv[.] -111111 ..... ..... ..... 10001 00010. -ddivq[.] -111011 ..... .//// ..... 11010 00010. -denbcd[.] -111111 ..... .//// ..... 11010 00010. -denbcdq[.] -111011 ..... ..... ..... 11011 00010. -diex[.] -111111 ..... ..... ..... 11011 00010. -diexq[.] -111011 ..... ..... ..... 00001 00010. -dmul[.] -111111 ..... ..... ..... 00001 00010. -dmulq[.] -111011 ..... ..... ..... ..000 00011. -dqua[.] -111011 ..... ..... ..... ..010 00011. -dquai[.] -111111 ..... ..... ..... ..010 00011. -dquaiq[.] -111111 ..... ..... ..... ..000 00011. -dquaq[.] -111111 ..... ///// ..... 11000 00010. -drdpq[.] -111011 ..... ////. ..... ..111 00011. -drintn[.] -111111 ..... ////. ..... ..111 00011. -drintnq[.] -111011 ..... ////. ..... ..011 00011. -drintx[.] -111111 ..... ////. ..... ..011 00011. -drintxq[.] -111011 ..... ..... ..... ..001 00011. -drrnd[.] -111111 ..... ..... ..... ..001 00011. -drrndq[.] -111011 ..... ///// ..... 11000 00010. -drsp[.] -111011 ..... ..... ..... .0010 00010. -dscli[.] -111111 ..... ..... ..... .0010 00010. -dscliq[.] -111011 ..... ..... ..... .0011 00010. -dscri[.] -111111 ..... ..... ..... .0011 00010. -dscriq[.] -111011 ..... ..... ..... 10000 00010. -dsub[.] -111111 ..... ..... ..... 10000 00010. -dsubq[.] -111011 ...// ..... ..... .0110 00010/ -dtstdc -111111 ...// ..... ..... .0110 00010/ -dtstdcq -111011 ...// ..... ..... .0111 00010/ -dtstdg -111111 ...// ..... ..... .0111 00010/ -dtstdgq -111011 ...// ..... ..... 00101 00010/ -dtstex -111111 ...// ..... ..... 00101 00010/ -dtstexq -111011 ...// ..... ..... 10101 00010/ -dtstsf -111111 ...// ..... ..... 10101 00010/ -dtstsfq -111011 ..... ///// ..... 01011 00010. -dxex[.] -111111 ..... ///// ..... 01011 00010. -dxexq[.] -111111 ..... ..... ..... 00000 01000. -fcpsgn[.] -011111 ..... ..... ..... 11010 10101/ -lbzcix -011111 ..... ..... ..... 11011 10101/ -ldcix -111001 ..... ..... ..... ..... ....00 -lfdp -011111 ..... ..... ..... 11000 10111/ -lfdpx -011111 ..... ..... ..... 11010 10111/ -lfiwax -011111 ..... ..... ..... 11001 10101/ -lhzcix -011111 ..... ..... ..... 11000 10101/ -lwzcix -011111 ..... ..... ///// 00101 11010/ -prtyd -011111 ..... ..... ///// 00100 11010/ -prtyw -011111 ..... ///// ..... 11110 100111 -slbfee. -011111 ..... ..... ..... 11110 10101/ -stbcix -011111 ..... ..... ..... 11111 10101/ -stdcix -111101 ..... ..... ..... ..... ....00 -stfdp -011111 ..... ..... ..... 11100 10111/ -stfdpx -011111 ..... ..... ..... 11101 10101/ -sthcix -011111 ..... ..... ..... 11100 10101/ -stwcix -011010 00000 00000 00000 00000 000000 -xnop -011111 ..... ..... ..... ..... 01111/ -isel -111000 ..... ..... ..... ..... ...... -lq -011111 ..... ..... ..... 00000 00111/ -lvebx -011111 ..... ..... ..... 00001 00111/ -lvehx -011111 ..... ..... ..... 00010 00111/ -lvewx -011111 ..... ..... ..... 00000 00110/ -lvsl -011111 ..... ..... ..... 00001 00110/ -lvsr -011111 ..... ..... ..... 00011 00111/ -lvx -011111 ..... ..... ..... 01011 00111/ -lvxl -000100 ..... ///// ///// 11000 000100 -mfvscr -000100 ///// ///// ..... 11001 000100 -mtvscr -111110 ..... ..... ..... ..... ....10 -stq -011111 ..... ..... ..... 00100 00111/ -stvebx -011111 ..... ..... ..... 00101 00111/ -stvehx -011111 ..... ..... ..... 00110 00111/ -stvewx -011111 ..... ..... ..... 00111 00111/ -stvx -011111 ..... ..... ..... 01111 00111/ -stvxl -011111 ..... /.... ..... 01000 10010/ -tlbiel -000100 ..... ..... ..... 00110 000000 -vaddcuw -000100 ..... ..... ..... 00000 001010 -vaddfp -000100 ..... ..... ..... 01100 000000 -vaddsbs -000100 ..... ..... ..... 01101 000000 -vaddshs -000100 ..... ..... ..... 01110 000000 -vaddsws -000100 ..... ..... ..... 00000 000000 -vaddubm -000100 ..... ..... ..... 01000 000000 -vaddubs -000100 ..... ..... ..... 00001 000000 -vadduhm -000100 ..... ..... ..... 01001 000000 -vadduhs -000100 ..... ..... ..... 00010 000000 -vadduwm -000100 ..... ..... ..... 01010 000000 -vadduws -000100 ..... ..... ..... 10000 000100 -vand -000100 ..... ..... ..... 10001 000100 -vandc -000100 ..... ..... ..... 10100 000010 -vavgsb -000100 ..... ..... ..... 10101 000010 -vavgsh -000100 ..... ..... ..... 10110 000010 -vavgsw -000100 ..... ..... ..... 10000 000010 -vavgub -000100 ..... ..... ..... 10001 000010 -vavguh -000100 ..... ..... ..... 10010 000010 -vavguw -000100 ..... ..... ..... 01101 001010 -vcfsx -000100 ..... ..... ..... 01100 001010 -vcfux -000100 ..... ..... ..... .1111 000110 -vcmpbfp[.] -000100 ..... ..... ..... .0011 000110 -vcmpeqfp[.] -000100 ..... ..... ..... .0000 000110 -vcmpequb[.] -000100 ..... ..... ..... .0001 000110 -vcmpequh[.] -000100 ..... ..... ..... .0010 000110 -vcmpequw[.] -000100 ..... ..... ..... .0111 000110 -vcmpgefp[.] -000100 ..... ..... ..... .1011 000110 -vcmpgtfp[.] -000100 ..... ..... ..... .1100 000110 -vcmpgtsb[.] -000100 ..... ..... ..... .1101 000110 -vcmpgtsh[.] -000100 ..... ..... ..... .1110 000110 -vcmpgtsw[.] -000100 ..... ..... ..... .1000 000110 -vcmpgtub[.] -000100 ..... ..... ..... .1001 000110 -vcmpgtuh[.] -000100 ..... ..... ..... .1010 000110 -vcmpgtuw[.] -000100 ..... ..... ..... 01111 001010 -vctsxs -000100 ..... ..... ..... 01110 001010 -vctuxs -000100 ..... ///// ..... 00110 001010 -vexptefp -000100 ..... ..... ..... 00111 001010 -vlogefp -000100 ..... ..... ..... ..... 101110 -vmaddfp -000100 ..... ..... ..... 10000 001010 -vmaxfp -000100 ..... ..... ..... 00100 000010 -vmaxsb -000100 ..... ..... ..... 00101 000010 -vmaxsh -000100 ..... ..... ..... 00110 000010 -vmaxsw -000100 ..... ..... ..... 00000 000010 -vmaxub -000100 ..... ..... ..... 00001 000010 -vmaxuh -000100 ..... ..... ..... 00010 000010 -vmaxuw -000100 ..... ..... ..... ..... 100000 -vmhaddshs -000100 ..... ..... ..... ..... 100001 -vmhraddshs -000100 ..... ..... ..... 10001 001010 -vminfp -000100 ..... ..... ..... 01100 000010 -vminsb -000100 ..... ..... ..... 01101 000010 -vminsh -000100 ..... ..... ..... 01110 000010 -vminsw -000100 ..... ..... ..... 01000 000010 -vminub -000100 ..... ..... ..... 01001 000010 -vminuh -000100 ..... ..... ..... 01010 000010 -vminuw -000100 ..... ..... ..... ..... 100010 -vmladduhm -000100 ..... ..... ..... 00000 001100 -vmrghb -000100 ..... ..... ..... 00001 001100 -vmrghh -000100 ..... ..... ..... 00010 001100 -vmrghw -000100 ..... ..... ..... 00100 001100 -vmrglb -000100 ..... ..... ..... 00101 001100 -vmrglh -000100 ..... ..... ..... 00110 001100 -vmrglw -000100 ..... ..... ..... ..... 100101 -vmsummbm -000100 ..... ..... ..... ..... 101000 -vmsumshm -000100 ..... ..... ..... ..... 101001 -vmsumshs -000100 ..... ..... ..... ..... 100100 -vmsumubm -000100 ..... ..... ..... ..... 100110 -vmsumuhm -000100 ..... ..... ..... ..... 100111 -vmsumuhs -000100 ..... ..... ..... 01100 001000 -vmulesb -000100 ..... ..... ..... 01101 001000 -vmulesh -000100 ..... ..... ..... 01000 001000 -vmuleub -000100 ..... ..... ..... 01001 001000 -vmuleuh -000100 ..... ..... ..... 00100 001000 -vmulosb -000100 ..... ..... ..... 00101 001000 -vmulosh -000100 ..... ..... ..... 00000 001000 -vmuloub -000100 ..... ..... ..... 00001 001000 -vmulouh -000100 ..... ..... ..... ..... 101111 -vnmsubfp -000100 ..... ..... ..... 10100 000100 -vnor -000100 ..... ..... ..... 10010 000100 -vor -000100 ..... ..... ..... ..... 101011 -vperm -000100 ..... ..... ..... 01100 001110 -vpkpx -000100 ..... ..... ..... 00110 001110 -vpkshss -000100 ..... ..... ..... 00100 001110 -vpkshus -000100 ..... ..... ..... 00111 001110 -vpkswss -000100 ..... ..... ..... 00101 001110 -vpkswus -000100 ..... ..... ..... 00000 001110 -vpkuhum -000100 ..... ..... ..... 00010 001110 -vpkuhus -000100 ..... ..... ..... 00001 001110 -vpkuwum -000100 ..... ..... ..... 00011 001110 -vpkuwus -000100 ..... ///// ..... 00100 001010 -vrefp -000100 ..... ///// ..... 01011 001010 -vrfim -000100 ..... ///// ..... 01000 001010 -vrfin -000100 ..... ///// ..... 01010 001010 -vrfip -000100 ..... ///// ..... 01001 001010 -vrfiz -000100 ..... ..... ..... 00000 000100 -vrlb -000100 ..... ..... ..... 00001 000100 -vrlh -000100 ..... ..... ..... 00010 000100 -vrlw -000100 ..... ///// ..... 00101 001010 -vrsqrtefp -000100 ..... ..... ..... ..... 101010 -vsel -000100 ..... ..... ..... 00111 000100 -vsl -000100 ..... ..... ..... 00100 000100 -vslb -000100 ..... ..... ..... /.... 101100 -vsldoi -000100 ..... ..... ..... 00101 000100 -vslh -000100 ..... ..... ..... 10000 001100 -vslo -000100 ..... ..... ..... 00110 000100 -vslw -000100 ..... /.... ..... 01000 001100 -vspltb -000100 ..... //... ..... 01001 001100 -vsplth -000100 ..... ..... ///// 01100 001100 -vspltisb -000100 ..... ..... ///// 01101 001100 -vspltish -000100 ..... ..... ///// 01110 001100 -vspltisw -000100 ..... ///.. ..... 01010 001100 -vspltw -000100 ..... ..... ..... 01011 000100 -vsr -000100 ..... ..... ..... 01100 000100 -vsrab -000100 ..... ..... ..... 01101 000100 -vsrah -000100 ..... ..... ..... 01110 000100 -vsraw -000100 ..... ..... ..... 01000 000100 -vsrb -000100 ..... ..... ..... 01001 000100 -vsrh -000100 ..... ..... ..... 10001 001100 -vsro -000100 ..... ..... ..... 01010 000100 -vsrw -000100 ..... ..... ..... 10110 000000 -vsubcuw -000100 ..... ..... ..... 00001 001010 -vsubfp -000100 ..... ..... ..... 11100 000000 -vsubsbs -000100 ..... ..... ..... 11101 000000 -vsubshs -000100 ..... ..... ..... 11110 000000 -vsubsws -000100 ..... ..... ..... 10000 000000 -vsububm -000100 ..... ..... ..... 11000 000000 -vsububs -000100 ..... ..... ..... 10001 000000 -vsubuhm -000100 ..... ..... ..... 11001 000000 -vsubuhs -000100 ..... ..... ..... 10010 000000 -vsubuwm -000100 ..... ..... ..... 11010 000000 -vsubuws -000100 ..... ..... ..... 11010 001000 -vsum2sws -000100 ..... ..... ..... 11100 001000 -vsum4sbs -000100 ..... ..... ..... 11001 001000 -vsum4shs -000100 ..... ..... ..... 11000 001000 -vsum4ubs -000100 ..... ..... ..... 11110 001000 -vsumsws -000100 ..... ///// ..... 01101 001110 -vupkhpx -000100 ..... ///// ..... 01000 001110 -vupkhsb -000100 ..... ///// ..... 01001 001110 -vupkhsh -000100 ..... ///// ..... 01111 001110 -vupklpx -000100 ..... ///// ..... 01010 001110 -vupklsb -000100 ..... ///// ..... 01011 001110 -vupklsh -000100 ..... ..... ..... 10011 000100 -vxor -111111 ..... ///// ..... ///// 11000. -fre[.] -111111 ..... ///// ..... 01111 01000. -frim[.] -111111 ..... ///// ..... 01100 01000. -frin[.] -111111 ..... ///// ..... 01110 01000. -frip[.] -111111 ..... ///// ..... 01101 01000. -friz[.] -111011 ..... ///// ..... ///// 11010. -frsqrtes[.] -010011 ///// ///// ///// 01000 10010/ -hrfid -011111 ..... ..... ///// 00011 11010/ -popcntb -011111 ..... 1.... ..../ 00000 10011/ -mfocrf -011111 ..... 1.... ..../ 00100 10000/ -mtocrf -011111 ..... ///// ..... 11100 10011/ -slbmfee -011111 ..... ///// ..... 11010 10011/ -slbmfev -011111 ..... ///// ..... 01100 10010/ -slbmte -011111 ..... ..... ///// 00001 11010. -cntlzd[.] -011111 ///.. ..... ..... 00010 10110/ -dcbf -011111 ///// ..... ..... 00001 10110/ -dcbst -011111 ..... ..... ..... 01000 10110/ -dcbt -011111 ..... ..... ..... 00111 10110/ -dcbtst -011111 ..... ..... ..... .1111 01001. -divd[o][.] -011111 ..... ..... ..... .1110 01001. -divdu[o][.] -011111 ..... ..... ..... .1111 01011. -divw[o][.] -011111 ..... ..... ..... .1110 01011. -divwu[o][.] -011111 ///// ///// ///// 11010 10110/ -eieio -011111 ..... ..... ///// 11101 11010. -extsb[.] -011111 ..... ..... ///// 11110 11010. -extsw[.] -111011 ..... ..... ..... ///// 10101. -fadds[.] -111111 ..... ///// ..... 11010 01110. -fcfid[.] -111111 ..... ///// ..... 11001 01110. -fctid[.] -111111 ..... ///// ..... 11001 01111. -fctidz[.] -111011 ..... ..... ..... ///// 10010. -fdivs[.] -111011 ..... ..... ..... ..... 11101. -fmadds[.] -111011 ..... ..... ..... ..... 11100. -fmsubs[.] -111011 ..... ..... ///// ..... 11001. -fmuls[.] -111011 ..... ..... ..... ..... 11111. -fnmadds[.] -111011 ..... ..... ..... ..... 11110. -fnmsubs[.] -111011 ..... ///// ..... ///// 11000. -fres[.] -111111 ..... ///// ..... ///// 11010. -frsqrte[.] -111111 ..... ..... ..... ..... 10111. -fsel[.] -111011 ..... ///// ..... ///// 10110. -fsqrts[.] -111011 ..... ..... ..... ///// 10100. -fsubs[.] -011111 ///// ..... ..... 11110 10110/ -icbi -111010 ..... ..... ..... ..... ....00 -ld -011111 ..... ..... ..... 00010 10100/ -ldarx -111010 ..... ..... ..... ..... ....01 -ldu -011111 ..... ..... ..... 00001 10101/ -ldux -011111 ..... ..... ..... 00000 10101/ -ldx -111010 ..... ..... ..... ..... ....10 -lwa -011111 ..... ..... ..... 00000 10100/ -lwarx -011111 ..... ..... ..... 01011 10101/ -lwaux -011111 ..... ..... ..... 01010 10101/ -lwax -011111 ..... ..... ..... 01011 10011/ -mftb -011111 ..... ////. ///// 00101 10010/ -mtmsrd -011111 ..... ..... ..... /0010 01001. -mulhd[.] -011111 ..... ..... ..... /0000 01001. -mulhdu[.] -011111 ..... ..... ..... /0010 01011. -mulhw[.] -011111 ..... ..... ..... /0000 01011. -mulhwu[.] -011111 ..... ..... ..... .0111 01001. -mulld[o][.] -010011 ///// ///// ///// 00000 10010/ -rfid -011110 ..... ..... ..... ..... .1000. -rldcl[.] -011110 ..... ..... ..... ..... .1001. -rldcr[.] -011110 ..... ..... ..... ..... .010.. -rldic[.] -011110 ..... ..... ..... ..... .000.. -rldicl[.] -011110 ..... ..... ..... ..... .001.. -rldicr[.] -011110 ..... ..... ..... ..... .011.. -rldimi[.] -010001 ///// ///// ////. ..... .///1/ -sc -011111 //... ///// ///// 01111 10010/ -slbia -011111 ///// ///// ..... 01101 10010/ -slbie -011111 ..... ..... ..... 00000 11011. -sld[.] -011111 ..... ..... ..... 11000 11010. -srad[.] -011111 ..... ..... ..... 11001 1101.. -sradi[.] -011111 ..... ..... ..... 10000 11011. -srd[.] -111110 ..... ..... ..... ..... ....00 -std -011111 ..... ..... ..... 00110 101101 -stdcx. -111110 ..... ..... ..... ..... ....01 -stdu -011111 ..... ..... ..... 00101 10101/ -stdux -011111 ..... ..... ..... 00100 10101/ -stdx -011111 ..... ..... ..... 11110 10111/ -stfiwx -011111 ..... ..... ..... 00100 101101 -stwcx. -011111 ..... ..... ..... .0001 01000. -subf[o][.] -011111 ..... ..... ..... 00010 00100/ -td -000010 ..... ..... ..... ..... ...... -tdi -011111 ///// ///// ///// 10001 10110/ -tlbsync -111111 ..... ///// ..... 00000 01110. -fctiw[.] -111111 ..... ///// ..... 00000 01111. -fctiwz[.] -111111 ..... ///// ..... ///// 10110. -fsqrt[.] -011111 ..... ..... ..... .1000 01010. -add[o][.] -011111 ..... ..... ..... .0000 01010. -addc[o][.] -011111 ..... ..... ..... .0100 01010. -adde[o][.] -001110 ..... ..... ..... ..... ...... -addi -001100 ..... ..... ..... ..... ...... -addic -001101 ..... ..... ..... ..... ...... -addic. -001111 ..... ..... ..... ..... ...... -addis -011111 ..... ..... ///// .0111 01010. -addme[o][.] -011111 ..... ..... ///// .0110 01010. -addze[o][.] -011111 ..... ..... ..... 00000 11100. -and[.] -011111 ..... ..... ..... 00001 11100. -andc[.] -011100 ..... ..... ..... ..... ...... -andi. -011101 ..... ..... ..... ..... ...... -andis. -010010 ..... ..... ..... ..... ...... -b[l][a] -010000 ..... ..... ..... ..... ...... -bc[l][a] -010011 ..... ..... ///.. 10000 10000. -bcctr[l] -010011 ..... ..... ///.. 00000 10000. -bclr[l] -011111 .../. ..... ..... 00000 00000/ -cmp -001011 .../. ..... ..... ..... ...... -cmpi -011111 .../. ..... ..... 00001 00000/ -cmpl -001010 .../. ..... ..... ..... ...... -cmpli -011111 ..... ..... ///// 00000 11010. -cntlzw[.] -010011 ..... ..... ..... 01000 00001/ -crand -010011 ..... ..... ..... 00100 00001/ -crandc -010011 ..... ..... ..... 01001 00001/ -creqv -010011 ..... ..... ..... 00111 00001/ -crnand -010011 ..... ..... ..... 00001 00001/ -crnor -010011 ..... ..... ..... 01110 00001/ -cror -010011 ..... ..... ..... 01101 00001/ -crorc -010011 ..... ..... ..... 00110 00001/ -crxor -011111 ///// ..... ..... 11111 10110/ -dcbz -011111 ..... ..... ..... 01000 11100. -eqv[.] -011111 ..... ..... ///// 11100 11010. -extsh[.] -111111 ..... ///// ..... 01000 01000. -fabs[.] -111111 ..... ..... ..... ///// 10101. -fadd[.] -111111 ...// ..... ..... 00001 00000/ -fcmpo -111111 ...// ..... ..... 00000 00000/ -fcmpu -111111 ..... ..... ..... ///// 10010. -fdiv[.] -111111 ..... ..... ..... ..... 11101. -fmadd[.] -111111 ..... ///// ..... 00010 01000. -fmr[.] -111111 ..... ..... ..... ..... 11100. -fmsub[.] -111111 ..... ..... ///// ..... 11001. -fmul[.] -111111 ..... ///// ..... 00100 01000. -fnabs[.] -111111 ..... ///// ..... 00001 01000. -fneg[.] -111111 ..... ..... ..... ..... 11111. -fnmadd[.] -111111 ..... ..... ..... ..... 11110. -fnmsub[.] -111111 ..... ///// ..... 00000 01100. -frsp[.] -111111 ..... ..... ..... ///// 10100. -fsub[.] -010011 ///// ///// ///// 00100 10110/ -isync -100010 ..... ..... ..... ..... ...... -lbz -100011 ..... ..... ..... ..... ...... -lbzu -011111 ..... ..... ..... 00011 10111/ -lbzux -011111 ..... ..... ..... 00010 10111/ -lbzx -110010 ..... ..... ..... ..... ...... -lfd -110011 ..... ..... ..... ..... ...... -lfdu -011111 ..... ..... ..... 10011 10111/ -lfdux -011111 ..... ..... ..... 10010 10111/ -lfdx -110000 ..... ..... ..... ..... ...... -lfs -110001 ..... ..... ..... ..... ...... -lfsu -011111 ..... ..... ..... 10001 10111/ -lfsux -011111 ..... ..... ..... 10000 10111/ -lfsx -101010 ..... ..... ..... ..... ...... -lha -101011 ..... ..... ..... ..... ...... -lhau -011111 ..... ..... ..... 01011 10111/ -lhaux -011111 ..... ..... ..... 01010 10111/ -lhax -011111 ..... ..... ..... 11000 10110/ -lhbrx -101000 ..... ..... ..... ..... ...... -lhz -101001 ..... ..... ..... ..... ...... -lhzu -011111 ..... ..... ..... 01001 10111/ -lhzux -011111 ..... ..... ..... 01000 10111/ -lhzx -101110 ..... ..... ..... ..... ...... -lmw -011111 ..... ..... ..... 10010 10101/ -lswi -011111 ..... ..... ..... 10000 10101/ -lswx -011111 ..... ..... ..... 10000 10110/ -lwbrx -100000 ..... ..... ..... ..... ...... -lwz -100001 ..... ..... ..... ..... ...... -lwzu -011111 ..... ..... ..... 00001 10111/ -lwzux -011111 ..... ..... ..... 00000 10111/ -lwzx -010011 ...// ...// ///// 00000 00000/ -mcrf -111111 ...// ...// ///// 00010 00000/ -mcrfs -011111 ..... 0//// ///// 00000 10011/ -mfcr -111111 ..... 00000 ///// 10010 00111. -mffs[.] -011111 ..... ///// ///// 00010 10011/ -mfmsr -011111 ..... ..... ..... 01010 10011/ -mfspr -011111 ..... 0.... ..../ 00100 10000/ -mtcrf -111111 ..... ///// ///// 00010 00110. -mtfsb0[.] -111111 ..... ///// ///// 00001 00110. -mtfsb1[.] -111111 ..... ..... ..... 10110 00111. -mtfsf[.] -111111 ...// ////. ..../ 00100 00110. -mtfsfi[.] -011111 ..... ////. ///// 00100 10010/ -mtmsr -011111 ..... ..... ..... 01110 10011/ -mtspr -000111 ..... ..... ..... ..... ...... -mulli -011111 ..... ..... ..... .0111 01011. -mullw[o][.] -011111 ..... ..... ..... 01110 11100. -nand[.] -011111 ..... ..... ///// .0011 01000. -neg[o][.] -011111 ..... ..... ..... 00011 11100. -nor[.] -011111 ..... ..... ..... 01101 11100. -or[.] -011111 ..... ..... ..... 01100 11100. -orc[.] -011000 ..... ..... ..... ..... ...... -ori -011001 ..... ..... ..... ..... ...... -oris -010100 ..... ..... ..... ..... ...... -rlwimi[.] -010101 ..... ..... ..... ..... ...... -rlwinm[.] -010111 ..... ..... ..... ..... ...... -rlwnm[.] -011111 ..... ..... ..... 00000 11000. -slw[.] -011111 ..... ..... ..... 11000 11000. -sraw[.] -011111 ..... ..... ..... 11001 11000. -srawi[.] -011111 ..... ..... ..... 10000 11000. -srw[.] -100110 ..... ..... ..... ..... ...... -stb -100111 ..... ..... ..... ..... ...... -stbu -011111 ..... ..... ..... 00111 10111/ -stbux -011111 ..... ..... ..... 00110 10111/ -stbx -110110 ..... ..... ..... ..... ...... -stfd -110111 ..... ..... ..... ..... ...... -stfdu -011111 ..... ..... ..... 10111 10111/ -stfdux -011111 ..... ..... ..... 10110 10111/ -stfdx -110100 ..... ..... ..... ..... ...... -stfs -110101 ..... ..... ..... ..... ...... -stfsu -011111 ..... ..... ..... 10101 10111/ -stfsux -011111 ..... ..... ..... 10100 10111/ -stfsx -101100 ..... ..... ..... ..... ...... -sth -011111 ..... ..... ..... 11100 10110/ -sthbrx -101101 ..... ..... ..... ..... ...... -sthu -011111 ..... ..... ..... 01101 10111/ -sthux -011111 ..... ..... ..... 01100 10111/ -sthx -101111 ..... ..... ..... ..... ...... -stmw -011111 ..... ..... ..... 10110 10101/ -stswi -011111 ..... ..... ..... 10100 10101/ -stswx -100100 ..... ..... ..... ..... ...... -stw -011111 ..... ..... ..... 10100 10110/ -stwbrx -100101 ..... ..... ..... ..... ...... -stwu -011111 ..... ..... ..... 00101 10111/ -stwux -011111 ..... ..... ..... 00100 10111/ -stwx -011111 ..... ..... ..... .0000 01000. -subfc[o][.] -011111 ..... ..... ..... .0100 01000. -subfe[o][.] -001000 ..... ..... ..... ..... ...... -subfic -011111 ..... ..... ///// .0111 01000. -subfme[o][.] -011111 ..... ..... ///// .0110 01000. -subfze[o][.] -011111 ///.. ///// ///// 10010 10110/ -sync -011111 ..... /.... ..... 01001 10010/ -tlbie -011111 ..... ..... ..... 00000 00100/ -tw -000011 ..... ..... ..... ..... ...... -twi -011111 ..... ..... ..... 01001 11100. -xor[.] -011010 ..... ..... ..... ..... ...... -xori -011011 ..... ..... ..... ..... ...... -xoris diff --git a/src/instruction/ppc64_decode_test.cpp b/src/instruction/ppc64_decode_test.cpp deleted file mode 100644 index 0e553c038..000000000 --- a/src/instruction/ppc64_decode_test.cpp +++ /dev/null @@ -1,120 +0,0 @@ -#include "CodeSource.h" -#include "CodeObject.h" -#include "CFG.h" -#include "Instruction.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "Absloc.h" -#include "AbslocInterface.h" -#include "Operation_impl.h" -using namespace std; -using namespace Dyninst; -using namespace Dyninst::ParseAPI; -using namespace Dyninst::InstructionAPI; - -int main(int argc, char **argv) { - - FILE *f1, *f2, *f3, *f4; - if(argc != 4) { - printf("format: test [hexcode_FILE] [opcode_FILE] [binary_FILE] [output_FILE]"); - fflush(stdout); - return 0; - } - else { - f1 = fopen(argv[1], "r"); - f2 = fopen(argv[2], "r"); - f3 = fopen(argv[3], "r"); - } - - f4 = fopen("test_result.txt", "w"); - - char number[20], buffer[100], name[20], binary[100]; - uint8_t hexnum[4]; - uint32_t hex, temp; - int third_level_count = 0, count = 0, total = 0; - int opcode_n; - while(fscanf(f1, "%x", &temp) != EOF) { - hex = temp; - if(!fscanf(f2, "%s", name)) { - printf("error in name file\n"); - return 0; - } - - //skip the name - if(!fgets(binary, 100, f3)) { - printf("error in binary file\n"); - return 0; - } - if(!fgets(buffer, 100, f3)) { - printf("error in binary file\n"); - return 0; - } - - opcode_n = 0; - for(int i = 0; i < 6; i++) { - opcode_n *= 2; - //printf("%c %d\n", binary[i], opcode_n); - opcode_n += binary[i] - '0'; - } - - for(char *c = name; *c != '\0'; c++) { - if(*c == '[' || *c == '.') { - *c = '\0'; - break; - } - } - hexnum[0] = temp % 256; - temp /= 256; - hexnum[1] = temp % 256; - temp /= 256; - hexnum[2] = temp % 256; - temp /= 256; - hexnum[3] = temp % 256; - temp /= 256; - // Construct an instruction decoder for power instruction - InstructionDecoder dec((void*)hexnum, sizeof(hexnum) , Arch_ppc64); - // Decode one instruction - Instruction insn = dec.decode(); - // Print the instruction - char decoded[200]; - strcpy(decoded, insn.format().c_str()); - - for(char *c = decoded; *c != '\0'; c++) { - if(*c == ' ' || *c == '.') { - *c = '\0'; - break; - } - } - - total++; - int type = 0; - //printf("%s\n", decoded); - if(strcmp(decoded, name) != 0) { - //printf("%s not implemented (correctly), output is: %s\n", name, decoded); - fprintf(f4, "%x ", hex); - fprintf(f4, "%13s %13s opcode:%2d %s", name, decoded, opcode_n, binary); - - if(binary[11] != '.') - type = 1; - - for(int i = 13; i < 18; i++) { - if(binary[i] != '0' && binary[i] != '1') { - type = 1; - break; - } - } - if(type == 0){ - third_level_count++; - fprintf(f4, "type: third level opcode\n"); - } - else - fprintf(f4, "\n"); - - count++; - } - - } - printf("total %d tested, %d not implemented, third level: %d, detailed result in test_result.txt\n", total, count, third_level_count); - fprintf(f4, "total %d tested, %d not implemented, third level: %d\n", total, count, third_level_count); - return 0; -} diff --git a/src/instruction/test_instruction_bind_eval.C b/src/instruction/test_instruction_bind_eval.C deleted file mode 100644 index 9ed3d874c..000000000 --- a/src/instruction/test_instruction_bind_eval.C +++ /dev/null @@ -1,146 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Architecture.h" -#include "Expression.h" -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "registers/x86_64_regs.h" -#include "registers/x86_regs.h" -#include "Result.h" -#include "test_lib.h" - -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class test_instruction_bind_eval_Mutator : public InstructionMutator { - test_results_t run(Dyninst::Architecture); - -public: - test_instruction_bind_eval_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* test_instruction_bind_eval_factory() { - return new test_instruction_bind_eval_Mutator(); -} - -namespace { - constexpr auto num_tests = 1; - - std::array buffer = { - 0xFF, 0x94, 0xC1, 0xEF, 0xBE, 0xAD, 0xDE // call [8*EAX + ECX + 0xDEADBEEF] - }; -} - -test_results_t test_instruction_bind_eval_Mutator::executeTest() { - auto ret_val = PASSED; - { - logerror("**** Running x86 ********\n"); - const auto status = this->run(Dyninst::Arch_x86); - if(status == FAILED) { - ret_val = FAILED; - } - } - { - logerror("**** Running x86_64 ********\n"); - const auto status = this->run(Dyninst::Arch_x86_64); - if(status == FAILED) { - ret_val = FAILED; - } - } - return ret_val; -} - -test_results_t test_instruction_bind_eval_Mutator::run(Dyninst::Architecture arch) { - InstructionDecoder d(buffer.data(), buffer.size(), arch); - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - const auto is_64 = (arch == Dyninst::Arch_x86_64); - RegisterAST ax(is_64 ? x86_64::rax : x86::eax); - RegisterAST cx(is_64 ? x86_64::rcx : x86::ecx); - - for(auto&& insn : decodedInsns) { - Expression::Ptr theCFT = insn.getControlFlowTarget(); - if(!theCFT) { - logerror("FAILED: no CFT found for '%s'\n", insn.format().c_str()); - return FAILED; - } - if(verifyCFT(theCFT, false, 0x1000, u32) == FAILED) { - return FAILED; - } - - if(!theCFT->bind(&ax, Result(u32, 3))) { - logerror("FAILED: bind of EAX failed (insn %s)\n", insn.format().c_str()); - return FAILED; - } - if(verifyCFT(theCFT, false, 0x1000, u32) == FAILED) { - return FAILED; - } - if(!theCFT->bind(&cx, Result(u32, 5))) { - logerror("FAILED: bind of ECX failed\n"); - return FAILED; - } - if(verifyCFT(theCFT, false, 0x1000, u32) == FAILED) { - return FAILED; - } - auto subExpressions = theCFT->getSubexpressions(); - if(subExpressions.size() != 1) { - logerror("FAILED: expected dereference with one child, got %d children\n", subExpressions.size()); - return FAILED; - } - Expression::Ptr memRef = subExpressions[0]; - if(!memRef) { - logerror("FAILED: memRef was not an expression\n"); - return FAILED; - } - using res_t = typename Result_type2type::type; - auto expected_value = static_cast(0xDEADBEEF + (0x03 * 0x08 + 0x05)); - if(verifyCFT(memRef, true, expected_value, u32) == FAILED) { - return FAILED; - } - } - return PASSED; -} diff --git a/src/instruction/test_instruction_farcall.C b/src/instruction/test_instruction_farcall.C deleted file mode 100644 index 2ebccab4a..000000000 --- a/src/instruction/test_instruction_farcall.C +++ /dev/null @@ -1,70 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "test_lib.h" - -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class test_instruction_farcall_Mutator : public InstructionMutator { -public: - test_instruction_farcall_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* test_instruction_farcall_factory() { - return new test_instruction_farcall_Mutator(); -} - -test_results_t test_instruction_farcall_Mutator::executeTest() { - constexpr auto num_tests = 1; - - // This form is only valid on 32-bit x86 - std::array buffer = { - 0x9A, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0xFE // CALL 0504030201, with FF/FE as fenceposts - }; - - InstructionDecoder d(buffer.data(), buffer.size(), Dyninst::Arch_x86); - - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode test %d\n", idx + 1); - return FAILED; - } - } - return PASSED; -} diff --git a/src/instruction/test_instruction_read_write.C b/src/instruction/test_instruction_read_write.C deleted file mode 100644 index 440eadc4f..000000000 --- a/src/instruction/test_instruction_read_write.C +++ /dev/null @@ -1,254 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "Instruction.h" -#include "instruction_comp.h" -#include "InstructionDecoder.h" -#include "Register.h" -#include "registers/x86_64_regs.h" -#include "registers/x86_regs.h" -#include "test_lib.h" - -#include -#include -#include -#include - -using namespace Dyninst; -using namespace InstructionAPI; - -class test_instruction_read_write_Mutator : public InstructionMutator { - test_results_t run(Dyninst::Architecture); - test_results_t run64_only(); - -public: - test_instruction_read_write_Mutator() {} - - virtual test_results_t executeTest() override; -}; - -extern "C" DLLEXPORT TestMutator* test_instruction_read_write_factory() { - return new test_instruction_read_write_Mutator(); -} - -test_results_t test_instruction_read_write_Mutator::executeTest() { - auto ret_val = PASSED; - { - logerror("**** Running x86 ********\n"); - const auto status = this->run(Dyninst::Arch_x86); - if(status == FAILED) { - ret_val = FAILED; - } - } - { - logerror("**** Running x86_64 ********\n"); - auto status = this->run(Dyninst::Arch_x86_64); - if(status == FAILED) { - ret_val = FAILED; - } - status = this->run64_only(); - if(status == FAILED) { - ret_val = FAILED; - } - } - return ret_val; -} - -test_results_t test_instruction_read_write_Mutator::run(Dyninst::Architecture arch) { - constexpr auto num_tests = 11; - - // clang-format off - constexpr std::array buffer = { - 0x05, 0xef, 0xbe, 0xad, 0xde, // add eax, 0xdeadbeef - 0x50, // push eax - 0x74, 0x10, // jz +0x10(8) - 0xe8, 0x20, 0x00, 0x00, 0x00, // call +0x20(32) - 0xf8, // clc - 0x04, 0x30, // add al, 0x30(8) - 0xc7, 0x45, 0xfc, 0x01, 0x00, 0x00, 0x00, // movl 0x01, -0x4(ebp) - 0x88, 0x55, 0xcc, // movb dl, -0x34(ebp) - 0xf2, 0x0f, 0x12, 0xc0, // movddup xmm0, xmm0 - 0x66, 0x0f, 0x7c, 0xc9, // haddpd xmm1, xmm1 - 0x8d, 0x83, 0x18, 0xff, 0xff, 0xff // lea -0xe8(%ebx), %eax - }; - // clang-format on - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - - InstructionDecoder d(buffer.data(), buffer.size(), arch); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode x86 test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - auto create = [](MachRegister reg) { - return boost::make_shared(reg); - }; - - const auto is_64 = (arch == Dyninst::Arch_x86_64); - - RegisterAST::Ptr eax = create(is_64 ? x86_64::eax : x86::eax); - RegisterAST::Ptr ebx = create(is_64 ? x86_64::rbx : x86::ebx); - RegisterAST::Ptr af = create(is_64 ? x86_64::af : x86::af); - RegisterAST::Ptr zf = create(is_64 ? x86_64::zf : x86::zf); - RegisterAST::Ptr of = create(is_64 ? x86_64::of : x86::of); - RegisterAST::Ptr pf = create(is_64 ? x86_64::pf : x86::pf); - RegisterAST::Ptr sf = create(is_64 ? x86_64::sf : x86::sf); - RegisterAST::Ptr cf = create(is_64 ? x86_64::cf : x86::cf); - RegisterAST::Ptr al = create(is_64 ? x86_64::al : x86::al); - RegisterAST::Ptr bp = create(is_64 ? x86_64::rbp : x86::ebp); - RegisterAST::Ptr dl = create(is_64 ? x86_64::dl : x86::dl); - RegisterAST::Ptr xmm0 = create(is_64 ? x86_64::xmm0 : x86::xmm0); - RegisterAST::Ptr xmm1 = create(is_64 ? x86_64::xmm1 : x86::xmm1); - - RegisterAST::Ptr sp = create(MachRegister::getStackPointer(arch)); - RegisterAST::Ptr ip = create(MachRegister::getPC(arch)); - - RegisterAST::Ptr rax = create(x86_64::rax); - - std::vector expectedRead, expectedWritten; - - // add eax, 0xdeadbeef - expectedRead.push_back({eax}); - expectedWritten.push_back({eax, af, zf, of, pf, sf, cf}); - - // push eax - expectedRead.push_back({sp, (is_64 ? rax : eax)}); - expectedWritten.push_back({sp}); - - // jz +0x10(8) - expectedRead.push_back({zf, sf, cf, pf, of, ip}); - expectedWritten.push_back({ip}); - - // call +0x20(32) - expectedRead.push_back({sp, ip}); - expectedWritten.push_back({sp, ip}); - - // clc - expectedRead.push_back({}); - expectedWritten.push_back({cf}); - - // add al, 0x30(8) - expectedRead.push_back({al}); - expectedWritten.push_back({al, zf, cf, sf, of, pf, af}); - - // movl 0x01, -0x4(ebp) - expectedRead.push_back({bp}); - expectedWritten.push_back({}); - - // movb dl, -0x34(ebp) - expectedRead.push_back({bp, dl}); - expectedWritten.push_back({}); - - // movddup xmm0, xmm0 - expectedRead.push_back({xmm0}); - expectedWritten.push_back({xmm0}); - - // haddpd xmm1, xmm1 - expectedRead.push_back({xmm1}); - expectedWritten.push_back({xmm1}); - - // lea -0xe8(%ebx), %eax - expectedRead.push_back({ebx}); - expectedWritten.push_back({eax}); - - if(expectedRead.size() != expectedWritten.size()) { - logerror("FATAL: expectedRead.size() != expectedWritten.size()"); - return FAILED; - } - - if(expectedRead.size() != decodedInsns.size()) { - logerror("FATAL: expectedRead.size() != decodedInsns.size()"); - return FAILED; - } - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - return retVal; -} - -test_results_t test_instruction_read_write_Mutator::run64_only() { - constexpr auto arch = Dyninst::Arch_x86_64; - constexpr auto num_tests = 1; - - // clang-format off - constexpr std::array buffer = { - 0x44, 0x89, 0x45, 0xc4 // mov dword ptr [rbp - 0x3c], r8d - }; - // clang-format on - - std::vector decodedInsns; - decodedInsns.reserve(num_tests); - - InstructionDecoder d(buffer.data(), buffer.size(), arch); - for(int idx = 0; idx < num_tests; idx++) { - Instruction insn = d.decode(); - if(!insn.isValid()) { - logerror("Failed to decode x86_64 test %d\n", idx + 1); - return FAILED; - } - decodedInsns.push_back(insn); - } - - RegisterAST::Ptr r8 = boost::make_shared(x86_64::r8d); - RegisterAST::Ptr rbp = boost::make_shared(x86_64::rbp); - - std::vector expectedRead, expectedWritten; - - expectedRead.push_back({rbp, r8}); - expectedWritten.push_back({}); - - test_results_t retVal = PASSED; - for(auto&& x : boost::combine(decodedInsns, expectedRead, expectedWritten)) { - auto insn = x.get<0>(); - auto read = x.get<1>(); - auto written = x.get<2>(); - - auto status = verify_read_write_sets(insn, read, written); - if(status == FAILED) { - retVal = FAILED; - } - } - return retVal; -} diff --git a/src/specification/spec-grouped.pl b/src/specification/spec-grouped.pl index 23e995b72..429200ab8 100644 --- a/src/specification/spec-grouped.pl +++ b/src/specification/spec-grouped.pl @@ -2130,39 +2130,6 @@ member(Compiler, ['g++', 'icpc']). % instructionAPI tests -test('test_instruction_read_write', 'test_instruction_read_write', none). -test_description('test_instruction_read_write', 'Tests the read & write sets of instructions.'). -test_platform('test_instruction_read_write', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('x86_64', _, _, Platform); - platform('aarch64', _, _, Platform). -mutator('test_instruction_read_write', ['test_instruction_read_write.C']). -test_runmode('test_instruction_read_write', 'disk'). -test_start_state('test_instruction_read_write', 'stopped'). -tests_module('test_instruction_read_write', 'instruction'). - -test('test_instruction_farcall', 'test_instruction_farcall', none). -test_description('test_instruction_farcall', 'Tests decoding of far call instructions.'). -test_platform('test_instruction_farcall', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('test_instruction_farcall', ['test_instruction_farcall.C']). -test_runmode('test_instruction_farcall', 'disk'). -test_start_state('test_instruction_farcall', 'stopped'). -tests_module('test_instruction_farcall', 'instruction'). - -test('test_instruction_bind_eval', 'test_instruction_bind_eval', none). -test_description('test_instruction_bind_eval', 'Tests bind and evaluation mechanism.'). -test_platform('test_instruction_bind_eval', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('test_instruction_bind_eval', ['test_instruction_bind_eval.C']). -test_runmode('test_instruction_bind_eval', 'disk'). -test_start_state('test_instruction_bind_eval', 'stopped'). -tests_module('test_instruction_bind_eval', 'instruction'). test('test_instruction_profile', 'test_instruction_profile', none). test_description('test_instruction_profile', 'Collect profiling data from decoding 1M bytes of random memory.'). @@ -2177,118 +2144,6 @@ tests_module('test_instruction_profile', 'instruction'). mutator_requires_libs('test_instruction_profile', ['symtabAPI']). -test('power_decode', 'power_decode', none). -test_description('power_decode', 'Tests the read & write sets of POWER instructions.'). -test_platform('power_decode', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('power_decode', ['power_decode.C']). -test_runmode('power_decode', 'disk'). -test_start_state('power_decode', 'stopped'). -tests_module('power_decode', 'instruction'). - -test('aarch64_decode', 'aarch64_decode', none). -test_description('aarch64_decode', 'Tests the read & write sets of AARCH64 instructions.'). -test_platform('aarch64_decode', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('aarch64', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('aarch64_decode', ['aarch64_decode.C']). -test_runmode('aarch64_decode', 'disk'). -test_start_state('aarch64_decode', 'stopped'). -tests_module('aarch64_decode', 'instruction'). - -test('aarch64_cft', 'aarch64_cft', none). -test_description('aarch64_cft', 'Tests the read & write sets of AARCH64 instructions.'). -test_platform('aarch64_cft', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('aarch64', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('aarch64_cft', ['aarch64_cft.C']). -test_runmode('aarch64_cft', 'disk'). -test_start_state('aarch64_cft', 'stopped'). -tests_module('aarch64_cft', 'instruction'). - -test('aarch64_decode_ldst', 'aarch64_decode_ldst', none). -test_description('aarch64_decode_ldst', 'Tests the read & write sets of AARCH64 load/store instructions.'). -test_platform('aarch64_decode_ldst', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('aarch64', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('aarch64_decode_ldst', ['aarch64_decode_ldst.C']). -test_runmode('aarch64_decode_ldst', 'disk'). -test_start_state('aarch64_decode_ldst', 'stopped'). -tests_module('aarch64_decode_ldst', 'instruction'). - -test('aarch64_simd', 'aarch64_simd', none). -test_description('aarch64_simd', 'Tests the AARCH64 SIMD instructions.'). -test_platform('aarch64_simd', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('aarch64', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('aarch64_simd', ['aarch64_simd.C']). -test_runmode('aarch64_simd', 'disk'). -test_start_state('aarch64_simd', 'stopped'). -tests_module('aarch64_simd', 'instruction'). - -test('power_cft', 'power_cft', none). -test_description('power_cft', 'Tests the control flow targets of POWER instructions.'). -test_platform('power_cft', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('power32', _, _, Platform); - platform('power64', _, _, Platform); - platform('powerpc', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('power_cft', ['power_cft.C']). -test_runmode('power_cft', 'disk'). -test_start_state('power_cft', 'stopped'). -tests_module('power_cft', 'instruction'). - -test('fucompp', 'fucompp', none). -test_description('fucompp', 'Tests the fucompp instruction'). -test_platform('fucompp', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('fucompp', ['fucompp.C']). -test_runmode('fucompp', 'createProcess'). -test_start_state('fucompp', 'stopped'). -tests_module('fucompp', 'instruction'). - - -test('mov_size_details', 'mov_size_details', none). -test_description('mov_size_details', 'Tests the sizes of mov AST elements.'). -test_platform('mov_size_details', Platform) :- - platform(Platform), - platform('i386', _, _, Platform); - platform('x86_64', _, _, Platform). -mutator('mov_size_details', ['mov_size_details.C']). -test_runmode('mov_size_details', 'createProcess'). -test_start_state('mov_size_details', 'stopped'). -tests_module('mov_size_details', 'instruction'). - - % ProcessControlAPI Tests pcPlatforms(P) :- platform(_, 'linux', _, P). pcPlatforms(P) :- platform(_, 'windows', _, P). diff --git a/x86_64-unknown-linux2.4/cmake-mutators.txt b/x86_64-unknown-linux2.4/cmake-mutators.txt index 07c7fe258..c1a174e5b 100644 --- a/x86_64-unknown-linux2.4/cmake-mutators.txt +++ b/x86_64-unknown-linux2.4/cmake-mutators.txt @@ -263,33 +263,11 @@ set (dyninst_OBJS_ALL_MUTATORS include_directories ("../src/instruction") set (instruction_MUTATORS - test_instruction_read_write - test_instruction_farcall - test_instruction_bind_eval test_instruction_profile - power_decode - aarch64_decode - aarch64_cft - aarch64_decode_ldst - aarch64_simd - power_cft - fucompp - mov_size_details ) set (instruction_OBJS_ALL_MUTATORS - test_instruction_read_write.o - test_instruction_farcall.o - test_instruction_bind_eval.o test_instruction_profile.o - power_decode.o - aarch64_decode.o - aarch64_cft.o - aarch64_decode_ldst.o - aarch64_simd.o - power_cft.o - fucompp.o - mov_size_details.o ) @@ -321,14 +299,8 @@ set (symtab_OBJS_ALL_MUTATORS ) set (MUTATOR_NAME_LIST - aarch64_cft - aarch64_decode - aarch64_decode_ldst - aarch64_simd amd64_7_arg_call - fucompp init_fini_callback - mov_size_details pc_addlibrary pc_breakpoint pc_detach @@ -347,8 +319,6 @@ set (MUTATOR_NAME_LIST pc_thread pc_thread_cont pc_tls - power_cft - power_decode snip_change_shlib_var snip_ref_shlib_var test1_1 @@ -435,10 +405,7 @@ set (MUTATOR_NAME_LIST test_fork_7 test_fork_8 test_fork_9 - test_instruction_bind_eval - test_instruction_farcall test_instruction_profile - test_instruction_read_write test_line_info test_local_var_locations test_local_var_lookup @@ -465,14 +432,8 @@ set (MUTATOR_NAME_LIST ) set (MUTATOR_MODULE_LIB_LIST - testinstruction - testinstruction - testinstruction - testinstruction testdyninst - testinstruction testdyninst - testinstruction testproccontrol testproccontrol testproccontrol @@ -491,8 +452,6 @@ set (MUTATOR_MODULE_LIB_LIST testproccontrol testproccontrol testproccontrol - testinstruction - testinstruction testdyninst testdyninst testdyninst @@ -580,9 +539,6 @@ set (MUTATOR_MODULE_LIB_LIST testdyninst testdyninst testinstruction - testinstruction - testinstruction - testinstruction testsymtab testsymtab testsymtab @@ -610,14 +566,8 @@ set (MUTATOR_MODULE_LIB_LIST set (SRC src) set (MUTATOR_SOURCE_LIST - ${SRC}/instruction/aarch64_cft.C - ${SRC}/instruction/aarch64_decode.C - ${SRC}/instruction/aarch64_decode_ldst.C - ${SRC}/instruction/aarch64_simd.C ${SRC}/dyninst/amd64_7_arg_call.C - ${SRC}/instruction/fucompp.C ${SRC}/dyninst/init_fini_callback.C - ${SRC}/instruction/mov_size_details.C ${SRC}/proccontrol/pc_addlibrary.C ${SRC}/proccontrol/pc_breakpoint.C ${SRC}/proccontrol/pc_detach.C @@ -636,8 +586,6 @@ set (MUTATOR_SOURCE_LIST ${SRC}/proccontrol/pc_thread.C ${SRC}/proccontrol/pc_thread_cont.C ${SRC}/proccontrol/pc_tls.C - ${SRC}/instruction/power_cft.C - ${SRC}/instruction/power_decode.C ${SRC}/dyninst/snip_change_shlib_var.C ${SRC}/dyninst/snip_ref_shlib_var.C ${SRC}/dyninst/test1_1.C @@ -724,10 +672,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_fork_7.C ${SRC}/dyninst/test_fork_8.C ${SRC}/dyninst/test_fork_9.C - ${SRC}/instruction/test_instruction_bind_eval.C - ${SRC}/instruction/test_instruction_farcall.C ${SRC}/instruction/test_instruction_profile.C - ${SRC}/instruction/test_instruction_read_write.C ${SRC}/symtab/test_line_info.C ${SRC}/symtab/test_local_var_locations.C ${SRC}/symtab/test_local_var_lookup.C @@ -753,7 +698,7 @@ set (MUTATOR_SOURCE_LIST ${SRC}/dyninst/test_write_param.C ) -foreach (val RANGE 140) +foreach (val RANGE 129) list (GET MUTATOR_NAME_LIST ${val} lib) list (GET MUTATOR_SOURCE_LIST ${val} source) list (GET MUTATOR_MODULE_LIB_LIST ${val} comp_dep) diff --git a/x86_64-unknown-linux2.4/test_info_new.gen.C b/x86_64-unknown-linux2.4/test_info_new.gen.C index 3a9b87f5f..bf3a2fed0 100644 --- a/x86_64-unknown-linux2.4/test_info_new.gen.C +++ b/x86_64-unknown-linux2.4/test_info_new.gen.C @@ -13247,20 +13247,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: post, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: binary}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -13275,27 +13261,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "32", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -13303,48 +13268,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "32", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "32", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 32, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, DISK, TNone, PNone, local, local, post, @@ -13352,20 +13275,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test_pt_ls, mutator: test_pt_ls, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: post, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: binary}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: fucompp, mutator: fucompp, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, CREATE, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: mov_size_details, mutator: mov_size_details, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: createProcess}"); - fini_group(rg); rg = new RunGroup("", SELFSTART, CREATE, TNone, PNone, local, local, no_launch, @@ -13408,27 +13317,6 @@ void initialize_mutatees(std::vector &t) { "dyninst", "", "none", "64", "NONE"); add_test(rg, "{test: test2_4, mutator: test2_4, grouped: false, pic: none, start_state: selfstart, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: pre, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: useAttach}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_read_write, mutator: test_instruction_read_write, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_farcall, mutator: test_instruction_farcall, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: test_instruction_bind_eval, mutator: test_instruction_bind_eval, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("", STOPPED, DISK, TNone, PNone, local, local, no_launch, @@ -13436,48 +13324,6 @@ void initialize_mutatees(std::vector &t) { "instruction", "", "none", "64", "NONE"); add_test(rg, "{test: test_instruction_profile, mutator: test_instruction_profile, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_decode, mutator: power_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode, mutator: aarch64_decode, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_cft, mutator: aarch64_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_decode_ldst, mutator: aarch64_decode_ldst, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: aarch64_simd, mutator: aarch64_simd, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); - rg = new RunGroup("", - STOPPED, DISK, TNone, PNone, - local, local, no_launch, - DynamicLink, true, nonPIC, - "instruction", "", "none", "64", "NONE"); - add_test(rg, "{test: power_cft, mutator: power_cft, grouped: false, pic: none, start_state: stopped, format: dynamicMutatee, process_mode: None, abi: 64, thread_mode: None, mutateeruntime: no_launch, platmode: NONE, mutatee: none, mutatorstart: local, optimization: none, mutateestart: local, compiler: , run_mode: disk}"); - fini_group(rg); rg = new RunGroup("dyninst_group_test.stat_gcc_32_pic_none", STOPPED, DISK, TNone, PNone, local, local, post, diff --git a/x86_64-unknown-linux2.4/tuples.gz b/x86_64-unknown-linux2.4/tuples.gz index 191c6e8c2..d791c7ee8 100644 Binary files a/x86_64-unknown-linux2.4/tuples.gz and b/x86_64-unknown-linux2.4/tuples.gz differ