<div dir="ltr">Hi all,<div>I have the below input<div><div><div><br></div><div><font face="monospace, monospace">define i32 @myCas(i32* %ptr, i32 %cmp, i32 %val) #0 {<br></font></div><div><font face="monospace, monospace">entry:</font></div><div><font face="monospace, monospace">  %0 = cmpxchg volatile i32* %ptr, i32 %cmp, i32 %val seq_cst</font></div><div><font face="monospace, monospace">  %1 = extractvalue { i32, i1 } %0, 0</font></div><div><font face="monospace, monospace">  ret i32 %1</font></div><div><font face="monospace, monospace">}<br></font></div><div><br></div><div>When I provide this input file to llvm-as 3.6 I get the error</div><div><br></div><div><div><font face="monospace, monospace">a.ll: error: Expected ordering on atomic instruction</font></div><div><font face="monospace, monospace">  %1 = extractvalue { i32, i1 } %0, 0</font></div></div><div><br></div><div>This is because instruction syntax of cmpxchg has changed since 3.2 requiring failing order as well.</div><div><br></div><div>Ideally, I would expect backward compatibility from LLVM tools; and not requiring to modify the code again.</div><div><br></div><div>What is LLVM's philosophy here?</div><div><br></div><div><br></div><div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><i style="font-size:12.8px">Disclaimer: Views, concerns, thoughts, questions, ideas expressed in this mail are of my own and my employer has no take in it. </i><br></div><div>Thank You.<br>Madhur D. Amilkanthwar<br><br></div></div></div>
</div></div></div></div></div>