how to prevent some instruction from scheduling?

I wrote the following IR code:"

call @fesetround int32 0x400
%result = call @llvm.rint.f32 f32 value
call @fesetround int32 0x0


However, when the IR is JITed, “llvm.rint.f32” is translated to “roundps” and scheduled out of the two fesetround call. The final native code looks like:"

movabs , %rax
mov 0x400, %rdi
call *%rax
xor %rdi, %rdi
call *%rax
roundps 0x4 %mmx0, %mmx0


Is there any way to stop the optimization pass from scheduling the “llvm.rint.f32” out of two ‘fesetround’ calls? Or is there any other way to solve this problem?

Bin LI,
State Key Laboratory of Computer Architecture,
Institute of Computing Technology of Chinese Academy of Sciences,
Address: NO.6 Kexueyuan South Road, Haidian District, Beijing, China
Phone: 18811212264