diff options
-rw-r--r-- | lib/Target/X86/X86Instr3DNow.td | 8 | ||||
-rw-r--r-- | test/MC/X86/3DNow.s | 16 |
2 files changed, 22 insertions, 2 deletions
diff --git a/lib/Target/X86/X86Instr3DNow.td b/lib/Target/X86/X86Instr3DNow.td index c8b7987..45d1c6b 100644 --- a/lib/Target/X86/X86Instr3DNow.td +++ b/lib/Target/X86/X86Instr3DNow.td @@ -69,5 +69,9 @@ def PREFETCHW : I3DNow<0x0D, MRM1m, (outs), (ins i16mem:$addr), "prefetchw $addr", []>; } - -// TODO: Add support for the "3DNowA" instructions. +// "3DNowA" instructions +defm PF2IW : I3DNow_binop_rm<0x1C, "pf2iw">; +defm PI2FW : I3DNow_binop_rm<0x0C, "pi2fw">; +defm PFNACC : I3DNow_binop_rm<0x8A, "pfnacc">; +defm PFPNACC : I3DNow_binop_rm<0x8E, "pfpnacc">; +defm PSWAPD : I3DNow_binop_rm<0xBB, "pswapd">; diff --git a/test/MC/X86/3DNow.s b/test/MC/X86/3DNow.s index b66385d..4dc68ae 100644 --- a/test/MC/X86/3DNow.s +++ b/test/MC/X86/3DNow.s @@ -74,3 +74,19 @@ femms // CHECK: prefetchw (%rax) # encoding: [0x0f,0x0d,0x08] prefetch (%rax) prefetchw (%rax) + + +// CHECK: pf2iw %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0x1c] +pf2iw %mm2, %mm1 + +// CHECK: pi2fw %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0x0c] +pi2fw %mm2, %mm1 + +// CHECK: pfnacc %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0x8a] +pfnacc %mm2, %mm1 + +// CHECK: pfpnacc %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0x8e] +pfpnacc %mm2, %mm1 + +// CHECK: pswapd %mm2, %mm1 # encoding: [0x0f,0x0f,0xca,0xbb] +pswapd %mm2, %mm1 |