what the heck, add support for the rest of the 3dNow! binary operations.
authorChris Lattner <sabre@nondot.org>
Sun, 3 Oct 2010 18:24:18 +0000 (18:24 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 3 Oct 2010 18:24:18 +0000 (18:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115467 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86Instr3DNow.td
test/MC/X86/3DNow.s

index 9efa2a6cd3321bcfe82a438472235ac42feb225b..18dfd1e86ef32fd52e768d1d02070ea612d3d362 100644 (file)
@@ -36,9 +36,27 @@ let Constraints = "$src1 = $dst" in {
   }
 }
 
-defm PAVGUSB : I3DNow_binop_rm<0xBF, "pavgusb">;
-
-
-
-
-// TODO: Add support for the rest of the 3DNow! and "3DNowA" instructions.
+defm PAVGUSB  : I3DNow_binop_rm<0xBF, "pavgusb">;
+defm PF2ID    : I3DNow_binop_rm<0x1D, "pf2id">;
+defm PFACC    : I3DNow_binop_rm<0xAE, "pfacc">;
+defm PFADD    : I3DNow_binop_rm<0x9E, "pfadd">;
+defm PFCMPEQ  : I3DNow_binop_rm<0xB0, "pfcmpeq">;
+defm PFCMPGE  : I3DNow_binop_rm<0x90, "pfcmpge">;
+defm PFCMPGT  : I3DNow_binop_rm<0xA0, "pfcmpgt">;
+defm PFMAX    : I3DNow_binop_rm<0xA4, "pfmax">;
+defm PFMIN    : I3DNow_binop_rm<0x94, "pfmin">;
+defm PFMUL    : I3DNow_binop_rm<0xB4, "pfmul">;
+defm PFRCP    : I3DNow_binop_rm<0x96, "pfrcp">;
+defm PFRCPIT1 : I3DNow_binop_rm<0xA6, "pfrcpit1">;
+defm PFRCPIT2 : I3DNow_binop_rm<0xB6, "pfrcpit2">;
+defm PFRSQIT1 : I3DNow_binop_rm<0xA7, "pfrsqit1">;
+defm PFRSQRT  : I3DNow_binop_rm<0x97, "pfrsqrt">;
+defm PFSUB    : I3DNow_binop_rm<0x9A, "pfsub">;
+defm PFSUBR   : I3DNow_binop_rm<0xAA, "pfsubr">;
+defm PI2FD    : I3DNow_binop_rm<0x0D, "pi2fd">;
+defm PMULHRW  : I3DNow_binop_rm<0xB7, "pmulhrw">;
+
+
+
+
+// TODO: Add support for the "3DNowA" instructions.
index e5c9f7dd9ebe9f1e836b9188e07f8d8e18639c4e..1ce89c619fccf4fa32f7e631de56bbf78e7bf181 100644 (file)
@@ -5,7 +5,64 @@
 // CHECK: pavgusb %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xbf]
 pavgusb        %mm2, %mm1
 
-// CHECK: pavgusb 9(%esi,%edx), %mm3 # encoding: [0x0f,0x0f,0x5c,0x16,0x09,0
+// CHECK: pavgusb 9(%esi,%edx), %mm3 # encoding: [0x0f,0x0f,0x5c,0x16,0x09,0xbf]
 pavgusb        9(%esi,%edx), %mm3
 
         
+// CHECK: pf2id %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x1d]
+pf2id  %mm2, %mm1
+
+// CHECK: pf2id 9(%esi,%edx), %mm3 # encoding: [0x0f,0x0f,0x5c,0x16,0x09,0x1d]
+pf2id  9(%esi,%edx), %mm3
+
+// CHECK: pfacc %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xae]
+pfacc  %mm2, %mm1
+
+// CHECK: pfadd %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x9e]
+pfadd  %mm2, %mm1
+
+// CHECK: pfcmpeq %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xb0]
+pfcmpeq        %mm2, %mm1
+
+// CHECK: pfcmpge %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x90]
+pfcmpge        %mm2, %mm1
+
+// CHECK: pfcmpgt %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xa0]
+pfcmpgt        %mm2, %mm1
+
+// CHECK: pfmax %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xa4]
+pfmax  %mm2, %mm1
+
+// CHECK: pfmin %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x94]
+pfmin  %mm2, %mm1
+
+// CHECK: pfmul %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xb4]
+pfmul  %mm2, %mm1
+
+// CHECK: pfrcp %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x96]
+pfrcp  %mm2, %mm1
+
+// CHECK: pfrcpit1 %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xa6]
+pfrcpit1       %mm2, %mm1
+
+// CHECK: pfrcpit2 %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xb6]
+pfrcpit2       %mm2, %mm1
+
+// CHECK: pfrsqit1 %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xa7]
+pfrsqit1       %mm2, %mm1
+
+// CHECK: pfrsqrt %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x97]
+pfrsqrt        %mm2, %mm1
+
+// CHECK: pfsub %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x9a]
+pfsub  %mm2, %mm1
+
+// CHECK: pfsubr %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xaa]
+pfsubr %mm2, %mm1
+
+// CHECK: pi2fd %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0x0d]
+pi2fd  %mm2, %mm1
+
+// CHECK: pmulhrw %mm2, %mm1  # encoding: [0x0f,0x0f,0xca,0xb7]
+pmulhrw        %mm2, %mm1
+