Line 89:
Line 89:
Simple everyday math.
Simple everyday math.
=== ps_add ===
=== ps_add ===
+
Single floating-point add on both ps0 and ps1.
ps_add frD, frA, frB
ps_add frD, frA, frB
Line 94:
Line 95:
frD(ps1) = frA(ps1) + frB(ps1)
frD(ps1) = frA(ps1) + frB(ps1)
−
=== ps_div ===
+
=== ps_sub ===
−
ps_div frD, frA, frB
+
Single floating-point subtract on both ps0 and ps1.
+
ps_sub frD, frA, frB
−
frD(ps0) = frA(ps0) / frB(ps0)
+
frD(ps0) = frA(ps0) - frB(ps0)
−
frD(ps1) = frA(ps1) / frB(ps1)
+
frD(ps1) = frA(ps1) - frB(ps1)
=== ps_mul ===
=== ps_mul ===
+
Single floating-point multiply on both ps0 and ps1.
ps_mul frD, frA, frC
ps_mul frD, frA, frC
Line 106:
Line 109:
frD(ps1) = frA(ps1) * frC(ps1)
frD(ps1) = frA(ps1) * frC(ps1)
−
=== ps_sub ===
+
=== ps_div ===
−
ps_sub frD, frA, frB
+
Single floating-point divide on both ps0 and ps1.
+
ps_div frD, frA, frB
−
frD(ps0) = frA(ps0) - frB(ps0)
+
frD(ps0) = frA(ps0) / frB(ps0)
−
frD(ps1) = frA(ps1) - frB(ps1)
+
frD(ps1) = frA(ps1) / frB(ps1)
== Comparison ==
== Comparison ==
=== ps_cmpo0 ===
=== ps_cmpo0 ===
+
Ordered compare of ps0 values.
ps_cmpo0 crfD, frA, frB
ps_cmpo0 crfD, frA, frB
ps_cmpu0 crfD, frA, frB
ps_cmpu0 crfD, frA, frB
Line 120:
Line 125:
=== ps_cmpo1 ===
=== ps_cmpo1 ===
+
Ordered compare of ps1 values.
ps_cmpo1 crfD, frA, frB
ps_cmpo1 crfD, frA, frB
ps_cmpu1 crfD, frA, frB
ps_cmpu1 crfD, frA, frB
Line 128:
Line 134:
These instructions multiply in complex ways
These instructions multiply in complex ways
=== ps_madd ===
=== ps_madd ===
+
Single floating-point madd on both ps0 and ps1.
ps_madd frD, frA, frC, frB
ps_madd frD, frA, frC, frB
Line 134:
Line 141:
=== ps_madds0 ===
=== ps_madds0 ===
+
Scalar-vector multiply-add using ps0 for scalar.
ps_madds0 frD, frA, frC, frB
ps_madds0 frD, frA, frC, frB
Line 140:
Line 148:
=== ps_madds1 ===
=== ps_madds1 ===
+
Scalar-vector multiply-add using ps1 for scalar.
ps_madds1 frD, frA, frC, frB
ps_madds1 frD, frA, frC, frB
Line 146:
Line 155:
=== ps_msub ===
=== ps_msub ===
+
Single floating-point msub on both ps0 and ps1.
ps_msub frD, frA, frC, frB
ps_msub frD, frA, frC, frB
Line 152:
Line 162:
=== ps_muls0 ===
=== ps_muls0 ===
+
Scalar-vector multiply using ps0 for scalar.
ps_muls0 frD, frA, frC
ps_muls0 frD, frA, frC
Line 158:
Line 169:
=== ps_muls1 ===
=== ps_muls1 ===
+
Scalar-vector multiply using ps0 for scalar.
ps_muls1 frD, frA, frC
ps_muls1 frD, frA, frC
Line 164:
Line 176:
=== ps_nmadd ===
=== ps_nmadd ===
+
Single floating-point nmadd on both ps0 and ps1.
ps_nmadd frD, frA, frC, frB
ps_nmadd frD, frA, frC, frB
Line 170:
Line 183:
=== ps_nmsub ===
=== ps_nmsub ===
+
Single floating-point nmsub on both ps0 and ps1.
ps_nmsub frD, frA, frC, frB
ps_nmsub frD, frA, frC, frB
Line 176:
Line 190:
== Miscellaneous ==
== Miscellaneous ==
−
Whatever doesn't fit into the other categories
+
Whatever doesn't fit into the other categories.
=== ps_merge00 ===
=== ps_merge00 ===
+
Register move allowing swap/merge of ps0 values.
ps_merge00 frD, frA, frB
ps_merge00 frD, frA, frB
Line 184:
Line 199:
=== ps_merge01 ===
=== ps_merge01 ===
+
Register move allowing swap/merge of ps0 and ps1 values.
ps_merge01 frD, frA, frB
ps_merge01 frD, frA, frB
Line 190:
Line 206:
=== ps_merge10 ===
=== ps_merge10 ===
+
Register move allowing swap/merge of ps1 and ps0 values.
ps_merge10 frD, frA, frB
ps_merge10 frD, frA, frB
Line 196:
Line 213:
=== ps_merge11 ===
=== ps_merge11 ===
+
Register move allowing swap/merge of ps0 values.
ps_merge11 frD, frA, frB
ps_merge11 frD, frA, frB
Line 202:
Line 220:
=== ps_sel ===
=== ps_sel ===
+
Single floating-point select on both ps0 and ps1.
ps_sel frD, frA, frC, frB
ps_sel frD, frA, frC, frB
Line 214:
Line 233:
=== ps_sum0 ===
=== ps_sum0 ===
+
Add a ps0 value to a ps1 value, result in ps0.
ps_sum0 frD, frA, frC, frB
ps_sum0 frD, frA, frC, frB
Line 220:
Line 240:
=== ps_sum1 ===
=== ps_sum1 ===
+
Add a ps0 value to a ps1 value, result in ps1.
ps_sum1 frD, frA, frC, frB
ps_sum1 frD, frA, frC, frB