diff options
author | Chris Lattner <sabre@nondot.org> | 2010-10-03 18:24:18 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-10-03 18:24:18 +0000 |
commit | f132fa0e74b5faa5f7095cbe0dcf87e72939b588 (patch) | |
tree | 470ce6ab446bf1248d1274d26eaf5215b092dd08 | |
parent | 548abfcbd671b1144bf517b17643259dcae76f4f (diff) |
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
-rw-r--r-- | lib/Target/X86/X86Instr3DNow.td | 30 | ||||
-rw-r--r-- | test/MC/X86/3DNow.s | 59 |
2 files changed, 82 insertions, 7 deletions
diff --git a/lib/Target/X86/X86Instr3DNow.td b/lib/Target/X86/X86Instr3DNow.td index 9efa2a6cd3..18dfd1e86e 100644 --- a/lib/Target/X86/X86Instr3DNow.td +++ b/lib/Target/X86/X86Instr3DNow.td @@ -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. diff --git a/test/MC/X86/3DNow.s b/test/MC/X86/3DNow.s index e5c9f7dd9e..1ce89c619f 100644 --- a/test/MC/X86/3DNow.s +++ b/test/MC/X86/3DNow.s @@ -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 + |