Changes

Jump to navigation Jump to search
538 bytes added ,  22:42, 10 July 2010
Added complex multiplication
Line 50: Line 50:  
=== ps_abs ===
 
=== ps_abs ===
 
  ps_abs    frD, frB
 
  ps_abs    frD, frB
This instruction gets the absolute values of both paired-singles in '''frB''', and stores them in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = abs(frB(ps0))
 +
frD(ps1) = abs(frB(ps1))
 +
 
 
=== ps_mr ===
 
=== ps_mr ===
 
  ps_mr    frD, frB
 
  ps_mr    frD, frB
This instruction moves both paired-singles in '''frB''' into the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = frB(ps0)
 +
frD(ps1) = frB(ps1)
 +
 
 
=== ps_nabs ===
 
=== ps_nabs ===
 
  ps_nabs  frD, frB
 
  ps_nabs  frD, frB
This instruction gets the negative absolute values of both paired-singles in '''frB''', and stores them in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = -abs(frB(ps0))
 +
frD(ps1) = -abs(frB(ps1))
 +
 
 
=== ps_neg ===
 
=== ps_neg ===
 
  ps_neg    frD, frB
 
  ps_neg    frD, frB
This instruction negates the values of both paired-singles in '''frB''', and stores them in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = -frB(ps0)
 +
frD(ps1) = -frB(ps1)
 +
 
 
=== ps_res ===
 
=== ps_res ===
 
  ps_res    frD, frB
 
  ps_res    frD, frB
This instruction gets an estimate of the reciprocals of both paired-singles in '''frB''' accurate to a precision of 1/4096, and stores them in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = -1/frB(ps0)
 +
frD(ps1) = -1/frB(ps1)
 +
Accurate to a precision of 1/4096.
 +
 
 
=== ps_rsqrte ===
 
=== ps_rsqrte ===
 
  ps_rsqrte frD, frB
 
  ps_rsqrte frD, frB
This instruction gets an estimate of the reciprocals of the square roots of both paired-singles in '''frB''' accurate to a precision of 1/4096, and stores them in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = -1/sqrt(frB(ps0))
 +
frD(ps1) = -1/sqrt(frB(ps1))
 +
Accurate to a precision of 1/4096.
    
== Basic Math ==
 
== Basic Math ==
Line 71: Line 90:  
=== ps_add ===
 
=== ps_add ===
 
  ps_add    frD, frA, frB
 
  ps_add    frD, frA, frB
This instruction adds the paired-singles in '''frA''' to the ones in '''frB''', then stores the results in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = frA(ps0) + frB(ps0)
 +
frD(ps1) = frA(ps1) + frB(ps1)
 +
 
 
=== ps_div ===
 
=== ps_div ===
 
  ps_div    frD, frA, frB
 
  ps_div    frD, frA, frB
This instruction divides the paired-singles in '''frA''' by the ones in '''frB''', then stores the results in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = frA(ps0) / frB(ps0)
 +
frD(ps1) = frA(ps1) / frB(ps1)
 +
 
 
=== ps_mul ===
 
=== ps_mul ===
 
  ps_mul    frD, frA, frC
 
  ps_mul    frD, frA, frC
This instruction multiplies the paired-singles in '''frA''' by the ones in '''frC''', then stores the results in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = frA(ps0) * frC(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps1)
 +
 
 
=== ps_sub ===
 
=== ps_sub ===
 
  ps_sub    frD, frA, frB
 
  ps_sub    frD, frA, frB
This instruction subtracts the paired-singles in '''frB''' from the ones in '''frA''', then stores the results in the paired-singles in '''frD'''.
+
 
 +
frD(ps0) = frA(ps0) - frB(ps0)
 +
frD(ps1) = frA(ps1) - frB(ps1)
 +
 
 +
== Comparison ==
 +
=== ps_cmpo0 ===
 +
ps_cmpo0  crfD, frA, frB
 +
ps_cmpu0  crfD, frA, frB
 +
 
 +
cfrD = frA(ps0) compare frB(ps0)
 +
 
 +
=== ps_cmpo1 ===
 +
ps_cmpo1  crfD, frA, frB
 +
ps_cmpu1  crfD, frA, frB
 +
 
 +
cfrD = frA(ps1) compare frB(ps1)
 +
 
 +
== Complex Multiply ==
 +
These instructions multiply in complex ways
 +
=== ps_madd ===
 +
ps_madd  frD, frA, frC, frB
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps0) + frB(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps1) + frB(ps1)
 +
 
 +
=== ps_madds0 ===
 +
ps_madds0 frD, frA, frC, frB
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps0) + frB(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps0) + frB(ps1)
 +
 
 +
=== ps_madds1 ===
 +
ps_madds1 frD, frA, frC, frB
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps1) + frB(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps1) + frB(ps1)
 +
 
 +
=== ps_msub ===
 +
ps_msub  frD, frA, frC, frB
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps0) - frB(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps1) - frB(ps1)
 +
 
 +
=== ps_muls0 ===
 +
ps_muls0  frD, frA, frC
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps0)
 +
frD(ps1) = frA(ps1) * frC(ps0)
 +
 
 +
=== ps_muls1 ===
 +
ps_muls1  frD, frA, frC
 +
 
 +
frD(ps0) = frA(ps0) * frC(ps1)
 +
frD(ps1) = frA(ps1) * frC(ps1)
 +
 
 +
=== ps_nmadd ===
 +
ps_nmadd  frD, frA, frC, frB
 +
 
 +
frD(ps0) = -(frA(ps0) * frC(ps0) + frB(ps0))
 +
frD(ps1) = -(frA(ps1) * frC(ps1) + frB(ps1))
 +
 
 +
=== ps_nmsub ===
 +
ps_nmsub  frD, frA, frC, frB
 +
 
 +
frD(ps0) = -(frA(ps0) * frC(ps0) - frB(ps0))
 +
frD(ps1) = -(frA(ps1) * frC(ps1) - frB(ps1))
47

edits

Navigation menu