]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Phase 4 support for IBM Power ISA 2.07
authorCarl Love <cel@us.ibm.com>
Thu, 3 Oct 2013 21:43:10 +0000 (21:43 +0000)
committerCarl Love <cel@us.ibm.com>
Thu, 3 Oct 2013 21:43:10 +0000 (21:43 +0000)
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 <maynardj@us.ibm.com>
VEX commit for the instruction support r2781
Bugzilla 325477

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13611

none/tests/ppc32/test_isa_2_07_part2.stdout.exp
none/tests/ppc64/test_isa_2_07_part2.c
none/tests/ppc64/test_isa_2_07_part2.stdout.exp

index e9085ea9704323832d3ae1157de8099083767ea0..6d06bf1d6041f85a3a27866618e69020810af1f4 100644 (file)
+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
+
index 6085ca4e6bb587637d21d1156eabf2fada5e89e8..f5ec672901983a93cf6c9c0a18c58a12b8f386f4 100644 (file)
@@ -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 xs<ZZZ>mdp cases, VSX[XT] holds
+             * src3 and VSX[XB] holds src2; for the xs<ZZZ>adp 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 xs<ZZZ>adp 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
index e9085ea9704323832d3ae1157de8099083767ea0..e7c43c1e8a70848198763b2a23296f25fb25c446 100644 (file)
+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
+