Added fp regtest
- needed some hackery to get around VEX's loss of accuracy.
------------------------------
Added test for fsqrt (fp square root)
Enabled stfs(u)(x) (fp single-precision stores)
- VEX implementation not great: ends up rounding twice, losing
accuracy, but is good enough for this test's small fp argument array.
Changed fp arg setup
- no denormals (for VEX inaccuracy)
All fp tests
- don't print CR, XER flags, as VEX doesn't set them.
3 arg fp arith tests (fp 'multiply and add' etc)
- no 'special' fp vals (for VEX inaccuracy)
- zap lo byte (for VEX inaccuracy)
fctiw, fctiwz (fp convert to int)
- zap high 32bits of result (is undefined)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5344 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/ppc32/Makefile.am b/none/tests/ppc32/Makefile.am
index 19adbe7..23314d9 100644
--- a/none/tests/ppc32/Makefile.am
+++ b/none/tests/ppc32/Makefile.am
@@ -4,6 +4,7 @@
EXTRA_DIST = $(noinst_SCRIPTS) \
lsw.stderr.exp lsw.stdout.exp lsw.vgtest \
jm-int.stderr.exp jm-int.stdout.exp jm-int.vgtest \
+ jm-fp.stderr.exp jm-fp.stdout.exp jm-fp.vgtest \
jm-vmx.stderr.exp jm-vmx.stdout.exp jm-vmx.vgtest \
testVMX.stderr.exp testVMX.stdout.exp testVMX.vgtest
diff --git a/none/tests/ppc32/jm-fp.stderr.exp b/none/tests/ppc32/jm-fp.stderr.exp
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/none/tests/ppc32/jm-fp.stderr.exp
@@ -0,0 +1,2 @@
+
+
diff --git a/none/tests/ppc32/jm-fp.stdout.exp b/none/tests/ppc32/jm-fp.stdout.exp
new file mode 100644
index 0000000..144370d
--- /dev/null
+++ b/none/tests/ppc32/jm-fp.stdout.exp
@@ -0,0 +1,1363 @@
+PPC floating point arith insns with three args:
+ fsel 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel 0010000000000001, 0010000000000001, bfe00094e0000359 => 0010000000000000
+ fsel 0010000000000001, 80100094e0000359, 0010000000000001 => 80100094e0000300
+ fsel 0010000000000001, 80100094e0000359, bfe00094e0000359 => 80100094e0000300
+ fsel 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 0010000000000000
+ fsel 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 80100094e0000300
+ fsel 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 80100094e0000300
+ fsel bfe0000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fsel bfe0000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fsel bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fmadd 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fmadd 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd 0010000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fmadd 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fmadd 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0018004a70000100
+ fmadd 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0007ff6b1d4b5e00
+ fmadd 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fmadd bfe0000000000001, 0010000000000001, 0010000000000001 => 0008000000000000
+ fmadd bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd bfe0000000000001, 80100094e0000359, 0010000000000001 => 0018004a70000100
+ fmadd bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fmadds 0010000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds 0010000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fmadds 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fmadds bfe0000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds bfe0000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+
+ fmsub 0010000000000001, 0010000000000001, 0010000000000001 => 8010000000000000
+ fmsub 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub 0010000000000001, 80100094e0000359, 0010000000000001 => 8010000000000000
+ fmsub 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fmsub 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8007ffb58ffffe00
+ fmsub 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 80180094e2b4a100
+ fmsub 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fmsub bfe0000000000001, 0010000000000001, 0010000000000001 => 8018000000000000
+ fmsub bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub bfe0000000000001, 80100094e0000359, 0010000000000001 => 8007ffb58ffffe00
+ fmsub bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+
+ fmsubs 0010000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs 0010000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs bfe0000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs bfe0000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+
+ fnmadd 0010000000000001, 0010000000000001, 0010000000000001 => 8010000000000000
+ fnmadd 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd 0010000000000001, 80100094e0000359, 0010000000000001 => 8010000000000000
+ fnmadd 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8018004a70000100
+ fnmadd 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8007ff6b1d4b5e00
+ fnmadd 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd bfe0000000000001, 0010000000000001, 0010000000000001 => 8008000000000000
+ fnmadd bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd bfe0000000000001, 80100094e0000359, 0010000000000001 => 8018004a70000100
+ fnmadd bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+
+ fnmadds 0010000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds 0010000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds bfe0000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds bfe0000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+
+ fnmsub 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fnmsub 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub 0010000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fnmsub 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fnmsub 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0007ffb58ffffe00
+ fnmsub 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 00180094e2b4a100
+ fnmsub 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fnmsub bfe0000000000001, 0010000000000001, 0010000000000001 => 0018000000000000
+ fnmsub bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub bfe0000000000001, 80100094e0000359, 0010000000000001 => 0007ffb58ffffe00
+ fnmsub bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fnmsubs 0010000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs 0010000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs bfe0000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs bfe0000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+
+PPC floating point arith insns
+ with three args with flags update:
+ fsel. 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel. 0010000000000001, 0010000000000001, bfe00094e0000359 => 0010000000000000
+ fsel. 0010000000000001, 80100094e0000359, 0010000000000001 => 80100094e0000300
+ fsel. 0010000000000001, 80100094e0000359, bfe00094e0000359 => 80100094e0000300
+ fsel. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 0010000000000000
+ fsel. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 80100094e0000300
+ fsel. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 80100094e0000300
+ fsel. bfe0000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fsel. bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fsel. bfe0000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fsel. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fmadd. 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fmadd. 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd. 0010000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fmadd. 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fmadd. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0018004a70000100
+ fmadd. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0007ff6b1d4b5e00
+ fmadd. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fmadd. bfe0000000000001, 0010000000000001, 0010000000000001 => 0008000000000000
+ fmadd. bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fmadd. bfe0000000000001, 80100094e0000359, 0010000000000001 => 0018004a70000100
+ fmadd. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fmadds. 0010000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds. 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds. 0010000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds. 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fmadds. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fmadds. bfe0000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fmadds. bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fmadds. bfe0000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fmadds. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+
+ fmsub. 0010000000000001, 0010000000000001, 0010000000000001 => 8010000000000000
+ fmsub. 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub. 0010000000000001, 80100094e0000359, 0010000000000001 => 8010000000000000
+ fmsub. 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fmsub. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8007ffb58ffffe00
+ fmsub. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 80180094e2b4a100
+ fmsub. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fmsub. bfe0000000000001, 0010000000000001, 0010000000000001 => 8018000000000000
+ fmsub. bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fmsub. bfe0000000000001, 80100094e0000359, 0010000000000001 => 8007ffb58ffffe00
+ fmsub. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+
+ fmsubs. 0010000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs. 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs. 0010000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs. 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs. bfe0000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fmsubs. bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fmsubs. bfe0000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fmsubs. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+
+ fnmadd. 0010000000000001, 0010000000000001, 0010000000000001 => 8010000000000000
+ fnmadd. 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd. 0010000000000001, 80100094e0000359, 0010000000000001 => 8010000000000000
+ fnmadd. 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8018004a70000100
+ fnmadd. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8007ff6b1d4b5e00
+ fnmadd. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd. bfe0000000000001, 0010000000000001, 0010000000000001 => 8008000000000000
+ fnmadd. bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000300
+ fnmadd. bfe0000000000001, 80100094e0000359, 0010000000000001 => 8018004a70000100
+ fnmadd. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000300
+
+ fnmadds. 0010000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds. 0010000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds. 0010000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds. 0010000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds. bfe0000000000001, 0010000000000001, 0010000000000001 => 8000000000000000
+ fnmadds. bfe0000000000001, 0010000000000001, bfe00094e0000359 => 3fe00094e0000000
+ fnmadds. bfe0000000000001, 80100094e0000359, 0010000000000001 => 8000000000000000
+ fnmadds. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => 3fe00094e0000000
+
+ fnmsub. 0010000000000001, 0010000000000001, 0010000000000001 => 0010000000000000
+ fnmsub. 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub. 0010000000000001, 80100094e0000359, 0010000000000001 => 0010000000000000
+ fnmsub. 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fnmsub. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0007ffb58ffffe00
+ fnmsub. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 00180094e2b4a100
+ fnmsub. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+ fnmsub. bfe0000000000001, 0010000000000001, 0010000000000001 => 0018000000000000
+ fnmsub. bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000300
+ fnmsub. bfe0000000000001, 80100094e0000359, 0010000000000001 => 0007ffb58ffffe00
+ fnmsub. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000300
+
+ fnmsubs. 0010000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs. 0010000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs. 0010000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs. 0010000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs. 3fe00094e0000359, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs. 3fe00094e0000359, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs. 3fe00094e0000359, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs. 3fe00094e0000359, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs. bfe0000000000001, 0010000000000001, 0010000000000001 => 0000000000000000
+ fnmsubs. bfe0000000000001, 0010000000000001, bfe00094e0000359 => bfe00094e0000000
+ fnmsubs. bfe0000000000001, 80100094e0000359, 0010000000000001 => 0000000000000000
+ fnmsubs. bfe0000000000001, 80100094e0000359, bfe00094e0000359 => bfe00094e0000000
+
+PPC floating point arith insns with two args:
+ fadd 0010000000000001, 0010000000000001 => 0020000000000001
+ fadd 0010000000000001, 80100094e0000359 => 80000094e0000358
+ fadd 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadd 0010000000000001, fff8000000000000 => fff8000000000000
+ fadd 3fe00094e0000359, 0010000000000001 => 3fe00094e0000359
+ fadd 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000359
+ fadd 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fadd 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fadd bfe0000000000001, 0010000000000001 => bfe0000000000001
+ fadd bfe0000000000001, 80100094e0000359 => bfe0000000000001
+ fadd bfe0000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadd bfe0000000000001, fff8000000000000 => fff8000000000000
+ fadd 8000000000000000, 0010000000000001 => 0010000000000001
+ fadd 8000000000000000, 80100094e0000359 => 80100094e0000359
+ fadd 8000000000000000, 7ff0000000000000 => 7ff0000000000000
+ fadd 8000000000000000, fff8000000000000 => fff8000000000000
+ fadd 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fadd 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fadd 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fadd 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fadd fff8000000000000, 0010000000000001 => fff8000000000000
+ fadd fff8000000000000, 80100094e0000359 => fff8000000000000
+ fadd fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fadd fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fadds 0010000000000001, 0010000000000001 => 0000000000000000
+ fadds 0010000000000001, 80100094e0000359 => 8000000000000000
+ fadds 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadds 0010000000000001, fff8000000000000 => fff8000000000000
+ fadds 3fe00094e0000359, 0010000000000001 => 3fe00094e0000000
+ fadds 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000000
+ fadds 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fadds 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fadds bfe0000000000001, 0010000000000001 => bfe0000000000000
+ fadds bfe0000000000001, 80100094e0000359 => bfe0000000000000
+ fadds bfe0000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadds bfe0000000000001, fff8000000000000 => fff8000000000000
+ fadds 8000000000000000, 0010000000000001 => 0000000000000000
+ fadds 8000000000000000, 80100094e0000359 => 8000000000000000
+ fadds 8000000000000000, 7ff0000000000000 => 7ff0000000000000
+ fadds 8000000000000000, fff8000000000000 => fff8000000000000
+ fadds 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fadds 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fadds 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fadds 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fadds fff8000000000000, 0010000000000001 => fff8000000000000
+ fadds fff8000000000000, 80100094e0000359 => fff8000000000000
+ fadds fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fadds fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fsub 0010000000000001, 0010000000000001 => 0000000000000000
+ fsub 0010000000000001, 80100094e0000359 => 0020004a700001ad
+ fsub 0010000000000001, 7ff0000000000000 => fff0000000000000
+ fsub 0010000000000001, fff8000000000000 => fff8000000000000
+ fsub 3fe00094e0000359, 0010000000000001 => 3fe00094e0000359
+ fsub 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000359
+ fsub 3fe00094e0000359, 7ff0000000000000 => fff0000000000000
+ fsub 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fsub bfe0000000000001, 0010000000000001 => bfe0000000000001
+ fsub bfe0000000000001, 80100094e0000359 => bfe0000000000001
+ fsub bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fsub bfe0000000000001, fff8000000000000 => fff8000000000000
+ fsub 8000000000000000, 0010000000000001 => 8010000000000001
+ fsub 8000000000000000, 80100094e0000359 => 00100094e0000359
+ fsub 8000000000000000, 7ff0000000000000 => fff0000000000000
+ fsub 8000000000000000, fff8000000000000 => fff8000000000000
+ fsub 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fsub 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fsub 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fsub 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fsub fff8000000000000, 0010000000000001 => fff8000000000000
+ fsub fff8000000000000, 80100094e0000359 => fff8000000000000
+ fsub fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fsub fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fsubs 0010000000000001, 0010000000000001 => 0000000000000000
+ fsubs 0010000000000001, 80100094e0000359 => 0000000000000000
+ fsubs 0010000000000001, 7ff0000000000000 => fff0000000000000
+ fsubs 0010000000000001, fff8000000000000 => fff8000000000000
+ fsubs 3fe00094e0000359, 0010000000000001 => 3fe00094e0000000
+ fsubs 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000000
+ fsubs 3fe00094e0000359, 7ff0000000000000 => fff0000000000000
+ fsubs 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fsubs bfe0000000000001, 0010000000000001 => bfe0000000000000
+ fsubs bfe0000000000001, 80100094e0000359 => bfe0000000000000
+ fsubs bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fsubs bfe0000000000001, fff8000000000000 => fff8000000000000
+ fsubs 8000000000000000, 0010000000000001 => 8000000000000000
+ fsubs 8000000000000000, 80100094e0000359 => 0000000000000000
+ fsubs 8000000000000000, 7ff0000000000000 => fff0000000000000
+ fsubs 8000000000000000, fff8000000000000 => fff8000000000000
+ fsubs 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fsubs 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fsubs 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fsubs 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fsubs fff8000000000000, 0010000000000001 => fff8000000000000
+ fsubs fff8000000000000, 80100094e0000359 => fff8000000000000
+ fsubs fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fsubs fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fmul 0010000000000001, 0010000000000001 => 0000000000000000
+ fmul 0010000000000001, 80100094e0000359 => 8000000000000000
+ fmul 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fmul 0010000000000001, fff8000000000000 => fff8000000000000
+ fmul 3fe00094e0000359, 0010000000000001 => 0008004a700001ad
+ fmul 3fe00094e0000359, 80100094e0000359 => 80080094e2b4a179
+ fmul 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fmul 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fmul bfe0000000000001, 0010000000000001 => 8008000000000001
+ fmul bfe0000000000001, 80100094e0000359 => 0008004a700001ad
+ fmul bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fmul bfe0000000000001, fff8000000000000 => fff8000000000000
+ fmul 8000000000000000, 0010000000000001 => 8000000000000000
+ fmul 8000000000000000, 80100094e0000359 => 0000000000000000
+ fmul 8000000000000000, 7ff0000000000000 => 7ff8000000000000
+ fmul 8000000000000000, fff8000000000000 => fff8000000000000
+ fmul 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fmul 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fmul 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fmul 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fmul fff8000000000000, 0010000000000001 => fff8000000000000
+ fmul fff8000000000000, 80100094e0000359 => fff8000000000000
+ fmul fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fmul fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fmuls 0010000000000001, 0010000000000001 => 0000000000000000
+ fmuls 0010000000000001, 80100094e0000359 => 8000000000000000
+ fmuls 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fmuls 0010000000000001, fff8000000000000 => fff8000000000000
+ fmuls 3fe00094e0000359, 0010000000000001 => 0000000000000000
+ fmuls 3fe00094e0000359, 80100094e0000359 => 8000000000000000
+ fmuls 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fmuls 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fmuls bfe0000000000001, 0010000000000001 => 8000000000000000
+ fmuls bfe0000000000001, 80100094e0000359 => 0000000000000000
+ fmuls bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fmuls bfe0000000000001, fff8000000000000 => fff8000000000000
+ fmuls 8000000000000000, 0010000000000001 => 8000000000000000
+ fmuls 8000000000000000, 80100094e0000359 => 0000000000000000
+ fmuls 8000000000000000, 7ff0000000000000 => 7ff8000000000000
+ fmuls 8000000000000000, fff8000000000000 => fff8000000000000
+ fmuls 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fmuls 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fmuls 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fmuls 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fmuls fff8000000000000, 0010000000000001 => fff8000000000000
+ fmuls fff8000000000000, 80100094e0000359 => fff8000000000000
+ fmuls fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fmuls fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fdiv 0010000000000001, 0010000000000001 => 3ff0000000000000
+ fdiv 0010000000000001, 80100094e0000359 => bfeffed64ad20d22
+ fdiv 0010000000000001, 7ff0000000000000 => 0000000000000000
+ fdiv 0010000000000001, fff8000000000000 => fff8000000000000
+ fdiv 3fe00094e0000359, 0010000000000001 => 7fc00094e0000358
+ fdiv 3fe00094e0000359, 80100094e0000359 => ffc0000000000000
+ fdiv 3fe00094e0000359, 7ff0000000000000 => 0000000000000000
+ fdiv 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fdiv bfe0000000000001, 0010000000000001 => ffc0000000000000
+ fdiv bfe0000000000001, 80100094e0000359 => 7fbffed64ad20d22
+ fdiv bfe0000000000001, 7ff0000000000000 => 8000000000000000
+ fdiv bfe0000000000001, fff8000000000000 => fff8000000000000
+ fdiv 8000000000000000, 0010000000000001 => 8000000000000000
+ fdiv 8000000000000000, 80100094e0000359 => 0000000000000000
+ fdiv 8000000000000000, 7ff0000000000000 => 8000000000000000
+ fdiv 8000000000000000, fff8000000000000 => fff8000000000000
+ fdiv 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fdiv 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fdiv 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fdiv 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fdiv fff8000000000000, 0010000000000001 => fff8000000000000
+ fdiv fff8000000000000, 80100094e0000359 => fff8000000000000
+ fdiv fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fdiv fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fdivs 0010000000000001, 0010000000000001 => 3ff0000000000000
+ fdivs 0010000000000001, 80100094e0000359 => bfeffed640000000
+ fdivs 0010000000000001, 7ff0000000000000 => 0000000000000000
+ fdivs 0010000000000001, fff8000000000000 => fff8000000000000
+ fdivs 3fe00094e0000359, 0010000000000001 => 7ff0000000000000
+ fdivs 3fe00094e0000359, 80100094e0000359 => fff0000000000000
+ fdivs 3fe00094e0000359, 7ff0000000000000 => 0000000000000000
+ fdivs 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fdivs bfe0000000000001, 0010000000000001 => fff0000000000000
+ fdivs bfe0000000000001, 80100094e0000359 => 7ff0000000000000
+ fdivs bfe0000000000001, 7ff0000000000000 => 8000000000000000
+ fdivs bfe0000000000001, fff8000000000000 => fff8000000000000
+ fdivs 8000000000000000, 0010000000000001 => 8000000000000000
+ fdivs 8000000000000000, 80100094e0000359 => 0000000000000000
+ fdivs 8000000000000000, 7ff0000000000000 => 8000000000000000
+ fdivs 8000000000000000, fff8000000000000 => fff8000000000000
+ fdivs 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fdivs 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fdivs 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fdivs 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fdivs fff8000000000000, 0010000000000001 => fff8000000000000
+ fdivs fff8000000000000, 80100094e0000359 => fff8000000000000
+ fdivs fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fdivs fff8000000000000, fff8000000000000 => fff8000000000000
+
+PPC floating point arith insns
+ with two args with flags update:
+ fadd. 0010000000000001, 0010000000000001 => 0020000000000001
+ fadd. 0010000000000001, 80100094e0000359 => 80000094e0000358
+ fadd. 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadd. 0010000000000001, fff8000000000000 => fff8000000000000
+ fadd. 3fe00094e0000359, 0010000000000001 => 3fe00094e0000359
+ fadd. 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000359
+ fadd. 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fadd. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fadd. bfe0000000000001, 0010000000000001 => bfe0000000000001
+ fadd. bfe0000000000001, 80100094e0000359 => bfe0000000000001
+ fadd. bfe0000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadd. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fadd. 8000000000000000, 0010000000000001 => 0010000000000001
+ fadd. 8000000000000000, 80100094e0000359 => 80100094e0000359
+ fadd. 8000000000000000, 7ff0000000000000 => 7ff0000000000000
+ fadd. 8000000000000000, fff8000000000000 => fff8000000000000
+ fadd. 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fadd. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fadd. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fadd. 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fadd. fff8000000000000, 0010000000000001 => fff8000000000000
+ fadd. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fadd. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fadd. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fadds. 0010000000000001, 0010000000000001 => 0000000000000000
+ fadds. 0010000000000001, 80100094e0000359 => 8000000000000000
+ fadds. 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadds. 0010000000000001, fff8000000000000 => fff8000000000000
+ fadds. 3fe00094e0000359, 0010000000000001 => 3fe00094e0000000
+ fadds. 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000000
+ fadds. 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fadds. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fadds. bfe0000000000001, 0010000000000001 => bfe0000000000000
+ fadds. bfe0000000000001, 80100094e0000359 => bfe0000000000000
+ fadds. bfe0000000000001, 7ff0000000000000 => 7ff0000000000000
+ fadds. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fadds. 8000000000000000, 0010000000000001 => 0000000000000000
+ fadds. 8000000000000000, 80100094e0000359 => 8000000000000000
+ fadds. 8000000000000000, 7ff0000000000000 => 7ff0000000000000
+ fadds. 8000000000000000, fff8000000000000 => fff8000000000000
+ fadds. 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fadds. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fadds. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fadds. 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fadds. fff8000000000000, 0010000000000001 => fff8000000000000
+ fadds. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fadds. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fadds. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fsub. 0010000000000001, 0010000000000001 => 0000000000000000
+ fsub. 0010000000000001, 80100094e0000359 => 0020004a700001ad
+ fsub. 0010000000000001, 7ff0000000000000 => fff0000000000000
+ fsub. 0010000000000001, fff8000000000000 => fff8000000000000
+ fsub. 3fe00094e0000359, 0010000000000001 => 3fe00094e0000359
+ fsub. 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000359
+ fsub. 3fe00094e0000359, 7ff0000000000000 => fff0000000000000
+ fsub. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fsub. bfe0000000000001, 0010000000000001 => bfe0000000000001
+ fsub. bfe0000000000001, 80100094e0000359 => bfe0000000000001
+ fsub. bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fsub. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fsub. 8000000000000000, 0010000000000001 => 8010000000000001
+ fsub. 8000000000000000, 80100094e0000359 => 00100094e0000359
+ fsub. 8000000000000000, 7ff0000000000000 => fff0000000000000
+ fsub. 8000000000000000, fff8000000000000 => fff8000000000000
+ fsub. 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fsub. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fsub. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fsub. 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fsub. fff8000000000000, 0010000000000001 => fff8000000000000
+ fsub. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fsub. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fsub. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fsubs. 0010000000000001, 0010000000000001 => 0000000000000000
+ fsubs. 0010000000000001, 80100094e0000359 => 0000000000000000
+ fsubs. 0010000000000001, 7ff0000000000000 => fff0000000000000
+ fsubs. 0010000000000001, fff8000000000000 => fff8000000000000
+ fsubs. 3fe00094e0000359, 0010000000000001 => 3fe00094e0000000
+ fsubs. 3fe00094e0000359, 80100094e0000359 => 3fe00094e0000000
+ fsubs. 3fe00094e0000359, 7ff0000000000000 => fff0000000000000
+ fsubs. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fsubs. bfe0000000000001, 0010000000000001 => bfe0000000000000
+ fsubs. bfe0000000000001, 80100094e0000359 => bfe0000000000000
+ fsubs. bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fsubs. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fsubs. 8000000000000000, 0010000000000001 => 8000000000000000
+ fsubs. 8000000000000000, 80100094e0000359 => 0000000000000000
+ fsubs. 8000000000000000, 7ff0000000000000 => fff0000000000000
+ fsubs. 8000000000000000, fff8000000000000 => fff8000000000000
+ fsubs. 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fsubs. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fsubs. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fsubs. 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fsubs. fff8000000000000, 0010000000000001 => fff8000000000000
+ fsubs. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fsubs. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fsubs. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fmul. 0010000000000001, 0010000000000001 => 0000000000000000
+ fmul. 0010000000000001, 80100094e0000359 => 8000000000000000
+ fmul. 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fmul. 0010000000000001, fff8000000000000 => fff8000000000000
+ fmul. 3fe00094e0000359, 0010000000000001 => 0008004a700001ad
+ fmul. 3fe00094e0000359, 80100094e0000359 => 80080094e2b4a179
+ fmul. 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fmul. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fmul. bfe0000000000001, 0010000000000001 => 8008000000000001
+ fmul. bfe0000000000001, 80100094e0000359 => 0008004a700001ad
+ fmul. bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fmul. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fmul. 8000000000000000, 0010000000000001 => 8000000000000000
+ fmul. 8000000000000000, 80100094e0000359 => 0000000000000000
+ fmul. 8000000000000000, 7ff0000000000000 => 7ff8000000000000
+ fmul. 8000000000000000, fff8000000000000 => fff8000000000000
+ fmul. 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fmul. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fmul. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fmul. 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fmul. fff8000000000000, 0010000000000001 => fff8000000000000
+ fmul. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fmul. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fmul. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fmuls. 0010000000000001, 0010000000000001 => 0000000000000000
+ fmuls. 0010000000000001, 80100094e0000359 => 8000000000000000
+ fmuls. 0010000000000001, 7ff0000000000000 => 7ff0000000000000
+ fmuls. 0010000000000001, fff8000000000000 => fff8000000000000
+ fmuls. 3fe00094e0000359, 0010000000000001 => 0000000000000000
+ fmuls. 3fe00094e0000359, 80100094e0000359 => 8000000000000000
+ fmuls. 3fe00094e0000359, 7ff0000000000000 => 7ff0000000000000
+ fmuls. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fmuls. bfe0000000000001, 0010000000000001 => 8000000000000000
+ fmuls. bfe0000000000001, 80100094e0000359 => 0000000000000000
+ fmuls. bfe0000000000001, 7ff0000000000000 => fff0000000000000
+ fmuls. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fmuls. 8000000000000000, 0010000000000001 => 8000000000000000
+ fmuls. 8000000000000000, 80100094e0000359 => 0000000000000000
+ fmuls. 8000000000000000, 7ff0000000000000 => 7ff8000000000000
+ fmuls. 8000000000000000, fff8000000000000 => fff8000000000000
+ fmuls. 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fmuls. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fmuls. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fmuls. 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fmuls. fff8000000000000, 0010000000000001 => fff8000000000000
+ fmuls. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fmuls. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fmuls. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fdiv. 0010000000000001, 0010000000000001 => 3ff0000000000000
+ fdiv. 0010000000000001, 80100094e0000359 => bfeffed64ad20d22
+ fdiv. 0010000000000001, 7ff0000000000000 => 0000000000000000
+ fdiv. 0010000000000001, fff8000000000000 => fff8000000000000
+ fdiv. 3fe00094e0000359, 0010000000000001 => 7fc00094e0000358
+ fdiv. 3fe00094e0000359, 80100094e0000359 => ffc0000000000000
+ fdiv. 3fe00094e0000359, 7ff0000000000000 => 0000000000000000
+ fdiv. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fdiv. bfe0000000000001, 0010000000000001 => ffc0000000000000
+ fdiv. bfe0000000000001, 80100094e0000359 => 7fbffed64ad20d22
+ fdiv. bfe0000000000001, 7ff0000000000000 => 8000000000000000
+ fdiv. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fdiv. 8000000000000000, 0010000000000001 => 8000000000000000
+ fdiv. 8000000000000000, 80100094e0000359 => 0000000000000000
+ fdiv. 8000000000000000, 7ff0000000000000 => 8000000000000000
+ fdiv. 8000000000000000, fff8000000000000 => fff8000000000000
+ fdiv. 7ff7ffffffffffff, 0010000000000001 => 7fffffffffffffff
+ fdiv. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffffffffff
+ fdiv. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffffffffff
+ fdiv. 7ff7ffffffffffff, fff8000000000000 => 7fffffffffffffff
+ fdiv. fff8000000000000, 0010000000000001 => fff8000000000000
+ fdiv. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fdiv. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fdiv. fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fdivs. 0010000000000001, 0010000000000001 => 3ff0000000000000
+ fdivs. 0010000000000001, 80100094e0000359 => bfeffed640000000
+ fdivs. 0010000000000001, 7ff0000000000000 => 0000000000000000
+ fdivs. 0010000000000001, fff8000000000000 => fff8000000000000
+ fdivs. 3fe00094e0000359, 0010000000000001 => 7ff0000000000000
+ fdivs. 3fe00094e0000359, 80100094e0000359 => fff0000000000000
+ fdivs. 3fe00094e0000359, 7ff0000000000000 => 0000000000000000
+ fdivs. 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fdivs. bfe0000000000001, 0010000000000001 => fff0000000000000
+ fdivs. bfe0000000000001, 80100094e0000359 => 7ff0000000000000
+ fdivs. bfe0000000000001, 7ff0000000000000 => 8000000000000000
+ fdivs. bfe0000000000001, fff8000000000000 => fff8000000000000
+ fdivs. 8000000000000000, 0010000000000001 => 8000000000000000
+ fdivs. 8000000000000000, 80100094e0000359 => 0000000000000000
+ fdivs. 8000000000000000, 7ff0000000000000 => 8000000000000000
+ fdivs. 8000000000000000, fff8000000000000 => fff8000000000000
+ fdivs. 7ff7ffffffffffff, 0010000000000001 => 7fffffffe0000000
+ fdivs. 7ff7ffffffffffff, 80100094e0000359 => 7fffffffe0000000
+ fdivs. 7ff7ffffffffffff, 7ff0000000000000 => 7fffffffe0000000
+ fdivs. 7ff7ffffffffffff, fff8000000000000 => 7fffffffe0000000
+ fdivs. fff8000000000000, 0010000000000001 => fff8000000000000
+ fdivs. fff8000000000000, 80100094e0000359 => fff8000000000000
+ fdivs. fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fdivs. fff8000000000000, fff8000000000000 => fff8000000000000
+
+PPC floating point compare insns (two args):
+ fcmpo 0010000000000001, 0010000000000001 => fff8000000000000
+ fcmpo 0010000000000001, 80100094e0000359 => fff8000000000000
+ fcmpo 0010000000000001, 7ff0000000000000 => fff8000000000000
+ fcmpo 0010000000000001, fff8000000000000 => fff8000000000000
+ fcmpo 3fe00094e0000359, 0010000000000001 => fff8000000000000
+ fcmpo 3fe00094e0000359, 80100094e0000359 => fff8000000000000
+ fcmpo 3fe00094e0000359, 7ff0000000000000 => fff8000000000000
+ fcmpo 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fcmpo bfe0000000000001, 0010000000000001 => fff8000000000000
+ fcmpo bfe0000000000001, 80100094e0000359 => fff8000000000000
+ fcmpo bfe0000000000001, 7ff0000000000000 => fff8000000000000
+ fcmpo bfe0000000000001, fff8000000000000 => fff8000000000000
+ fcmpo 8000000000000000, 0010000000000001 => fff8000000000000
+ fcmpo 8000000000000000, 80100094e0000359 => fff8000000000000
+ fcmpo 8000000000000000, 7ff0000000000000 => fff8000000000000
+ fcmpo 8000000000000000, fff8000000000000 => fff8000000000000
+ fcmpo 7ff7ffffffffffff, 0010000000000001 => fff8000000000000
+ fcmpo 7ff7ffffffffffff, 80100094e0000359 => fff8000000000000
+ fcmpo 7ff7ffffffffffff, 7ff0000000000000 => fff8000000000000
+ fcmpo 7ff7ffffffffffff, fff8000000000000 => fff8000000000000
+ fcmpo fff8000000000000, 0010000000000001 => fff8000000000000
+ fcmpo fff8000000000000, 80100094e0000359 => fff8000000000000
+ fcmpo fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fcmpo fff8000000000000, fff8000000000000 => fff8000000000000
+
+ fcmpu 0010000000000001, 0010000000000001 => fff8000000000000
+ fcmpu 0010000000000001, 80100094e0000359 => fff8000000000000
+ fcmpu 0010000000000001, 7ff0000000000000 => fff8000000000000
+ fcmpu 0010000000000001, fff8000000000000 => fff8000000000000
+ fcmpu 3fe00094e0000359, 0010000000000001 => fff8000000000000
+ fcmpu 3fe00094e0000359, 80100094e0000359 => fff8000000000000
+ fcmpu 3fe00094e0000359, 7ff0000000000000 => fff8000000000000
+ fcmpu 3fe00094e0000359, fff8000000000000 => fff8000000000000
+ fcmpu bfe0000000000001, 0010000000000001 => fff8000000000000
+ fcmpu bfe0000000000001, 80100094e0000359 => fff8000000000000
+ fcmpu bfe0000000000001, 7ff0000000000000 => fff8000000000000
+ fcmpu bfe0000000000001, fff8000000000000 => fff8000000000000
+ fcmpu 8000000000000000, 0010000000000001 => fff8000000000000
+ fcmpu 8000000000000000, 80100094e0000359 => fff8000000000000
+ fcmpu 8000000000000000, 7ff0000000000000 => fff8000000000000
+ fcmpu 8000000000000000, fff8000000000000 => fff8000000000000
+ fcmpu 7ff7ffffffffffff, 0010000000000001 => fff8000000000000
+ fcmpu 7ff7ffffffffffff, 80100094e0000359 => fff8000000000000
+ fcmpu 7ff7ffffffffffff, 7ff0000000000000 => fff8000000000000
+ fcmpu 7ff7ffffffffffff, fff8000000000000 => fff8000000000000
+ fcmpu fff8000000000000, 0010000000000001 => fff8000000000000
+ fcmpu fff8000000000000, 80100094e0000359 => fff8000000000000
+ fcmpu fff8000000000000, 7ff0000000000000 => fff8000000000000
+ fcmpu fff8000000000000, fff8000000000000 => fff8000000000000
+
+PPC floating point arith insns with one arg:
+ frsp 0010000000000001 => 0000000000000000
+ frsp 00100094e0000359 => 0000000000000000
+ frsp 3fe0000000000001 => 3fe0000000000000
+ frsp 3fe00094e0000359 => 3fe00094e0000000
+ frsp 8010000000000001 => 8000000000000000
+ frsp 80100094e0000359 => 8000000000000000
+ frsp bfe0000000000001 => bfe0000000000000
+ frsp bfe00094e0000359 => bfe00094e0000000
+ frsp 0000000000000000 => 0000000000000000
+ frsp 8000000000000000 => 8000000000000000
+ frsp 7ff0000000000000 => 7ff0000000000000
+ frsp fff0000000000000 => fff0000000000000
+ frsp 7ff7ffffffffffff => 7fffffffe0000000
+ frsp fff7ffffffffffff => ffffffffe0000000
+ frsp 7ff8000000000000 => 7ff8000000000000
+ frsp fff8000000000000 => fff8000000000000
+
+ fctiw 0010000000000001 => 0000000000000000
+ fctiw 00100094e0000359 => 0000000000000000
+ fctiw 3fe0000000000001 => 0000000000000001
+ fctiw 3fe00094e0000359 => 0000000000000001
+ fctiw 8010000000000001 => 0000000000000000
+ fctiw 80100094e0000359 => 0000000000000000
+ fctiw bfe0000000000001 => 00000000ffffffff
+ fctiw bfe00094e0000359 => 00000000ffffffff
+ fctiw 0000000000000000 => 0000000000000000
+ fctiw 8000000000000000 => 0000000000000000
+ fctiw 7ff0000000000000 => 000000007fffffff
+ fctiw fff0000000000000 => 0000000080000000
+ fctiw 7ff7ffffffffffff => 0000000080000000
+ fctiw fff7ffffffffffff => 0000000080000000
+ fctiw 7ff8000000000000 => 0000000080000000
+ fctiw fff8000000000000 => 0000000080000000
+
+ fctiwz 0010000000000001 => 0000000000000000
+ fctiwz 00100094e0000359 => 0000000000000000
+ fctiwz 3fe0000000000001 => 0000000000000000
+ fctiwz 3fe00094e0000359 => 0000000000000000
+ fctiwz 8010000000000001 => 0000000000000000
+ fctiwz 80100094e0000359 => 0000000000000000
+ fctiwz bfe0000000000001 => 0000000000000000
+ fctiwz bfe00094e0000359 => 0000000000000000
+ fctiwz 0000000000000000 => 0000000000000000
+ fctiwz 8000000000000000 => 0000000000000000
+ fctiwz 7ff0000000000000 => 000000007fffffff
+ fctiwz fff0000000000000 => 0000000080000000
+ fctiwz 7ff7ffffffffffff => 0000000080000000
+ fctiwz fff7ffffffffffff => 0000000080000000
+ fctiwz 7ff8000000000000 => 0000000080000000
+ fctiwz fff8000000000000 => 0000000080000000
+
+ fmr 0010000000000001 => 0010000000000001
+ fmr 00100094e0000359 => 00100094e0000359
+ fmr 3fe0000000000001 => 3fe0000000000001
+ fmr 3fe00094e0000359 => 3fe00094e0000359
+ fmr 8010000000000001 => 8010000000000001
+ fmr 80100094e0000359 => 80100094e0000359
+ fmr bfe0000000000001 => bfe0000000000001
+ fmr bfe00094e0000359 => bfe00094e0000359
+ fmr 0000000000000000 => 0000000000000000
+ fmr 8000000000000000 => 8000000000000000
+ fmr 7ff0000000000000 => 7ff0000000000000
+ fmr fff0000000000000 => fff0000000000000
+ fmr 7ff7ffffffffffff => 7ff7ffffffffffff
+ fmr fff7ffffffffffff => fff7ffffffffffff
+ fmr 7ff8000000000000 => 7ff8000000000000
+ fmr fff8000000000000 => fff8000000000000
+
+ fneg 0010000000000001 => 8010000000000001
+ fneg 00100094e0000359 => 80100094e0000359
+ fneg 3fe0000000000001 => bfe0000000000001
+ fneg 3fe00094e0000359 => bfe00094e0000359
+ fneg 8010000000000001 => 0010000000000001
+ fneg 80100094e0000359 => 00100094e0000359
+ fneg bfe0000000000001 => 3fe0000000000001
+ fneg bfe00094e0000359 => 3fe00094e0000359
+ fneg 0000000000000000 => 8000000000000000
+ fneg 8000000000000000 => 0000000000000000
+ fneg 7ff0000000000000 => fff0000000000000
+ fneg fff0000000000000 => 7ff0000000000000
+ fneg 7ff7ffffffffffff => fff7ffffffffffff
+ fneg fff7ffffffffffff => 7ff7ffffffffffff
+ fneg 7ff8000000000000 => fff8000000000000
+ fneg fff8000000000000 => 7ff8000000000000
+
+ fabs 0010000000000001 => 0010000000000001
+ fabs 00100094e0000359 => 00100094e0000359
+ fabs 3fe0000000000001 => 3fe0000000000001
+ fabs 3fe00094e0000359 => 3fe00094e0000359
+ fabs 8010000000000001 => 0010000000000001
+ fabs 80100094e0000359 => 00100094e0000359
+ fabs bfe0000000000001 => 3fe0000000000001
+ fabs bfe00094e0000359 => 3fe00094e0000359
+ fabs 0000000000000000 => 0000000000000000
+ fabs 8000000000000000 => 0000000000000000
+ fabs 7ff0000000000000 => 7ff0000000000000
+ fabs fff0000000000000 => 7ff0000000000000
+ fabs 7ff7ffffffffffff => 7ff7ffffffffffff
+ fabs fff7ffffffffffff => 7ff7ffffffffffff
+ fabs 7ff8000000000000 => 7ff8000000000000
+ fabs fff8000000000000 => 7ff8000000000000
+
+ fnabs 0010000000000001 => 8010000000000001
+ fnabs 00100094e0000359 => 80100094e0000359
+ fnabs 3fe0000000000001 => bfe0000000000001
+ fnabs 3fe00094e0000359 => bfe00094e0000359
+ fnabs 8010000000000001 => 8010000000000001
+ fnabs 80100094e0000359 => 80100094e0000359
+ fnabs bfe0000000000001 => bfe0000000000001
+ fnabs bfe00094e0000359 => bfe00094e0000359
+ fnabs 0000000000000000 => 8000000000000000
+ fnabs 8000000000000000 => 8000000000000000
+ fnabs 7ff0000000000000 => fff0000000000000
+ fnabs fff0000000000000 => fff0000000000000
+ fnabs 7ff7ffffffffffff => fff7ffffffffffff
+ fnabs fff7ffffffffffff => fff7ffffffffffff
+ fnabs 7ff8000000000000 => fff8000000000000
+ fnabs fff8000000000000 => fff8000000000000
+
+ fsqrt 0010000000000001 => 2000000000000000
+ fsqrt 00100094e0000359 => 2000004a6f52dd4a
+ fsqrt 3fe0000000000001 => 3fe6a09e667f3bcd
+ fsqrt 3fe00094e0000359 => 3fe6a107aacb50df
+ fsqrt 8010000000000001 => 7ff8000000000000
+ fsqrt 80100094e0000359 => 7ff8000000000000
+ fsqrt bfe0000000000001 => 7ff8000000000000
+ fsqrt bfe00094e0000359 => 7ff8000000000000
+ fsqrt 0000000000000000 => 0000000000000000
+ fsqrt 8000000000000000 => 8000000000000000
+ fsqrt 7ff0000000000000 => 7ff0000000000000
+ fsqrt fff0000000000000 => 7ff8000000000000
+ fsqrt 7ff7ffffffffffff => 7fffffffffffffff
+ fsqrt fff7ffffffffffff => ffffffffffffffff
+ fsqrt 7ff8000000000000 => 7ff8000000000000
+ fsqrt fff8000000000000 => fff8000000000000
+
+PPC floating point arith insns
+ with one arg with flags update:
+ frsp. 0010000000000001 => 0000000000000000
+ frsp. 00100094e0000359 => 0000000000000000
+ frsp. 3fe0000000000001 => 3fe0000000000000
+ frsp. 3fe00094e0000359 => 3fe00094e0000000
+ frsp. 8010000000000001 => 8000000000000000
+ frsp. 80100094e0000359 => 8000000000000000
+ frsp. bfe0000000000001 => bfe0000000000000
+ frsp. bfe00094e0000359 => bfe00094e0000000
+ frsp. 0000000000000000 => 0000000000000000
+ frsp. 8000000000000000 => 8000000000000000
+ frsp. 7ff0000000000000 => 7ff0000000000000
+ frsp. fff0000000000000 => fff0000000000000
+ frsp. 7ff7ffffffffffff => 7fffffffe0000000
+ frsp. fff7ffffffffffff => ffffffffe0000000
+ frsp. 7ff8000000000000 => 7ff8000000000000
+ frsp. fff8000000000000 => fff8000000000000
+
+ fctiw. 0010000000000001 => 0000000000000000
+ fctiw. 00100094e0000359 => 0000000000000000
+ fctiw. 3fe0000000000001 => 0000000000000001
+ fctiw. 3fe00094e0000359 => 0000000000000001
+ fctiw. 8010000000000001 => 0000000000000000
+ fctiw. 80100094e0000359 => 0000000000000000
+ fctiw. bfe0000000000001 => 00000000ffffffff
+ fctiw. bfe00094e0000359 => 00000000ffffffff
+ fctiw. 0000000000000000 => 0000000000000000
+ fctiw. 8000000000000000 => 0000000000000000
+ fctiw. 7ff0000000000000 => 000000007fffffff
+ fctiw. fff0000000000000 => 0000000080000000
+ fctiw. 7ff7ffffffffffff => 0000000080000000
+ fctiw. fff7ffffffffffff => 0000000080000000
+ fctiw. 7ff8000000000000 => 0000000080000000
+ fctiw. fff8000000000000 => 0000000080000000
+
+ fctiwz. 0010000000000001 => 0000000000000000
+ fctiwz. 00100094e0000359 => 0000000000000000
+ fctiwz. 3fe0000000000001 => 0000000000000000
+ fctiwz. 3fe00094e0000359 => 0000000000000000
+ fctiwz. 8010000000000001 => 0000000000000000
+ fctiwz. 80100094e0000359 => 0000000000000000
+ fctiwz. bfe0000000000001 => 0000000000000000
+ fctiwz. bfe00094e0000359 => 0000000000000000
+ fctiwz. 0000000000000000 => 0000000000000000
+ fctiwz. 8000000000000000 => 0000000000000000
+ fctiwz. 7ff0000000000000 => 000000007fffffff
+ fctiwz. fff0000000000000 => 0000000080000000
+ fctiwz. 7ff7ffffffffffff => 0000000080000000
+ fctiwz. fff7ffffffffffff => 0000000080000000
+ fctiwz. 7ff8000000000000 => 0000000080000000
+ fctiwz. fff8000000000000 => 0000000080000000
+
+ fmr. 0010000000000001 => 0010000000000001
+ fmr. 00100094e0000359 => 00100094e0000359
+ fmr. 3fe0000000000001 => 3fe0000000000001
+ fmr. 3fe00094e0000359 => 3fe00094e0000359
+ fmr. 8010000000000001 => 8010000000000001
+ fmr. 80100094e0000359 => 80100094e0000359
+ fmr. bfe0000000000001 => bfe0000000000001
+ fmr. bfe00094e0000359 => bfe00094e0000359
+ fmr. 0000000000000000 => 0000000000000000
+ fmr. 8000000000000000 => 8000000000000000
+ fmr. 7ff0000000000000 => 7ff0000000000000
+ fmr. fff0000000000000 => fff0000000000000
+ fmr. 7ff7ffffffffffff => 7ff7ffffffffffff
+ fmr. fff7ffffffffffff => fff7ffffffffffff
+ fmr. 7ff8000000000000 => 7ff8000000000000
+ fmr. fff8000000000000 => fff8000000000000
+
+ fneg. 0010000000000001 => 8010000000000001
+ fneg. 00100094e0000359 => 80100094e0000359
+ fneg. 3fe0000000000001 => bfe0000000000001
+ fneg. 3fe00094e0000359 => bfe00094e0000359
+ fneg. 8010000000000001 => 0010000000000001
+ fneg. 80100094e0000359 => 00100094e0000359
+ fneg. bfe0000000000001 => 3fe0000000000001
+ fneg. bfe00094e0000359 => 3fe00094e0000359
+ fneg. 0000000000000000 => 8000000000000000
+ fneg. 8000000000000000 => 0000000000000000
+ fneg. 7ff0000000000000 => fff0000000000000
+ fneg. fff0000000000000 => 7ff0000000000000
+ fneg. 7ff7ffffffffffff => fff7ffffffffffff
+ fneg. fff7ffffffffffff => 7ff7ffffffffffff
+ fneg. 7ff8000000000000 => fff8000000000000
+ fneg. fff8000000000000 => 7ff8000000000000
+
+ fabs. 0010000000000001 => 0010000000000001
+ fabs. 00100094e0000359 => 00100094e0000359
+ fabs. 3fe0000000000001 => 3fe0000000000001
+ fabs. 3fe00094e0000359 => 3fe00094e0000359
+ fabs. 8010000000000001 => 0010000000000001
+ fabs. 80100094e0000359 => 00100094e0000359
+ fabs. bfe0000000000001 => 3fe0000000000001
+ fabs. bfe00094e0000359 => 3fe00094e0000359
+ fabs. 0000000000000000 => 0000000000000000
+ fabs. 8000000000000000 => 0000000000000000
+ fabs. 7ff0000000000000 => 7ff0000000000000
+ fabs. fff0000000000000 => 7ff0000000000000
+ fabs. 7ff7ffffffffffff => 7ff7ffffffffffff
+ fabs. fff7ffffffffffff => 7ff7ffffffffffff
+ fabs. 7ff8000000000000 => 7ff8000000000000
+ fabs. fff8000000000000 => 7ff8000000000000
+
+ fnabs. 0010000000000001 => 8010000000000001
+ fnabs. 00100094e0000359 => 80100094e0000359
+ fnabs. 3fe0000000000001 => bfe0000000000001
+ fnabs. 3fe00094e0000359 => bfe00094e0000359
+ fnabs. 8010000000000001 => 8010000000000001
+ fnabs. 80100094e0000359 => 80100094e0000359
+ fnabs. bfe0000000000001 => bfe0000000000001
+ fnabs. bfe00094e0000359 => bfe00094e0000359
+ fnabs. 0000000000000000 => 8000000000000000
+ fnabs. 8000000000000000 => 8000000000000000
+ fnabs. 7ff0000000000000 => fff0000000000000
+ fnabs. fff0000000000000 => fff0000000000000
+ fnabs. 7ff7ffffffffffff => fff7ffffffffffff
+ fnabs. fff7ffffffffffff => fff7ffffffffffff
+ fnabs. 7ff8000000000000 => fff8000000000000
+ fnabs. fff8000000000000 => fff8000000000000
+
+PPC floating point status register manipulation insns:
+PPC floating point status register manipulation insns
+ with flags update:
+PPC float load insns
+ with one register + one 16 bits immediate args with flags update:
+ lfs 0010000000000001, -120 => 37e0000000000000, 1001c0b0
+ lfs 00100094e0000359, -112 => 37e0009400000000, 1001c0b0
+ lfs 3fe0000000000001, -104 => 3ffc000000000000, 1001c0b0
+ lfs 3fe00094e0000359, -96 => 3ffc001280000000, 1001c0b0
+ lfs 8010000000000001, -88 => b7e0000000000000, 1001c0b0
+ lfs 80100094e0000359, -80 => b7e0009400000000, 1001c0b0
+ lfs bfe0000000000001, -72 => bffc000000000000, 1001c0b0
+ lfs bfe00094e0000359, -64 => bffc001280000000, 1001c0b0
+ lfs 0000000000000000, -56 => 0000000000000000, 1001c0b0
+ lfs 8000000000000000, -48 => 8000000000000000, 1001c0b0
+ lfs 7ff0000000000000, -40 => 7ffe000000000000, 1001c0b0
+ lfs fff0000000000000, -32 => fffe000000000000, 1001c0b0
+ lfs 7ff7ffffffffffff, -24 => 7ffeffffe0000000, 1001c0b0
+ lfs fff7ffffffffffff, -16 => fffeffffe0000000, 1001c0b0
+ lfs 7ff8000000000000, -8 => 7fff000000000000, 1001c0b0
+ lfs 0010000000000001, 0 => 37e0000000000000, 1001c038
+ lfs 00100094e0000359, 8 => 37e0009400000000, 1001c038
+ lfs 3fe0000000000001, 16 => 3ffc000000000000, 1001c038
+ lfs 3fe00094e0000359, 24 => 3ffc001280000000, 1001c038
+ lfs 8010000000000001, 32 => b7e0000000000000, 1001c038
+ lfs 80100094e0000359, 40 => b7e0009400000000, 1001c038
+ lfs bfe0000000000001, 48 => bffc000000000000, 1001c038
+ lfs bfe00094e0000359, 56 => bffc001280000000, 1001c038
+ lfs 0000000000000000, 64 => 0000000000000000, 1001c038
+ lfs 8000000000000000, 72 => 8000000000000000, 1001c038
+ lfs 7ff0000000000000, 80 => 7ffe000000000000, 1001c038
+ lfs fff0000000000000, 88 => fffe000000000000, 1001c038
+ lfs 7ff7ffffffffffff, 96 => 7ffeffffe0000000, 1001c038
+ lfs fff7ffffffffffff, 104 => fffeffffe0000000, 1001c038
+ lfs 7ff8000000000000, 112 => 7fff000000000000, 1001c038
+ lfs fff8000000000000, 120 => ffff000000000000, 1001c038
+
+ lfsu 0010000000000001, -120 => 37e0000000000000, 1001c038
+ lfsu 00100094e0000359, -112 => 37e0009400000000, 1001c040
+ lfsu 3fe0000000000001, -104 => 3ffc000000000000, 1001c048
+ lfsu 3fe00094e0000359, -96 => 3ffc001280000000, 1001c050
+ lfsu 8010000000000001, -88 => b7e0000000000000, 1001c058
+ lfsu 80100094e0000359, -80 => b7e0009400000000, 1001c060
+ lfsu bfe0000000000001, -72 => bffc000000000000, 1001c068
+ lfsu bfe00094e0000359, -64 => bffc001280000000, 1001c070
+ lfsu 0000000000000000, -56 => 0000000000000000, 1001c078
+ lfsu 8000000000000000, -48 => 8000000000000000, 1001c080
+ lfsu 7ff0000000000000, -40 => 7ffe000000000000, 1001c088
+ lfsu fff0000000000000, -32 => fffe000000000000, 1001c090
+ lfsu 7ff7ffffffffffff, -24 => 7ffeffffe0000000, 1001c098
+ lfsu fff7ffffffffffff, -16 => fffeffffe0000000, 1001c0a0
+ lfsu 7ff8000000000000, -8 => 7fff000000000000, 1001c0a8
+ lfsu 0010000000000001, 0 => 37e0000000000000, 1001c038
+ lfsu 00100094e0000359, 8 => 37e0009400000000, 1001c040
+ lfsu 3fe0000000000001, 16 => 3ffc000000000000, 1001c048
+ lfsu 3fe00094e0000359, 24 => 3ffc001280000000, 1001c050
+ lfsu 8010000000000001, 32 => b7e0000000000000, 1001c058
+ lfsu 80100094e0000359, 40 => b7e0009400000000, 1001c060
+ lfsu bfe0000000000001, 48 => bffc000000000000, 1001c068
+ lfsu bfe00094e0000359, 56 => bffc001280000000, 1001c070
+ lfsu 0000000000000000, 64 => 0000000000000000, 1001c078
+ lfsu 8000000000000000, 72 => 8000000000000000, 1001c080
+ lfsu 7ff0000000000000, 80 => 7ffe000000000000, 1001c088
+ lfsu fff0000000000000, 88 => fffe000000000000, 1001c090
+ lfsu 7ff7ffffffffffff, 96 => 7ffeffffe0000000, 1001c098
+ lfsu fff7ffffffffffff, 104 => fffeffffe0000000, 1001c0a0
+ lfsu 7ff8000000000000, 112 => 7fff000000000000, 1001c0a8
+ lfsu fff8000000000000, 120 => ffff000000000000, 1001c0b0
+
+ lfd 0010000000000001, -120 => 0010000000000001, 1001c0b0
+ lfd 00100094e0000359, -112 => 00100094e0000359, 1001c0b0
+ lfd 3fe0000000000001, -104 => 3fe0000000000001, 1001c0b0
+ lfd 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c0b0
+ lfd 8010000000000001, -88 => 8010000000000001, 1001c0b0
+ lfd 80100094e0000359, -80 => 80100094e0000359, 1001c0b0
+ lfd bfe0000000000001, -72 => bfe0000000000001, 1001c0b0
+ lfd bfe00094e0000359, -64 => bfe00094e0000359, 1001c0b0
+ lfd 0000000000000000, -56 => 0000000000000000, 1001c0b0
+ lfd 8000000000000000, -48 => 8000000000000000, 1001c0b0
+ lfd 7ff0000000000000, -40 => 7ff0000000000000, 1001c0b0
+ lfd fff0000000000000, -32 => fff0000000000000, 1001c0b0
+ lfd 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c0b0
+ lfd fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c0b0
+ lfd 7ff8000000000000, -8 => 7ff8000000000000, 1001c0b0
+ lfd 0010000000000001, 0 => 0010000000000001, 1001c038
+ lfd 00100094e0000359, 8 => 00100094e0000359, 1001c038
+ lfd 3fe0000000000001, 16 => 3fe0000000000001, 1001c038
+ lfd 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c038
+ lfd 8010000000000001, 32 => 8010000000000001, 1001c038
+ lfd 80100094e0000359, 40 => 80100094e0000359, 1001c038
+ lfd bfe0000000000001, 48 => bfe0000000000001, 1001c038
+ lfd bfe00094e0000359, 56 => bfe00094e0000359, 1001c038
+ lfd 0000000000000000, 64 => 0000000000000000, 1001c038
+ lfd 8000000000000000, 72 => 8000000000000000, 1001c038
+ lfd 7ff0000000000000, 80 => 7ff0000000000000, 1001c038
+ lfd fff0000000000000, 88 => fff0000000000000, 1001c038
+ lfd 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c038
+ lfd fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c038
+ lfd 7ff8000000000000, 112 => 7ff8000000000000, 1001c038
+ lfd fff8000000000000, 120 => fff8000000000000, 1001c038
+
+ lfdu 0010000000000001, -120 => 0010000000000001, 1001c038
+ lfdu 00100094e0000359, -112 => 00100094e0000359, 1001c040
+ lfdu 3fe0000000000001, -104 => 3fe0000000000001, 1001c048
+ lfdu 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c050
+ lfdu 8010000000000001, -88 => 8010000000000001, 1001c058
+ lfdu 80100094e0000359, -80 => 80100094e0000359, 1001c060
+ lfdu bfe0000000000001, -72 => bfe0000000000001, 1001c068
+ lfdu bfe00094e0000359, -64 => bfe00094e0000359, 1001c070
+ lfdu 0000000000000000, -56 => 0000000000000000, 1001c078
+ lfdu 8000000000000000, -48 => 8000000000000000, 1001c080
+ lfdu 7ff0000000000000, -40 => 7ff0000000000000, 1001c088
+ lfdu fff0000000000000, -32 => fff0000000000000, 1001c090
+ lfdu 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c098
+ lfdu fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c0a0
+ lfdu 7ff8000000000000, -8 => 7ff8000000000000, 1001c0a8
+ lfdu 0010000000000001, 0 => 0010000000000001, 1001c038
+ lfdu 00100094e0000359, 8 => 00100094e0000359, 1001c040
+ lfdu 3fe0000000000001, 16 => 3fe0000000000001, 1001c048
+ lfdu 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c050
+ lfdu 8010000000000001, 32 => 8010000000000001, 1001c058
+ lfdu 80100094e0000359, 40 => 80100094e0000359, 1001c060
+ lfdu bfe0000000000001, 48 => bfe0000000000001, 1001c068
+ lfdu bfe00094e0000359, 56 => bfe00094e0000359, 1001c070
+ lfdu 0000000000000000, 64 => 0000000000000000, 1001c078
+ lfdu 8000000000000000, 72 => 8000000000000000, 1001c080
+ lfdu 7ff0000000000000, 80 => 7ff0000000000000, 1001c088
+ lfdu fff0000000000000, 88 => fff0000000000000, 1001c090
+ lfdu 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c098
+ lfdu fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c0a0
+ lfdu 7ff8000000000000, 112 => 7ff8000000000000, 1001c0a8
+ lfdu fff8000000000000, 120 => fff8000000000000, 1001c0b0
+
+PPC float load insns with two register args:
+ lfsx 0010000000000001, -120 => 37e0000000000000, 1001c0b0
+ lfsx 00100094e0000359, -112 => 37e0009400000000, 1001c0b0
+ lfsx 3fe0000000000001, -104 => 3ffc000000000000, 1001c0b0
+ lfsx 3fe00094e0000359, -96 => 3ffc001280000000, 1001c0b0
+ lfsx 8010000000000001, -88 => b7e0000000000000, 1001c0b0
+ lfsx 80100094e0000359, -80 => b7e0009400000000, 1001c0b0
+ lfsx bfe0000000000001, -72 => bffc000000000000, 1001c0b0
+ lfsx bfe00094e0000359, -64 => bffc001280000000, 1001c0b0
+ lfsx 0000000000000000, -56 => 0000000000000000, 1001c0b0
+ lfsx 8000000000000000, -48 => 8000000000000000, 1001c0b0
+ lfsx 7ff0000000000000, -40 => 7ffe000000000000, 1001c0b0
+ lfsx fff0000000000000, -32 => fffe000000000000, 1001c0b0
+ lfsx 7ff7ffffffffffff, -24 => 7ffeffffe0000000, 1001c0b0
+ lfsx fff7ffffffffffff, -16 => fffeffffe0000000, 1001c0b0
+ lfsx 7ff8000000000000, -8 => 7fff000000000000, 1001c0b0
+ lfsx 0010000000000001, 0 => 37e0000000000000, 1001c038
+ lfsx 00100094e0000359, 8 => 37e0009400000000, 1001c038
+ lfsx 3fe0000000000001, 16 => 3ffc000000000000, 1001c038
+ lfsx 3fe00094e0000359, 24 => 3ffc001280000000, 1001c038
+ lfsx 8010000000000001, 32 => b7e0000000000000, 1001c038
+ lfsx 80100094e0000359, 40 => b7e0009400000000, 1001c038
+ lfsx bfe0000000000001, 48 => bffc000000000000, 1001c038
+ lfsx bfe00094e0000359, 56 => bffc001280000000, 1001c038
+ lfsx 0000000000000000, 64 => 0000000000000000, 1001c038
+ lfsx 8000000000000000, 72 => 8000000000000000, 1001c038
+ lfsx 7ff0000000000000, 80 => 7ffe000000000000, 1001c038
+ lfsx fff0000000000000, 88 => fffe000000000000, 1001c038
+ lfsx 7ff7ffffffffffff, 96 => 7ffeffffe0000000, 1001c038
+ lfsx fff7ffffffffffff, 104 => fffeffffe0000000, 1001c038
+ lfsx 7ff8000000000000, 112 => 7fff000000000000, 1001c038
+ lfsx fff8000000000000, 120 => ffff000000000000, 1001c038
+
+ lfsux 0010000000000001, -120 => 37e0000000000000, 1001c038
+ lfsux 00100094e0000359, -112 => 37e0009400000000, 1001c040
+ lfsux 3fe0000000000001, -104 => 3ffc000000000000, 1001c048
+ lfsux 3fe00094e0000359, -96 => 3ffc001280000000, 1001c050
+ lfsux 8010000000000001, -88 => b7e0000000000000, 1001c058
+ lfsux 80100094e0000359, -80 => b7e0009400000000, 1001c060
+ lfsux bfe0000000000001, -72 => bffc000000000000, 1001c068
+ lfsux bfe00094e0000359, -64 => bffc001280000000, 1001c070
+ lfsux 0000000000000000, -56 => 0000000000000000, 1001c078
+ lfsux 8000000000000000, -48 => 8000000000000000, 1001c080
+ lfsux 7ff0000000000000, -40 => 7ffe000000000000, 1001c088
+ lfsux fff0000000000000, -32 => fffe000000000000, 1001c090
+ lfsux 7ff7ffffffffffff, -24 => 7ffeffffe0000000, 1001c098
+ lfsux fff7ffffffffffff, -16 => fffeffffe0000000, 1001c0a0
+ lfsux 7ff8000000000000, -8 => 7fff000000000000, 1001c0a8
+ lfsux 0010000000000001, 0 => 37e0000000000000, 1001c038
+ lfsux 00100094e0000359, 8 => 37e0009400000000, 1001c040
+ lfsux 3fe0000000000001, 16 => 3ffc000000000000, 1001c048
+ lfsux 3fe00094e0000359, 24 => 3ffc001280000000, 1001c050
+ lfsux 8010000000000001, 32 => b7e0000000000000, 1001c058
+ lfsux 80100094e0000359, 40 => b7e0009400000000, 1001c060
+ lfsux bfe0000000000001, 48 => bffc000000000000, 1001c068
+ lfsux bfe00094e0000359, 56 => bffc001280000000, 1001c070
+ lfsux 0000000000000000, 64 => 0000000000000000, 1001c078
+ lfsux 8000000000000000, 72 => 8000000000000000, 1001c080
+ lfsux 7ff0000000000000, 80 => 7ffe000000000000, 1001c088
+ lfsux fff0000000000000, 88 => fffe000000000000, 1001c090
+ lfsux 7ff7ffffffffffff, 96 => 7ffeffffe0000000, 1001c098
+ lfsux fff7ffffffffffff, 104 => fffeffffe0000000, 1001c0a0
+ lfsux 7ff8000000000000, 112 => 7fff000000000000, 1001c0a8
+ lfsux fff8000000000000, 120 => ffff000000000000, 1001c0b0
+
+ lfdx 0010000000000001, -120 => 0010000000000001, 1001c0b0
+ lfdx 00100094e0000359, -112 => 00100094e0000359, 1001c0b0
+ lfdx 3fe0000000000001, -104 => 3fe0000000000001, 1001c0b0
+ lfdx 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c0b0
+ lfdx 8010000000000001, -88 => 8010000000000001, 1001c0b0
+ lfdx 80100094e0000359, -80 => 80100094e0000359, 1001c0b0
+ lfdx bfe0000000000001, -72 => bfe0000000000001, 1001c0b0
+ lfdx bfe00094e0000359, -64 => bfe00094e0000359, 1001c0b0
+ lfdx 0000000000000000, -56 => 0000000000000000, 1001c0b0
+ lfdx 8000000000000000, -48 => 8000000000000000, 1001c0b0
+ lfdx 7ff0000000000000, -40 => 7ff0000000000000, 1001c0b0
+ lfdx fff0000000000000, -32 => fff0000000000000, 1001c0b0
+ lfdx 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c0b0
+ lfdx fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c0b0
+ lfdx 7ff8000000000000, -8 => 7ff8000000000000, 1001c0b0
+ lfdx 0010000000000001, 0 => 0010000000000001, 1001c038
+ lfdx 00100094e0000359, 8 => 00100094e0000359, 1001c038
+ lfdx 3fe0000000000001, 16 => 3fe0000000000001, 1001c038
+ lfdx 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c038
+ lfdx 8010000000000001, 32 => 8010000000000001, 1001c038
+ lfdx 80100094e0000359, 40 => 80100094e0000359, 1001c038
+ lfdx bfe0000000000001, 48 => bfe0000000000001, 1001c038
+ lfdx bfe00094e0000359, 56 => bfe00094e0000359, 1001c038
+ lfdx 0000000000000000, 64 => 0000000000000000, 1001c038
+ lfdx 8000000000000000, 72 => 8000000000000000, 1001c038
+ lfdx 7ff0000000000000, 80 => 7ff0000000000000, 1001c038
+ lfdx fff0000000000000, 88 => fff0000000000000, 1001c038
+ lfdx 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c038
+ lfdx fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c038
+ lfdx 7ff8000000000000, 112 => 7ff8000000000000, 1001c038
+ lfdx fff8000000000000, 120 => fff8000000000000, 1001c038
+
+ lfdux 0010000000000001, -120 => 0010000000000001, 1001c038
+ lfdux 00100094e0000359, -112 => 00100094e0000359, 1001c040
+ lfdux 3fe0000000000001, -104 => 3fe0000000000001, 1001c048
+ lfdux 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c050
+ lfdux 8010000000000001, -88 => 8010000000000001, 1001c058
+ lfdux 80100094e0000359, -80 => 80100094e0000359, 1001c060
+ lfdux bfe0000000000001, -72 => bfe0000000000001, 1001c068
+ lfdux bfe00094e0000359, -64 => bfe00094e0000359, 1001c070
+ lfdux 0000000000000000, -56 => 0000000000000000, 1001c078
+ lfdux 8000000000000000, -48 => 8000000000000000, 1001c080
+ lfdux 7ff0000000000000, -40 => 7ff0000000000000, 1001c088
+ lfdux fff0000000000000, -32 => fff0000000000000, 1001c090
+ lfdux 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c098
+ lfdux fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c0a0
+ lfdux 7ff8000000000000, -8 => 7ff8000000000000, 1001c0a8
+ lfdux 0010000000000001, 0 => 0010000000000001, 1001c038
+ lfdux 00100094e0000359, 8 => 00100094e0000359, 1001c040
+ lfdux 3fe0000000000001, 16 => 3fe0000000000001, 1001c048
+ lfdux 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c050
+ lfdux 8010000000000001, 32 => 8010000000000001, 1001c058
+ lfdux 80100094e0000359, 40 => 80100094e0000359, 1001c060
+ lfdux bfe0000000000001, 48 => bfe0000000000001, 1001c068
+ lfdux bfe00094e0000359, 56 => bfe00094e0000359, 1001c070
+ lfdux 0000000000000000, 64 => 0000000000000000, 1001c078
+ lfdux 8000000000000000, 72 => 8000000000000000, 1001c080
+ lfdux 7ff0000000000000, 80 => 7ff0000000000000, 1001c088
+ lfdux fff0000000000000, 88 => fff0000000000000, 1001c090
+ lfdux 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c098
+ lfdux fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c0a0
+ lfdux 7ff8000000000000, 112 => 7ff8000000000000, 1001c0a8
+ lfdux fff8000000000000, 120 => fff8000000000000, 1001c0b0
+
+PPC float store insns
+ with one register + one 16 bits immediate args with flags update:
+ stfs 0010000000000001, -56 => 0000000000000000, 1001c268
+ stfs 00100094e0000359, -48 => 0000000000000000, 1001c268
+ stfs 3fe0000000000001, -40 => 3f00000000000000, 1001c268
+ stfs 3fe00094e0000359, -32 => 3f0004a700000000, 1001c268
+ stfs 8010000000000001, -24 => 8000000000000000, 1001c268
+ stfs 80100094e0000359, -16 => 8000000000000000, 1001c268
+ stfs bfe0000000000001, -8 => bf00000000000000, 1001c268
+ stfs 0010000000000001, 0 => 0000000000000000, 1001c230
+ stfs 00100094e0000359, 8 => 0000000000000000, 1001c230
+ stfs 3fe0000000000001, 16 => 3f00000000000000, 1001c230
+ stfs 3fe00094e0000359, 24 => 3f0004a700000000, 1001c230
+ stfs 8010000000000001, 32 => 8000000000000000, 1001c230
+ stfs 80100094e0000359, 40 => 8000000000000000, 1001c230
+ stfs bfe0000000000001, 48 => bf00000000000000, 1001c230
+ stfs bfe00094e0000359, 56 => bf0004a700000000, 1001c230
+
+ stfsu 0010000000000001, -56 => 0000000000000000, 1001c230
+ stfsu 00100094e0000359, -48 => 0000000000000000, 1001c238
+ stfsu 3fe0000000000001, -40 => 3f00000000000000, 1001c240
+ stfsu 3fe00094e0000359, -32 => 3f0004a700000000, 1001c248
+ stfsu 8010000000000001, -24 => 8000000000000000, 1001c250
+ stfsu 80100094e0000359, -16 => 8000000000000000, 1001c258
+ stfsu bfe0000000000001, -8 => bf00000000000000, 1001c260
+ stfsu 0010000000000001, 0 => 0000000000000000, 1001c230
+ stfsu 00100094e0000359, 8 => 0000000000000000, 1001c238
+ stfsu 3fe0000000000001, 16 => 3f00000000000000, 1001c240
+ stfsu 3fe00094e0000359, 24 => 3f0004a700000000, 1001c248
+ stfsu 8010000000000001, 32 => 8000000000000000, 1001c250
+ stfsu 80100094e0000359, 40 => 8000000000000000, 1001c258
+ stfsu bfe0000000000001, 48 => bf00000000000000, 1001c260
+ stfsu bfe00094e0000359, 56 => bf0004a700000000, 1001c268
+
+ stfd 0010000000000001, -120 => 0010000000000001, 1001c2f0
+ stfd 00100094e0000359, -112 => 00100094e0000359, 1001c2f0
+ stfd 3fe0000000000001, -104 => 3fe0000000000001, 1001c2f0
+ stfd 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c2f0
+ stfd 8010000000000001, -88 => 8010000000000001, 1001c2f0
+ stfd 80100094e0000359, -80 => 80100094e0000359, 1001c2f0
+ stfd bfe0000000000001, -72 => bfe0000000000001, 1001c2f0
+ stfd bfe00094e0000359, -64 => bfe00094e0000359, 1001c2f0
+ stfd 0000000000000000, -56 => 0000000000000000, 1001c2f0
+ stfd 8000000000000000, -48 => 8000000000000000, 1001c2f0
+ stfd 7ff0000000000000, -40 => 7ff0000000000000, 1001c2f0
+ stfd fff0000000000000, -32 => fff0000000000000, 1001c2f0
+ stfd 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c2f0
+ stfd fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c2f0
+ stfd 7ff8000000000000, -8 => 7ff8000000000000, 1001c2f0
+ stfd 0010000000000001, 0 => 0010000000000001, 1001c278
+ stfd 00100094e0000359, 8 => 00100094e0000359, 1001c278
+ stfd 3fe0000000000001, 16 => 3fe0000000000001, 1001c278
+ stfd 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c278
+ stfd 8010000000000001, 32 => 8010000000000001, 1001c278
+ stfd 80100094e0000359, 40 => 80100094e0000359, 1001c278
+ stfd bfe0000000000001, 48 => bfe0000000000001, 1001c278
+ stfd bfe00094e0000359, 56 => bfe00094e0000359, 1001c278
+ stfd 0000000000000000, 64 => 0000000000000000, 1001c278
+ stfd 8000000000000000, 72 => 8000000000000000, 1001c278
+ stfd 7ff0000000000000, 80 => 7ff0000000000000, 1001c278
+ stfd fff0000000000000, 88 => fff0000000000000, 1001c278
+ stfd 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c278
+ stfd fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c278
+ stfd 7ff8000000000000, 112 => 7ff8000000000000, 1001c278
+ stfd fff8000000000000, 120 => fff8000000000000, 1001c278
+
+ stfdu 0010000000000001, -120 => 0010000000000001, 1001c208
+ stfdu 00100094e0000359, -112 => 00100094e0000359, 1001c210
+ stfdu 3fe0000000000001, -104 => 3fe0000000000001, 1001c218
+ stfdu 3fe00094e0000359, -96 => 3fe00094e0000359, 1001c220
+ stfdu 8010000000000001, -88 => 8010000000000001, 1001c228
+ stfdu 80100094e0000359, -80 => 80100094e0000359, 1001c230
+ stfdu bfe0000000000001, -72 => bfe0000000000001, 1001c238
+ stfdu bfe00094e0000359, -64 => bfe00094e0000359, 1001c240
+ stfdu 0000000000000000, -56 => 0000000000000000, 1001c248
+ stfdu 8000000000000000, -48 => 8000000000000000, 1001c250
+ stfdu 7ff0000000000000, -40 => 7ff0000000000000, 1001c258
+ stfdu fff0000000000000, -32 => fff0000000000000, 1001c260
+ stfdu 7ff7ffffffffffff, -24 => 7ff7ffffffffffff, 1001c268
+ stfdu fff7ffffffffffff, -16 => fff7ffffffffffff, 1001c270
+ stfdu 7ff8000000000000, -8 => 7ff8000000000000, 1001c278
+ stfdu 0010000000000001, 0 => 0010000000000001, 1001c208
+ stfdu 00100094e0000359, 8 => 00100094e0000359, 1001c210
+ stfdu 3fe0000000000001, 16 => 3fe0000000000001, 1001c218
+ stfdu 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c220
+ stfdu 8010000000000001, 32 => 8010000000000001, 1001c228
+ stfdu 80100094e0000359, 40 => 80100094e0000359, 1001c230
+ stfdu bfe0000000000001, 48 => bfe0000000000001, 1001c238
+ stfdu bfe00094e0000359, 56 => bfe00094e0000359, 1001c240
+ stfdu 0000000000000000, 64 => 0000000000000000, 1001c248
+ stfdu 8000000000000000, 72 => 8000000000000000, 1001c250
+ stfdu 7ff0000000000000, 80 => 7ff0000000000000, 1001c258
+ stfdu fff0000000000000, 88 => fff0000000000000, 1001c260
+ stfdu 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c268
+ stfdu fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c270
+ stfdu 7ff8000000000000, 112 => 7ff8000000000000, 1001c278
+ stfdu fff8000000000000, 120 => fff8000000000000, 1001c280
+
+PPC float store insns with three register args:
+ stfsx 0010000000000001, 0 => 0000000000000000, 1001c208
+ stfsx 00100094e0000359, 8 => 0000000000000000, 1001c208
+ stfsx 3fe0000000000001, 16 => 3f00000000000000, 1001c208
+ stfsx 3fe00094e0000359, 24 => 3f0004a700000000, 1001c208
+ stfsx 8010000000000001, 32 => 8000000000000000, 1001c208
+ stfsx 80100094e0000359, 40 => 8000000000000000, 1001c208
+ stfsx bfe0000000000001, 48 => bf00000000000000, 1001c208
+ stfsx bfe00094e0000359, 56 => bf0004a700000000, 1001c208
+
+ stfsux 0010000000000001, 0 => 0000000000000000, 1001c208
+ stfsux 00100094e0000359, 8 => 0000000000000000, 1001c210
+ stfsux 3fe0000000000001, 16 => 3f00000000000000, 1001c218
+ stfsux 3fe00094e0000359, 24 => 3f0004a700000000, 1001c220
+ stfsux 8010000000000001, 32 => 8000000000000000, 1001c228
+ stfsux 80100094e0000359, 40 => 8000000000000000, 1001c230
+ stfsux bfe0000000000001, 48 => bf00000000000000, 1001c238
+ stfsux bfe00094e0000359, 56 => bf0004a700000000, 1001c240
+
+ stfdx 0010000000000001, 0 => 0010000000000001, 1001c250
+ stfdx 00100094e0000359, 8 => 00100094e0000359, 1001c250
+ stfdx 3fe0000000000001, 16 => 3fe0000000000001, 1001c250
+ stfdx 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c250
+ stfdx 8010000000000001, 32 => 8010000000000001, 1001c250
+ stfdx 80100094e0000359, 40 => 80100094e0000359, 1001c250
+ stfdx bfe0000000000001, 48 => bfe0000000000001, 1001c250
+ stfdx bfe00094e0000359, 56 => bfe00094e0000359, 1001c250
+ stfdx 0000000000000000, 64 => 0000000000000000, 1001c250
+ stfdx 8000000000000000, 72 => 8000000000000000, 1001c250
+ stfdx 7ff0000000000000, 80 => 7ff0000000000000, 1001c250
+ stfdx fff0000000000000, 88 => fff0000000000000, 1001c250
+ stfdx 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c250
+ stfdx fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c250
+ stfdx 7ff8000000000000, 112 => 7ff8000000000000, 1001c250
+ stfdx fff8000000000000, 120 => fff8000000000000, 1001c250
+
+ stfdux 0010000000000001, 0 => 0010000000000001, 1001c208
+ stfdux 00100094e0000359, 8 => 00100094e0000359, 1001c210
+ stfdux 3fe0000000000001, 16 => 3fe0000000000001, 1001c218
+ stfdux 3fe00094e0000359, 24 => 3fe00094e0000359, 1001c220
+ stfdux 8010000000000001, 32 => 8010000000000001, 1001c228
+ stfdux 80100094e0000359, 40 => 80100094e0000359, 1001c230
+ stfdux bfe0000000000001, 48 => bfe0000000000001, 1001c238
+ stfdux bfe00094e0000359, 56 => bfe00094e0000359, 1001c240
+ stfdux 0000000000000000, 64 => 0000000000000000, 1001c248
+ stfdux 8000000000000000, 72 => 8000000000000000, 1001c250
+ stfdux 7ff0000000000000, 80 => 7ff0000000000000, 1001c258
+ stfdux fff0000000000000, 88 => fff0000000000000, 1001c260
+ stfdux 7ff7ffffffffffff, 96 => 7ff7ffffffffffff, 1001c268
+ stfdux fff7ffffffffffff, 104 => fff7ffffffffffff, 1001c270
+ stfdux 7ff8000000000000, 112 => 7ff8000000000000, 1001c278
+ stfdux fff8000000000000, 120 => fff8000000000000, 1001c280
+
+All done. Tested 67 different instructions
diff --git a/none/tests/ppc32/jm-fp.vgtest b/none/tests/ppc32/jm-fp.vgtest
new file mode 100644
index 0000000..8586bfc
--- /dev/null
+++ b/none/tests/ppc32/jm-fp.vgtest
@@ -0,0 +1 @@
+prog: jm-insns -f
diff --git a/none/tests/ppc32/jm-insns.c b/none/tests/ppc32/jm-insns.c
index 792bce8..4f8d0fd 100644
--- a/none/tests/ppc32/jm-insns.c
+++ b/none/tests/ppc32/jm-insns.c
@@ -137,6 +137,28 @@
* 0x3A2E0009 => addi 17, 14, 9
*/
+
+/**********************************************************************/
+/* Uncomment to enable many arguments for altivec insns */
+#define USAGE_SIMPLE
+
+/* Uncomment to enable many arguments for altivec insns */
+//#define ALTIVEC_ARGS_LARGE
+
+/* Uncomment to enable output of CR flags for float tests */
+//#define TEST_FLOAT_FLAGS
+
+/* Uncomment to enable debug output */
+//#define DEBUG_ARGS_BUILD
+//#define DEBUG_FILTER
+
+/* These should be set at build time */
+//#define NO_FLOAT
+//#define HAS_ALTIVEC
+//#define IS_PPC405
+/**********************************************************************/
+
+
#include <stdint.h>
register double f14 __asm__ ("f14");
@@ -245,18 +267,14 @@
/* -------------- END #include "test-ppc.h" -------------- */
-#define USAGE_SIMPLE
-//#define ALTIVEC_ARGS_LARGE
-//#define DEBUG_ARGS_BUILD
#if defined (DEBUG_ARGS_BUILD)
#define AB_DPRINTF(fmt, args...) do { fprintf(stderr, fmt , ##args); } while (0)
#else
#define AB_DPRINTF(fmt, args...) do { } while (0)
#endif
-//#define DEBUG_FILTER
#if defined (DEBUG_FILTER)
#define FDPRINTF(fmt, args...) do { fprintf(stderr, fmt , ##args); } while (0)
#else
@@ -1720,6 +1738,11 @@
__asm__ __volatile__ ("fnabs 17, 14");
}
+static void test_fsqrt (void)
+{
+ __asm__ __volatile__ ("fsqrt 17, 14");
+}
+
static test_t tests_fa_ops_one[] = {
// { &test_fres , " fres", }, // TODO: Not yet supported
// { &test_frsqrte , " frsqrte", }, // TODO: Not yet supported
@@ -1730,6 +1753,7 @@
{ &test_fneg , " fneg", },
{ &test_fabs , " fabs", },
{ &test_fnabs , " fnabs", },
+ { &test_fsqrt , " fsqrt", },
{ NULL, NULL, },
};
#endif /* !defined (NO_FLOAT) */
@@ -1916,9 +1940,8 @@
);
static test_t tests_fst_ops_three_i16[] = {
-// TODO: Fix VEX to stop rounding these twice...
-// { &test_stfs , " stfs", },
-// { &test_stfsu , " stfsu", },
+ { &test_stfs , " stfs", },
+ { &test_stfsu , " stfsu", },
{ &test_stfd , " stfd", },
{ &test_stfdu , " stfdu", },
{ NULL, NULL, },
@@ -1947,9 +1970,8 @@
}
static test_t tests_fst_ops_three[] = {
-// TODO: Fix VEX to stop rounding these twice...
-// { &test_stfsx , " stfsx", },
-// { &test_stfsux , " stfsux", },
+ { &test_stfsx , " stfsx", },
+ { &test_stfsux , " stfsux", },
{ &test_stfdx , " stfdx", },
{ &test_stfdux , " stfdux", },
{ NULL, NULL, },
@@ -3939,6 +3961,7 @@
static double *fargs;
static int nb_fargs;
+static int nb_normal_fargs;
static uint32_t *iargs;
static int nb_iargs;
static uint16_t *ii16;
@@ -3999,11 +4022,15 @@
int s;
int i=0;
+ /* Note: VEX isn't so hot with denormals, so don't bother
+ testing them: set exp > 0
+ */
+
if ( arg_list_size == 1 ) { // Large
fargs = malloc(200 * sizeof(double));
for (s=0; s<2; s++) {
for (e0=0; e0<2; e0++) {
- for (e1=0x000; ; e1 = ((e1 + 1) << 2) + 6) {
+ for (e1=0x001; ; e1 = ((e1 + 1) << 2) + 6) {
if (e1 >= 0x400)
e1 = 0x3fe;
exp = (e0 << 10) | e1;
@@ -4022,7 +4049,7 @@
for (s=0; s<2; s++) { // x2
// for (e0=0; e0<2; e0++) {
for (e1=0x001; ; e1 = ((e1 + 1) << 13) + 7) { // x2
-// for (e1=0x000; ; e1 = ((e1 + 1) << 5) + 7) { // x3
+// for (e1=0x001; ; e1 = ((e1 + 1) << 5) + 7) { // x3
if (e1 >= 0x400)
e1 = 0x3fe;
// exp = (e0 << 10) | e1;
@@ -4039,6 +4066,10 @@
}
}
+ /* To iterate over non-special values only */
+ nb_normal_fargs = i;
+
+
/* Special values */
/* +0.0 : 0 0x000 0x0000000000000 */
s = 0;
@@ -5666,9 +5697,13 @@
volatile uint32_t flags, tmpcr, tmpxer;
int i, j, k;
- for (i=0; i<nb_fargs; i+=3) {
- for (j=0; j<nb_fargs; j+=5) {
- for (k=0; k<nb_fargs; k+=7) {
+ /* Note: using nb_normal_fargs:
+ - not testing special values for these insns
+ */
+
+ for (i=0; i<nb_normal_fargs; i+=3) {
+ for (j=0; j<nb_normal_fargs; j+=5) {
+ for (k=0; k<nb_normal_fargs; k+=7) {
u0 = *(uint64_t *)(&fargs[i]);
u1 = *(uint64_t *)(&fargs[j]);
u2 = *(uint64_t *)(&fargs[k]);
@@ -5697,8 +5732,18 @@
__asm__ __volatile__ ("mtcr 18");
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+
+ /* Note: zapping the bottom byte of the result,
+ as vex's accuracy isn't perfect */
+ ur &= 0xFFFFFFFFFFFFFF00ULL;
+
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx, %016llx, %016llx => %016llx (%08x)\n",
name, u0, u1, u2, ur, flags);
+#else
+ printf("%s %016llx, %016llx, %016llx => %016llx\n",
+ name, u0, u1, u2, ur);
+#endif
}
if (verbose) printf("\n");
}
@@ -5740,8 +5785,13 @@
__asm__ __volatile__ ("mtcr 18");
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx, %016llx => %016llx (%08x)\n",
name, u0, u1, ur, flags);
+#else
+ printf("%s %016llx, %016llx => %016llx\n",
+ name, u0, u1, ur);
+#endif
}
if (verbose) printf("\n");
}
@@ -5754,7 +5804,11 @@
uint64_t u0, ur;
volatile uint32_t flags, tmpcr, tmpxer;
int i;
-
+
+ /* if we're testing fctiw or fctiwz, zap the hi 32bits,
+ as they're undefined */
+ unsigned char zap_hi_32bits = strstr(name,"fctiw") ? 1 : 0;
+
for (i=0; i<nb_fargs; i++) {
u0 = *(uint64_t *)(&fargs[i]);
f14 = fargs[i];
@@ -5779,7 +5833,15 @@
__asm__ __volatile__ ("mtcr 18");
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+
+ if (zap_hi_32bits != 0)
+ ur &= 0xFFFFFFFFULL;
+
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx => %016llx (%08x)\n", name, u0, ur, flags);
+#else
+ printf("%s %016llx => %016llx\n", name, u0, ur);
+#endif
}
}
@@ -5895,9 +5957,15 @@
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx, %4d => %016llx, %08x (%08x %08x)\n",
name, double_to_bits(src), offs,
double_to_bits(res), r14, flags, xer);
+#else
+ printf("%s %016llx, %4d => %016llx, %08x\n",
+ name, double_to_bits(src), offs,
+ double_to_bits(res), r14);
+#endif
}
if (verbose) printf("\n");
}
@@ -5946,9 +6014,15 @@
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx, %4d => %016llx, %08x (%08x %08x)\n",
name, double_to_bits(src), r15,
double_to_bits(res), r14, flags, xer);
+#else
+ printf("%s %016llx, %4d => %016llx, %08x\n",
+ name, double_to_bits(src), r15,
+ double_to_bits(res), r14);
+#endif
}
}
@@ -5961,17 +6035,28 @@
double src, *p_dst;
int i, offs;
double *fargs_priv;
-
+ int nb_tmp_fargs = nb_fargs;
+
+ /* if we're storing an fp single-precision, don't want nans
+ - the vex implementation doesn't like them (yet)
+ Note: This is actually a bigger problem: the vex implementation
+ rounds these insns twice. This leads to many rounding errors.
+ For the small fargs set, however, this doesn't show up.
+ */
+ if (strstr(name, "stfs"))
+ nb_tmp_fargs = nb_normal_fargs;
+
+
// private fargs table to store to
- fargs_priv = malloc(nb_fargs * sizeof(double));
+ fargs_priv = malloc(nb_tmp_fargs * sizeof(double));
- /* offset within [1-nb_fargs:nb_fargs] */
- for (i=1-nb_fargs; i<nb_fargs; i++) {
+ /* offset within [1-nb_tmp_fargs:nb_tmp_fargs] */
+ for (i=1-nb_tmp_fargs; i<nb_tmp_fargs; i++) {
offs = i * 8; // offset = i * sizeof(double)
if (i < 0) {
- src = fargs [nb_fargs-1 + i];
- p_dst = &fargs_priv[nb_fargs-1 + i];
- base = (uint32_t)&fargs_priv[nb_fargs-1];
+ src = fargs [nb_tmp_fargs-1 + i];
+ p_dst = &fargs_priv[nb_tmp_fargs-1 + i];
+ base = (uint32_t)&fargs_priv[nb_tmp_fargs-1];
} else {
src = fargs [i];
p_dst = &fargs_priv[i];
@@ -6011,9 +6096,15 @@
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
+#if defined TEST_FLOAT_FLAGS
printf("%s %016llx, %4d => %016llx, %08x (%08x %08x)\n",
name, double_to_bits(src), offs,
double_to_bits(*p_dst), r15, flags, xer);
+#else
+ printf("%s %016llx, %4d => %016llx, %08x\n",
+ name, double_to_bits(src), offs,
+ double_to_bits(*p_dst), r15);
+#endif
}
free(fargs_priv);
}
@@ -6026,18 +6117,29 @@
double src, *p_dst;
int i, offs;
double *fargs_priv;
+ int nb_tmp_fargs = nb_fargs;
+
+ /* if we're storing an fp single-precision, don't want nans
+ - the vex implementation doesn't like them (yet)
+ Note: This is actually a bigger problem: the vex implementation
+ rounds these insns twice. This leads to many rounding errors.
+ For the small fargs set, however, this doesn't show up.
+ */
+ if (strstr(name, "stfs")) // stfs(u)(x)
+ nb_tmp_fargs = nb_normal_fargs;
+
// private fargs table to store to
- fargs_priv = malloc(nb_fargs * sizeof(double));
+ fargs_priv = malloc(nb_tmp_fargs * sizeof(double));
- // /* offset within [1-nb_fargs:nb_fargs] */
- // for (i=1-nb_fargs; i<nb_fargs; i++) {
- for (i=0; i<nb_fargs; i++) {
+ // /* offset within [1-nb_tmp_fargs:nb_tmp_fargs] */
+ // for (i=1-nb_tmp_fargs; i<nb_tmp_fargs; i++) {
+ for (i=0; i<nb_tmp_fargs; i++) {
offs = i * 8; // offset = i * sizeof(double)
if (i < 0) {
- src = fargs [nb_fargs-1 + i];
- p_dst = &fargs_priv[nb_fargs-1 + i];
- base = (uint32_t)&fargs_priv[nb_fargs-1];
+ src = fargs [nb_tmp_fargs-1 + i];
+ p_dst = &fargs_priv[nb_tmp_fargs-1 + i];
+ base = (uint32_t)&fargs_priv[nb_tmp_fargs-1];
} else {
src = fargs [i];
p_dst = &fargs_priv[i];
@@ -6071,11 +6173,23 @@
r18 = tmpxer;
__asm__ __volatile__ ("mtxer 18");
-#if 1
+#if defined TEST_FLOAT_FLAGS
+ printf("%s %016llx, %4d => %016llx, %08x (%08x %08x)\n",
+ name, double_to_bits(src), offs,
+ double_to_bits(*p_dst), r15, flags, xer);
+#else
+ printf("%s %016llx, %4d => %016llx, %08x\n",
+ name, double_to_bits(src), offs,
+ double_to_bits(*p_dst), r15);
+#endif
+
+
+#if 0
+ // print double precision result
printf("%s %016llx (%014e), %4d => %016llx (%014e), %08x (%08x %08x)\n",
name, double_to_bits(src), src, offs,
double_to_bits(*p_dst), *p_dst, r15, flags, xer);
-#else
+
// print single precision result
printf("%s %016llx (%014e), %4d => %08x (%f), %08x (%08x %08x)\n",
name, double_to_bits(src), src, offs,