#pragma once
#include "il2cpp-config.h"

#include "codegen/il2cpp-codegen-metadata.h"
#include "codegen/il2cpp-codegen.h"
namespace il2cpp
{
namespace intrinsics
{
namespace System_Private_CoreLib
{
namespace System
{
namespace Threading
{
    /* METHOD MAPPING
        Method: System.Boolean System.Threading.Volatile::Read(System.Boolean&)
        AssemblyName: System.Private.CoreLib
    */
    inline bool il2cpp_intrinsic_volatile_read(bool* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Byte System.Threading.Volatile::Read(System.Byte&)
        AssemblyName: System.Private.CoreLib
    */
    inline uint8_t il2cpp_intrinsic_volatile_read(uint8_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Double System.Threading.Volatile::Read(System.Double&)
        AssemblyName: System.Private.CoreLib
    */
    inline double il2cpp_intrinsic_volatile_read(double* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Int16 System.Threading.Volatile::Read(System.Int16&)
        AssemblyName: System.Private.CoreLib
    */
    inline int16_t il2cpp_intrinsic_volatile_read(int16_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Int32 System.Threading.Volatile::Read(System.Int32&)
        AssemblyName: System.Private.CoreLib
    */
    inline int32_t il2cpp_intrinsic_volatile_read_int32(int32_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Int64 System.Threading.Volatile::Read(System.Int64&)
        AssemblyName: System.Private.CoreLib
    */
    inline int64_t il2cpp_intrinsic_volatile_read_int64(int64_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.IntPtr System.Threading.Volatile::Read(System.IntPtr&)
        AssemblyName: System.Private.CoreLib
    */
    inline intptr_t il2cpp_intrinsic_volatile_read(intptr_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.SByte System.Threading.Volatile::Read(System.SByte&)
        AssemblyName: System.Private.CoreLib
    */
    inline int8_t il2cpp_intrinsic_volatile_read(int8_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Single System.Threading.Volatile::Read(System.Single&)
        AssemblyName: System.Private.CoreLib
    */
    inline float il2cpp_intrinsic_volatile_read(float* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.UInt16 System.Threading.Volatile::Read(System.UInt16&)
        AssemblyName: System.Private.CoreLib
    */
    inline uint16_t il2cpp_intrinsic_volatile_read(uint16_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.UInt32 System.Threading.Volatile::Read(System.UInt32&)
        AssemblyName: System.Private.CoreLib
    */
    inline uint32_t il2cpp_intrinsic_volatile_read_uint32(uint32_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.UInt64 System.Threading.Volatile::Read(System.UInt64&)
        AssemblyName: System.Private.CoreLib
    */
    inline uint64_t il2cpp_intrinsic_volatile_read_uint64(uint64_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.UIntPtr System.Threading.Volatile::Read(System.UIntPtr&)
        AssemblyName: System.Private.CoreLib
    */
    inline uintptr_t il2cpp_intrinsic_volatile_read(uintptr_t* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Boolean&,System.Boolean)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(bool* location, bool value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Byte&,System.Byte)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(uint8_t* location, uint8_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Double&,System.Double)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(double* location, double value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Int16&,System.Int16)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(int16_t* location, int16_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Int32&,System.Int32)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write_int32(int32_t* location, int32_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Int64&,System.Int64)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write_int64(int64_t* location, int64_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.IntPtr&,System.IntPtr)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(intptr_t* location, intptr_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.SByte&,System.SByte)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(int8_t* location, int8_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.Single&,System.Single)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(float* location, float value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.UInt16&,System.UInt16)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(uint16_t* location, uint16_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.UInt32&,System.UInt32)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write_uint32(uint32_t* location, uint32_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.UInt64&,System.UInt64)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write_uint64(uint64_t* location, uint64_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(System.UIntPtr&,System.UIntPtr)
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write(uintptr_t* location, uintptr_t value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::Write(T&,T)
        AssemblyName: System.Private.CoreLib
    */
    template<typename T, typename U>
    inline void il2cpp_intrinsic_volatile_write(T* location, U value)
    {
        VolatileWrite(location, value);
    }

    /* METHOD MAPPING
        Method: T System.Threading.Volatile::Read(T&)
        AssemblyName: System.Private.CoreLib
    */
    template<typename T>
    inline T il2cpp_intrinsic_volatile_read(T* location)
    {
        return VolatileRead(location);
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::ReadBarrier()
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_read_barrier()
    {
        IL2CPP_NOT_IMPLEMENTED_INTRINSIC(il2cpp_intrinsic_volatile_read_barrier);
        IL2CPP_UNREACHABLE;
    }

    /* METHOD MAPPING
        Method: System.Void System.Threading.Volatile::WriteBarrier()
        AssemblyName: System.Private.CoreLib
    */
    inline void il2cpp_intrinsic_volatile_write_barrier()
    {
        IL2CPP_NOT_IMPLEMENTED_INTRINSIC(il2cpp_intrinsic_volatile_write_barrier);
        IL2CPP_UNREACHABLE;
    }
} // namespace Threading
} // namespace System
} // namespace System_Private_CoreLib
} // namespace intrinsics
} // namespace il2cpp
