我正在使用gcc編譯器,我希望能夠快速更改sse舍入模式。MinGW gcc設置fp舍入模式
#include <xmmintrin.h>
unsigned int _mxcsr_up = _MM_MASK_MASK | _MM_ROUND_UP;
unsigned int _mxcsr_down = _MM_MASK_MASK | _MM_ROUND_DOWN;
unsigned int _mxcsr_n = _MM_MASK_MASK;
void round_nearest_mode() {
asm (
"ldmxcsr %0" : : "m" (_mxcsr_n)
);
}
void round_up_mode() {
asm (
"ldmxcsr %0" : : "m" (_mxcsr_up)
);
}
void round_down_mode() {
asm (
"ldmxcsr %0" : : "m" (_mxcsr_down)
);
}
但是當我編譯使用MinGW的窗戶下,舍入模式沒有改變:如果編譯linux下下面的代碼工作。是什麼原因?
如果您處於託管環境中,請使用標準庫而不是內聯彙編(http://en.cppreference.com/w/c/numeric/fenv/feround) – StoryTeller
@StoryTeller我包含但是我無法使用它的內容。我認爲條件'#if _GLIBCXX_USE_C99_FENV_TR1'不滿意,但我不知道爲什麼。 –
將您的項目構建爲C99。將'-std = c99'添加到編譯器調用中(或者,如果使用IDE,請在項目選項中查找該選項)。 – StoryTeller