From 0a3fd151e3ab60586c59ad7ef7b2005d5a3b8dc6 Mon Sep 17 00:00:00 2001 From: Carl Love Date: Thu, 3 Oct 2013 21:43:10 +0000 Subject: [PATCH] Phase 4 support for IBM Power ISA 2.07 This patch adds testcases for the following instructions added in phase 4. The instructions are for doing various arithmetic, logic, and load/store VSX operations: xscvsxdsp xscvuxdsp xsaddsp xssubsp xsdivsp xsmaddasp xsmaddmsp xsmsubasp xsmsubmsp xsnmaddasp xsnmaddmsp xsnmsubasp xsnmsubmsp xsmulsp xssqrtsp xsresp xsrsqrtesp xsrsp xxlorc xxlnand xxleqv lxsiwzx lxsiwax lxsspx stxsiwx stxsspx Signed-off-by: Maynard Johnson VEX commit for the instruction support r2781 Bugzilla 325477 git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13611 --- .../ppc32/test_isa_2_07_part2.stdout.exp | 982 +++++++++++++++- none/tests/ppc64/test_isa_2_07_part2.c | 1041 +++++++++++++++-- .../ppc64/test_isa_2_07_part2.stdout.exp | 982 +++++++++++++++- 3 files changed, 2879 insertions(+), 126 deletions(-) diff --git a/none/tests/ppc32/test_isa_2_07_part2.stdout.exp b/none/tests/ppc32/test_isa_2_07_part2.stdout.exp index e9085ea970..6d06bf1d60 100644 --- a/none/tests/ppc32/test_isa_2_07_part2.stdout.exp +++ b/none/tests/ppc32/test_isa_2_07_part2.stdout.exp @@ -1,24 +1,676 @@ +Test VSX floating point instructions +#0: xsmaddasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsmaddasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmaddasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmaddasp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmaddasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmaddasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsmaddasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsmaddasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmaddasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsmaddasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f60000000 +#10: xsmaddasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#11: xsmaddasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#12: xsmaddasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#13: xsmaddasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsmaddasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsmaddasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmaddasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsmaddasp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f60000000 +#18: xsmaddasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmaddasp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsmaddasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#21: xsmaddasp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsmaddasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsmaddasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmaddasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsmaddasp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f60000000 +#26: xsmaddasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsmaddasp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmaddasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#29: xsmaddasp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsmaddasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsmaddasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmaddasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsmaddasp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f60000000 +#34: xsmaddasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#35: xsmaddasp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmaddasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsmaddasp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsmaddasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsmaddasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmaddasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#41: xsmaddasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmaddasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmaddasp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmaddasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmaddasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#46: xsmaddasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsmaddasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmaddasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsmaddasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsmaddasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsmaddasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsmaddasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsmaddasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsmaddasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsmaddasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsmaddasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmaddasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmaddasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmaddasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmaddasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmaddasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmaddasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmaddasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmaddmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsmaddmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmaddmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmaddmsp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmaddmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmaddmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsmaddmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmaddmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsmaddmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f60000000 +#10: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d00000000 +#11: xsmaddmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d00000000 +#13: xsmaddmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmaddmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmaddmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsmaddmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#18: xsmaddmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmaddmsp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsmaddmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0000000000000000 +#21: xsmaddmsp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsmaddmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmaddmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmaddmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsmaddmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#26: xsmaddmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmaddmsp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmaddmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmaddmsp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsmaddmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmaddmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmaddmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmaddmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f60000000 +#34: xsmaddmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmaddmsp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmaddmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsmaddmsp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmaddmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmaddmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmaddmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmaddmsp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmaddmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmaddmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmaddmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmaddmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmaddmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmaddmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmaddmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmaddmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmaddmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmaddmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmaddmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmaddmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmaddmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmaddmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmsubasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#1: xsmsubasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmsubasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmsubasp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmsubasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmsubasp 7ff0000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#6: xsmsubasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsmsubasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmsubasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsmsubasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f60000000 +#10: xsmsubasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#11: xsmsubasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#12: xsmsubasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#13: xsmsubasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsmsubasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsmsubasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmsubasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsmsubasp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f60000000 +#18: xsmsubasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmsubasp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsmsubasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#21: xsmsubasp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsmsubasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsmsubasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmsubasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsmsubasp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f60000000 +#26: xsmsubasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsmsubasp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmsubasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#29: xsmsubasp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsmsubasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsmsubasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmsubasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsmsubasp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f60000000 +#34: xsmsubasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#35: xsmsubasp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmsubasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsmsubasp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsmsubasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsmsubasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmsubasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsmsubasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmsubasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmsubasp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmsubasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmsubasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsmsubasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsmsubasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmsubasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsmsubasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsmsubasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsmsubasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsmsubasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsmsubasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsmsubasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsmsubasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsmsubasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmsubasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmsubasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmsubasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmsubasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmsubasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmsubasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmsubasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmsubmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmsubmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmsubmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmsubmsp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmsubmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmsubmsp 0123214569900000 fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmsubmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmsubmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmsubmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f60000000 +#10: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d00000000 +#11: xsmsubmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d00000000 +#13: xsmsubmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmsubmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmsubmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsmsubmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#18: xsmsubmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmsubmsp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmsubmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmsubmsp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsmsubmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmsubmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmsubmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsmsubmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#26: xsmsubmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsmsubmsp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmsubmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8000000000000000 +#29: xsmsubmsp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsmsubmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmsubmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmsubmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsmsubmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f60000000 +#34: xsmsubmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmsubmsp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmsubmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsmsubmsp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsmsubmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmsubmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsmsubmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmsubmsp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmsubmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmsubmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmsubmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmsubmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmsubmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmsubmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmsubmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmsubmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmsubmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmsubmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmsubmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmsubmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmsubmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmsubmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmulsp fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmulsp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsmulsp fff0000000000000 8000000000000000 = 7ff8000000000000 +#3: xsmulsp fff0000000000000 0000000000000000 = 7ff8000000000000 +#4: xsmulsp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsmulsp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmulsp fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmulsp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmulsp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmulsp c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#10: xsmulsp c0d0650f5a07b353 8000000000000000 = 0000000000000000 +#11: xsmulsp c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmulsp c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#13: xsmulsp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmulsp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmulsp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmulsp 8000000000000000 fff0000000000000 = 7ff8000000000000 +#17: xsmulsp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsmulsp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmulsp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmulsp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmulsp 8000000000000000 7ff0000000000000 = 7ff8000000000000 +#22: xsmulsp 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmulsp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmulsp 0000000000000000 fff0000000000000 = 7ff8000000000000 +#25: xsmulsp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsmulsp 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmulsp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmulsp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmulsp 0000000000000000 7ff0000000000000 = 7ff8000000000000 +#30: xsmulsp 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmulsp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmulsp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmulsp 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#34: xsmulsp 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmulsp 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmulsp 0123214569900000 404f000000000000 = 0000000000000000 +#37: xsmulsp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmulsp 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmulsp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmulsp 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmulsp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsmulsp 7ff0000000000000 8000000000000000 = 7ff8000000000000 +#43: xsmulsp 7ff0000000000000 0000000000000000 = 7ff8000000000000 +#44: xsmulsp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsmulsp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmulsp 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmulsp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmulsp fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmulsp fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmulsp fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmulsp fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmulsp fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmulsp fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmulsp fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmulsp fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmulsp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmulsp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmulsp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmulsp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmulsp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmulsp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmulsp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmulsp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsdivsp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsdivsp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsdivsp fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsdivsp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsdivsp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsdivsp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsdivsp fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsdivsp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsdivsp c0d0650f5a07b353 fff0000000000000 = 0000000000000000 +#9: xsdivsp c0d0650f5a07b353 c0d0650f5a07b353 = 3ff0000000000000 +#10: xsdivsp c0d0650f5a07b353 8000000000000000 = 7ff0000000000000 +#11: xsdivsp c0d0650f5a07b353 0000000000000000 = fff0000000000000 +#12: xsdivsp c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#13: xsdivsp c0d0650f5a07b353 7ff0000000000000 = 8000000000000000 +#14: xsdivsp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsdivsp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsdivsp 8000000000000000 fff0000000000000 = 0000000000000000 +#17: xsdivsp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsdivsp 8000000000000000 8000000000000000 = 7ff8000000000000 +#19: xsdivsp 8000000000000000 0000000000000000 = 7ff8000000000000 +#20: xsdivsp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsdivsp 8000000000000000 7ff0000000000000 = 8000000000000000 +#22: xsdivsp 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsdivsp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsdivsp 0000000000000000 fff0000000000000 = 8000000000000000 +#25: xsdivsp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsdivsp 0000000000000000 8000000000000000 = 7ff8000000000000 +#27: xsdivsp 0000000000000000 0000000000000000 = 7ff8000000000000 +#28: xsdivsp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsdivsp 0000000000000000 7ff0000000000000 = 0000000000000000 +#30: xsdivsp 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsdivsp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsdivsp 0123214569900000 fff0000000000000 = 8000000000000000 +#33: xsdivsp 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#34: xsdivsp 0123214569900000 8000000000000000 = fff0000000000000 +#35: xsdivsp 0123214569900000 0000000000000000 = 7ff0000000000000 +#36: xsdivsp 0123214569900000 404f000000000000 = 0000000000000000 +#37: xsdivsp 0123214569900000 7ff0000000000000 = 0000000000000000 +#38: xsdivsp 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsdivsp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsdivsp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsdivsp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsdivsp 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsdivsp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsdivsp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsdivsp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsdivsp 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsdivsp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsdivsp fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsdivsp fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsdivsp fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsdivsp fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsdivsp fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsdivsp fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsdivsp fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsdivsp fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsdivsp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsdivsp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsdivsp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsdivsp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsdivsp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsdivsp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsdivsp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsdivsp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmaddasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsnmaddasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmaddasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmaddasp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmaddasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmaddasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsnmaddasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsnmaddasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmaddasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsnmaddasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f60000000 +#10: xsnmaddasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#11: xsnmaddasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 0000000000000000 +#12: xsnmaddasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#13: xsnmaddasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsnmaddasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsnmaddasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmaddasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsnmaddasp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f60000000 +#18: xsnmaddasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmaddasp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsnmaddasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#21: xsnmaddasp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsnmaddasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsnmaddasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmaddasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsnmaddasp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f60000000 +#26: xsnmaddasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsnmaddasp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmaddasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#29: xsnmaddasp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsnmaddasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsnmaddasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmaddasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsnmaddasp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f60000000 +#34: xsnmaddasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 0000000000000000 +#35: xsnmaddasp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmaddasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsnmaddasp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsnmaddasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsnmaddasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmaddasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#41: xsnmaddasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmaddasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmaddasp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmaddasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmaddasp 7ff0000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#46: xsnmaddasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsnmaddasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmaddasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsnmaddasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsnmaddasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsnmaddasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsnmaddasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsnmaddasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsnmaddasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsnmaddasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsnmaddasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmaddasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmaddasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmaddasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmaddasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmaddasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmaddasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmaddasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsnmaddmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmaddmsp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmaddmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsnmaddmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f60000000 +#10: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d00000000 +#11: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 0000000000000000 +#12: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d00000000 +#13: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmaddmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsnmaddmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#18: xsnmaddmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmaddmsp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsnmaddmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsnmaddmsp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsnmaddmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsnmaddmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmaddmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsnmaddmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#26: xsnmaddmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsnmaddmsp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmaddmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8000000000000000 +#29: xsnmaddmsp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsnmaddmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsnmaddmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmaddmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsnmaddmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f60000000 +#34: xsnmaddmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 0000000000000000 +#35: xsnmaddmsp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmaddmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsnmaddmsp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsnmaddmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsnmaddmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xsnmaddmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmaddmsp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmaddmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = fff0000000000000 +#46: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsnmaddmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsnmaddmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsnmaddmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsnmaddmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsnmaddmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmaddmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmaddmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmaddmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmaddmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmsubasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#1: xsnmsubasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmsubasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmsubasp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmsubasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmsubasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#6: xsnmsubasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsnmsubasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmsubasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsnmsubasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f60000000 +#10: xsnmsubasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#11: xsnmsubasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 0000000000000000 +#12: xsnmsubasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#13: xsnmsubasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsnmsubasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsnmsubasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmsubasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsnmsubasp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f60000000 +#18: xsnmsubasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmsubasp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsnmsubasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#21: xsnmsubasp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsnmsubasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsnmsubasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmsubasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsnmsubasp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f60000000 +#26: xsnmsubasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsnmsubasp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmsubasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#29: xsnmsubasp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsnmsubasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsnmsubasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmsubasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsnmsubasp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f60000000 +#34: xsnmsubasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 0000000000000000 +#35: xsnmsubasp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmsubasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsnmsubasp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsnmsubasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsnmsubasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmsubasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsnmsubasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmsubasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmsubasp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmsubasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmsubasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsnmsubasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsnmsubasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmsubasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsnmsubasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsnmsubasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsnmsubasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsnmsubasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsnmsubasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsnmsubasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsnmsubasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsnmsubasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmsubasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmsubasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmsubasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmsubasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmsubasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmsubasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmsubasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = fff0000000000000 +#1: xsnmsubmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmsubmsp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmsubmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff0000000000000 +#6: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsnmsubmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f60000000 +#10: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d00000000 +#11: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 0000000000000000 +#12: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d00000000 +#13: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmsubmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsnmsubmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#18: xsnmsubmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmsubmsp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsnmsubmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0000000000000000 +#21: xsnmsubmsp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsnmsubmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsnmsubmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmsubmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsnmsubmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#26: xsnmsubmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsnmsubmsp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmsubmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsnmsubmsp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsnmsubmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsnmsubmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmsubmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsnmsubmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f60000000 +#34: xsnmsubmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 0000000000000000 +#35: xsnmsubmsp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmsubmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsnmsubmsp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsnmsubmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsnmsubmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsnmsubmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmsubmsp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmsubmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsnmsubmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsnmsubmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsnmsubmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsnmsubmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsnmsubmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmsubmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmsubmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmsubmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmsubmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + + Test VSX vector and scalar single argument instructions -#0: xscvdpspn conv(3fd8000000000000) = 3ec0000000000000 -#1: xscvdpspn conv(404f000000000000) = 4278000000000000 -#2: xscvdpspn conv(0018000000b77501) = 0000000000000000 -#3: xscvdpspn conv(7fe800000000051b) = 7f40000000000000 -#4: xscvdpspn conv(0123214569900000) = 0000000000000000 -#5: xscvdpspn conv(0000000000000000) = 0000000000000000 -#6: xscvdpspn conv(8000000000000000) = 8000000000000000 -#7: xscvdpspn conv(7ff0000000000000) = 7f80000000000000 -#8: xscvdpspn conv(fff0000000000000) = ff80000000000000 -#9: xscvdpspn conv(7ff7ffffffffffff) = 7fbfffff00000000 -#10: xscvdpspn conv(fff7ffffffffffff) = ffbfffff00000000 -#11: xscvdpspn conv(7ff8000000000000) = 7fc0000000000000 -#12: xscvdpspn conv(fff8000000000000) = ffc0000000000000 -#13: xscvdpspn conv(8008340000078000) = 8000000000000000 -#14: xscvdpspn conv(c0d0650f5a07b353) = c683287a00000000 -#15: xscvdpspn conv(41232585a9900000) = 49192c2d00000000 -#16: xscvdpspn conv(41382511a2000000) = 49c1288d00000000 -#17: xscvdpspn conv(40312ef5a9300000) = 418977ad00000000 -#18: xscvdpspn conv(40514bf5d2300000) = 428a5fae00000000 -#19: xscvdpspn conv(40976bf982440000) = 44bb5fcc00000000 +#0: xscvdpspn conv(3ec00000) = 3ec00000 +#1: xscvdpspn conv(42780000) = 42780000 +#2: xscvdpspn conv(00000000) = 00000000 +#3: xscvdpspn conv(7f800000) = 7f800000 +#4: xscvdpspn conv(00000000) = 00000000 +#5: xscvdpspn conv(00000000) = 00000000 +#6: xscvdpspn conv(80000000) = 80000000 +#7: xscvdpspn conv(7f800000) = 7f800000 +#8: xscvdpspn conv(ff800000) = ff800000 +#9: xscvdpspn conv(7fbfffff) = 7fbfffff +#10: xscvdpspn conv(ffbfffff) = ffbfffff +#11: xscvdpspn conv(7fc00000) = 7fc00000 +#12: xscvdpspn conv(ffc00000) = ffc00000 +#13: xscvdpspn conv(80000000) = 80000000 +#14: xscvdpspn conv(c683287b) = c683287b +#15: xscvdpspn conv(49192c2d) = 49192c2d +#16: xscvdpspn conv(49c1288d) = 49c1288d +#17: xscvdpspn conv(418977ad) = 418977ad +#18: xscvdpspn conv(428a5faf) = 428a5faf +#19: xscvdpspn conv(44bb5fcc) = 44bb5fcc #0: xscvspdpn conv(3ec00000) = 3fd8000000000000 #1: xscvspdpn conv(42780000) = 404f000000000000 @@ -41,4 +693,292 @@ Test VSX vector and scalar single argument instructions #18: xscvspdpn conv(428a5faf) = 40514bf5e0000000 #19: xscvspdpn conv(44bb5fcc) = 40976bf980000000 -Testcase PASSED +#0: xsresp 1/x(3fd8000000000000) ==> PASS) +#1: xsresp 1/x(404f000000000000) ==> PASS) +#2: xsresp 1/x(0018000000b77501) ==> PASS) +#3: xsresp 1/x(7fe800000000051b) ==> PASS) +#4: xsresp 1/x(0123214569900000) ==> PASS) +#5: xsresp 1/x(0000000000000000) ==> PASS) +#6: xsresp 1/x(8000000000000000) ==> PASS) +#7: xsresp 1/x(7ff0000000000000) ==> PASS) +#8: xsresp 1/x(fff0000000000000) ==> PASS) +#9: xsresp 1/x(7ff7ffffffffffff) ==> PASS) +#10: xsresp 1/x(fff7ffffffffffff) ==> PASS) +#11: xsresp 1/x(7ff8000000000000) ==> PASS) +#12: xsresp 1/x(fff8000000000000) ==> PASS) +#13: xsresp 1/x(8008340000078000) ==> PASS) +#14: xsresp 1/x(c0d0650f5a07b353) ==> PASS) +#15: xsresp 1/x(41232585a9900000) ==> PASS) +#16: xsresp 1/x(41382511a2000000) ==> PASS) +#17: xsresp 1/x(40312ef5a9300000) ==> PASS) +#18: xsresp 1/x(40514bf5d2300000) ==> PASS) +#19: xsresp 1/x(40976bf982440000) ==> PASS) + +#0: xsrsp round(3fd8000000000000) = 3fd8000000000000 +#1: xsrsp round(404f000000000000) = 404f000000000000 +#2: xsrsp round(0018000000b77501) = 0000000000000000 +#3: xsrsp round(7fe800000000051b) = 7ff0000000000000 +#4: xsrsp round(0123214569900000) = 0000000000000000 +#5: xsrsp round(0000000000000000) = 0000000000000000 +#6: xsrsp round(8000000000000000) = 8000000000000000 +#7: xsrsp round(7ff0000000000000) = 7ff0000000000000 +#8: xsrsp round(fff0000000000000) = fff0000000000000 +#9: xsrsp round(7ff7ffffffffffff) = 7fffffffe0000000 +#10: xsrsp round(fff7ffffffffffff) = ffffffffe0000000 +#11: xsrsp round(7ff8000000000000) = 7ff8000000000000 +#12: xsrsp round(fff8000000000000) = fff8000000000000 +#13: xsrsp round(8008340000078000) = 8000000000000000 +#14: xsrsp round(c0d0650f5a07b353) = c0d0650f60000000 +#15: xsrsp round(41232585a9900000) = 41232585a0000000 +#16: xsrsp round(41382511a2000000) = 41382511a0000000 +#17: xsrsp round(40312ef5a9300000) = 40312ef5a0000000 +#18: xsrsp round(40514bf5d2300000) = 40514bf5e0000000 +#19: xsrsp round(40976bf982440000) = 40976bf980000000 + +#0: xsrsqrtesp 1/sqrt(3fd8000000000000) ==> PASS) +#1: xsrsqrtesp 1/sqrt(404f000000000000) ==> PASS) +#2: xsrsqrtesp 1/sqrt(0018000000b77501) ==> PASS) +#3: xsrsqrtesp 1/sqrt(7fe800000000051b) ==> PASS) +#4: xsrsqrtesp 1/sqrt(0123214569900000) ==> PASS) +#5: xsrsqrtesp 1/sqrt(0000000000000000) ==> PASS) +#6: xsrsqrtesp 1/sqrt(8000000000000000) ==> PASS) +#7: xsrsqrtesp 1/sqrt(7ff0000000000000) ==> PASS) +#8: xsrsqrtesp 1/sqrt(fff0000000000000) ==> PASS) +#9: xsrsqrtesp 1/sqrt(7ff7ffffffffffff) ==> PASS) +#10: xsrsqrtesp 1/sqrt(fff7ffffffffffff) ==> PASS) +#11: xsrsqrtesp 1/sqrt(7ff8000000000000) ==> PASS) +#12: xsrsqrtesp 1/sqrt(fff8000000000000) ==> PASS) +#13: xsrsqrtesp 1/sqrt(8008340000078000) ==> PASS) +#14: xsrsqrtesp 1/sqrt(c0d0650f5a07b353) ==> PASS) +#15: xsrsqrtesp 1/sqrt(41232585a9900000) ==> PASS) +#16: xsrsqrtesp 1/sqrt(41382511a2000000) ==> PASS) +#17: xsrsqrtesp 1/sqrt(40312ef5a9300000) ==> PASS) +#18: xsrsqrtesp 1/sqrt(40514bf5d2300000) ==> PASS) +#19: xsrsqrtesp 1/sqrt(40976bf982440000) ==> PASS) + +#0: xssqrtsp sqrt(3fd8000000000000) = 3fe3988e20000000 +#1: xssqrtsp sqrt(404f000000000000) = 401f7efbe0000000 +#2: xssqrtsp sqrt(0018000000b77501) = 0000000000000000 +#3: xssqrtsp sqrt(7fe800000000051b) = 7ff0000000000000 +#4: xssqrtsp sqrt(0123214569900000) = 0000000000000000 +#5: xssqrtsp sqrt(0000000000000000) = 0000000000000000 +#6: xssqrtsp sqrt(8000000000000000) = 8000000000000000 +#7: xssqrtsp sqrt(7ff0000000000000) = 7ff0000000000000 +#8: xssqrtsp sqrt(fff0000000000000) = 7ff8000000000000 +#9: xssqrtsp sqrt(7ff7ffffffffffff) = 7fffffffe0000000 +#10: xssqrtsp sqrt(fff7ffffffffffff) = ffffffffe0000000 +#11: xssqrtsp sqrt(7ff8000000000000) = 7ff8000000000000 +#12: xssqrtsp sqrt(fff8000000000000) = fff8000000000000 +#13: xssqrtsp sqrt(8008340000078000) = 7ff8000000000000 +#14: xssqrtsp sqrt(c0d0650f5a07b353) = 7ff8000000000000 +#15: xssqrtsp sqrt(41232585a9900000) = 4088c0a920000000 +#16: xssqrtsp sqrt(41382511a2000000) = 4093a7aa60000000 +#17: xssqrtsp sqrt(40312ef5a9300000) = 401094c720000000 +#18: xssqrtsp sqrt(40514bf5d2300000) = 4020a2bf40000000 +#19: xssqrtsp sqrt(40976bf982440000) = 40435bc160000000 + +Test VSX logic instructions +#0: xxleqv (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> ffffffff ffffffff ffffffff ffffffff +#1: xxlorc (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> ffffffff ffffffff ffffffff ffffffff +#2: xxlnand (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> 7ffffffe 76543210 ffeeddcc 8baa9988 + +Test VSX scalar integer conversion instructions +#0: xscvsxdsp 80000001 => c3e0000000000000 +#1: xscvsxdsp 89abcdef => c3dd950c80000000 +#2: xscvsxdsp 00112233 => 4331223380000000 +#3: xscvsxdsp 74556677 => 43dd1559a0000000 +#4: xscvsxdsp 00001abb => 42babb89a0000000 +#5: xscvsxdsp 00000001 => 41f89abce0000000 +#6: xscvsxdsp 31929394 => 43c8c949c0000000 +#7: xscvsxdsp a1a2a3a4 => c3d7975720000000 + +#0: xscvuxdsp 80000001 => 43e0000000000000 +#1: xscvuxdsp 89abcdef => 43e13579c0000000 +#2: xscvuxdsp 00112233 => 4331223380000000 +#3: xscvuxdsp 74556677 => 43dd1559a0000000 +#4: xscvuxdsp 00001abb => 42babb89a0000000 +#5: xscvuxdsp 00000001 => 41f89abce0000000 +#6: xscvuxdsp 31929394 => 43c8c949c0000000 +#7: xscvuxdsp a1a2a3a4 => 43e4345480000000 + + +Test VSX load/store dp to sp instructions +stxsspx: 3fd8000000000000 ==> 3ec00000 +stxsspx: 7ff0000000000000 ==> 7f800000 +stxsspx: 8000000000000000 ==> 80000000 +stxsspx: 7ff7ffffe0000000 ==> 7fbfffff +stxsspx: fff8000000000000 ==> ffc00000 +stxsspx: 41232585a0000000 ==> 49192c2d +stxsspx: 40514bf5e0000000 ==> 428a5faf + + +stxsiwx: 80000001 ==> 80000001 +stxsiwx: 89abcdef ==> 89abcdef +stxsiwx: 00112233 ==> 00112233 +stxsiwx: 74556677 ==> 74556677 +stxsiwx: 00001abb ==> 00001abb +stxsiwx: 00000001 ==> 00000001 +stxsiwx: 31929394 ==> 31929394 +stxsiwx: a1a2a3a4 ==> a1a2a3a4 + + +lxsiwax: 80000001 ==> ffffffff80000001 +lxsiwax: 89abcdef ==> ffffffff89abcdef +lxsiwax: 00112233 ==> 0000000000112233 +lxsiwax: 74556677 ==> 0000000074556677 +lxsiwax: 00001abb ==> 0000000000001abb +lxsiwax: 00000001 ==> 0000000000000001 +lxsiwax: 31929394 ==> 0000000031929394 +lxsiwax: a1a2a3a4 ==> ffffffffa1a2a3a4 + + +lxsiwzx: 89abcdef ==> 00000000abcdef00 +lxsiwzx: 00112233 ==> 0000000011223374 +lxsiwzx: 74556677 ==> 0000000055667700 +lxsiwzx: 00001abb ==> 00000000001abb00 +lxsiwzx: 00000001 ==> 0000000000000131 +lxsiwzx: 31929394 ==> 00000000929394a1 +lxsiwzx: a1a2a3a4 ==> 00000000a2a3a410 +lxsiwzx: 10000b08 ==> 00000000000b0810 + + +lxsspx: 3ec00000 ==> 3fd8000000000000 +lxsspx: 7f800000 ==> 7ff0000000000000 +lxsspx: 80000000 ==> 8000000000000000 +lxsspx: 7fbfffff ==> 7ff7ffffe0000000 +lxsspx: ffc00000 ==> fff8000000000000 +lxsspx: 49192c2d ==> 41232585a0000000 +lxsspx: 428a5faf ==> 40514bf5e0000000 + + +Test VSX vector and scalar two argument instructions +#0: xssubsp fff0000000000000,fff0000000000000 => 7ff8000000000000 +#1: xssubsp fff0000000000000,c0d0650f5a07b353 => fff0000000000000 +#2: xssubsp fff0000000000000,8000000000000000 => fff0000000000000 +#3: xssubsp fff0000000000000,0000000000000000 => fff0000000000000 +#4: xssubsp fff0000000000000,0123214569900000 => fff0000000000000 +#5: xssubsp fff0000000000000,7ff0000000000000 => fff0000000000000 +#6: xssubsp fff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#7: xssubsp fff0000000000000,7ff8000000000000 => 7ff8000000000000 +#8: xssubsp c0d0650f5a07b353,fff0000000000000 => 7ff0000000000000 +#9: xssubsp c0d0650f5a07b353,c0d0650f5a07b353 => 0000000000000000 +#10: xssubsp c0d0650f5a07b353,8000000000000000 => c0d0650f60000000 +#11: xssubsp c0d0650f5a07b353,0000000000000000 => c0d0650f60000000 +#12: xssubsp c0d0650f5a07b353,0123214569900000 => c0d0650f60000000 +#13: xssubsp c0d0650f5a07b353,7ff0000000000000 => fff0000000000000 +#14: xssubsp c0d0650f5a07b353,7ff7ffffffffffff => 7fffffffe0000000 +#15: xssubsp c0d0650f5a07b353,7ff8000000000000 => 7ff8000000000000 +#16: xssubsp 8000000000000000,fff0000000000000 => 7ff0000000000000 +#17: xssubsp 8000000000000000,c0d0650f5a07b353 => 40d0650f60000000 +#18: xssubsp 8000000000000000,8000000000000000 => 0000000000000000 +#19: xssubsp 8000000000000000,0000000000000000 => 8000000000000000 +#20: xssubsp 8000000000000000,0123214569900000 => 8000000000000000 +#21: xssubsp 8000000000000000,7ff0000000000000 => fff0000000000000 +#22: xssubsp 8000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#23: xssubsp 8000000000000000,7ff8000000000000 => 7ff8000000000000 +#24: xssubsp 0000000000000000,fff0000000000000 => 7ff0000000000000 +#25: xssubsp 0000000000000000,c0d0650f5a07b353 => 40d0650f60000000 +#26: xssubsp 0000000000000000,8000000000000000 => 0000000000000000 +#27: xssubsp 0000000000000000,0000000000000000 => 0000000000000000 +#28: xssubsp 0000000000000000,0123214569900000 => 8000000000000000 +#29: xssubsp 0000000000000000,7ff0000000000000 => fff0000000000000 +#30: xssubsp 0000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#31: xssubsp 0000000000000000,7ff8000000000000 => 7ff8000000000000 +#32: xssubsp 0123214569900000,fff0000000000000 => 7ff0000000000000 +#33: xssubsp 0123214569900000,c0d0650f5a07b353 => 40d0650f60000000 +#34: xssubsp 0123214569900000,8000000000000000 => 0000000000000000 +#35: xssubsp 0123214569900000,0000000000000000 => 0000000000000000 +#36: xssubsp 0123214569900000,404f000000000000 => c04f000000000000 +#37: xssubsp 0123214569900000,7ff0000000000000 => fff0000000000000 +#38: xssubsp 0123214569900000,7ff7ffffffffffff => 7fffffffe0000000 +#39: xssubsp 0123214569900000,7ff8000000000000 => 7ff8000000000000 +#40: xssubsp 7ff0000000000000,fff0000000000000 => 7ff0000000000000 +#41: xssubsp 7ff0000000000000,c0d0650f5a07b353 => 7ff0000000000000 +#42: xssubsp 7ff0000000000000,8000000000000000 => 7ff0000000000000 +#43: xssubsp 7ff0000000000000,0000000000000000 => 7ff0000000000000 +#44: xssubsp 7ff0000000000000,0123214569900000 => 7ff0000000000000 +#45: xssubsp 7ff0000000000000,7ff0000000000000 => 7ff8000000000000 +#46: xssubsp 7ff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#47: xssubsp 7ff0000000000000,7ff8000000000000 => 7ff8000000000000 +#48: xssubsp fff7ffffffffffff,fff0000000000000 => ffffffffe0000000 +#49: xssubsp fff7ffffffffffff,c0d0650f5a07b353 => ffffffffe0000000 +#50: xssubsp fff7ffffffffffff,8000000000000000 => ffffffffe0000000 +#51: xssubsp fff7ffffffffffff,0000000000000000 => ffffffffe0000000 +#52: xssubsp fff7ffffffffffff,0123214569900000 => ffffffffe0000000 +#53: xssubsp fff7ffffffffffff,7ff0000000000000 => ffffffffe0000000 +#54: xssubsp fff7ffffffffffff,7ff7ffffffffffff => ffffffffe0000000 +#55: xssubsp fff7ffffffffffff,7ff8000000000000 => ffffffffe0000000 +#56: xssubsp fff8000000000000,fff0000000000000 => fff8000000000000 +#57: xssubsp fff8000000000000,c0d0650f5a07b353 => fff8000000000000 +#58: xssubsp fff8000000000000,8000000000000000 => fff8000000000000 +#59: xssubsp fff8000000000000,0000000000000000 => fff8000000000000 +#60: xssubsp fff8000000000000,0123214569900000 => fff8000000000000 +#61: xssubsp fff8000000000000,7ff0000000000000 => fff8000000000000 +#62: xssubsp fff8000000000000,7ff7ffffffffffff => fff8000000000000 +#63: xssubsp fff8000000000000,7ff8000000000000 => fff8000000000000 + +#0: xsaddsp fff0000000000000,fff0000000000000 => fff0000000000000 +#1: xsaddsp fff0000000000000,c0d0650f5a07b353 => fff0000000000000 +#2: xsaddsp fff0000000000000,8000000000000000 => fff0000000000000 +#3: xsaddsp fff0000000000000,0000000000000000 => fff0000000000000 +#4: xsaddsp fff0000000000000,0123214569900000 => fff0000000000000 +#5: xsaddsp fff0000000000000,7ff0000000000000 => 7ff8000000000000 +#6: xsaddsp fff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#7: xsaddsp fff0000000000000,7ff8000000000000 => 7ff8000000000000 +#8: xsaddsp c0d0650f5a07b353,fff0000000000000 => fff0000000000000 +#9: xsaddsp c0d0650f5a07b353,c0d0650f5a07b353 => c0e0650f60000000 +#10: xsaddsp c0d0650f5a07b353,8000000000000000 => c0d0650f60000000 +#11: xsaddsp c0d0650f5a07b353,0000000000000000 => c0d0650f60000000 +#12: xsaddsp c0d0650f5a07b353,0123214569900000 => c0d0650f60000000 +#13: xsaddsp c0d0650f5a07b353,7ff0000000000000 => 7ff0000000000000 +#14: xsaddsp c0d0650f5a07b353,7ff7ffffffffffff => 7fffffffe0000000 +#15: xsaddsp c0d0650f5a07b353,7ff8000000000000 => 7ff8000000000000 +#16: xsaddsp 8000000000000000,fff0000000000000 => fff0000000000000 +#17: xsaddsp 8000000000000000,c0d0650f5a07b353 => c0d0650f60000000 +#18: xsaddsp 8000000000000000,8000000000000000 => 8000000000000000 +#19: xsaddsp 8000000000000000,0000000000000000 => 0000000000000000 +#20: xsaddsp 8000000000000000,0123214569900000 => 0000000000000000 +#21: xsaddsp 8000000000000000,7ff0000000000000 => 7ff0000000000000 +#22: xsaddsp 8000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#23: xsaddsp 8000000000000000,7ff8000000000000 => 7ff8000000000000 +#24: xsaddsp 0000000000000000,fff0000000000000 => fff0000000000000 +#25: xsaddsp 0000000000000000,c0d0650f5a07b353 => c0d0650f60000000 +#26: xsaddsp 0000000000000000,8000000000000000 => 0000000000000000 +#27: xsaddsp 0000000000000000,0000000000000000 => 0000000000000000 +#28: xsaddsp 0000000000000000,0123214569900000 => 0000000000000000 +#29: xsaddsp 0000000000000000,7ff0000000000000 => 7ff0000000000000 +#30: xsaddsp 0000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#31: xsaddsp 0000000000000000,7ff8000000000000 => 7ff8000000000000 +#32: xsaddsp 0123214569900000,fff0000000000000 => fff0000000000000 +#33: xsaddsp 0123214569900000,c0d0650f5a07b353 => c0d0650f60000000 +#34: xsaddsp 0123214569900000,8000000000000000 => 0000000000000000 +#35: xsaddsp 0123214569900000,0000000000000000 => 0000000000000000 +#36: xsaddsp 0123214569900000,404f000000000000 => 404f000000000000 +#37: xsaddsp 0123214569900000,7ff0000000000000 => 7ff0000000000000 +#38: xsaddsp 0123214569900000,7ff7ffffffffffff => 7fffffffe0000000 +#39: xsaddsp 0123214569900000,7ff8000000000000 => 7ff8000000000000 +#40: xsaddsp 7ff0000000000000,fff0000000000000 => 7ff8000000000000 +#41: xsaddsp 7ff0000000000000,c0d0650f5a07b353 => 7ff0000000000000 +#42: xsaddsp 7ff0000000000000,8000000000000000 => 7ff0000000000000 +#43: xsaddsp 7ff0000000000000,0000000000000000 => 7ff0000000000000 +#44: xsaddsp 7ff0000000000000,0123214569900000 => 7ff0000000000000 +#45: xsaddsp 7ff0000000000000,7ff0000000000000 => 7ff0000000000000 +#46: xsaddsp 7ff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#47: xsaddsp 7ff0000000000000,7ff8000000000000 => 7ff8000000000000 +#48: xsaddsp fff7ffffffffffff,fff0000000000000 => ffffffffe0000000 +#49: xsaddsp fff7ffffffffffff,c0d0650f5a07b353 => ffffffffe0000000 +#50: xsaddsp fff7ffffffffffff,8000000000000000 => ffffffffe0000000 +#51: xsaddsp fff7ffffffffffff,0000000000000000 => ffffffffe0000000 +#52: xsaddsp fff7ffffffffffff,0123214569900000 => ffffffffe0000000 +#53: xsaddsp fff7ffffffffffff,7ff0000000000000 => ffffffffe0000000 +#54: xsaddsp fff7ffffffffffff,7ff7ffffffffffff => ffffffffe0000000 +#55: xsaddsp fff7ffffffffffff,7ff8000000000000 => ffffffffe0000000 +#56: xsaddsp fff8000000000000,fff0000000000000 => fff8000000000000 +#57: xsaddsp fff8000000000000,c0d0650f5a07b353 => fff8000000000000 +#58: xsaddsp fff8000000000000,8000000000000000 => fff8000000000000 +#59: xsaddsp fff8000000000000,0000000000000000 => fff8000000000000 +#60: xsaddsp fff8000000000000,0123214569900000 => fff8000000000000 +#61: xsaddsp fff8000000000000,7ff0000000000000 => fff8000000000000 +#62: xsaddsp fff8000000000000,7ff7ffffffffffff => fff8000000000000 +#63: xsaddsp fff8000000000000,7ff8000000000000 => fff8000000000000 + diff --git a/none/tests/ppc64/test_isa_2_07_part2.c b/none/tests/ppc64/test_isa_2_07_part2.c index 6085ca4e6b..f5ec672901 100644 --- a/none/tests/ppc64/test_isa_2_07_part2.c +++ b/none/tests/ppc64/test_isa_2_07_part2.c @@ -40,7 +40,6 @@ typedef uint32_t HWord_t; typedef uint64_t HWord_t; #endif /* __powerpc64__ */ -static int errors; register HWord_t r14 __asm__ ("r14"); register HWord_t r15 __asm__ ("r15"); register HWord_t r16 __asm__ ("r16"); @@ -86,15 +85,6 @@ static volatile unsigned int cond_reg; __asm__ __volatile__ ("mtfsf 0xFF, %0" : : "f"(_d) ); \ } while (0) - -typedef void (*test_func_t)(void); -typedef struct vsx_logic_test logic_test_t; -typedef struct ldst_test ldst_test_t; -typedef struct xs_conv_test xs_conv_test_t; -typedef struct vx_fp_test vx_fp_test_t; -typedef struct vx_fp_test2 vx_fp_test2_t; -typedef struct test_table test_table_t; - typedef unsigned char Bool; @@ -131,8 +121,6 @@ static inline void register_sp_farg (void *farg, typedef struct fp_test_args { int fra_idx; int frb_idx; - int cr_flags; - unsigned long long dp_bin_result; } fp_test_args_t; static int nb_special_fargs; @@ -141,29 +129,35 @@ static float * spec_sp_fargs; static void build_special_fargs_table(void) { - /* The special floating point values created below are for - * use in the ftdiv tests for setting the fe_flag and fg_flag, - * but they can also be used for other tests (e.g., xscmpudp). - * - * Note that fl_flag is 'always '1' on ppc64 Linux. + /* + * Double precision: + * Sign goes from zero to one (1 bit) + * Exponent goes from 0 to ((1 << 12) - 1) (11 bits) + * Mantissa goes from 1 to ((1 << 52) - 1) (52 bits) + * + special values: + * +0.0 : 0 0x000 0x0000000000000 => 0x0000000000000000 + * -0.0 : 1 0x000 0x0000000000000 => 0x8000000000000000 + * +infinity : 0 0x7FF 0x0000000000000 => 0x7FF0000000000000 + * -infinity : 1 0x7FF 0x0000000000000 => 0xFFF0000000000000 + * +SNaN : 0 0x7FF 0x7FFFFFFFFFFFF => 0x7FF7FFFFFFFFFFFF + * -SNaN : 1 0x7FF 0x7FFFFFFFFFFFF => 0xFFF7FFFFFFFFFFFF + * +QNaN : 0 0x7FF 0x8000000000000 => 0x7FF8000000000000 + * -QNaN : 1 0x7FF 0x8000000000000 => 0xFFF8000000000000 + * (8 values) * - Entry Sign Exp fraction Special value - 0 0 3fd 0x8000000000000ULL Positive finite number - 1 0 404 0xf000000000000ULL ... - 2 0 001 0x8000000b77501ULL ... - 3 0 7fe 0x800000000051bULL ... - 4 0 012 0x3214569900000ULL ... - 5 0 000 0x0000000000000ULL +0.0 (+zero) - 6 1 000 0x0000000000000ULL -0.0 (-zero) - 7 0 7ff 0x0000000000000ULL +infinity - 8 1 7ff 0x0000000000000ULL -infinity - 9 0 7ff 0x7FFFFFFFFFFFFULL +SNaN - 10 1 7ff 0x7FFFFFFFFFFFFULL -SNaN - 11 0 7ff 0x8000000000000ULL +QNaN - 12 1 7ff 0x8000000000000ULL -QNaN - 13 1 000 0x8340000078000ULL Denormalized val (zero exp and non-zero fraction) - 14 1 40d 0x0650f5a07b353ULL Negative finite number - */ + * Single precision + * Sign: 1 bit + * Exponent: 8 bits + * Mantissa: 23 bits + * +0.0 : 0 0x00 0x000000 => 0x00000000 + * -0.0 : 1 0x00 0x000000 => 0x80000000 + * +infinity : 0 0xFF 0x000000 => 0x7F800000 + * -infinity : 1 0xFF 0x000000 => 0xFF800000 + * +SNaN : 0 0xFF 0x3FFFFF => 0x7FBFFFFF + * -SNaN : 1 0xFF 0x3FFFFF => 0xFFBFFFFF + * +QNaN : 0 0xFF 0x400000 => 0x7FC00000 + * -QNaN : 1 0xFF 0x400000 => 0xFFC00000 + */ uint64_t mant; uint32_t mant_sp; @@ -331,6 +325,24 @@ static void build_special_fargs_table(void) } } +static unsigned int vstg[] __attribute__ ((aligned (16))) = { 0, 0, 0,0, + 0, 0, 0, 0 }; + + +static unsigned int viargs[] __attribute__ ((aligned (16))) = { 0x80000001, + 0x89abcdef, + 0x00112233, + 0x74556677, + 0x00001abb, + 0x00000001, + 0x31929394, + 0xa1a2a3a4, +}; +#define NUM_VIARGS_INTS (sizeof viargs/sizeof viargs[0]) +#define NUM_VIARGS_VECS (NUM_VIARGS_INTS/4) + +typedef void (*test_func_t)(void); + struct test_table { test_func_t test_category; @@ -340,9 +352,11 @@ struct test_table typedef enum { SINGLE_TEST, + SINGLE_TEST_SINGLE_RES, DOUBLE_TEST, DOUBLE_TEST_SINGLE_RES } precision_type_t; +#define IS_DP_RESULT(x) ((x == SINGLE_TEST) || (x == DOUBLE_TEST)) typedef enum { VX_FP_SMAS, // multiply add single precision result @@ -355,9 +369,45 @@ typedef enum { VX_CONV_TO_SINGLE, VX_CONV_TO_DOUBLE, VX_SCALAR_CONV_TO_WORD, + VX_SCALAR_SP_TO_VECTOR_SP, VX_DEFAULT } vx_fp_test_type; +typedef enum { + VSX_LOAD = 1, + VSX_LOAD_SPLAT, + VSX_STORE, +} vsx_ldst_type; + +typedef enum { + VSX_AND = 1, + VSX_NAND, + VSX_ANDC, + VSX_OR, + VSX_ORC, + VSX_NOR, + VSX_XOR, + VSX_EQV, +} vsx_log_op; + +struct vx_fp_test1 +{ + test_func_t test_func; + const char *name; + fp_test_args_t * targs; + int num_tests; + vx_fp_test_type test_type; + }; + +struct ldst_test +{ + test_func_t test_func; + const char *name; + precision_type_t precision; + void * base_addr; + uint32_t offset; + vsx_ldst_type type; +}; struct vx_fp_test2 { @@ -370,7 +420,35 @@ struct vx_fp_test2 const char * op; }; -static vector unsigned int vec_out, vec_inB; +struct xs_conv_test +{ + test_func_t test_func; + const char *name; + int num_tests; +}; + +struct simple_test +{ + test_func_t test_func; + const char *name; +}; + +struct vsx_logic_test +{ + test_func_t test_func; + const char *name; + vsx_log_op op; +}; + +typedef struct vsx_logic_test logic_test_t; +typedef struct ldst_test ldst_test_t; +typedef struct simple_test xs_conv_test_t; +typedef struct vx_fp_test1 vx_fp_test_basic_t; +typedef struct vx_fp_test2 vx_fp_test2_t; +typedef struct test_table test_table_t; + + +static vector unsigned int vec_out, vec_inA, vec_inB; static void test_xscvdpspn(void) { @@ -381,13 +459,575 @@ static void test_xscvspdpn(void) { __asm__ __volatile__ ("xscvspdpn %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); } + +static int do_asp; +static void test_xsmadds(void) +{ + if (do_asp) + __asm__ __volatile__ ("xsmaddasp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmaddmsp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsmsubs(void) +{ + if (do_asp) + __asm__ __volatile__ ("xsmsubasp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsmsubmsp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xscvsxdsp (void) +{ + __asm__ __volatile__ ("xscvsxdsp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xscvuxdsp (void) +{ + __asm__ __volatile__ ("xscvuxdsp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xsnmadds(void) +{ + if (do_asp) + __asm__ __volatile__ ("xsnmaddasp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsnmaddmsp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsnmsubs(void) +{ + if (do_asp) + __asm__ __volatile__ ("xsnmsubasp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); + else + __asm__ __volatile__ ("xsnmsubmsp %x0, %x1, %x2" : "+wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_stxsspx(void) +{ + __asm__ __volatile__ ("stxsspx %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_stxsiwx(void) +{ + __asm__ __volatile__ ("stxsiwx %x0, %1, %2" : : "wa" (vec_inA), "b" (r14),"r" (r15)); +} + +static void test_lxsiwax(void) +{ + __asm__ __volatile__ ("lxsiwax %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxsiwzx(void) +{ + __asm__ __volatile__ ("lxsiwzx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_lxsspx(void) +{ + __asm__ __volatile__ ("lxsspx %x0, %1, %2" : "=wa" (vec_out): "b" (r14),"r" (r15)); +} + +static void test_xssqrtsp(void) +{ + __asm__ __volatile__ ("xssqrtsp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +static void test_xsrsqrtesp(void) +{ + __asm__ __volatile__ ("xsrsqrtesp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +/* Three argument instuctions */ +static void test_xxleqv(void) +{ + __asm__ __volatile__ ("xxleqv %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlorc(void) +{ + __asm__ __volatile__ ("xxlorc %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xxlnand(void) +{ + __asm__ __volatile__ ("xxlnand %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsaddsp(void) +{ + __asm__ __volatile__ ("xsaddsp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA), "wa" (vec_inB)); +} + +static void test_xssubsp(void) +{ + __asm__ __volatile__ ("xssubsp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA), "wa" (vec_inB)); +} + +static void test_xsdivsp(void) +{ + __asm__ __volatile__ ("xsdivsp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA), "wa" (vec_inB)); +} + +static void test_xsmulsp(void) +{ + __asm__ __volatile__ ("xsmulsp %x0, %x1, %x2" : "=wa" (vec_out): "wa" (vec_inA),"wa" (vec_inB)); +} + +static void test_xsresp(void) +{ + __asm__ __volatile__ ("xsresp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} +static void test_xsrsp(void) +{ + __asm__ __volatile__ ("xsrsp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + +fp_test_args_t vx_math_tests[] = { + {8, 8}, + {8, 14}, + {8, 6}, + {8, 5}, + {8, 4}, + {8, 7}, + {8, 9}, + {8, 11}, + {14, 8}, + {14, 14}, + {14, 6}, + {14, 5}, + {14, 4}, + {14, 7}, + {14, 9}, + {14, 11}, + {6, 8}, + {6, 14}, + {6, 6}, + {6, 5}, + {6, 4}, + {6, 7}, + {6, 9}, + {6, 11}, + {5, 8}, + {5, 14}, + {5, 6}, + {5, 5}, + {5, 4}, + {5, 7}, + {5, 9}, + {5, 11}, + {4, 8}, + {4, 14}, + {4, 6}, + {4, 5}, + {4, 1}, + {4, 7}, + {4, 9}, + {4, 11}, + {7, 8}, + {7, 14}, + {7, 6}, + {7, 5}, + {7, 4}, + {7, 7}, + {7, 9}, + {7, 11}, + {10, 8}, + {10, 14}, + {10, 6}, + {10, 5}, + {10, 4}, + {10, 7}, + {10, 9}, + {10, 11}, + {12, 8}, + {12, 14}, + {12, 6}, + {12, 5}, + {12, 4}, + {12, 7}, + {12, 9}, + {12, 11}, + {8, 8}, + {8, 14}, + {8, 6}, + {8, 5}, + {8, 4}, + {8, 7}, + {8, 9}, + {8, 11}, + {14, 8}, + {14, 14}, + {14, 6}, + {14, 5}, + {14, 4}, + {14, 7}, + {14, 9}, + {14, 11}, + {6, 8}, + {6, 14}, + {6, 6}, + {6, 5}, + {6, 4}, + {6, 7}, + {6, 9}, + {6, 11}, + {5, 8}, + {5, 14}, + {5, 6}, + {5, 5}, + {5, 4}, + {5, 7}, + {5, 9}, + {5, 11}, + {4, 8}, + {4, 14}, + {4, 6}, + {4, 5}, + {4, 1}, + {4, 7}, + {4, 9}, + {4, 11}, + {7, 8}, + {7, 14}, + {7, 6}, + {7, 5}, + {7, 4}, + {7, 7}, + {7, 9}, + {7, 11}, + {10, 8}, + {10, 14}, + {10, 6}, + {10, 5}, + {10, 4}, + {10, 7}, + {10, 9}, + {10, 11}, + {12, 8}, + {12, 14}, + {12, 6}, + {12, 5}, + {12, 4}, + {12, 7}, + {12, 9}, + {12, 11} +}; + +// These are all double precision inputs with double word outputs (mostly converted to single precision) +static vx_fp_test_basic_t vx_fp_tests[] = { + { &test_xsmadds, "xsmadd", vx_math_tests, 64, VX_FP_SMAS}, + { &test_xsmsubs, "xsmsub", vx_math_tests, 64, VX_FP_SMSS}, + { &test_xsmulsp, "xsmulsp", vx_math_tests, 64, VX_FP_OTHER}, + { &test_xsdivsp, "xsdivsp", vx_math_tests, 64, VX_FP_OTHER}, + { &test_xsnmadds, "xsnmadd", vx_math_tests, 64, VX_FP_SNMAS}, + { &test_xsnmsubs, "xsnmsub", vx_math_tests, 64, VX_FP_SNMSS}, + { NULL, NULL, NULL, 0, 0 } +}; + static vx_fp_test2_t vsx_one_fp_arg_tests[] = { - { &test_xscvdpspn, "xscvdpspn", NULL, 20, DOUBLE_TEST, VX_CONV_TO_SINGLE, "conv"}, - { &test_xscvspdpn, "xscvspdpn", NULL, 20, SINGLE_TEST, VX_CONV_TO_DOUBLE, "conv"}, - { NULL, NULL, NULL, 0, 0, 0, NULL} + { &test_xscvdpspn, "xscvdpspn", NULL, 20, SINGLE_TEST_SINGLE_RES, VX_SCALAR_SP_TO_VECTOR_SP, "conv"}, + { &test_xscvspdpn, "xscvspdpn", NULL, 20, SINGLE_TEST, VX_DEFAULT, "conv"}, + { &test_xsresp, "xsresp", NULL, 20, DOUBLE_TEST, VX_ESTIMATE, "1/x"}, + { &test_xsrsp, "xsrsp", NULL, 20, DOUBLE_TEST, VX_DEFAULT, "round"}, + { &test_xsrsqrtesp, "xsrsqrtesp", NULL, 20, DOUBLE_TEST, VX_ESTIMATE, "1/sqrt"}, + { &test_xssqrtsp, "xssqrtsp", NULL, 20, DOUBLE_TEST, VX_DEFAULT, "sqrt"}, + { NULL, NULL, NULL, 0, 0, 0, NULL} +}; + +// These are all double precision inputs with double word outputs (mostly converted to single precision) +static vx_fp_test_basic_t +vx_simple_scalar_fp_tests[] = { + { &test_xssubsp, "xssubsp", vx_math_tests, 64, VX_DEFAULT}, + { &test_xsaddsp, "xsaddsp", vx_math_tests, 64, VX_DEFAULT}, + { NULL, NULL, NULL, 0 , 0} }; +static ldst_test_t +ldst_tests[] = { + { &test_stxsspx, "stxsspx", DOUBLE_TEST_SINGLE_RES, vstg, 0, VSX_STORE }, + { &test_stxsiwx, "stxsiwx", SINGLE_TEST_SINGLE_RES, vstg, 4, VSX_STORE }, + { &test_lxsiwax, "lxsiwax", SINGLE_TEST, viargs, 0, VSX_LOAD }, + { &test_lxsiwzx, "lxsiwzx", SINGLE_TEST, viargs, 1, VSX_LOAD }, + { &test_lxsspx, "lxsspx", SINGLE_TEST, NULL, 0, VSX_LOAD }, + { NULL, NULL, 0, NULL, 0, 0 } }; + +static xs_conv_test_t +xs_conv_tests[] = { + { &test_xscvsxdsp, "xscvsxdsp"}, + { &test_xscvuxdsp, "xscvuxdsp"}, + { NULL, NULL} +}; + +static logic_test_t +logic_tests[] = { + { &test_xxleqv, "xxleqv", VSX_EQV }, + { &test_xxlorc, "xxlorc", VSX_ORC }, + { &test_xxlnand, "xxlnand", VSX_NAND }, + { NULL, NULL} +}; + +Bool check_reciprocal_estimate(Bool is_rsqrte, int idx, int output_vec_idx) +{ + /* NOTE: + * This function has been verified only with the xsresp and xsrsqrtes instructions. + * + * Technically, the number of bits of precision for xsresp and xsrsqrtesp is + * 14 bits (14 = log2 16384). However, the VEX emulation of these instructions + * does an actual reciprocal calculation versus estimation, so the answer we get back from + * valgrind can easily differ from the estimate in the lower bits (within the 14 bits of + * precision) and the estimate may still be within expected tolerances. On top of that, + * we can't count on these estimates always being the same across implementations. + * For example, with the fre[s] instruction (which should be correct to within one part + * in 256 -- i.e., 8 bits of precision) . . . When approximating the value 1.0111_1111_1111, + * one implementation could return 1.0111_1111_0000 and another implementation could return + * 1.1000_0000_0000. Both estimates meet the 1/256 accuracy requirement, but share only a + * single bit in common. + * + * The upshot is we can't validate the VEX output for these instructions by comparing against + * stored bit patterns. We must check that the result is within expected tolerances. + */ + + /* A mask to be used for validation as a last resort. + * Only use 12 bits of precision for reasons discussed above. + */ +#define VSX_RECIP_ESTIMATE_MASK_SP 0xFFFF8000 + + + Bool result = False; + double src_dp, res_dp; + float calc_diff = 0; + float real_diff = 0; + double recip_divisor; + float div_result; + float calc_diff_tmp; + + src_dp = res_dp = 0; + Bool src_is_negative = False; + Bool res_is_negative = False; + unsigned long long * dst_dp = NULL; + unsigned long long * src_dp_ull; + dst_dp = (unsigned long long *) &vec_out; + src_dp = spec_fargs[idx]; + src_dp_ull = (unsigned long long *) &src_dp; + src_is_negative = (*src_dp_ull & 0x8000000000000000ULL) ? True : False; + res_is_negative = (dst_dp[output_vec_idx] & 0x8000000000000000ULL) ? True : False; + memcpy(&res_dp, &dst_dp[output_vec_idx], 8); + + + // Below are common rules + if (isnan(src_dp)) + return isnan(res_dp); + if (fpclassify(src_dp) == FP_ZERO) + return isinf(res_dp); + if (!src_is_negative && isinf(src_dp)) + return !res_is_negative && (fpclassify(res_dp) == FP_ZERO); + if (is_rsqrte) { + if (src_is_negative) + return isnan(res_dp); + } else { + if (src_is_negative && isinf(src_dp)) + return res_is_negative && (fpclassify(res_dp) == FP_ZERO); + } + + if (is_rsqrte) + recip_divisor = sqrt(src_dp); + else + recip_divisor = src_dp; + + /* The instructions handled by this function take a double precision + * input, perform a reciprocal estimate in double-precision, round + * the result to single precision and store into the destination + * register in double precision format. So, to check the result + * for accuracy, we use float (single precision) values. + */ + div_result = 1.0/recip_divisor; + calc_diff_tmp = recip_divisor * 16384.0; + if (isnormal(calc_diff_tmp)) { + calc_diff = fabs(1.0/calc_diff_tmp); + real_diff = fabs((float)res_dp - div_result); + result = ( ( res_dp == div_result ) + || ( real_diff <= calc_diff ) ); +#if FRES_DEBUG + unsigned int * dv = (unsigned int *)&div_result; + unsigned int * rd = (unsigned int *)&real_diff; + unsigned int * cd = (unsigned int *)&calc_diff; + printf("\n\t {computed div_result: %08x; real_diff: %08x; calc_diff: %08x}\n", + *dv, *rd, *cd); +#endif + + } else { + /* Unable to compute theoretical difference, so we fall back to masking out + * un-precise bits. + */ + unsigned int * div_result_sp = (unsigned int *)&div_result; + float res_sp = (float)res_dp; + unsigned int * dst_sp = (unsigned int *)&res_sp; +#if FRES_DEBUG + unsigned int * calc_diff_tmp_sp = (unsigned int *)&calc_diff_tmp; + printf("Unable to compute theoretical difference, so we fall back to masking\n"); + printf("\tcalc_diff_tmp: %08x; div_result: %08x; vector result (sp): %08x\n", + *calc_diff_tmp_sp, *div_result_sp, *dst_sp); +#endif + result = (*dst_sp & VSX_RECIP_ESTIMATE_MASK_SP) == (*div_result_sp & VSX_RECIP_ESTIMATE_MASK_SP); + } + return result; +} + +static void test_vx_fp_ops(void) +{ + + test_func_t func; + int k; + char * test_name = (char *)malloc(20); + k = 0; + + build_special_fargs_table(); + while ((func = vx_fp_tests[k].test_func)) { + int i, repeat = 0; + unsigned long long * frap, * frbp, * dst; + vx_fp_test_basic_t test_group = vx_fp_tests[k]; + vx_fp_test_type test_type = test_group.test_type; + + switch (test_type) { + case VX_FP_SMAS: + case VX_FP_SMSS: + case VX_FP_SNMAS: + case VX_FP_SNMSS: + if (test_type == VX_FP_SMAS) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMSS) + strcpy(test_name, "xsmsub"); + else if (test_type == VX_FP_SNMAS) + strcpy(test_name, "xsnmadd"); + else + strcpy(test_name, "xsnmsub"); + + if (!repeat) { + repeat = 1; + strcat(test_name, "asp"); + do_asp = 1; + } + break; + case VX_FP_OTHER: + strcpy(test_name, test_group.name); + break; + default: + printf("ERROR: Invalid VX FP test type %d\n", test_type); + exit(1); + } + +again: + for (i = 0; i < test_group.num_tests; i++) { + unsigned int * inA, * inB, * pv; + + fp_test_args_t aTest = test_group.targs[i]; + inA = (unsigned int *)&spec_fargs[aTest.fra_idx]; + inB = (unsigned int *)&spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + int idx; + unsigned long long vsr_XT; + pv = (unsigned int *)&vec_out; + + // Only need to copy one doubleword into each vector's element 0 + memcpy(&vec_inA, inA, 8); + memcpy(&vec_inB, inB, 8); + + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + if (test_type != VX_FP_OTHER) { + /* Then we need a third src argument, which is stored in element 0 of + * VSX[XT] -- i.e., vec_out. For the xsmdp cases, VSX[XT] holds + * src3 and VSX[XB] holds src2; for the xsadp cases, VSX[XT] holds + * src2 and VSX[XB] holds src3. The fp_test_args_t that holds the test + * data (input args, result) contain only two inputs, so I arbitrarily + * use spec_fargs elements 4 and 14 (alternating) for the third source + * argument. We can use the same input data for a given pair of + * adp/mdp-type instructions by swapping the src2 and src3 arguments; thus + * the expected result should be the same. + */ + int extra_arg_idx; + if (i % 2) + extra_arg_idx = 4; + else + extra_arg_idx = 14; + + if (repeat) { + /* We're on the first time through of one of the VX_FP_SMx + * test types, meaning we're testing a xsadp case, thus + * we have to swap inputs as described above: + * src2 <= VSX[XT] + * src3 <= VSX[XB] + */ + memcpy(&vec_out, inB, 8); // src2 + memcpy(&vec_inB, &spec_fargs[extra_arg_idx], 8); //src3 + frbp = (unsigned long long *)&spec_fargs[extra_arg_idx]; + } else { + // Don't need to init src2, as it's done before the switch() + memcpy(&vec_out, &spec_fargs[extra_arg_idx], 8); //src3 + } + memcpy(&vsr_XT, &vec_out, 8); + } + + (*func)(); + dst = (unsigned long long *) &vec_out; + + if (test_type == VX_FP_OTHER) + printf("#%d: %s %016llx %016llx = %016llx\n", i, test_name, + *frap, *frbp, *dst); + else + printf( "#%d: %s %016llx %016llx %016llx = %016llx\n", i, + test_name, vsr_XT, *frap, *frbp, *dst ); + + } + /* + { + // Debug code. Keep this block commented out except when debugging. + double result, expected; + memcpy(&result, dst, 8); + memcpy(&expected, &aTest.dp_bin_result, 8); + printf( "\tFRA + FRB: %e + %e: Expected = %e; Actual = %e\n", + spec_fargs[aTest.fra_idx], spec_fargs[aTest.frb_idx], + expected, result ); + } + */ + printf( "\n" ); + + if (repeat) { + repeat = 0; + strcat(test_name, "UNKNOWN"); + switch (test_type) { + case VX_FP_SMAS: + case VX_FP_SMSS: + case VX_FP_SNMAS: + case VX_FP_SNMSS: + if (test_type == VX_FP_SMAS) + strcpy(test_name, "xsmadd"); + else if (test_type == VX_FP_SMSS) + strcpy(test_name, "xsmsub"); + else if (test_type == VX_FP_SNMAS) + strcpy(test_name, "xsnmadd"); + else + strcpy(test_name, "xsnmsub"); + + do_asp = 0; + strcat(test_name, "msp"); + break; + default: + break; + } + goto again; + } + k++; + } + printf( "\n" ); + free(test_name); +} + static void test_vsx_one_fp_arg(void) { @@ -398,11 +1038,14 @@ static void test_vsx_one_fp_arg(void) while ((func = vsx_one_fp_arg_tests[k].test_func)) { int idx, i; + unsigned long long *dst_dp; + unsigned int * dst_sp; vx_fp_test2_t test_group = vsx_one_fp_arg_tests[k]; /* size of source operands */ Bool dp = ((test_group.precision == DOUBLE_TEST) || (test_group.precision == DOUBLE_TEST_SINGLE_RES)) ? True : False; /* size of result */ + Bool dp_res = IS_DP_RESULT(test_group.precision); Bool is_sqrt = (strstr(test_group.name, "sqrt")) ? True : False; Bool is_scalar = (strstr(test_group.name, "xs")) ? True : False; Bool sparse_sp = False; @@ -434,7 +1077,7 @@ static void test_vsx_one_fp_arg(void) if (dp) { int j; - unsigned long long * frB_dp, *dst_dp; + unsigned long long * frB_dp; for (j = 0; j < loops; j++) { inB = (void *)&spec_fargs[i + j]; // copy double precision FP into vector element i @@ -442,48 +1085,64 @@ static void test_vsx_one_fp_arg(void) } // execute test insn (*func)(); - dst_dp = (unsigned long long *) &vec_out; + if (dp_res) + dst_dp = (unsigned long long *) &vec_out; + else + dst_sp = (unsigned int *) &vec_out; + printf("#%d: %s ", i/stride, test_group.name); for (j = 0; j < loops; j++) { if (j) printf("; "); frB_dp = (unsigned long long *)&spec_fargs[i + j]; printf("%s(%016llx)", test_group.op, *frB_dp); - vx_fp_test_type type = test_group.test_type; - switch (type) { - case VX_SCALAR_CONV_TO_WORD: - printf(" = %016llx", dst_dp[j] & 0x00000000ffffffffULL); - break; - case VX_CONV_TO_SINGLE: - printf(" = %016llx", dst_dp[j] & 0xffffffff00000000ULL); - break; - default: // For VX_CONV_TO_DOUBLE and non-convert instructions . . . - printf(" = %016llx", dst_dp[j]); + if (test_group.test_type == VX_ESTIMATE) + { + Bool res; + res = check_reciprocal_estimate(is_sqrt, i + j, j); + printf(" ==> %s)", res ? "PASS" : "FAIL"); + } else if (dp_res) { + printf(" = %016llx", dst_dp[j]); + } else { + printf(" = %08x", dst_sp[j]); } } printf("\n"); - } else { - int j, skip_slot; - unsigned int * frB_sp, * dst_sp = NULL; - unsigned long long * dst_dp = NULL; - if (sparse_sp) { - skip_slot = 1; - loops = 2; + } else { // single precision test type + int j; + // Clear input vector + pv = (unsigned int *)&vec_inB; + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + if (test_group.test_type == VX_SCALAR_SP_TO_VECTOR_SP) { + /* Take a single-precision value stored in double word element 0 + * of src in double-precision format and convert to single- + * precision and store in word element 0 of dst. + */ + double input = spec_sp_fargs[i]; + memcpy(((void *)&vec_inB), (void *)&input, 8); } else { - skip_slot = 0; - } - for (j = 0; j < loops; j++) { - inB = (void *)&spec_sp_fargs[i + j]; - // copy single precision FP into vector element i - - if (skip_slot && j > 0) - memcpy(((void *)&vec_inB) + ((j + j) * 4), inB, 4); - else - memcpy(((void *)&vec_inB) + (j * 4), inB, 4); + int skip_slot; + if (sparse_sp) { + skip_slot = 1; + loops = 2; + } else { + skip_slot = 0; + } + for (j = 0; j < loops; j++) { + inB = (void *)&spec_sp_fargs[i + j]; + // copy single precision FP into vector element i + + if (skip_slot && j > 0) + memcpy(((void *)&vec_inB) + ((j + j) * 4), inB, 4); + else + memcpy(((void *)&vec_inB) + (j * 4), inB, 4); + } } // execute test insn (*func)(); - if (test_group.test_type == VX_CONV_TO_DOUBLE) + if (dp_res) dst_dp = (unsigned long long *) &vec_out; else dst_sp = (unsigned int *) &vec_out; @@ -492,19 +1151,11 @@ static void test_vsx_one_fp_arg(void) for (j = 0; j < loops; j++) { if (j) printf("; "); - frB_sp = (unsigned int *)&spec_sp_fargs[i + j]; - printf("%s(%08x)", test_group.op, *frB_sp); - if (test_group.test_type == VX_CONV_TO_DOUBLE) + printf("%s(%08x)", test_group.op, *((unsigned int *)&spec_sp_fargs[i + j])); + if (dp_res) printf(" = %016llx", dst_dp[j]); else - /* Special case: Current VEX implementation for fsqrts (single precision) - * uses the same implementation as that used for double precision fsqrt. - * However, I've found that for xvsqrtsp, the result from that implementation - * may be off by the two LSBs. Generally, even this small inaccuracy can cause the - * output to appear very different if you end up with a carry. But for the given - * inputs in this testcase, we can simply mask out these bits. - */ - printf(" = %08x", is_sqrt ? (dst_sp[j] & 0xfffffffc) : dst_sp[j]); + printf(" = %08x", dst_sp[j]); } printf("\n"); } @@ -514,11 +1165,238 @@ static void test_vsx_one_fp_arg(void) } } +/* This function currently only supports two double precision input arguments. */ +static void test_vsx_two_fp_arg(void) +{ + test_func_t func; + int k = 0; + + build_special_fargs_table(); + while ((func = vx_simple_scalar_fp_tests[k].test_func)) { + unsigned long long * frap, * frbp, * dst; + unsigned int * pv; + int idx; + vx_fp_test_basic_t test_group = vx_simple_scalar_fp_tests[k]; + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + void * inA, * inB; + int i; + for (i = 0; i < test_group.num_tests; i++) { + fp_test_args_t aTest = test_group.targs[i]; + inA = (void *)&spec_fargs[aTest.fra_idx]; + inB = (void *)&spec_fargs[aTest.frb_idx]; + frap = (unsigned long long *)&spec_fargs[aTest.fra_idx]; + frbp = (unsigned long long *)&spec_fargs[aTest.frb_idx]; + // Only need to copy one doubleword into each vector's element 0 + memcpy(&vec_inA, inA, 8); + memcpy(&vec_inB, inB, 8); + (*func)(); + dst = (unsigned long long *) &vec_out; + printf("#%d: %s %016llx,%016llx => %016llx\n", i, test_group.name, + *frap, *frbp, *dst); + } + printf( "\n" ); + k++; + } +} + +/* This function handles the following cases: + * 1) Single precision value stored in double-precision + * floating-point format in doubleword element 0 of src VSX register + * 2) Integer word value stored in word element 1 of src VSX register + */ +static void _do_store_test (ldst_test_t storeTest) +{ + test_func_t func; + unsigned int *dst32; + unsigned int i, idx; + unsigned int * pv = (unsigned int *) storeTest.base_addr; + + func = storeTest.test_func; + r14 = (HWord_t) storeTest.base_addr; + r15 = (HWord_t) storeTest.offset; + + if (storeTest.precision == DOUBLE_TEST_SINGLE_RES) { + /* source is single precision stored in double precision format */ + /* test some of the pre-defined single precision values */ + for (i = 0; i < nb_special_fargs; i+=3) { + // clear out storage destination + for (idx = 0; idx < 4; idx++) + *(pv + idx) = 0; + + printf( "%s:", storeTest.name ); + unsigned long long * dp; + double input = spec_sp_fargs[i]; + dp = (unsigned long long *)&input; + memcpy(&vec_inA, dp, sizeof(unsigned long long)); + printf(" %016llx ==> ", *dp); + + // execute test insn + (*func)(); + dst32 = (unsigned int*)(storeTest.base_addr + storeTest.offset); + printf( "%08x\n", *dst32); + } + } else { + // source is an integer word + for (i = 0; i < NUM_VIARGS_INTS; i++) { + // clear out storage destination + for (idx = 0; idx < 4; idx++) + *(pv + idx) = 0; + printf( "%s:", storeTest.name ); + unsigned int * pi = (unsigned int *)&vec_inA; + memcpy(pi + 1, &viargs[i], sizeof(unsigned int)); + printf(" %08x ==> ", *(pi + 1)); + + // execute test insn + (*func)(); + dst32 = (unsigned int*)(storeTest.base_addr + storeTest.offset); + printf( "%08x\n", *dst32); + } + } + printf("\n"); +} + +static void _do_load_test(ldst_test_t storeTest) +{ + test_func_t func; + unsigned int i; + unsigned long long * dst_dp; + + func = storeTest.test_func; + r15 = (HWord_t) storeTest.offset; + + if (storeTest.base_addr == NULL) { + /* Test lxsspx: source is single precision value, so let's */ + /* test some of the pre-defined single precision values. */ + for (i = 0; i + storeTest.offset < nb_special_fargs; i+=3) { + unsigned int * sp = (unsigned int *)&spec_sp_fargs[i + storeTest.offset]; + printf( "%s:", storeTest.name ); + printf(" %08x ==> ", *sp); + r14 = (HWord_t)&spec_sp_fargs[i]; + + // execute test insn + (*func)(); + dst_dp = (unsigned long long *) &vec_out; + printf("%016llx\n", *dst_dp); + } + } else { + // source is an integer word + for (i = 0; i < NUM_VIARGS_INTS; i++) { + printf( "%s:", storeTest.name ); + r14 = (HWord_t)&viargs[i + storeTest.offset]; + printf(" %08x ==> ", viargs[i + storeTest.offset]); + + // execute test insn + (*func)(); + dst_dp = (unsigned long long *) &vec_out; + printf("%016llx\n", *dst_dp); + } + } + printf("\n"); +} + +static void test_ldst(void) +{ + int k = 0; + + while (ldst_tests[k].test_func) { + if (ldst_tests[k].type == VSX_STORE) + _do_store_test(ldst_tests[k]); + else { + _do_load_test(ldst_tests[k]); + } + k++; + printf("\n"); + } +} + +static void test_xs_conv_ops(void) +{ + + test_func_t func; + int k = 0; + + build_special_fargs_table(); + while ((func = xs_conv_tests[k].test_func)) { + int i; + unsigned long long * dst; + xs_conv_test_t test_group = xs_conv_tests[k]; + for (i = 0; i < NUM_VIARGS_INTS; i++) { + unsigned int * inB, * pv; + int idx; + inB = (unsigned int *)&viargs[i]; + memcpy(&vec_inB, inB, 4); + pv = (unsigned int *)&vec_out; + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + (*func)(); + dst = (unsigned long long *) &vec_out; + printf("#%d: %s %08x => %016llx\n", i, test_group.name, viargs[i], *dst); + } + k++; + printf("\n"); + } + printf( "\n" ); +} + + +static void test_vsx_logic(void) +{ + logic_test_t aTest; + test_func_t func; + int k; + k = 0; + + while ((func = logic_tests[k].test_func)) { + + unsigned int * pv; + unsigned int * inA, * inB, * dst; + int idx, i; + aTest = logic_tests[k]; + for (i = 0; i <= NUM_VIARGS_VECS; i+=4) { + pv = (unsigned int *)&vec_out; + inA = &viargs[i]; + inB = &viargs[i]; + memcpy(&vec_inA, inA, sizeof(vector unsigned int)); + memcpy(&vec_inB, inB, sizeof(vector unsigned int)); + // clear vec_out + for (idx = 0; idx < 4; idx++, pv++) + *pv = 0; + + // execute test insn + (*func)(); + dst = (unsigned int*) &vec_out; + + printf( "#%d: %10s ", k, aTest.name); + printf( " (%08x %08x %08x %08x, ", inA[0], inA[1], inA[2], inA[3]); + printf( " %08x %08x %08x %08x)", inB[0], inB[1], inB[2], inB[3]); + printf(" ==> %08x %08x %08x %08x\n", dst[0], dst[1], dst[2], dst[3]); + } + k++; + } + printf( "\n" ); +} + + //---------------------------------------------------------- static test_table_t all_tests[] = { + { &test_vx_fp_ops, + "Test VSX floating point instructions"}, { &test_vsx_one_fp_arg, "Test VSX vector and scalar single argument instructions"} , + { &test_vsx_logic, + "Test VSX logic instructions" }, + { &test_xs_conv_ops, + "Test VSX scalar integer conversion instructions" }, + { &test_ldst, + "Test VSX load/store dp to sp instructions" }, + { &test_vsx_two_fp_arg, + "Test VSX vector and scalar two argument instructions"} , { NULL, NULL } }; @@ -538,11 +1416,6 @@ int main(int argc, char *argv[]) (*func)(); i++; } - if (errors) - printf("Testcase FAILED with %d errors \n", errors); - else - printf("Testcase PASSED\n"); - #else printf("NO ISA 2.07 SUPPORT\n"); #endif diff --git a/none/tests/ppc64/test_isa_2_07_part2.stdout.exp b/none/tests/ppc64/test_isa_2_07_part2.stdout.exp index e9085ea970..e7c43c1e8a 100644 --- a/none/tests/ppc64/test_isa_2_07_part2.stdout.exp +++ b/none/tests/ppc64/test_isa_2_07_part2.stdout.exp @@ -1,24 +1,676 @@ +Test VSX floating point instructions +#0: xsmaddasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsmaddasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmaddasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmaddasp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmaddasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmaddasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsmaddasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsmaddasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmaddasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsmaddasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f60000000 +#10: xsmaddasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#11: xsmaddasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#12: xsmaddasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#13: xsmaddasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsmaddasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsmaddasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmaddasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsmaddasp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f60000000 +#18: xsmaddasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmaddasp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsmaddasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#21: xsmaddasp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsmaddasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsmaddasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmaddasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsmaddasp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f60000000 +#26: xsmaddasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsmaddasp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmaddasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#29: xsmaddasp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsmaddasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsmaddasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmaddasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsmaddasp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f60000000 +#34: xsmaddasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#35: xsmaddasp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmaddasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsmaddasp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsmaddasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsmaddasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmaddasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#41: xsmaddasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmaddasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmaddasp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmaddasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmaddasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#46: xsmaddasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsmaddasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmaddasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsmaddasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsmaddasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsmaddasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsmaddasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsmaddasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsmaddasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsmaddasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsmaddasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmaddasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmaddasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmaddasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmaddasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmaddasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmaddasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmaddasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmaddmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsmaddmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmaddmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmaddmsp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmaddmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmaddmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsmaddmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmaddmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsmaddmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f60000000 +#10: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d00000000 +#11: xsmaddmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d00000000 +#13: xsmaddmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmaddmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmaddmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsmaddmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#18: xsmaddmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmaddmsp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsmaddmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0000000000000000 +#21: xsmaddmsp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsmaddmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmaddmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmaddmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsmaddmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#26: xsmaddmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmaddmsp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmaddmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmaddmsp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsmaddmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmaddmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmaddmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmaddmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f60000000 +#34: xsmaddmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmaddmsp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmaddmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsmaddmsp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmaddmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmaddmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmaddmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmaddmsp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmaddmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmaddmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmaddmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmaddmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmaddmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmaddmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmaddmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmaddmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmaddmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmaddmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmaddmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmaddmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmaddmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmaddmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmaddmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmaddmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmsubasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#1: xsmsubasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#2: xsmsubasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#3: xsmsubasp 0000000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#4: xsmsubasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#5: xsmsubasp 7ff0000000000000 fff0000000000000 0123214569900000 = fff0000000000000 +#6: xsmsubasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsmsubasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsmsubasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsmsubasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f60000000 +#10: xsmsubasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#11: xsmsubasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#12: xsmsubasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#13: xsmsubasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsmsubasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsmsubasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsmsubasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsmsubasp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f60000000 +#18: xsmsubasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#19: xsmsubasp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsmsubasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#21: xsmsubasp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsmsubasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsmsubasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsmsubasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsmsubasp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f60000000 +#26: xsmsubasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsmsubasp 0000000000000000 0000000000000000 0123214569900000 = 0000000000000000 +#28: xsmsubasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#29: xsmsubasp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsmsubasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsmsubasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsmsubasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsmsubasp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f60000000 +#34: xsmsubasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#35: xsmsubasp 0000000000000000 0123214569900000 0123214569900000 = 0000000000000000 +#36: xsmsubasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsmsubasp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsmsubasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsmsubasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsmsubasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsmsubasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#42: xsmsubasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#43: xsmsubasp 0000000000000000 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#44: xsmsubasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#45: xsmsubasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsmsubasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsmsubasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsmsubasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsmsubasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsmsubasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsmsubasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsmsubasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsmsubasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsmsubasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsmsubasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsmsubasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsmsubasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsmsubasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsmsubasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsmsubasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsmsubasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsmsubasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsmsubasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsmsubmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmsubmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#2: xsmsubmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsmsubmsp 0123214569900000 fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsmsubmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#5: xsmsubmsp 0123214569900000 fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmsubmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmsubmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmsubmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f60000000 +#10: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = 41b0cc9d00000000 +#11: xsmsubmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 41b0cc9d00000000 +#13: xsmsubmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmsubmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmsubmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsmsubmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#18: xsmsubmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmsubmsp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmsubmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmsubmsp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsmsubmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmsubmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmsubmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsmsubmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#26: xsmsubmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsmsubmsp 0123214569900000 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmsubmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8000000000000000 +#29: xsmsubmsp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsmsubmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmsubmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmsubmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsmsubmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f60000000 +#34: xsmsubmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmsubmsp 0123214569900000 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmsubmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsmsubmsp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsmsubmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmsubmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsmsubmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#42: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsmsubmsp 0123214569900000 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#45: xsmsubmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsmsubmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmsubmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmsubmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmsubmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmsubmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmsubmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmsubmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmsubmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmsubmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmsubmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmsubmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmsubmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmsubmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmsubmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmsubmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsmulsp fff0000000000000 fff0000000000000 = 7ff0000000000000 +#1: xsmulsp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsmulsp fff0000000000000 8000000000000000 = 7ff8000000000000 +#3: xsmulsp fff0000000000000 0000000000000000 = 7ff8000000000000 +#4: xsmulsp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsmulsp fff0000000000000 7ff0000000000000 = fff0000000000000 +#6: xsmulsp fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsmulsp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsmulsp c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsmulsp c0d0650f5a07b353 c0d0650f5a07b353 = 41b0cc9d00000000 +#10: xsmulsp c0d0650f5a07b353 8000000000000000 = 0000000000000000 +#11: xsmulsp c0d0650f5a07b353 0000000000000000 = 8000000000000000 +#12: xsmulsp c0d0650f5a07b353 0123214569900000 = 8000000000000000 +#13: xsmulsp c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsmulsp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsmulsp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsmulsp 8000000000000000 fff0000000000000 = 7ff8000000000000 +#17: xsmulsp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsmulsp 8000000000000000 8000000000000000 = 0000000000000000 +#19: xsmulsp 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsmulsp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsmulsp 8000000000000000 7ff0000000000000 = 7ff8000000000000 +#22: xsmulsp 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsmulsp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsmulsp 0000000000000000 fff0000000000000 = 7ff8000000000000 +#25: xsmulsp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsmulsp 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsmulsp 0000000000000000 0000000000000000 = 0000000000000000 +#28: xsmulsp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsmulsp 0000000000000000 7ff0000000000000 = 7ff8000000000000 +#30: xsmulsp 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsmulsp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsmulsp 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsmulsp 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#34: xsmulsp 0123214569900000 8000000000000000 = 8000000000000000 +#35: xsmulsp 0123214569900000 0000000000000000 = 0000000000000000 +#36: xsmulsp 0123214569900000 404f000000000000 = 0000000000000000 +#37: xsmulsp 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsmulsp 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsmulsp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsmulsp 7ff0000000000000 fff0000000000000 = fff0000000000000 +#41: xsmulsp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsmulsp 7ff0000000000000 8000000000000000 = 7ff8000000000000 +#43: xsmulsp 7ff0000000000000 0000000000000000 = 7ff8000000000000 +#44: xsmulsp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsmulsp 7ff0000000000000 7ff0000000000000 = 7ff0000000000000 +#46: xsmulsp 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsmulsp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsmulsp fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsmulsp fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsmulsp fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsmulsp fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsmulsp fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsmulsp fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsmulsp fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsmulsp fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsmulsp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsmulsp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsmulsp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsmulsp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsmulsp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsmulsp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsmulsp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsmulsp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsdivsp fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsdivsp fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsdivsp fff0000000000000 8000000000000000 = 7ff0000000000000 +#3: xsdivsp fff0000000000000 0000000000000000 = fff0000000000000 +#4: xsdivsp fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsdivsp fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsdivsp fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsdivsp fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsdivsp c0d0650f5a07b353 fff0000000000000 = 0000000000000000 +#9: xsdivsp c0d0650f5a07b353 c0d0650f5a07b353 = 3ff0000000000000 +#10: xsdivsp c0d0650f5a07b353 8000000000000000 = 7ff0000000000000 +#11: xsdivsp c0d0650f5a07b353 0000000000000000 = fff0000000000000 +#12: xsdivsp c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#13: xsdivsp c0d0650f5a07b353 7ff0000000000000 = 8000000000000000 +#14: xsdivsp c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsdivsp c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsdivsp 8000000000000000 fff0000000000000 = 0000000000000000 +#17: xsdivsp 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#18: xsdivsp 8000000000000000 8000000000000000 = 7ff8000000000000 +#19: xsdivsp 8000000000000000 0000000000000000 = 7ff8000000000000 +#20: xsdivsp 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsdivsp 8000000000000000 7ff0000000000000 = 8000000000000000 +#22: xsdivsp 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsdivsp 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsdivsp 0000000000000000 fff0000000000000 = 8000000000000000 +#25: xsdivsp 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#26: xsdivsp 0000000000000000 8000000000000000 = 7ff8000000000000 +#27: xsdivsp 0000000000000000 0000000000000000 = 7ff8000000000000 +#28: xsdivsp 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsdivsp 0000000000000000 7ff0000000000000 = 0000000000000000 +#30: xsdivsp 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsdivsp 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsdivsp 0123214569900000 fff0000000000000 = 8000000000000000 +#33: xsdivsp 0123214569900000 c0d0650f5a07b353 = 8000000000000000 +#34: xsdivsp 0123214569900000 8000000000000000 = fff0000000000000 +#35: xsdivsp 0123214569900000 0000000000000000 = 7ff0000000000000 +#36: xsdivsp 0123214569900000 404f000000000000 = 0000000000000000 +#37: xsdivsp 0123214569900000 7ff0000000000000 = 0000000000000000 +#38: xsdivsp 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsdivsp 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsdivsp 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsdivsp 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsdivsp 7ff0000000000000 8000000000000000 = fff0000000000000 +#43: xsdivsp 7ff0000000000000 0000000000000000 = 7ff0000000000000 +#44: xsdivsp 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsdivsp 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsdivsp 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsdivsp 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsdivsp fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsdivsp fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsdivsp fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsdivsp fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsdivsp fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsdivsp fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsdivsp fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsdivsp fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsdivsp fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsdivsp fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsdivsp fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsdivsp fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsdivsp fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsdivsp fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsdivsp fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsdivsp fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmaddasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#1: xsnmaddasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmaddasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmaddasp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmaddasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmaddasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#6: xsnmaddasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsnmaddasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmaddasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = 7ff0000000000000 +#9: xsnmaddasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = 40d0650f60000000 +#10: xsnmaddasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#11: xsnmaddasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 0000000000000000 +#12: xsnmaddasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#13: xsnmaddasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = fff0000000000000 +#14: xsnmaddasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsnmaddasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmaddasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#17: xsnmaddasp c0d0650f5a07b353 8000000000000000 0123214569900000 = 40d0650f60000000 +#18: xsnmaddasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmaddasp 0000000000000000 8000000000000000 0123214569900000 = 8000000000000000 +#20: xsnmaddasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#21: xsnmaddasp 7ff0000000000000 8000000000000000 0123214569900000 = fff0000000000000 +#22: xsnmaddasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsnmaddasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmaddasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#25: xsnmaddasp c0d0650f5a07b353 0000000000000000 0123214569900000 = 40d0650f60000000 +#26: xsnmaddasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#27: xsnmaddasp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmaddasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#29: xsnmaddasp 7ff0000000000000 0000000000000000 0123214569900000 = fff0000000000000 +#30: xsnmaddasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsnmaddasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmaddasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = 7ff0000000000000 +#33: xsnmaddasp c0d0650f5a07b353 0123214569900000 0123214569900000 = 40d0650f60000000 +#34: xsnmaddasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 0000000000000000 +#35: xsnmaddasp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmaddasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = c04f000000000000 +#37: xsnmaddasp 7ff0000000000000 0123214569900000 0123214569900000 = fff0000000000000 +#38: xsnmaddasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsnmaddasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmaddasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#41: xsnmaddasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmaddasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmaddasp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmaddasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmaddasp 7ff0000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#46: xsnmaddasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsnmaddasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmaddasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsnmaddasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsnmaddasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsnmaddasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsnmaddasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsnmaddasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsnmaddasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsnmaddasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsnmaddasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmaddasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmaddasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmaddasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmaddasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmaddasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmaddasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmaddasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = 7ff8000000000000 +#1: xsnmaddmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmaddmsp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmaddmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff8000000000000 +#6: xsnmaddmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsnmaddmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = 7ff0000000000000 +#9: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = 40d0650f60000000 +#10: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d00000000 +#11: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 0000000000000000 +#12: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d00000000 +#13: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = fff0000000000000 +#14: xsnmaddmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsnmaddmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmaddmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = 7ff0000000000000 +#17: xsnmaddmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#18: xsnmaddmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmaddmsp 0123214569900000 8000000000000000 0000000000000000 = 8000000000000000 +#20: xsnmaddmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 8000000000000000 +#21: xsnmaddmsp 0123214569900000 8000000000000000 7ff0000000000000 = fff0000000000000 +#22: xsnmaddmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsnmaddmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmaddmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = 7ff0000000000000 +#25: xsnmaddmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 40d0650f60000000 +#26: xsnmaddmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 0000000000000000 +#27: xsnmaddmsp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmaddmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 8000000000000000 +#29: xsnmaddmsp 0123214569900000 0000000000000000 7ff0000000000000 = fff0000000000000 +#30: xsnmaddmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsnmaddmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmaddmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = 7ff0000000000000 +#33: xsnmaddmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = 40d0650f60000000 +#34: xsnmaddmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 0000000000000000 +#35: xsnmaddmsp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmaddmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = c04f000000000000 +#37: xsnmaddmsp 0123214569900000 0123214569900000 7ff0000000000000 = fff0000000000000 +#38: xsnmaddmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsnmaddmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff0000000000000 +#41: xsnmaddmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmaddmsp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmaddmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = fff0000000000000 +#46: xsnmaddmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsnmaddmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsnmaddmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsnmaddmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsnmaddmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsnmaddmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsnmaddmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmaddmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmaddmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmaddmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmaddmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmaddmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + +#0: xsnmsubasp fff0000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#1: xsnmsubasp c0d0650f5a07b353 fff0000000000000 0123214569900000 = 7ff0000000000000 +#2: xsnmsubasp 8000000000000000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#3: xsnmsubasp 0000000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#4: xsnmsubasp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#5: xsnmsubasp 7ff0000000000000 fff0000000000000 0123214569900000 = 7ff0000000000000 +#6: xsnmsubasp 7ff7ffffffffffff fff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#7: xsnmsubasp 7ff8000000000000 fff0000000000000 0123214569900000 = 7ff8000000000000 +#8: xsnmsubasp fff0000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = fff0000000000000 +#9: xsnmsubasp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c0d0650f60000000 +#10: xsnmsubasp 8000000000000000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#11: xsnmsubasp 0000000000000000 c0d0650f5a07b353 0123214569900000 = 0000000000000000 +#12: xsnmsubasp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c1b0cc9d00000000 +#13: xsnmsubasp 7ff0000000000000 c0d0650f5a07b353 0123214569900000 = 7ff0000000000000 +#14: xsnmsubasp 7ff7ffffffffffff c0d0650f5a07b353 c0d0650f5a07b353 = 7fffffffe0000000 +#15: xsnmsubasp 7ff8000000000000 c0d0650f5a07b353 0123214569900000 = 7ff8000000000000 +#16: xsnmsubasp fff0000000000000 8000000000000000 c0d0650f5a07b353 = fff0000000000000 +#17: xsnmsubasp c0d0650f5a07b353 8000000000000000 0123214569900000 = c0d0650f60000000 +#18: xsnmsubasp 8000000000000000 8000000000000000 c0d0650f5a07b353 = 8000000000000000 +#19: xsnmsubasp 0000000000000000 8000000000000000 0123214569900000 = 0000000000000000 +#20: xsnmsubasp 0123214569900000 8000000000000000 c0d0650f5a07b353 = 0000000000000000 +#21: xsnmsubasp 7ff0000000000000 8000000000000000 0123214569900000 = 7ff0000000000000 +#22: xsnmsubasp 7ff7ffffffffffff 8000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#23: xsnmsubasp 7ff8000000000000 8000000000000000 0123214569900000 = 7ff8000000000000 +#24: xsnmsubasp fff0000000000000 0000000000000000 c0d0650f5a07b353 = fff0000000000000 +#25: xsnmsubasp c0d0650f5a07b353 0000000000000000 0123214569900000 = c0d0650f60000000 +#26: xsnmsubasp 8000000000000000 0000000000000000 c0d0650f5a07b353 = 8000000000000000 +#27: xsnmsubasp 0000000000000000 0000000000000000 0123214569900000 = 8000000000000000 +#28: xsnmsubasp 0123214569900000 0000000000000000 c0d0650f5a07b353 = 0000000000000000 +#29: xsnmsubasp 7ff0000000000000 0000000000000000 0123214569900000 = 7ff0000000000000 +#30: xsnmsubasp 7ff7ffffffffffff 0000000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#31: xsnmsubasp 7ff8000000000000 0000000000000000 0123214569900000 = 7ff8000000000000 +#32: xsnmsubasp fff0000000000000 0123214569900000 c0d0650f5a07b353 = fff0000000000000 +#33: xsnmsubasp c0d0650f5a07b353 0123214569900000 0123214569900000 = c0d0650f60000000 +#34: xsnmsubasp 8000000000000000 0123214569900000 c0d0650f5a07b353 = 0000000000000000 +#35: xsnmsubasp 0000000000000000 0123214569900000 0123214569900000 = 8000000000000000 +#36: xsnmsubasp 404f000000000000 0123214569900000 c0d0650f5a07b353 = 404f000000000000 +#37: xsnmsubasp 7ff0000000000000 0123214569900000 0123214569900000 = 7ff0000000000000 +#38: xsnmsubasp 7ff7ffffffffffff 0123214569900000 c0d0650f5a07b353 = 7fffffffe0000000 +#39: xsnmsubasp 7ff8000000000000 0123214569900000 0123214569900000 = 7ff8000000000000 +#40: xsnmsubasp fff0000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff8000000000000 +#41: xsnmsubasp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = fff0000000000000 +#42: xsnmsubasp 8000000000000000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#43: xsnmsubasp 0000000000000000 7ff0000000000000 0123214569900000 = fff0000000000000 +#44: xsnmsubasp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#45: xsnmsubasp 7ff0000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#46: xsnmsubasp 7ff7ffffffffffff 7ff0000000000000 c0d0650f5a07b353 = 7fffffffe0000000 +#47: xsnmsubasp 7ff8000000000000 7ff0000000000000 0123214569900000 = 7ff8000000000000 +#48: xsnmsubasp fff0000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#49: xsnmsubasp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#50: xsnmsubasp 8000000000000000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#51: xsnmsubasp 0000000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#52: xsnmsubasp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#53: xsnmsubasp 7ff0000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#54: xsnmsubasp 7ff7ffffffffffff fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#55: xsnmsubasp 7ff8000000000000 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#56: xsnmsubasp fff0000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#57: xsnmsubasp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#58: xsnmsubasp 8000000000000000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#59: xsnmsubasp 0000000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#60: xsnmsubasp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#61: xsnmsubasp 7ff0000000000000 fff8000000000000 0123214569900000 = fff8000000000000 +#62: xsnmsubasp 7ff7ffffffffffff fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#63: xsnmsubasp 7ff8000000000000 fff8000000000000 0123214569900000 = fff8000000000000 + +#0: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 fff0000000000000 = fff0000000000000 +#1: xsnmsubmsp 0123214569900000 fff0000000000000 c0d0650f5a07b353 = 7ff0000000000000 +#2: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 8000000000000000 = fff0000000000000 +#3: xsnmsubmsp 0123214569900000 fff0000000000000 0000000000000000 = 7ff0000000000000 +#4: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 0123214569900000 = fff0000000000000 +#5: xsnmsubmsp 0123214569900000 fff0000000000000 7ff0000000000000 = 7ff0000000000000 +#6: xsnmsubmsp c0d0650f5a07b353 fff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#7: xsnmsubmsp 0123214569900000 fff0000000000000 7ff8000000000000 = 7ff8000000000000 +#8: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 fff0000000000000 = fff0000000000000 +#9: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 c0d0650f5a07b353 = c0d0650f60000000 +#10: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 8000000000000000 = c1b0cc9d00000000 +#11: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 0000000000000000 = 0000000000000000 +#12: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 0123214569900000 = c1b0cc9d00000000 +#13: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 7ff0000000000000 = 7ff0000000000000 +#14: xsnmsubmsp c0d0650f5a07b353 c0d0650f5a07b353 7ff7ffffffffffff = 7fffffffe0000000 +#15: xsnmsubmsp 0123214569900000 c0d0650f5a07b353 7ff8000000000000 = 7ff8000000000000 +#16: xsnmsubmsp c0d0650f5a07b353 8000000000000000 fff0000000000000 = fff0000000000000 +#17: xsnmsubmsp 0123214569900000 8000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#18: xsnmsubmsp c0d0650f5a07b353 8000000000000000 8000000000000000 = 8000000000000000 +#19: xsnmsubmsp 0123214569900000 8000000000000000 0000000000000000 = 0000000000000000 +#20: xsnmsubmsp c0d0650f5a07b353 8000000000000000 0123214569900000 = 0000000000000000 +#21: xsnmsubmsp 0123214569900000 8000000000000000 7ff0000000000000 = 7ff0000000000000 +#22: xsnmsubmsp c0d0650f5a07b353 8000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#23: xsnmsubmsp 0123214569900000 8000000000000000 7ff8000000000000 = 7ff8000000000000 +#24: xsnmsubmsp c0d0650f5a07b353 0000000000000000 fff0000000000000 = fff0000000000000 +#25: xsnmsubmsp 0123214569900000 0000000000000000 c0d0650f5a07b353 = c0d0650f60000000 +#26: xsnmsubmsp c0d0650f5a07b353 0000000000000000 8000000000000000 = 8000000000000000 +#27: xsnmsubmsp 0123214569900000 0000000000000000 0000000000000000 = 8000000000000000 +#28: xsnmsubmsp c0d0650f5a07b353 0000000000000000 0123214569900000 = 0000000000000000 +#29: xsnmsubmsp 0123214569900000 0000000000000000 7ff0000000000000 = 7ff0000000000000 +#30: xsnmsubmsp c0d0650f5a07b353 0000000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#31: xsnmsubmsp 0123214569900000 0000000000000000 7ff8000000000000 = 7ff8000000000000 +#32: xsnmsubmsp c0d0650f5a07b353 0123214569900000 fff0000000000000 = fff0000000000000 +#33: xsnmsubmsp 0123214569900000 0123214569900000 c0d0650f5a07b353 = c0d0650f60000000 +#34: xsnmsubmsp c0d0650f5a07b353 0123214569900000 8000000000000000 = 0000000000000000 +#35: xsnmsubmsp 0123214569900000 0123214569900000 0000000000000000 = 8000000000000000 +#36: xsnmsubmsp c0d0650f5a07b353 0123214569900000 404f000000000000 = 404f000000000000 +#37: xsnmsubmsp 0123214569900000 0123214569900000 7ff0000000000000 = 7ff0000000000000 +#38: xsnmsubmsp c0d0650f5a07b353 0123214569900000 7ff7ffffffffffff = 7fffffffe0000000 +#39: xsnmsubmsp 0123214569900000 0123214569900000 7ff8000000000000 = 7ff8000000000000 +#40: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 fff0000000000000 = 7ff8000000000000 +#41: xsnmsubmsp 0123214569900000 7ff0000000000000 c0d0650f5a07b353 = fff0000000000000 +#42: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 8000000000000000 = 7ff0000000000000 +#43: xsnmsubmsp 0123214569900000 7ff0000000000000 0000000000000000 = fff0000000000000 +#44: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 0123214569900000 = 7ff0000000000000 +#45: xsnmsubmsp 0123214569900000 7ff0000000000000 7ff0000000000000 = 7ff8000000000000 +#46: xsnmsubmsp c0d0650f5a07b353 7ff0000000000000 7ff7ffffffffffff = 7fffffffe0000000 +#47: xsnmsubmsp 0123214569900000 7ff0000000000000 7ff8000000000000 = 7ff8000000000000 +#48: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff fff0000000000000 = ffffffffe0000000 +#49: xsnmsubmsp 0123214569900000 fff7ffffffffffff c0d0650f5a07b353 = ffffffffe0000000 +#50: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 8000000000000000 = ffffffffe0000000 +#51: xsnmsubmsp 0123214569900000 fff7ffffffffffff 0000000000000000 = ffffffffe0000000 +#52: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 0123214569900000 = ffffffffe0000000 +#53: xsnmsubmsp 0123214569900000 fff7ffffffffffff 7ff0000000000000 = ffffffffe0000000 +#54: xsnmsubmsp c0d0650f5a07b353 fff7ffffffffffff 7ff7ffffffffffff = ffffffffe0000000 +#55: xsnmsubmsp 0123214569900000 fff7ffffffffffff 7ff8000000000000 = ffffffffe0000000 +#56: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 fff0000000000000 = fff8000000000000 +#57: xsnmsubmsp 0123214569900000 fff8000000000000 c0d0650f5a07b353 = fff8000000000000 +#58: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 8000000000000000 = fff8000000000000 +#59: xsnmsubmsp 0123214569900000 fff8000000000000 0000000000000000 = fff8000000000000 +#60: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 0123214569900000 = fff8000000000000 +#61: xsnmsubmsp 0123214569900000 fff8000000000000 7ff0000000000000 = fff8000000000000 +#62: xsnmsubmsp c0d0650f5a07b353 fff8000000000000 7ff7ffffffffffff = fff8000000000000 +#63: xsnmsubmsp 0123214569900000 fff8000000000000 7ff8000000000000 = fff8000000000000 + + Test VSX vector and scalar single argument instructions -#0: xscvdpspn conv(3fd8000000000000) = 3ec0000000000000 -#1: xscvdpspn conv(404f000000000000) = 4278000000000000 -#2: xscvdpspn conv(0018000000b77501) = 0000000000000000 -#3: xscvdpspn conv(7fe800000000051b) = 7f40000000000000 -#4: xscvdpspn conv(0123214569900000) = 0000000000000000 -#5: xscvdpspn conv(0000000000000000) = 0000000000000000 -#6: xscvdpspn conv(8000000000000000) = 8000000000000000 -#7: xscvdpspn conv(7ff0000000000000) = 7f80000000000000 -#8: xscvdpspn conv(fff0000000000000) = ff80000000000000 -#9: xscvdpspn conv(7ff7ffffffffffff) = 7fbfffff00000000 -#10: xscvdpspn conv(fff7ffffffffffff) = ffbfffff00000000 -#11: xscvdpspn conv(7ff8000000000000) = 7fc0000000000000 -#12: xscvdpspn conv(fff8000000000000) = ffc0000000000000 -#13: xscvdpspn conv(8008340000078000) = 8000000000000000 -#14: xscvdpspn conv(c0d0650f5a07b353) = c683287a00000000 -#15: xscvdpspn conv(41232585a9900000) = 49192c2d00000000 -#16: xscvdpspn conv(41382511a2000000) = 49c1288d00000000 -#17: xscvdpspn conv(40312ef5a9300000) = 418977ad00000000 -#18: xscvdpspn conv(40514bf5d2300000) = 428a5fae00000000 -#19: xscvdpspn conv(40976bf982440000) = 44bb5fcc00000000 +#0: xscvdpspn conv(3ec00000) = 3ec00000 +#1: xscvdpspn conv(42780000) = 42780000 +#2: xscvdpspn conv(00000000) = 00000000 +#3: xscvdpspn conv(7f800000) = 7f800000 +#4: xscvdpspn conv(00000000) = 00000000 +#5: xscvdpspn conv(00000000) = 00000000 +#6: xscvdpspn conv(80000000) = 80000000 +#7: xscvdpspn conv(7f800000) = 7f800000 +#8: xscvdpspn conv(ff800000) = ff800000 +#9: xscvdpspn conv(7fbfffff) = 7fbfffff +#10: xscvdpspn conv(ffbfffff) = ffbfffff +#11: xscvdpspn conv(7fc00000) = 7fc00000 +#12: xscvdpspn conv(ffc00000) = ffc00000 +#13: xscvdpspn conv(80000000) = 80000000 +#14: xscvdpspn conv(c683287b) = c683287b +#15: xscvdpspn conv(49192c2d) = 49192c2d +#16: xscvdpspn conv(49c1288d) = 49c1288d +#17: xscvdpspn conv(418977ad) = 418977ad +#18: xscvdpspn conv(428a5faf) = 428a5faf +#19: xscvdpspn conv(44bb5fcc) = 44bb5fcc #0: xscvspdpn conv(3ec00000) = 3fd8000000000000 #1: xscvspdpn conv(42780000) = 404f000000000000 @@ -41,4 +693,292 @@ Test VSX vector and scalar single argument instructions #18: xscvspdpn conv(428a5faf) = 40514bf5e0000000 #19: xscvspdpn conv(44bb5fcc) = 40976bf980000000 -Testcase PASSED +#0: xsresp 1/x(3fd8000000000000) ==> PASS) +#1: xsresp 1/x(404f000000000000) ==> PASS) +#2: xsresp 1/x(0018000000b77501) ==> PASS) +#3: xsresp 1/x(7fe800000000051b) ==> PASS) +#4: xsresp 1/x(0123214569900000) ==> PASS) +#5: xsresp 1/x(0000000000000000) ==> PASS) +#6: xsresp 1/x(8000000000000000) ==> PASS) +#7: xsresp 1/x(7ff0000000000000) ==> PASS) +#8: xsresp 1/x(fff0000000000000) ==> PASS) +#9: xsresp 1/x(7ff7ffffffffffff) ==> PASS) +#10: xsresp 1/x(fff7ffffffffffff) ==> PASS) +#11: xsresp 1/x(7ff8000000000000) ==> PASS) +#12: xsresp 1/x(fff8000000000000) ==> PASS) +#13: xsresp 1/x(8008340000078000) ==> PASS) +#14: xsresp 1/x(c0d0650f5a07b353) ==> PASS) +#15: xsresp 1/x(41232585a9900000) ==> PASS) +#16: xsresp 1/x(41382511a2000000) ==> PASS) +#17: xsresp 1/x(40312ef5a9300000) ==> PASS) +#18: xsresp 1/x(40514bf5d2300000) ==> PASS) +#19: xsresp 1/x(40976bf982440000) ==> PASS) + +#0: xsrsp round(3fd8000000000000) = 3fd8000000000000 +#1: xsrsp round(404f000000000000) = 404f000000000000 +#2: xsrsp round(0018000000b77501) = 0000000000000000 +#3: xsrsp round(7fe800000000051b) = 7ff0000000000000 +#4: xsrsp round(0123214569900000) = 0000000000000000 +#5: xsrsp round(0000000000000000) = 0000000000000000 +#6: xsrsp round(8000000000000000) = 8000000000000000 +#7: xsrsp round(7ff0000000000000) = 7ff0000000000000 +#8: xsrsp round(fff0000000000000) = fff0000000000000 +#9: xsrsp round(7ff7ffffffffffff) = 7fffffffe0000000 +#10: xsrsp round(fff7ffffffffffff) = ffffffffe0000000 +#11: xsrsp round(7ff8000000000000) = 7ff8000000000000 +#12: xsrsp round(fff8000000000000) = fff8000000000000 +#13: xsrsp round(8008340000078000) = 8000000000000000 +#14: xsrsp round(c0d0650f5a07b353) = c0d0650f60000000 +#15: xsrsp round(41232585a9900000) = 41232585a0000000 +#16: xsrsp round(41382511a2000000) = 41382511a0000000 +#17: xsrsp round(40312ef5a9300000) = 40312ef5a0000000 +#18: xsrsp round(40514bf5d2300000) = 40514bf5e0000000 +#19: xsrsp round(40976bf982440000) = 40976bf980000000 + +#0: xsrsqrtesp 1/sqrt(3fd8000000000000) ==> PASS) +#1: xsrsqrtesp 1/sqrt(404f000000000000) ==> PASS) +#2: xsrsqrtesp 1/sqrt(0018000000b77501) ==> PASS) +#3: xsrsqrtesp 1/sqrt(7fe800000000051b) ==> PASS) +#4: xsrsqrtesp 1/sqrt(0123214569900000) ==> PASS) +#5: xsrsqrtesp 1/sqrt(0000000000000000) ==> PASS) +#6: xsrsqrtesp 1/sqrt(8000000000000000) ==> PASS) +#7: xsrsqrtesp 1/sqrt(7ff0000000000000) ==> PASS) +#8: xsrsqrtesp 1/sqrt(fff0000000000000) ==> PASS) +#9: xsrsqrtesp 1/sqrt(7ff7ffffffffffff) ==> PASS) +#10: xsrsqrtesp 1/sqrt(fff7ffffffffffff) ==> PASS) +#11: xsrsqrtesp 1/sqrt(7ff8000000000000) ==> PASS) +#12: xsrsqrtesp 1/sqrt(fff8000000000000) ==> PASS) +#13: xsrsqrtesp 1/sqrt(8008340000078000) ==> PASS) +#14: xsrsqrtesp 1/sqrt(c0d0650f5a07b353) ==> PASS) +#15: xsrsqrtesp 1/sqrt(41232585a9900000) ==> PASS) +#16: xsrsqrtesp 1/sqrt(41382511a2000000) ==> PASS) +#17: xsrsqrtesp 1/sqrt(40312ef5a9300000) ==> PASS) +#18: xsrsqrtesp 1/sqrt(40514bf5d2300000) ==> PASS) +#19: xsrsqrtesp 1/sqrt(40976bf982440000) ==> PASS) + +#0: xssqrtsp sqrt(3fd8000000000000) = 3fe3988e20000000 +#1: xssqrtsp sqrt(404f000000000000) = 401f7efbe0000000 +#2: xssqrtsp sqrt(0018000000b77501) = 0000000000000000 +#3: xssqrtsp sqrt(7fe800000000051b) = 7ff0000000000000 +#4: xssqrtsp sqrt(0123214569900000) = 0000000000000000 +#5: xssqrtsp sqrt(0000000000000000) = 0000000000000000 +#6: xssqrtsp sqrt(8000000000000000) = 8000000000000000 +#7: xssqrtsp sqrt(7ff0000000000000) = 7ff0000000000000 +#8: xssqrtsp sqrt(fff0000000000000) = 7ff8000000000000 +#9: xssqrtsp sqrt(7ff7ffffffffffff) = 7fffffffe0000000 +#10: xssqrtsp sqrt(fff7ffffffffffff) = ffffffffe0000000 +#11: xssqrtsp sqrt(7ff8000000000000) = 7ff8000000000000 +#12: xssqrtsp sqrt(fff8000000000000) = fff8000000000000 +#13: xssqrtsp sqrt(8008340000078000) = 7ff8000000000000 +#14: xssqrtsp sqrt(c0d0650f5a07b353) = 7ff8000000000000 +#15: xssqrtsp sqrt(41232585a9900000) = 4088c0a920000000 +#16: xssqrtsp sqrt(41382511a2000000) = 4093a7aa60000000 +#17: xssqrtsp sqrt(40312ef5a9300000) = 401094c720000000 +#18: xssqrtsp sqrt(40514bf5d2300000) = 4020a2bf40000000 +#19: xssqrtsp sqrt(40976bf982440000) = 40435bc160000000 + +Test VSX logic instructions +#0: xxleqv (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> ffffffff ffffffff ffffffff ffffffff +#1: xxlorc (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> ffffffff ffffffff ffffffff ffffffff +#2: xxlnand (80000001 89abcdef 00112233 74556677, 80000001 89abcdef 00112233 74556677) ==> 7ffffffe 76543210 ffeeddcc 8baa9988 + +Test VSX scalar integer conversion instructions +#0: xscvsxdsp 80000001 => c3e0000000000000 +#1: xscvsxdsp 89abcdef => c3dd950c80000000 +#2: xscvsxdsp 00112233 => 4331223380000000 +#3: xscvsxdsp 74556677 => 43dd1559a0000000 +#4: xscvsxdsp 00001abb => 42babb89a0000000 +#5: xscvsxdsp 00000001 => 41f89abce0000000 +#6: xscvsxdsp 31929394 => 43c8c949c0000000 +#7: xscvsxdsp a1a2a3a4 => c3d7975720000000 + +#0: xscvuxdsp 80000001 => 43e0000000000000 +#1: xscvuxdsp 89abcdef => 43e13579c0000000 +#2: xscvuxdsp 00112233 => 4331223380000000 +#3: xscvuxdsp 74556677 => 43dd1559a0000000 +#4: xscvuxdsp 00001abb => 42babb89a0000000 +#5: xscvuxdsp 00000001 => 41f89abce0000000 +#6: xscvuxdsp 31929394 => 43c8c949c0000000 +#7: xscvuxdsp a1a2a3a4 => 43e4345480000000 + + +Test VSX load/store dp to sp instructions +stxsspx: 3fd8000000000000 ==> 3ec00000 +stxsspx: 7ff0000000000000 ==> 7f800000 +stxsspx: 8000000000000000 ==> 80000000 +stxsspx: 7ff7ffffe0000000 ==> 7fbfffff +stxsspx: fff8000000000000 ==> ffc00000 +stxsspx: 41232585a0000000 ==> 49192c2d +stxsspx: 40514bf5e0000000 ==> 428a5faf + + +stxsiwx: 80000001 ==> 80000001 +stxsiwx: 89abcdef ==> 89abcdef +stxsiwx: 00112233 ==> 00112233 +stxsiwx: 74556677 ==> 74556677 +stxsiwx: 00001abb ==> 00001abb +stxsiwx: 00000001 ==> 00000001 +stxsiwx: 31929394 ==> 31929394 +stxsiwx: a1a2a3a4 ==> a1a2a3a4 + + +lxsiwax: 80000001 ==> ffffffff80000001 +lxsiwax: 89abcdef ==> ffffffff89abcdef +lxsiwax: 00112233 ==> 0000000000112233 +lxsiwax: 74556677 ==> 0000000074556677 +lxsiwax: 00001abb ==> 0000000000001abb +lxsiwax: 00000001 ==> 0000000000000001 +lxsiwax: 31929394 ==> 0000000031929394 +lxsiwax: a1a2a3a4 ==> ffffffffa1a2a3a4 + + +lxsiwzx: 89abcdef ==> 00000000abcdef00 +lxsiwzx: 00112233 ==> 0000000011223374 +lxsiwzx: 74556677 ==> 0000000055667700 +lxsiwzx: 00001abb ==> 00000000001abb00 +lxsiwzx: 00000001 ==> 0000000000000131 +lxsiwzx: 31929394 ==> 00000000929394a1 +lxsiwzx: a1a2a3a4 ==> 00000000a2a3a400 +lxsiwzx: 00000000 ==> 0000000000000010 + + +lxsspx: 3ec00000 ==> 3fd8000000000000 +lxsspx: 7f800000 ==> 7ff0000000000000 +lxsspx: 80000000 ==> 8000000000000000 +lxsspx: 7fbfffff ==> 7ff7ffffe0000000 +lxsspx: ffc00000 ==> fff8000000000000 +lxsspx: 49192c2d ==> 41232585a0000000 +lxsspx: 428a5faf ==> 40514bf5e0000000 + + +Test VSX vector and scalar two argument instructions +#0: xssubsp fff0000000000000,fff0000000000000 => 7ff8000000000000 +#1: xssubsp fff0000000000000,c0d0650f5a07b353 => fff0000000000000 +#2: xssubsp fff0000000000000,8000000000000000 => fff0000000000000 +#3: xssubsp fff0000000000000,0000000000000000 => fff0000000000000 +#4: xssubsp fff0000000000000,0123214569900000 => fff0000000000000 +#5: xssubsp fff0000000000000,7ff0000000000000 => fff0000000000000 +#6: xssubsp fff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#7: xssubsp fff0000000000000,7ff8000000000000 => 7ff8000000000000 +#8: xssubsp c0d0650f5a07b353,fff0000000000000 => 7ff0000000000000 +#9: xssubsp c0d0650f5a07b353,c0d0650f5a07b353 => 0000000000000000 +#10: xssubsp c0d0650f5a07b353,8000000000000000 => c0d0650f60000000 +#11: xssubsp c0d0650f5a07b353,0000000000000000 => c0d0650f60000000 +#12: xssubsp c0d0650f5a07b353,0123214569900000 => c0d0650f60000000 +#13: xssubsp c0d0650f5a07b353,7ff0000000000000 => fff0000000000000 +#14: xssubsp c0d0650f5a07b353,7ff7ffffffffffff => 7fffffffe0000000 +#15: xssubsp c0d0650f5a07b353,7ff8000000000000 => 7ff8000000000000 +#16: xssubsp 8000000000000000,fff0000000000000 => 7ff0000000000000 +#17: xssubsp 8000000000000000,c0d0650f5a07b353 => 40d0650f60000000 +#18: xssubsp 8000000000000000,8000000000000000 => 0000000000000000 +#19: xssubsp 8000000000000000,0000000000000000 => 8000000000000000 +#20: xssubsp 8000000000000000,0123214569900000 => 8000000000000000 +#21: xssubsp 8000000000000000,7ff0000000000000 => fff0000000000000 +#22: xssubsp 8000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#23: xssubsp 8000000000000000,7ff8000000000000 => 7ff8000000000000 +#24: xssubsp 0000000000000000,fff0000000000000 => 7ff0000000000000 +#25: xssubsp 0000000000000000,c0d0650f5a07b353 => 40d0650f60000000 +#26: xssubsp 0000000000000000,8000000000000000 => 0000000000000000 +#27: xssubsp 0000000000000000,0000000000000000 => 0000000000000000 +#28: xssubsp 0000000000000000,0123214569900000 => 8000000000000000 +#29: xssubsp 0000000000000000,7ff0000000000000 => fff0000000000000 +#30: xssubsp 0000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#31: xssubsp 0000000000000000,7ff8000000000000 => 7ff8000000000000 +#32: xssubsp 0123214569900000,fff0000000000000 => 7ff0000000000000 +#33: xssubsp 0123214569900000,c0d0650f5a07b353 => 40d0650f60000000 +#34: xssubsp 0123214569900000,8000000000000000 => 0000000000000000 +#35: xssubsp 0123214569900000,0000000000000000 => 0000000000000000 +#36: xssubsp 0123214569900000,404f000000000000 => c04f000000000000 +#37: xssubsp 0123214569900000,7ff0000000000000 => fff0000000000000 +#38: xssubsp 0123214569900000,7ff7ffffffffffff => 7fffffffe0000000 +#39: xssubsp 0123214569900000,7ff8000000000000 => 7ff8000000000000 +#40: xssubsp 7ff0000000000000,fff0000000000000 => 7ff0000000000000 +#41: xssubsp 7ff0000000000000,c0d0650f5a07b353 => 7ff0000000000000 +#42: xssubsp 7ff0000000000000,8000000000000000 => 7ff0000000000000 +#43: xssubsp 7ff0000000000000,0000000000000000 => 7ff0000000000000 +#44: xssubsp 7ff0000000000000,0123214569900000 => 7ff0000000000000 +#45: xssubsp 7ff0000000000000,7ff0000000000000 => 7ff8000000000000 +#46: xssubsp 7ff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#47: xssubsp 7ff0000000000000,7ff8000000000000 => 7ff8000000000000 +#48: xssubsp fff7ffffffffffff,fff0000000000000 => ffffffffe0000000 +#49: xssubsp fff7ffffffffffff,c0d0650f5a07b353 => ffffffffe0000000 +#50: xssubsp fff7ffffffffffff,8000000000000000 => ffffffffe0000000 +#51: xssubsp fff7ffffffffffff,0000000000000000 => ffffffffe0000000 +#52: xssubsp fff7ffffffffffff,0123214569900000 => ffffffffe0000000 +#53: xssubsp fff7ffffffffffff,7ff0000000000000 => ffffffffe0000000 +#54: xssubsp fff7ffffffffffff,7ff7ffffffffffff => ffffffffe0000000 +#55: xssubsp fff7ffffffffffff,7ff8000000000000 => ffffffffe0000000 +#56: xssubsp fff8000000000000,fff0000000000000 => fff8000000000000 +#57: xssubsp fff8000000000000,c0d0650f5a07b353 => fff8000000000000 +#58: xssubsp fff8000000000000,8000000000000000 => fff8000000000000 +#59: xssubsp fff8000000000000,0000000000000000 => fff8000000000000 +#60: xssubsp fff8000000000000,0123214569900000 => fff8000000000000 +#61: xssubsp fff8000000000000,7ff0000000000000 => fff8000000000000 +#62: xssubsp fff8000000000000,7ff7ffffffffffff => fff8000000000000 +#63: xssubsp fff8000000000000,7ff8000000000000 => fff8000000000000 + +#0: xsaddsp fff0000000000000,fff0000000000000 => fff0000000000000 +#1: xsaddsp fff0000000000000,c0d0650f5a07b353 => fff0000000000000 +#2: xsaddsp fff0000000000000,8000000000000000 => fff0000000000000 +#3: xsaddsp fff0000000000000,0000000000000000 => fff0000000000000 +#4: xsaddsp fff0000000000000,0123214569900000 => fff0000000000000 +#5: xsaddsp fff0000000000000,7ff0000000000000 => 7ff8000000000000 +#6: xsaddsp fff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#7: xsaddsp fff0000000000000,7ff8000000000000 => 7ff8000000000000 +#8: xsaddsp c0d0650f5a07b353,fff0000000000000 => fff0000000000000 +#9: xsaddsp c0d0650f5a07b353,c0d0650f5a07b353 => c0e0650f60000000 +#10: xsaddsp c0d0650f5a07b353,8000000000000000 => c0d0650f60000000 +#11: xsaddsp c0d0650f5a07b353,0000000000000000 => c0d0650f60000000 +#12: xsaddsp c0d0650f5a07b353,0123214569900000 => c0d0650f60000000 +#13: xsaddsp c0d0650f5a07b353,7ff0000000000000 => 7ff0000000000000 +#14: xsaddsp c0d0650f5a07b353,7ff7ffffffffffff => 7fffffffe0000000 +#15: xsaddsp c0d0650f5a07b353,7ff8000000000000 => 7ff8000000000000 +#16: xsaddsp 8000000000000000,fff0000000000000 => fff0000000000000 +#17: xsaddsp 8000000000000000,c0d0650f5a07b353 => c0d0650f60000000 +#18: xsaddsp 8000000000000000,8000000000000000 => 8000000000000000 +#19: xsaddsp 8000000000000000,0000000000000000 => 0000000000000000 +#20: xsaddsp 8000000000000000,0123214569900000 => 0000000000000000 +#21: xsaddsp 8000000000000000,7ff0000000000000 => 7ff0000000000000 +#22: xsaddsp 8000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#23: xsaddsp 8000000000000000,7ff8000000000000 => 7ff8000000000000 +#24: xsaddsp 0000000000000000,fff0000000000000 => fff0000000000000 +#25: xsaddsp 0000000000000000,c0d0650f5a07b353 => c0d0650f60000000 +#26: xsaddsp 0000000000000000,8000000000000000 => 0000000000000000 +#27: xsaddsp 0000000000000000,0000000000000000 => 0000000000000000 +#28: xsaddsp 0000000000000000,0123214569900000 => 0000000000000000 +#29: xsaddsp 0000000000000000,7ff0000000000000 => 7ff0000000000000 +#30: xsaddsp 0000000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#31: xsaddsp 0000000000000000,7ff8000000000000 => 7ff8000000000000 +#32: xsaddsp 0123214569900000,fff0000000000000 => fff0000000000000 +#33: xsaddsp 0123214569900000,c0d0650f5a07b353 => c0d0650f60000000 +#34: xsaddsp 0123214569900000,8000000000000000 => 0000000000000000 +#35: xsaddsp 0123214569900000,0000000000000000 => 0000000000000000 +#36: xsaddsp 0123214569900000,404f000000000000 => 404f000000000000 +#37: xsaddsp 0123214569900000,7ff0000000000000 => 7ff0000000000000 +#38: xsaddsp 0123214569900000,7ff7ffffffffffff => 7fffffffe0000000 +#39: xsaddsp 0123214569900000,7ff8000000000000 => 7ff8000000000000 +#40: xsaddsp 7ff0000000000000,fff0000000000000 => 7ff8000000000000 +#41: xsaddsp 7ff0000000000000,c0d0650f5a07b353 => 7ff0000000000000 +#42: xsaddsp 7ff0000000000000,8000000000000000 => 7ff0000000000000 +#43: xsaddsp 7ff0000000000000,0000000000000000 => 7ff0000000000000 +#44: xsaddsp 7ff0000000000000,0123214569900000 => 7ff0000000000000 +#45: xsaddsp 7ff0000000000000,7ff0000000000000 => 7ff0000000000000 +#46: xsaddsp 7ff0000000000000,7ff7ffffffffffff => 7fffffffe0000000 +#47: xsaddsp 7ff0000000000000,7ff8000000000000 => 7ff8000000000000 +#48: xsaddsp fff7ffffffffffff,fff0000000000000 => ffffffffe0000000 +#49: xsaddsp fff7ffffffffffff,c0d0650f5a07b353 => ffffffffe0000000 +#50: xsaddsp fff7ffffffffffff,8000000000000000 => ffffffffe0000000 +#51: xsaddsp fff7ffffffffffff,0000000000000000 => ffffffffe0000000 +#52: xsaddsp fff7ffffffffffff,0123214569900000 => ffffffffe0000000 +#53: xsaddsp fff7ffffffffffff,7ff0000000000000 => ffffffffe0000000 +#54: xsaddsp fff7ffffffffffff,7ff7ffffffffffff => ffffffffe0000000 +#55: xsaddsp fff7ffffffffffff,7ff8000000000000 => ffffffffe0000000 +#56: xsaddsp fff8000000000000,fff0000000000000 => fff8000000000000 +#57: xsaddsp fff8000000000000,c0d0650f5a07b353 => fff8000000000000 +#58: xsaddsp fff8000000000000,8000000000000000 => fff8000000000000 +#59: xsaddsp fff8000000000000,0000000000000000 => fff8000000000000 +#60: xsaddsp fff8000000000000,0123214569900000 => fff8000000000000 +#61: xsaddsp fff8000000000000,7ff0000000000000 => fff8000000000000 +#62: xsaddsp fff8000000000000,7ff7ffffffffffff => fff8000000000000 +#63: xsaddsp fff8000000000000,7ff8000000000000 => fff8000000000000 + -- 2.47.2