<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>What is the downside of the currently generated IR?  There ain't nothin' wrong with bitcasts, IMO. <br><br>-Filip</div><div><br>On May 24, 2014, at 2:17 PM, Philip Reames <<a href="mailto:listmail@philipreames.com">listmail@philipreames.com</a>> wrote:<br><br></div><blockquote type="cite"><div>
  

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  
  
    Looking through the documentation, I discovered that atomic loads
    and stores are only supported for integer types.  Can anyone provide
    some background on this?  Why is this true?<br>
    <br>
    Currently, given code:<br>
    std::atomic<float> aFloat;<br>
    void foo() {<br>
      float f = atomic_load(&aFloat);<br>
      ..<br>
    }<br>
    <br>
    Clang generates code like:<code></code><br>
    %"struct.std::atomic.2" = type { float }<br>
    @aFloat = global %"struct.std::atomic.2" zeroinitializer, align 4<br>
    <br>
    define void @foo() {<br>
      %1 = load atomic i32* bitcast (%"struct.std::atomic.2"* @aFloat to
    i32*) seq_cst, align 4<br>
      %2 = bitcast i32 %1 to float<br>
      ...<br>
    }<br>
    <br>
    This seems less than ideal.  I would expect that we might have to
    desugar floats into integer & cast operations in the backend,
    but why is this imposed on the frontend? <br>
    <br>
    More generally, is there anyone who is knowledgeable and/or working
    on atomics and synchronization in LLVM?  I've got a number of
    questions w.r.t. semantics and have found a number of what I believe
    to be missed optimizations.  I'm happy to file the later, but I'd
    like to talk them over with a knowledgeable party first.<br>
    <br>
    Philip<br>
  

</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>LLVM Developers mailing list</span><br><span><a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a></span><br><span><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a></span><br></div></blockquote></body></html>