2 ms·
Based on what I see on [Stack Overflow](https://stackoverflow.com/a/51908785 https://stackoverflow.com/a/51908785), it's recognized by all the major compilers
by pizza234 6y ago
Based on what I see on [Stack Overflow](https://stackoverflow.com/a/51908785 https://stackoverflow.com/a/51908785), it's recognized by all the major compilers
The [Microsoft Compiler help](https://docs.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list?view=vs-2019 https://docs.microsoft.com/en-us/cpp/intrinsics/x86-intrinsi...) includes it in the "x86 intrinsics list".
I've just compiled with success, for testing purposes, on an AMD processor.
C, relevant section:
#include <immintrin.h>
void test() {
_mm_pause();
}
Output ASM, relevant section:
test:
.LFB4006:
.cfi_startproc
endbr64
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
rep nop
nop
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE4006:
.size test, .-test
.globl main
.type main, @function
It should be the `rep nop`.
Including `ammintrin.h` yields the same `rep nop`.
- saagarjha 6y agoBy “Intel” I really meant “x86” :P Is there an ARM compiler that recognizes it?
- pizza234 6y agoAh! Sorry for that; I have no idea. It seems that at least some ARMs have [timers that can be used](https://electronics.stackexchange.com/q/450971 https://electronics.stackexchange.com/q/450971), which is a different strategy, but still more appropriate (I suppose).
- secondcoming 6y agoUnlikely, intrinsics are CPU, and sometimes CPU model, specific. Compiler builtins will instead use the intrinsic if it's available/suitable or generate equivalent code if it's not.