Udostępnij za pośrednictwem


Intrinsics RAMIĘ

Kompilator Visual C++ udostępnia następujące intrinsics w ramach architektury ARM.Aby uzyskać więcej informacji na temat ARM, zobacz ARM architektury Reference Manual i ARM asembler narzędzia przewodnik na stronie internetowej ARM Centrum informacyjne.

NEON

Rozszerzenia NEON wektor instrukcji set dla ARM zapewniają możliwości pojedynczej instrukcji wielu danych (SIMD), które przypominają te w MMX i SSE wektor zestawów instrukcji, które są wspólne dla procesorów architekturę x 86 i x 64.

NEON intrinsics są obsługiwane, jak przewidziano w pliku nagłówkowym arm_neon.h.Obsługa kompilatora Visual C++ NEON intrinsics jest podobna do kompilator ARM, który opisano w dodatku G kompilator ARM toolchain, w wersji 4.1 kompilator odwołanie na stronie internetowej ARM Centrum informacyjne.

Podstawową różnicą między kompilatora Visual C++ i kompilator ARM jest, że kompilator języka Visual C++ dodaje _ex wariantów vldX i vstX wektor obciążenia i przechowywać instrukcje._ex Wariantów zająć dodatkowy parametr, który określa wyrównanie argumentem wskaźnika, ale są inaczej identyczne, aby ich nie-_ex odpowiedników.

Specyficzne dla ARM Intrinsics aukcję

Nazwa funkcji

Instrukcja

Prototyp funkcji

_arm_smlal

SMLAL

