[LLVMdev] Prevent a intrinsic to be reordered?

Evan Cheng evan.cheng at apple.com
Mon Sep 15 09:18:03 PDT 2008


Well, consider the multiply doesn't touch memory and is independent on  
any outputs or side effects of llvm.soru.sre intrinsics, codegen is  
free to reorder the two. It may require llvm extension to model an  
instruction that has this level of side effects. One possible short  
term workaround is to move the intrinsic instruction into its own  
basic block. But they may not work if codegen prepare sink any  
instruction past it or when we switch to beyond basic block  
instruction selection.

Evan

On Sep 15, 2008, at 12:16 AM, Julio wrote:

> Nothing... I'll show you all the info related to:
>
> The intrinsic:  def int_soru_sre : Intrinsic<[llvm_void_ty,  
> llvm_i32_ty], [IntrWriteMem]>;
>
> The lower instruction (in MIPS):
> class SORUI<bits<6> op, dag outs, dag ins, string asmstr, list<dag>  
> pattern,
>          InstrItinClass itin>: FI<op, outs, ins, asmstr, pattern,  
> itin>
> {
>   let isBarrier = 1; // or call, hassideefects, ..., nothing work
> }
>
> def SORU_SRE: SORUI<0b110011, (outs), (ins uimm16:$imm), "sre $imm",
>                [(int_soru_sre imm:$imm)], IISoru>;
>
> (With IISoru I made all the possible changes: a lot of cycles or  
> none with all the functional units or none)
>
> And an example:
>     tail call void @llvm.soru.sre( i32 5 )
>     mul i32 %b, %a        ; <i32>:0 [#uses=1]
>
> is coded as:
>
>     mult $2, $5, $4
>     sre 5
>
> Best regards.
> Julio
>
> 2008/9/14 Anton Korobeynikov <asl at math.spbu.ru>
> Hello, Julio
>
> > These later things are ignored, I don't know if when the intrinsic  
> is
> > lowered, then it doesn't matter (or perhaps the reorder is made
> > before).
> What is the description of the instruction you're lowering intrinsic
> into? Have you looked for the instruction flags defined in Target.td
> file? You instruction should definitely have "isBarrier" flag set.
>
> --
> With best regards, Anton Korobeynikov.
>
> Faculty of Mathematics & Mechanics, Saint Petersburg State University.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080915/4b4b303e/attachment.html>


More information about the llvm-dev mailing list