aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/vm/x86.ad
diff options
context:
space:
mode:
authorroland <none@none>2012-09-20 16:49:17 +0200
committerroland <none@none>2012-09-20 16:49:17 +0200
commit3a09a13202669f38c03ba782eaf81ca7ce63abb0 (patch)
tree9d74ad3f9125d4b6dd2eea658297c314e9dc4b63 /src/cpu/x86/vm/x86.ad
parent9c4aa71c8a7562754876d0ec6bdfaa9f6e54e0c9 (diff)
7023898: Intrinsify AtomicLongFieldUpdater.getAndIncrement()
Summary: use shorter instruction sequences for atomic add and atomic exchange when possible. Reviewed-by: kvn, jrose
Diffstat (limited to 'src/cpu/x86/vm/x86.ad')
-rw-r--r--src/cpu/x86/vm/x86.ad7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cpu/x86/vm/x86.ad b/src/cpu/x86/vm/x86.ad
index 9a057a47f..c3831006b 100644
--- a/src/cpu/x86/vm/x86.ad
+++ b/src/cpu/x86/vm/x86.ad
@@ -503,6 +503,13 @@ const bool Matcher::match_rule_supported(int opcode) {
if ((UseSSE < 4) && (UseAVX < 1)) // only with SSE4_1 or AVX
return false;
break;
+ case Op_CompareAndSwapL:
+#ifdef _LP64
+ case Op_CompareAndSwapP:
+#endif
+ if (!VM_Version::supports_cx8())
+ return false;
+ break;
}
return true; // Per default match rules are supported.