2008-05-27 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Tue, 27 May 2008 18:01:59 +0000 (18:01 -0000)
committerZoltan Varga <vargaz@gmail.com>
Tue, 27 May 2008 18:01:59 +0000 (18:01 -0000)
* mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
the 'value' to store is a constant.

* mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.

* mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.

svn path=/trunk/mono/; revision=104171

mono/mini/cpu-amd64.md

index 6ea8864491e79499e0d463fa890a2d0c68844d2b..9ab2bb62033e42b06b969fa25d11951cb98bb4b5 100644 (file)
@@ -293,10 +293,12 @@ amd64_save_sp_to_lmf: len:16
 tls_get: dest:i len:16
 atomic_add_i4: src1:b src2:i dest:i len:32
 atomic_add_new_i4: src1:b src2:i dest:i len:32
-atomic_exchange_i4: src1:b src2:i dest:i len:32
+atomic_exchange_i4: src1:b src2:i dest:a len:32
 atomic_add_i8: src1:b src2:i dest:i len:32
 atomic_add_new_i8: src1:b src2:i dest:i len:32
-atomic_exchange_i8: src1:b src2:i dest:i len:32
+atomic_exchange_i8: src1:b src2:i dest:a len:32
+atomic_cas_imm_i4: src1:b src2:i dest:a len:32
+atomic_cas_imm_i8: src1:b src2:i dest:a len:32
 memory_barrier: len:16
 adc: dest:i src1:i src2:i len:3 clob:1
 addcc: dest:i src1:i src2:i len:3 clob:1