[LLVMdev] how to prevent some instruction from scheduling?

Li Bin richardustc at gmail.com
Wed Mar 12 08:08:44 PDT 2014


Hello,
    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 <fesetround>, %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
email: richardustc at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140312/5fdd1dc6/attachment.html>


More information about the llvm-dev mailing list