ART: Add VarHandle fence intrinsics

Bug: 65872996
Test: art/test/run-test --host --64 709
Test: art/test.py --host -j32
Change-Id: I6fa399bb00f0c83048ac2b4372b08e4b4b29ce7f
diff --git a/compiler/optimizing/intrinsics.h b/compiler/optimizing/intrinsics.h
index 6411e82..7abfd5b 100644
--- a/compiler/optimizing/intrinsics.h
+++ b/compiler/optimizing/intrinsics.h
@@ -256,25 +256,30 @@
   LOG(FATAL) << "Unreachable: intrinsic " << invoke->GetIntrinsic()      \
              << " should have been converted to HIR";                    \
 }
-#define UNREACHABLE_INTRINSICS(Arch)                \
-UNREACHABLE_INTRINSIC(Arch, FloatFloatToIntBits)    \
-UNREACHABLE_INTRINSIC(Arch, DoubleDoubleToLongBits) \
-UNREACHABLE_INTRINSIC(Arch, FloatIsNaN)             \
-UNREACHABLE_INTRINSIC(Arch, DoubleIsNaN)            \
-UNREACHABLE_INTRINSIC(Arch, IntegerRotateLeft)      \
-UNREACHABLE_INTRINSIC(Arch, LongRotateLeft)         \
-UNREACHABLE_INTRINSIC(Arch, IntegerRotateRight)     \
-UNREACHABLE_INTRINSIC(Arch, LongRotateRight)        \
-UNREACHABLE_INTRINSIC(Arch, IntegerCompare)         \
-UNREACHABLE_INTRINSIC(Arch, LongCompare)            \
-UNREACHABLE_INTRINSIC(Arch, IntegerSignum)          \
-UNREACHABLE_INTRINSIC(Arch, LongSignum)             \
-UNREACHABLE_INTRINSIC(Arch, StringCharAt)           \
-UNREACHABLE_INTRINSIC(Arch, StringIsEmpty)          \
-UNREACHABLE_INTRINSIC(Arch, StringLength)           \
-UNREACHABLE_INTRINSIC(Arch, UnsafeLoadFence)        \
-UNREACHABLE_INTRINSIC(Arch, UnsafeStoreFence)       \
-UNREACHABLE_INTRINSIC(Arch, UnsafeFullFence)
+#define UNREACHABLE_INTRINSICS(Arch)                  \
+UNREACHABLE_INTRINSIC(Arch, FloatFloatToIntBits)      \
+UNREACHABLE_INTRINSIC(Arch, DoubleDoubleToLongBits)   \
+UNREACHABLE_INTRINSIC(Arch, FloatIsNaN)               \
+UNREACHABLE_INTRINSIC(Arch, DoubleIsNaN)              \
+UNREACHABLE_INTRINSIC(Arch, IntegerRotateLeft)        \
+UNREACHABLE_INTRINSIC(Arch, LongRotateLeft)           \
+UNREACHABLE_INTRINSIC(Arch, IntegerRotateRight)       \
+UNREACHABLE_INTRINSIC(Arch, LongRotateRight)          \
+UNREACHABLE_INTRINSIC(Arch, IntegerCompare)           \
+UNREACHABLE_INTRINSIC(Arch, LongCompare)              \
+UNREACHABLE_INTRINSIC(Arch, IntegerSignum)            \
+UNREACHABLE_INTRINSIC(Arch, LongSignum)               \
+UNREACHABLE_INTRINSIC(Arch, StringCharAt)             \
+UNREACHABLE_INTRINSIC(Arch, StringIsEmpty)            \
+UNREACHABLE_INTRINSIC(Arch, StringLength)             \
+UNREACHABLE_INTRINSIC(Arch, UnsafeLoadFence)          \
+UNREACHABLE_INTRINSIC(Arch, UnsafeStoreFence)         \
+UNREACHABLE_INTRINSIC(Arch, UnsafeFullFence)          \
+UNREACHABLE_INTRINSIC(Arch, VarHandleFullFence)       \
+UNREACHABLE_INTRINSIC(Arch, VarHandleAcquireFence)    \
+UNREACHABLE_INTRINSIC(Arch, VarHandleReleaseFence)    \
+UNREACHABLE_INTRINSIC(Arch, VarHandleLoadLoadFence)   \
+UNREACHABLE_INTRINSIC(Arch, VarHandleStoreStoreFence)
 
 template <typename IntrinsicLocationsBuilder, typename Codegenerator>
 bool IsCallFreeIntrinsic(HInvoke* invoke, Codegenerator* codegen) {