__int64 _arm_smlal (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_umlal

UMLAL

_arm_umlal unsigned __int64 (unsigned __int64 _RdHiLo, unsigned int _Rn, unsigned int _Rm)

_arm_clz

CLZ

_arm_clz unsigned int (unsigned int _Rm)

_arm_qadd

QADD

int _arm_qadd (int _Rm, int _Rn)

_arm_qdadd

QDADD

int _arm_qdadd (int _Rm, int _Rn)

_arm_qdsub

QDSUB

int _arm_qdsub (int _Rm, int _Rn)

_arm_qsub

QSUB

int _arm_qsub (int _Rm, int _Rn)

_arm_smlabb

SMLABB

int _arm_smlabb (int _Rn, int _Rm, int _Ra)

_arm_smlabt

SMLABT

int _arm_smlabt (int _Rn, int _Rm, int _Ra)

_arm_smlatb

SMLATB

int _arm_smlatb (int _Rn, int _Rm, int _Ra)

_arm_smlatt

SMLATT

int _arm_smlatt (int _Rn, int _Rm, int _Ra)

_arm_smlalbb

SMLALBB

__int64 _arm_smlalbb (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlalbt

SMLALBT

__int64 _arm_smlalbt (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlaltb

SMLALTB

__int64 _arm_smlaltb (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlaltt

SMLALTT

__int64 _arm_smlaltt (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlawb

SMLAWB

int _arm_smlawb (int _Rn, int _Rm, int _Ra)

_arm_smlawt

SMLAWT

int _arm_smlawt (int _Rn, int _Rm, int _Ra)

_arm_smulbb

SMULBB

int _arm_smulbb (int _Rn, int _Rm)

_arm_smulbt

SMULBT

int _arm_smulbt (int _Rn, int _Rm)

_arm_smultb

SMULTB

int _arm_smultb (int _Rn, int _Rm)

_arm_smultt

SMULTT

int _arm_smultt (int _Rn, int _Rm)

_arm_smulwb

SMULWB

int _arm_smulwb (int _Rn, int _Rm)

_arm_smulwt

SMULWT

int _arm_smulwt (int _Rn, int _Rm)

_arm_sadd16

SADD16

int _arm_sadd16 (int _Rn, int _Rm)

_arm_sadd8

SADD8

int _arm_sadd8 (int _Rn, int _Rm)

_arm_sasx

SASX

int _arm_sasx (int _Rn, int _Rm)

_arm_ssax

SSAX

int _arm_ssax (int _Rn, int _Rm)

_arm_ssub16

SSUB16

int _arm_ssub16 (int _Rn, int _Rm)

_arm_ssub8

SSUB8

int _arm_ssub8 (int _Rn, int _Rm)

_arm_shadd16

SHADD16

int _arm_shadd16 (int _Rn, int _Rm)

_arm_shadd8

SHADD8

int _arm_shadd8 (int _Rn, int _Rm)

_arm_shasx

SHASX

int _arm_shasx (int _Rn, int _Rm)

_arm_shsax

SHSAX

int _arm_shsax (int _Rn, int _Rm)

_arm_shsub16

SHSUB16

int _arm_shsub16 (int _Rn, int _Rm)

_arm_shsub8

SHSUB8

int _arm_shsub8 (int _Rn, int _Rm)

_arm_qadd16

QADD16

int _arm_qadd16 (int _Rn, int _Rm)

_arm_qadd8

QADD8

int _arm_qadd8 (int _Rn, int _Rm)

_arm_qasx

QASX

int _arm_qasx (int _Rn, int _Rm)

_arm_qsax

QSAX

int _arm_qsax (int _Rn, int _Rm)

_arm_qsub16

QSUB16

int _arm_qsub16 (int _Rn, int _Rm)

_arm_qsub8

QSUB8

int _arm_qsub8 (int _Rn, int _Rm)

_arm_uadd16

UADD16

unsigned int _arm_uadd16 (unsigned int _Rn, unsigned int _Rm)

_arm_uadd8

UADD8

unsigned int _arm_uadd8 (unsigned int _Rn, unsigned int _Rm)

_arm_uasx

UASX

_arm_uasx unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_usax

USAX

_arm_usax unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_usub16

USUB16

unsigned int _arm_usub16 (unsigned int _Rn, unsigned int _Rm)

_arm_usub8

USUB8

unsigned int _arm_usub8 (unsigned int _Rn, unsigned int _Rm)

_arm_uhadd16

UHADD16

unsigned int _arm_uhadd16 (unsigned int _Rn, unsigned int _Rm)

_arm_uhadd8

UHADD8

unsigned int _arm_uhadd8 (unsigned int _Rn, unsigned int _Rm)

_arm_uhasx

UHASX

_arm_uhasx unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_uhsax

UHSAX

_arm_uhsax unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_uhsub16

UHSUB16

unsigned int _arm_uhsub16 (unsigned int _Rn, unsigned int _Rm)

_arm_uhsub8

UHSUB8

unsigned int _arm_uhsub8 (unsigned int _Rn, unsigned int _Rm)

_arm_uqadd16

UQADD16

unsigned int _arm_uqadd16 (unsigned int _Rn, unsigned int _Rm)

_arm_uqadd8

UQADD8

unsigned int _arm_uqadd8 (unsigned int _Rn, unsigned int _Rm)

_arm_uqasx

UQASX

_arm_uqasx unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_uqsax

UQSAX

_arm_uqsax unsigned int (unsigned int _Rn, unsigned int _Rm)

_arm_uqsub16

UQSUB16

unsigned int _arm_uqsub16 (unsigned int _Rn, unsigned int _Rm)

_arm_uqsub8

UQSUB8

unsigned int _arm_uqsub8 (unsigned int _Rn, unsigned int _Rm)

_arm_sxtab

SXTAB

int _arm_sxtab (int _Rn, int _Rm, unsigned int _Rotation)

_arm_sxtab16

SXTAB16

int _arm_sxtab16 (int _Rn, int _Rm, unsigned int _Rotation)

_arm_sxtah

SXTAH

int _arm_sxtah (int _Rn, int _Rm, unsigned int _Rotation)

_arm_uxtab

UXTAB

_arm_uxtab unsigned int (unsigned int _Rn, unsigned int _Rm, unsigned int _Rotation)

_arm_uxtab16

UXTAB16

unsigned int _arm_uxta16b (unsigned int _Rn, unsigned int _Rm, unsigned int _Rotation)

_arm_uxtah

UXTAH

_arm_uxtah unsigned int (unsigned int _Rn, unsigned int _Rm, unsigned int _Rotation)

_arm_sxtb

SXTB

int _arm_sxtb (int _Rn, unsigned int _Rotation)

_arm_sxtb16

SXTB16

int _arm_sxtb16 (int _Rn, unsigned int _Rotation)

_arm_sxth

SXTH

int _arm_sxth (int _Rn, unsigned int _Rotation)

_arm_uxtb

UXTB

_arm_uxtb unsigned int (unsigned int _Rn, unsigned int _Rotation)

_arm_uxtb16

UXTB16

unsigned int _arm_uxtb16 (unsigned int _Rn, unsigned int _Rotation)

_arm_uxth

UXTH

_arm_uxth unsigned int (unsigned int _Rn, unsigned int _Rotation)

_arm_pkhbt

PKHBT

int _arm_pkhbt (int _Rn, int _Rm, unsigned int _Lsl_imm)

_arm_pkhtb

PKHTB

int _arm_pkhtb (int _Rn, int _Rm, unsigned int _Asr_imm)

_arm_usad8

USAD8

unsigned int _arm_usad8 (unsigned int _Rn, unsigned int _Rm)

_arm_usada8

USADA8

unsigned int _arm_usada8 (unsigned int _Rn, unsigned int _Rm, unsigned int _Ra)

_arm_ssat

SSAT

int _arm_ssat (unsigned int _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, unsigned int _Shift_imm)

_arm_usat

USAT

int _arm_usat (unsigned int _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, unsigned int _Shift_imm)

_arm_ssat16

SSAT16

int _arm_ssat16 (unsigned int _Sat_imm, _int _Rn)

_arm_usat16

USAT16

int _arm_usat16 (unsigned int _Sat_imm, _int _Rn)

_arm_rev

REV

_arm_rev unsigned int (unsigned int _Rm)

_arm_rev16

REV16

unsigned int _arm_rev16 (unsigned int _Rm)

_arm_revsh

REVSH

_arm_revsh unsigned int (unsigned int _Rm)

_arm_smlad

SMLAD

int _arm_smlad (int _Rn, int _Rm, int _Ra)

_arm_smladx

SMLADX

int _arm_smladx (int _Rn, int _Rm, int _Ra)

_arm_smlsd

SMLSD

int _arm_smlsd (int _Rn, int _Rm, int _Ra)

_arm_smlsdx

SMLSDX

int _arm_smlsdx (int _Rn, int _Rm, int _Ra)

_arm_smmla

SMMLA

int _arm_smmla (int _Rn, int _Rm, int _Ra)

_arm_smmlar

SMMLAR

int _arm_smmlar (int _Rn, int _Rm, int _Ra)

_arm_smmls

SMMLS

int _arm_smmls (int _Rn, int _Rm, int _Ra)

_arm_smmlsr

SMMLSR

int _arm_smmlsr (int _Rn, int _Rm, int _Ra)

_arm_smmul

SMMUL

int _arm_smmul (int _Rn, int _Rm)

_arm_smmulr

SMMULR

int _arm_smmulr (int _Rn, int _Rm)

_arm_smlald

SMLALD

__int64 _arm_smlald (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlaldx

SMLALDX

__int64 _arm_smlaldx (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlsld

SMLSLD

__int64 _arm_smlsld (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smlsldx

SMLSLDX

__int64 _arm_smlsldx (__int64 _RdHiLo, int _Rn, int _Rm)

_arm_smuad

SMUAD

int _arm_smuad (int _Rn, int _Rm)

_arm_smuadx

SMUADX

int _arm_muadxs (int _Rn, int _Rm)

_arm_smusd

SMUSD

int _arm_smusd (int _Rn, int _Rm)

_arm_smusdx

SMUSDX

int _arm_smusdx (int _Rn, int _Rm)

_arm_smull

SMULL

__int64 _arm_smull (int _Rn, int _Rm)

_arm_umull

UMULL

_arm_umull unsigned __int64 (unsigned int _Rn, unsigned int _Rm)

_arm_umaal

UMAAL

_arm_umaal unsigned __int64 (unsigned int _RdLo, unsigned int _RdHi, unsigned int _Rn, unsigned int _Rm)

_arm_bfc

STRONY

_arm_bfc unsigned int (unsigned int _Rd, unsigned int _Lsb, unsigned int właściwości)

_arm_bfi

BFI

_arm_bfi unsigned int (unsigned int _Rd, unsigned int _Rn, unsigned int _Lsb, unsigned int właściwości)

_arm_rbit

RBIT

_arm_rbit unsigned int (unsigned int _Rm)

_arm_sbfx

SBFX

int _arm_sbfx (int _Rn, unsigned int _Lsb, unsigned int właściwości)

_arm_ubfx

UBFX

_arm_ubfx unsigned int (unsigned int _Rn, unsigned int _Lsb, unsigned int właściwości)

_arm_sdiv

SDIV

int _arm_sdiv (int _Rn, int _Rm)

_arm_udiv

UDIV

_arm_udiv unsigned int (unsigned int _Rn, unsigned int _Rm)

__cps

USŁUGI PUNKTU POŁĄCZENIA

void __cps (unsigned int _Ops, unsigned int _Flags, unsigned int _Mode)

__dmb

DMB

void __dmb (unsigned int _Type)

Wstawia operację bariera pamięci do strumieni instrukcji.Parametr _Type określa rodzaj ograniczenia, które wymusza zapory.

Aby uzyskać więcej informacji na temat rodzaje ograniczeń, które mogą być egzekwowane, zobacz Ograniczenia bariera pamięci.

__dsb

DSB

void __dsb (unsigned int _Type)

Wstawia operację bariera pamięci do strumieni instrukcji.Parametr _Type określa rodzaj ograniczenia, które wymusza zapory.

Aby uzyskać więcej informacji na temat rodzaje ograniczeń, które mogą być egzekwowane, zobacz Ograniczenia bariera pamięci.

__isb

ISB

void __isb (unsigned int _Type)

Wstawia operację bariera pamięci do strumieni instrukcji.Parametr _Type określa rodzaj ograniczenia, które wymusza zapory.

Aby uzyskać więcej informacji na temat rodzaje ograniczeń, które mogą być egzekwowane, zobacz Ograniczenia bariera pamięci.

__emit

void __emit (unsigned __int32 opcode)

Wstawia określonej instrukcji do strumienia instrukcji, który jest wysyłany przez kompilator.

Wartość opcode musi być wyrażenie stałe, o której wiadomo, w czasie kompilacji.Rozmiar instrukcji programu word jest 16 bitów i najbardziej znaczące bity 16 opcode są ignorowane.

Kompilator, że próba zinterpretować zawartości opcode i nie gwarantuje stanie Procesora lub pamięci, przed wykonaniem instrukcji wstawionego.

Kompilator zakłada, że Państwa Procesora i pamięci są bez zmian, po wykonaniu instrukcji wstawionego.W związku z tym instrukcje, które zmieniają się Państwo może mieć szkodliwy wpływ na normalne kod, który jest generowany przez kompilator.

Z tego powodu należy użyć emit tylko po to, aby wstawić instrukcje, które wpływają na stan Procesora, który kompilator nie są normalnie przetwarzane — na przykład koprocesora Państwo — lub do implementacji funkcji, które są zadeklarowane za pomocą declspec(naked).

__hvc

HVC

__hvc unsigned int (unsigned int,...)

__iso_volatile_load16

__int16 __iso_volatile_load16 (const lotnych __int16 *)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_load32

__int32 __iso_volatile_load32 (const lotnych __int32 *)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_load64

__int64 __iso_volatile_load64 (const __int64 lotnych *)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_load8

__int8 __iso_volatile_load8 (const lotnych __int8 *)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_store16

void __iso_volatile_store16 (lotnych __int16 *, __int16)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_store32

void __iso_volatile_store32 (lotnych __int32 *, __int32)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_store64

void __iso_volatile_store64 (lotnych __int64 *, __int64)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__iso_volatile_store8

void __iso_volatile_store8 (lotnych __int8 *, __int8)

Aby uzyskać więcej informacji, zobacz instrinsics __iso_volatile_load/Sklep.

__ldrexd

LDREXD

__int64 __ldrexd (const __int64 lotnych *)

__prefetch

ROZ

void __cdecl __prefetch(const void *)

Zawiera PLD pamięci podpowiedź do systemu, że ilość pamięci lub w jego pobliżu określony adres może być wkrótce dostępny.Niektóre systemy może wybrać opcję Optymalizuj dla deseniowi dostępu do pamięci zwiększyć wydajność w czasie wykonywania.Jednak z C++ języka punktu widzenia, funkcja nie wpływa dostrzegalnych i nie mogą robić nic.

__rdpmccntr64

__rdpmccntr64(void) unsigned __int64

__sev

O POZIOMIE WAŻNOŚCI

void __sev(void)

__static_assert

void __static_assert (int, const char *)

__swi

SVC

__swi unsigned int (unsigned int,...)

__trap

BKPT

int __trap (int,...)

__wfe

WFE

void __wfe(void)

__wfi

WFI

void __wfi(void)

_AddSatInt

QADD

int _AddSatInt (int, int)

_CopyDoubleFromInt64

Podwójna _CopyDoubleFromInt64(__int64)

_CopyFloatFromInt32

_CopyFloatFromInt32(__int32) pływaka

_CopyInt32FromFloat

__int32 _CopyInt32FromFloat(float)

_CopyInt64FromDouble

__int64 _CopyInt64FromDouble(double)

_CountLeadingOnes

_CountLeadingOnes(unsigned long) unsigned int

_CountLeadingOnes64

_CountLeadingOnes64(unsigned __int64) unsigned int

_CountLeadingSigns

_CountLeadingSigns(long) unsigned int

_CountLeadingSigns64

_CountLeadingSigns64(__int64) unsigned int

_CountLeadingZeros

_CountLeadingZeros(unsigned long) unsigned int

_CountLeadingZeros64

_CountLeadingZeros64(unsigned __int64) unsigned int

_CountOneBits

_CountOneBits(unsigned long) unsigned int

_CountOneBits64

_CountOneBits64(unsigned __int64) unsigned int

_DAddSatInt

QDADD

int _DAddSatInt (int, int)

_DSubSatInt

QDSUB

int _DSubSatInt (int, int)

_isunordered

int _isunordered (podwójny, podwójne)

_isunorderedf

int _isunorderedf (float, float)

_MoveFromCoprocessor

MRC

_MoveFromCoprocessor unsigned int (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor, _MoveFromCoprocessor2.

_MoveFromCoprocessor2

MRC2

unsigned int _MoveFromCoprocessor2 (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor, _MoveFromCoprocessor2.

_MoveFromCoprocessor64

MRRC

unsigned __int64 _MoveFromCoprocessor64 (unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor64.

_MoveToCoprocessor

MCR

void _MoveToCoprocessor (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor, _MoveToCoprocessor2.

_MoveToCoprocessor2

MCR2

void _MoveToCoprocessor2 (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor, _MoveToCoprocessor2.

_MoveToCoprocessor64

MCRR

void _MoveToCoprocessor64 (unsigned __int64, unsigned int, unsigned int, unsigned int)

Odczytuje dane z koprocesora ARM przy użyciu instrukcji koprocesora transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor64.

_MulHigh

LONG _MulHigh (długi, długi)

_MulUnsignedHigh

niepodpisane długi _MulUnsignedHigh (długo unsigned, unsigned long)

_ReadBankedReg

PANI

int _ReadBankedReg (int _Reg)

_ReadStatusReg

PANI

int _ReadStatusReg(int)

_SubSatInt

QSUB

int _SubSatInt (int, int)

_WriteBankedReg

MSR

void _WriteBankedReg (int _Value, int _Reg)

_WriteStatusReg

MSR

void _WriteStatusReg (int, int, int)

[NEON]

Hh875058.collapse_all(pl-pl,VS.110).gifOgraniczenia bariera pamięci

Funkcji wewnętrznych __dmb (bariera pamięci danych), __dsb (bariery synchronizację danych), i __isb wykorzystania (instrukcja synchronizacji bariery) następujące wstępnie zdefiniowane wartości określające ograniczenia bariera pamięci pod względem udostępnianie domeny i rodzaj dostępu, których dotyczy operacja.

Wartość ograniczenia

Opis

_ARM_BARRIER_SY

Pełny system, odczyty i zapisy.

_ARM_BARRIER_ST

Pełny system tylko operacje zapisu.

_ARM_BARRIER_ISH

Wewnętrzna udostępnianych, odczyty i zapisy.

_ARM_BARRIER_ISHST

Wewnętrzny udostępnianych, zapisuje tylko.

_ARM_BARRIER_NSH

Non udostępnianych, odczyty i zapisy.

_ARM_BARRIER_NSHST

Non udostępnianych, zapisuje tylko.

_ARM_BARRIER_OSH

Zewnętrzne udostępnianych, odczyty i zapisy.

_ARM_BARRIER_OSHST

Zewnętrzne udostępnianych, zapisuje tylko.

Dla __isb wewnętrznej, jedynym ograniczeniem dotychczasowe jest _ARM_BARRIER_SY; wszystkie inne wartości są zarezerwowane przez architekturę.

Hh875058.collapse_all(pl-pl,VS.110).gifinstrinsics __iso_volatile_load/Sklep

Te funkcje wykonywać jawnie ładunków i magazynów, które nie podlegają optymalizacje kompilatora.

__int16 __iso_volatile_load16(const volatile __int16 * Location)
__int32 __iso_volatile_load32(const volatile __int32 * Location)
__int64 __iso_volatile_load64(const volatile __int64 * Location)
__int8 __iso_volatile_load8(const volatile __int8 * Location)

void __iso_volatile_store16(volatile __int16 * Location, __int16 Value)
void __iso_volatile_store32(volatile __int32 * Location, __int32 Value)
void __iso_volatile_store64(volatile __int64 * Location, __int64 Value)
void __iso_volatile_store8(volatile __int8 * Location, __int8 Value)

Parametry

  • Location
    Adres lokalizacji pamięci, aby odczytywać lub zapisywać dane do.

  • Value(przechowywać tylko intrinsics)
    Wartość do zapisu w lokalizacji określonej pamięci.

Zwracana wartość (tylko intrinsics obciążenia)

Wartość lokalizacji w pamięci określonej przez Location.

Uwagi

Można użyć __iso_volatile_load8/16/32/64 i __iso_volatile_store8/16/32/64 intrinsics do jawnie wykonywania dostępów do pamięci, które nie podlegają optymalizacje kompilatora.Kompilator nie można usunąć, synthetize, lub zmienić względna kolejność tych operacji, ale nie generuje barier pamięci niejawna sprzętu.Kolejność w związku z tym, sprzęt może nadal zmieniać dostępów do pamięci dostrzegalnych przez wiele wątków.Dokładniej, intrinsics te są równoważne z następujących określeń, opracowane pod /volatile:iso.

int a = __iso_volatile_load32(p);    // equivalent to: int a = *(const volatile __int32*)p; 
__iso_volatile_store32(p, a);        // equivalent to: *(volatile __int32*)p = a;

Należy zauważyć, że intrinsics podjąć lotnych wskaźniki odpowiadające lotnych zmiennych.Jednakże nie istnieje wymóg lub zalecenie, aby używać lotnych wskaźniki jako argumenty; Semantyka tych operacji są dokładnie takie same w przypadku używania typu zwykły, trwałej.

Aby uzyskać więcej informacji o /volatile:iso argument wiersza polecenia, zobacz /volatile (interpretacja słowa kluczowego volatile).

Hh875058.collapse_all(pl-pl,VS.110).gif_MoveFromCoprocessor, _MoveFromCoprocessor2

Te funkcje odczytywać dane z koprocesory ARM, zgodnie z instrukcjami koprocesora danych transferu.

int _MoveFromCoprocessor(
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crn,
      unsigned int crm,
      unsigned int opcode2
);

int _MoveFromCoprocessor2(
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crn,
      unsigned int crm,
      unsigned int opcode2
);

Parametry

  • coproc
    Koprocesor liczba z przedziału od 0 do 15.

  • opcode1
    Kod operacji specyficznych dla koprocesora z zakresu od 0 do 7

  • crn
    Liczba z przedziału od 0 do 15, określająca pierwszy argument opcji Instrukcja rejestrów.

  • crm
    Rejestrów liczba z przedziału od 0 do 15, która określa dodatkowe źródło lub miejsce docelowe operandu.

  • opcode2
    Dodatkowe specyficzne dla koprocesora kod operacji z zakresu od 0 do 7.

Zwracana wartość

Wartość, która jest odczytywana z Koprocesor.

Uwagi

Wartości wszystkich parametrów pięciu tym wewnętrznych musi być stała wyrażeń, które są znane w czasie kompilacji.

_MoveFromCoprocessorużywa instrukcji MRC; _MoveFromCoprocessor2używa MRC2.Parametry odpowiadają pola bitowe, które są kodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od koprocesora.Aby uzyskać więcej informacji zobacz Podręcznik dla danego koprocesora.

Hh875058.collapse_all(pl-pl,VS.110).gif_MoveFromCoprocessor64

Odczytuje dane z koprocesory ARM, zgodnie z instrukcjami koprocesora danych transferu.

unsigned __int64 _MoveFromCoprocessor64(
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crm,
);

Parametry

  • coproc
    Koprocesor liczba z przedziału od 0 do 15.

  • opcode1
    Kod operacji specyficznych dla koprocesora z zakresu od 0 do 15.

  • crm
    Rejestrów liczba z przedziału od 0 do 15, która określa dodatkowe źródło lub miejsce docelowe operandu.

Zwraca wartość

Wartość, która jest odczytywana z Koprocesor.

Uwagi

Wartości wszystkich trzech parametrów w tym wewnętrznych musi być stała wyrażeń, które są znane w czasie kompilacji.

_MoveFromCoprocessor64używa instrukcji MRRC.Parametry odpowiadają pola bitowe, które są kodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od koprocesora.Aby uzyskać więcej informacji zobacz Podręcznik dla danego koprocesora.

Hh875058.collapse_all(pl-pl,VS.110).gif_MoveToCoprocessor, _MoveToCoprocessor2

Te funkcje zapisywać danych koprocesory ARM przy użyciu instrukcji koprocesora transferu danych.

void _MoveToCoprocessor(
      unsigned int value,
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crn,
      unsigned int crm,
      unsigned int opcode2
);

void _MoveToCoprocessor2(
      unsigned int value,
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crn,
      unsigned int crm,
      unsigned int opcode2
);

Parametry

  • value
    Wartość do zapisania w Koprocesor.

  • coproc
    Koprocesor liczba z przedziału od 0 do 15.

  • opcode1
    Kod operacji specyficznych dla koprocesora z zakresu od 0 do 7.

  • crn
    Liczba z przedziału od 0 do 15, określająca pierwszy argument opcji Instrukcja rejestrów.

  • crm
    Rejestrów liczba z przedziału od 0 do 15, która określa dodatkowe źródło lub miejsce docelowe operandu.

  • opcode2
    Dodatkowe specyficzne dla koprocesora kod operacji z zakresu od 0 do 7.

Zwracana wartość

Brak.

Uwagi

Wartości coproc, opcode1, crn, crm, i opcode2 parametry tym wewnętrznych musi być stała wyrażeń, które są znane w czasie kompilacji.

_MoveToCoprocessorużywa instrukcji MCR; _MoveToCoprocessor2używa MCR2.Parametry odpowiadają pola bitowe, które są kodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od koprocesora.Aby uzyskać więcej informacji zobacz Podręcznik dla danego koprocesora.

Hh875058.collapse_all(pl-pl,VS.110).gif_MoveToCoprocessor64

Te funkcje zapisywać danych koprocesory ARM przy użyciu instrukcji koprocesora transferu danych.

void _MoveFromCoprocessor64(
      unsigned __int64 value,
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crm,
);

Parametry

  • coproc
    Koprocesor liczba z przedziału od 0 do 15.

  • opcode1
    Kod operacji specyficznych dla koprocesora z zakresu od 0 do 15.

  • crm
    Rejestrów liczba z przedziału od 0 do 15, która określa dodatkowe źródło lub miejsce docelowe operandu.

Zwracana wartość

Brak.

Uwagi

Wartości coproc, opcode1, i crm parametry tym wewnętrznych musi być stała wyrażeń, które są znane w czasie kompilacji.

_MoveFromCoprocessor64używa instrukcji MCRR.Parametry odpowiadają pola bitowe, które są kodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od koprocesora.Aby uzyskać więcej informacji zobacz Podręcznik dla danego koprocesora.

Obsługa ARM Intrinsics z innych architektur

Poniższa lista zawiera intrinsics z innych architektur, które są obsługiwane na platformach ARM.Jeżeli zachowanie wewnętrznych na ARM różni się od jego zachowanie na innych architekturach sprzętowych, dodatkowe szczegóły zostały wymienione.

Nazwa funkcji

Prototyp funkcji

__assume

void __assume(int)

__code_seg

void __code_seg(const char *)

__debugbreak

void __cdecl __debugbreak(void)

__fastfail

__declspec(noreturn) void __fastfail(unsigned int)

__nop

void __nop(void)

UwagaUwaga
Na platformach ARM ta funkcja generuje instrukcję NOP, jeśli jeden jest wykonywane w architekturze; w przeciwnym razie jest generowany alternatywnych instrukcji, która nie zmienia stanu programu lub Procesora — na przykład, MOV r8, r8.To jest funkcjonalnie równoważne __nop wewnętrzne dla innych architektur sprzętowych.Ponieważ instrukcji, która nie ma wpływu na stan programu lub Procesora może być ignorowany przez architekturze jako Optymalizacja, instrukcja nie koniecznie zużywa cykle Procesora.W związku z tym nie należy używać wewnętrznych __nop do manipulowania czas wykonania sekwencji kodu, jeśli nie masz pewności jak Procesor będzie działać.Zamiast tego można użyć __nop wewnętrzne wyrównać następnej instrukcji na adres określonych granicach 32-bitowych.

__yield

void __yield(void)

UwagaUwaga
Na platformach ARM, ta funkcja generuje instrukcję plonu, która wskazuje, że wątek wykonuje zadanie, które mogą zostać tymczasowo zawieszony z wykonania — na przykład spinlock — nie ma wpływu na program.Dzięki temu Procesora do wykonywania innych zadań podczas cykli wykonanie, które w przeciwnym razie marne.

_AddressOfReturnAddress

void * _AddressOfReturnAddress(void)

_BitScanForward

bez znaku (znak) _BitScanForward (unsigned długo * _Index, unsigned _Mask długa)

_BitScanReverse

bez znaku (znak) _BitScanReverse (unsigned długo * _Index, unsigned _Mask długa)

_bittest

bez znaku (znak) _bittest (const długo *, długie)

_bittestandcomplement

bez znaku (znak) _bittestandcomplement (long *, długie)

_bittestandreset

bez znaku (znak) _bittestandreset (long *, długie)

_bittestandset

bez znaku (znak) _bittestandset (long *, długie)

_byteswap_uint64

unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64)

_byteswap_ulong

_byteswap_ulong(unsigned long) unsigned __cdecl długa

_byteswap_ushort

_byteswap_ushort bez znaku __cdecl krótkie (short bez znaku)

_disable

void __cdecl _disable(void)

UwagaUwaga
Na platformach ARM ta funkcja generuje instrukcję CPSID; jest on dostępny tylko jako wewnętrzne.

_Aktywny

void __cdecl _enable(void)

UwagaUwaga
Na platformach ARM ta funkcja generuje instrukcję CPSIE; jest on dostępny tylko jako wewnętrzne.

_lrotl

_lrotl unsigned __cdecl długie (unsigned long, int)

_lrotr

_lrotr unsigned __cdecl długie (unsigned long, int)

_ReadBarrier

void _ReadBarrier(void)

_ReadWriteBarrier

void _ReadWriteBarrier(void)

_ReturnAddress

void * _ReturnAddress(void)

_rotl

_rotl __cdecl unsigned int (unsigned int _Value, int _Shift)

_rotl16

niepodpisane krótki _rotl16 (unsigned _Value krótkich, unsigned char _Shift)

_rotl64

unsigned __int64 __cdecl _rotl64 (unsigned __int64 _Value, int _Shift)

_rotl8

bez znaku (znak) _rotl8 (unsigned char _Value, unsigned char _Shift)

_rotr

_rotr __cdecl unsigned int (unsigned int _Value, int _Shift)

_rotr16

niepodpisane krótki _rotr16 (unsigned _Value krótkich, unsigned char _Shift)

_rotr64

unsigned __int64 __cdecl _rotr64 (unsigned __int64 _Value, int _Shift)

_rotr8

bez znaku (znak) _rotr8 (unsigned char _Value, unsigned char _Shift)

_setjmpex

int __cdecl _setjmpex(jmp_buf)

_WriteBarrier

void _WriteBarrier(void)

[NEON]

Zablokowane Intrinsics

Intrinsics blokujące są zestawem intrinsics, które są używane do wykonywania operacji odczytu zapisu zmiany atomowych.Niektóre z nich są wspólne dla wszystkich platform.Są one wymienione oddzielnie w tym miejscu ponieważ istnieje duża ich liczba, ale ponieważ ich definicje są głównie nadmiarowe, to łatwiej myśleć o nich w ogóle warunki.Ich nazw może służyć do uzyskania dokładną zachowań.

W następującej tabeli podsumowano wsparcie ARM intrinsics nie bittest-, zablokowane.Każda komórka w tabeli odpowiada nazwie otrzymanych w wyniku dołączania nazwy operacji w skrajnej lewej komórce wiersza i wpisz nazwę w komórce górze kolumny, aby _Interlocked.Na przykład komórka na przecięciu Xor wiersz i 8 kolumna odpowiada _InterlockedXor8 i jest w pełni obsługiwane.Większość obsługiwanych funkcji oferuje te opcjonalne sufiksy: _acq, _rel, i _nf._acq Sufiks wskazuje "nabyć" semantyczne i _rel sufiks wskazuje "zwolnienie" semantyczne.Te sufiksy są opisane w dokumentacji IPF w witrynie MSDN._nf Lub sufiks "nie ogrodzenia" jest unikatowy dla ARM i została omówiona w następnej sekcji.

8

16

32

64

P

Dodaj

Brak

Brak

Pełna

Pełna

Brak

I

Pełna

Pełna

Pełna

Pełna

Brak

CompareExchange

Pełna

Pełna

Pełna

Pełna

Pełna

Zmniejsz

Brak

Pełna

Pełna

Pełna

Brak

Exchange

Częściowe

Częściowe

Częściowe

Częściowe

Częściowe

ExchangeAdd

Pełna

Pełna

Pełna

Pełna

Brak

Przyrost

Brak

Pełna

Pełna

Pełna

Brak

Lub

Pełna

Pełna

Pełna

Pełna

Brak

XOR

Pełna

Pełna

Pełna

Pełna

Brak

Klucz:

  • Full: supports plain, _acq, _rel, and _nf forms.

  • Częściowe: obsługuje plain, _acq, i _nf formularzy.

  • Brak: nieobsługiwane

Hh875058.collapse_all(pl-pl,VS.110).gifsufiks domeny _nf (nie ogrodzenia)

_nf Lub sufiks "nie ogrodzenia" wskazuje, że operacja nie zachowuje się jak wszelkiego rodzaju bariera pamięci.W przeciwieństwie do innych form trzy (zwykły, _acq, i _rel), które wszystkie zachowują się jak pewnego rodzaju zapory.Jednym z możliwych zastosowań _nf formularzy ma utrzymać statystyki licznika jest aktualizowana przez wiele wątków w tym samym czasie, ale których w przeciwnym razie niezastosowania wartości podczas, gdy wykonują wiele wątków.

Hh875058.collapse_all(pl-pl,VS.110).gifWykaz blokujących Intrinsics

Nazwa funkcji

Prototyp funkcji

_InterlockedAdd

długa _InterlockedAdd (długa _volatile *, długie)

_InterlockedAdd64

__int64 _InterlockedAdd64 (__int64 volatile *, __int64)

_InterlockedAdd64_acq

__int64 _InterlockedAdd64_acq (__int64 volatile *, __int64)

_InterlockedAdd64_nf

__int64 _InterlockedAdd64_nf (__int64 volatile *, __int64)

_InterlockedAdd64_rel

__int64 _InterlockedAdd64_rel (__int64 volatile *, __int64)

_InterlockedAdd_acq

długa _InterlockedAdd_acq (długo lotnych *, długie)

_InterlockedAdd_nf

długa _InterlockedAdd_nf (długo lotnych *, długie)

_InterlockedAdd_rel

długa _InterlockedAdd_rel (długo lotnych *, długie)

_InterlockedAnd

długa _InterlockedAnd (długo lotnych *, długie)

_InterlockedAnd16

krótki _InterlockedAnd16 (volatile krótki *, krótki)

_InterlockedAnd16_acq

krótki _InterlockedAnd16_acq (volatile krótki *, krótki)

_InterlockedAnd16_nf

krótki _InterlockedAnd16_nf (volatile krótki *, krótki)

_InterlockedAnd16_rel

krótki _InterlockedAnd16_rel (volatile krótki *, krótki)

_InterlockedAnd64

__int64 _InterlockedAnd64 (__int64 volatile *, __int64)

_InterlockedAnd64_acq

__int64 _InterlockedAnd64_acq (__int64 volatile *, __int64)

_InterlockedAnd64_nf

__int64 _InterlockedAnd64_nf (__int64 volatile *, __int64)

_InterlockedAnd64_rel

__int64 _InterlockedAnd64_rel (__int64 volatile *, __int64)

_InterlockedAnd8

char _InterlockedAnd8 (char volatile *, char)

_InterlockedAnd8_acq

char _InterlockedAnd8_acq (char volatile *, char)

_InterlockedAnd8_nf

char _InterlockedAnd8_nf (char volatile *, char)

_InterlockedAnd8_rel

char _InterlockedAnd8_rel (char volatile *, char)

_InterlockedAnd_acq

długa _InterlockedAnd_acq (długo lotnych *, długie)

_InterlockedAnd_nf

długa _InterlockedAnd_nf (długo lotnych *, długie)

_InterlockedAnd_rel

długa _InterlockedAnd_rel (długo lotnych *, długie)

_InterlockedCompareExchange

długa __cdecl _InterlockedCompareExchange (długo lotnych *, długo,)

_InterlockedCompareExchange16

krótki _InterlockedCompareExchange16 (volatile krótki *, krótkie, krótkie)

_InterlockedCompareExchange16_acq

krótki _InterlockedCompareExchange16_acq (volatile krótki *, krótkie, krótkie)

_InterlockedCompareExchange16_nf

krótki _InterlockedCompareExchange16_nf (volatile krótki *, krótkie, krótkie)

_InterlockedCompareExchange16_rel

krótki _InterlockedCompareExchange16_rel (volatile krótki *, krótkie, krótkie)

_InterlockedCompareExchange64

__int64 _InterlockedCompareExchange64 (__int64 volatile *, __int64, __int64)

_InterlockedCompareExchange64_acq

__int64 _InterlockedCompareExchange64_acq (__int64 volatile *, __int64, __int64)

_InterlockedCompareExchange64_nf

__int64 _InterlockedCompareExchange64_nf (__int64 volatile *, __int64, __int64)

_InterlockedCompareExchange64_rel

__int64 _InterlockedCompareExchange64_rel (__int64 volatile *, __int64, __int64)

_InterlockedCompareExchange8

char _InterlockedCompareExchange8 (char volatile *, char, char)

_InterlockedCompareExchange8_acq

char _InterlockedCompareExchange8_acq (char volatile *, char, char)

_InterlockedCompareExchange8_nf

char _InterlockedCompareExchange8_nf (char volatile *, char, char)

_InterlockedCompareExchange8_rel

char _InterlockedCompareExchange8_rel (char volatile *, char, char)

_InterlockedCompareExchangePointer

void * _InterlockedCompareExchangePointer (void * volatile *, void *, void *)

_InterlockedCompareExchangePointer_acq

void * _InterlockedCompareExchangePointer_acq (void * volatile *, void *, void *)

_InterlockedCompareExchangePointer_nf

void * _InterlockedCompareExchangePointer_nf (void * volatile *, void *, void *)

_InterlockedCompareExchangePointer_rel

void * _InterlockedCompareExchangePointer_rel (void * volatile *, void *, void *)

_InterlockedCompareExchange_acq

długa _InterlockedCompareExchange_acq (długo lotnych *, długo,)

_InterlockedCompareExchange_nf

długa _InterlockedCompareExchange_nf (długo lotnych *, długo,)

_InterlockedCompareExchange_rel

długa _InterlockedCompareExchange_rel (długo lotnych *, długo,)

_InterlockedDecrement

długa __cdecl _InterlockedDecrement(long volatile *)

_InterlockedDecrement16

krótki _InterlockedDecrement16(short volatile *)

_InterlockedDecrement16_acq

krótki _InterlockedDecrement16_acq(short volatile *)

_InterlockedDecrement16_nf

krótki _InterlockedDecrement16_nf(short volatile *)

_InterlockedDecrement16_rel

krótki _InterlockedDecrement16_rel(short volatile *)

_InterlockedDecrement64

__int64 _InterlockedDecrement64(__int64 volatile *)

_InterlockedDecrement64_acq

__int64 _InterlockedDecrement64_acq(__int64 volatile *)

_InterlockedDecrement64_nf

__int64 _InterlockedDecrement64_nf(__int64 volatile *)

_InterlockedDecrement64_rel

__int64 _InterlockedDecrement64_rel(__int64 volatile *)

_InterlockedDecrement_acq

długi _InterlockedDecrement_acq(long volatile *)

_InterlockedDecrement_nf

długi _InterlockedDecrement_nf(long volatile *)

_InterlockedDecrement_rel

długi _InterlockedDecrement_rel(long volatile *)

_InterlockedExchange

długa __cdecl _InterlockedExchange (długo lotnych * _Target, długie)

_InterlockedExchange16

krótki _InterlockedExchange16 (volatile krótki * _Target, krótka)

_InterlockedExchange16_acq

krótki _InterlockedExchange16_acq (volatile krótki * _Target, krótka)

_InterlockedExchange16_nf

krótki _InterlockedExchange16_nf (volatile krótki * _Target, krótka)

_InterlockedExchange64

__int64 _InterlockedExchange64 (__int64 volatile * _Target, __int64)

_InterlockedExchange64_acq

__int64 _InterlockedExchange64_acq (__int64 volatile * _Target, __int64)

_InterlockedExchange64_nf

__int64 _InterlockedExchange64_nf (__int64 volatile * _Target, __int64)

_InterlockedExchange8

char _InterlockedExchange8 (char volatile * _Target, char)

_InterlockedExchange8_acq

char _InterlockedExchange8_acq (char volatile * _Target, char)

_InterlockedExchange8_nf

char _InterlockedExchange8_nf (char volatile * _Target, char)

_InterlockedExchangeAdd

długa __cdecl _InterlockedExchangeAdd (długo lotnych *, długie)

_InterlockedExchangeAdd16

krótki _InterlockedExchangeAdd16 (volatile krótki *, krótki)

_InterlockedExchangeAdd16_acq

krótki _InterlockedExchangeAdd16_acq (volatile krótki *, krótki)

_InterlockedExchangeAdd16_nf

krótki _InterlockedExchangeAdd16_nf (volatile krótki *, krótki)

_InterlockedExchangeAdd16_rel

krótki _InterlockedExchangeAdd16_rel (volatile krótki *, krótki)

_InterlockedExchangeAdd64

__int64 _InterlockedExchangeAdd64 (__int64 volatile *, __int64)

_InterlockedExchangeAdd64_acq

__int64 _InterlockedExchangeAdd64_acq (__int64 volatile *, __int64)

_InterlockedExchangeAdd64_nf

__int64 _InterlockedExchangeAdd64_nf (__int64 volatile *, __int64)

_InterlockedExchangeAdd64_rel

__int64 _InterlockedExchangeAdd64_rel (__int64 volatile *, __int64)

_InterlockedExchangeAdd8

char _InterlockedExchangeAdd8 (char volatile *, char)

_InterlockedExchangeAdd8_acq

char _InterlockedExchangeAdd8_acq (char volatile *, char)

_InterlockedExchangeAdd8_nf

char _InterlockedExchangeAdd8_nf (char volatile *, char)

_InterlockedExchangeAdd8_rel

char _InterlockedExchangeAdd8_rel (char volatile *, char)

_InterlockedExchangeAdd_acq

długa _InterlockedExchangeAdd_acq (długo lotnych *, długie)

_InterlockedExchangeAdd_nf

długa _InterlockedExchangeAdd_nf (długo lotnych *, długie)

_InterlockedExchangeAdd_rel

długa _InterlockedExchangeAdd_rel (długo lotnych *, długie)

_InterlockedExchangePointer

void * _InterlockedExchangePointer (void * volatile * _Target, void *)

_InterlockedExchangePointer_acq

void * _InterlockedExchangePointer_acq (void * volatile * _Target, void *)

_InterlockedExchangePointer_nf

void * _InterlockedExchangePointer_nf (void * volatile * _Target, void *)

_InterlockedExchange_acq

długa _InterlockedExchange_acq (długo lotnych * _Target, długie)

_InterlockedExchange_nf

długa _InterlockedExchange_nf (długo lotnych * _Target, długie)

_InterlockedIncrement

długa __cdecl _InterlockedIncrement(long volatile *)

_InterlockedIncrement16

krótki _InterlockedIncrement16(short volatile *)

_InterlockedIncrement16_acq

krótki _InterlockedIncrement16_acq(short volatile *)

_InterlockedIncrement16_nf

krótki _InterlockedIncrement16_nf(short volatile *)

_InterlockedIncrement16_rel

krótki _InterlockedIncrement16_rel(short volatile *)

_InterlockedIncrement64

__int64 _InterlockedIncrement64(__int64 volatile *)

_InterlockedIncrement64_acq

__int64 _InterlockedIncrement64_acq(__int64 volatile *)

_InterlockedIncrement64_nf

__int64 _InterlockedIncrement64_nf(__int64 volatile *)

_InterlockedIncrement64_rel

__int64 _InterlockedIncrement64_rel(__int64 volatile *)

_InterlockedIncrement_acq

długi _InterlockedIncrement_acq(long volatile *)

_InterlockedIncrement_nf

długi _InterlockedIncrement_nf(long volatile *)

_InterlockedIncrement_rel

długi _InterlockedIncrement_rel(long volatile *)

_InterlockedOr

długa _InterlockedOr (długo lotnych *, długie)

_InterlockedOr16

krótki _InterlockedOr16 (volatile krótki *, krótki)

_InterlockedOr16_acq

krótki _InterlockedOr16_acq (volatile krótki *, krótki)

_InterlockedOr16_nf

krótki _InterlockedOr16_nf (volatile krótki *, krótki)

_InterlockedOr16_rel

krótki _InterlockedOr16_rel (volatile krótki *, krótki)

_InterlockedOr64

__int64 _InterlockedOr64 (__int64 volatile *, __int64)

_InterlockedOr64_acq

__int64 _InterlockedOr64_acq (__int64 volatile *, __int64)

_InterlockedOr64_nf

__int64 _InterlockedOr64_nf (__int64 volatile *, __int64)

_InterlockedOr64_rel

__int64 _InterlockedOr64_rel (__int64 volatile *, __int64)

_InterlockedOr8

char _InterlockedOr8 (char volatile *, char)

_InterlockedOr8_acq

char _InterlockedOr8_acq (char volatile *, char)

_InterlockedOr8_nf

char _InterlockedOr8_nf (char volatile *, char)

_InterlockedOr8_rel

char _InterlockedOr8_rel (char volatile *, char)

_InterlockedOr_acq

długa _InterlockedOr_acq (długo lotnych *, długie)

_InterlockedOr_nf

długa _InterlockedOr_nf (długo lotnych *, długie)

_InterlockedOr_rel

długa _InterlockedOr_rel (długo lotnych *, długie)

_InterlockedXor

długa _InterlockedXor (długo lotnych *, długie)

_InterlockedXor16

krótki _InterlockedXor16 (volatile krótki *, krótki)

_InterlockedXor16_acq

krótki _InterlockedXor16_acq (volatile krótki *, krótki)

_InterlockedXor16_nf

krótki _InterlockedXor16_nf (volatile krótki *, krótki)

_InterlockedXor16_rel

krótki _InterlockedXor16_rel (volatile krótki *, krótki)

_InterlockedXor64

__int64 _InterlockedXor64 (__int64 volatile *, __int64)

_InterlockedXor64_acq

__int64 _InterlockedXor64_acq (__int64 volatile *, __int64)

_InterlockedXor64_nf

__int64 _InterlockedXor64_nf (__int64 volatile *, __int64)

_InterlockedXor64_rel

__int64 _InterlockedXor64_rel (__int64 volatile *, __int64)

_InterlockedXor8

char _InterlockedXor8 (char volatile *, char)

_InterlockedXor8_acq

char _InterlockedXor8_acq (char volatile *, char)

_InterlockedXor8_nf

char _InterlockedXor8_nf (char volatile *, char)

_InterlockedXor8_rel

char _InterlockedXor8_rel (char volatile *, char)

_InterlockedXor_acq

długa _InterlockedXor_acq (długo lotnych *, długie)

_InterlockedXor_nf

długa _InterlockedXor_nf (długo lotnych *, długie)

_InterlockedXor_rel

długa _InterlockedXor_rel (długo lotnych *, długie)

[NEON]

Hh875058.collapse_all(pl-pl,VS.110).gif_interlockedbittest Intrinsics

Intrinsics zwykły bittest blokujące są wspólne dla wszystkich platform.Dodaje ARM _acq, _rel, i _nf wariantów, które po prostu zmodyfikować bariery semantykę operacji, zgodnie z opisem w sufiks domeny _nf (nie ogrodzenia) wcześniej w tym artykule.

Nazwa funkcji

Prototyp funkcji

_interlockedbittestandreset

bez znaku (znak) _interlockedbittestandreset (długo lotnych *, długie)

_interlockedbittestandreset_acq

bez znaku (znak) _interlockedbittestandreset_acq (długo lotnych *, długie)

_interlockedbittestandreset_nf

bez znaku (znak) _interlockedbittestandreset_nf (długo lotnych *, długie)

_interlockedbittestandreset_rel

bez znaku (znak) _interlockedbittestandreset_rel (długo lotnych *, długie)

_interlockedbittestandset

bez znaku (znak) _interlockedbittestandset (długo lotnych *, długie)

_interlockedbittestandset_acq

bez znaku (znak) _interlockedbittestandset_acq (długo lotnych *, długie)

_interlockedbittestandset_nf

bez znaku (znak) _interlockedbittestandset_nf (długo lotnych *, długie)

_interlockedbittestandset_rel

bez znaku (znak) _interlockedbittestandset_rel (długo lotnych *, długie)

[NEON]

Zobacz też

Informacje

Intrinsics kompilatora

Inne zasoby

Odwołania monter RAMIĘ

Skorowidz języka C++