what the heck, add support for the rest of the 3dNow! binary operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-10-03 18:24:18 +00:00
parent 548abfcbd6
commit f132fa0e74
2 changed files with 78 additions and 3 deletions

View File

@ -36,9 +36,27 @@ let Constraints = "$src1 = $dst" in {
}
}
defm PAVGUSB : I3DNow_binop_rm<0xBF, "pavgusb">;
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 rest of the 3DNow! and "3DNowA" instructions.
// TODO: Add support for the "3DNowA" instructions.

View 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