aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2016-08-08 20:28:21 +0200
committerMichael Matz <matz@suse.de>2016-12-15 17:47:10 +0100
commit9e0af6d2b513ed7ee2f6221bbdf85a8e54e00fc1 (patch)
tree8d44c365b52cf27257fe43948369b7d59602abb9
parentca8c1cd643b12cd652bb73804e1645b75292357a (diff)
downloadtinycc-9e0af6d2b513ed7ee2f6221bbdf85a8e54e00fc1.tar.gz
tinycc-9e0af6d2b513ed7ee2f6221bbdf85a8e54e00fc1.tar.bz2
x86-64-asm: Implement cmpxchg16b
-rw-r--r--tests/asmtest.S3
-rw-r--r--x86_64-asm.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/tests/asmtest.S b/tests/asmtest.S
index dbc6c15..c19db06 100644
--- a/tests/asmtest.S
+++ b/tests/asmtest.S
@@ -535,6 +535,9 @@ cmpxchgw %ax, 0x1000
cmpxchgl %eax, 0x1000
invlpg 0x1000
cmpxchg8b 0x1002
+#ifdef __x86_64__
+cmpxchg16b (%rax)
+#endif
fcmovb %st(5), %st
fcmove %st(5), %st
diff --git a/x86_64-asm.h b/x86_64-asm.h
index 4db3268..675e7df 100644
--- a/x86_64-asm.h
+++ b/x86_64-asm.h
@@ -394,6 +394,9 @@ ALT(DEF_ASM_OP2(cmpxchgb, 0x0fb0, 0, OPC_MODRM | OPC_BWLX, OPT_REG, OPT_REG | OP
/* pentium */
DEF_ASM_OP1(cmpxchg8b, 0x0fc7, 1, OPC_MODRM, OPT_EA )
+ /* AMD 64 */
+ DEF_ASM_OP1(cmpxchg16b, 0x480fc7, 1, OPC_MODRM, OPT_EA )
+
/* pentium pro */
ALT(DEF_ASM_OP2(cmovo, 0x0f40, 0, OPC_MODRM | OPC_TEST | OPC_WLX, OPT_REGW | OPT_EA, OPT_REGW))