Hello,
Most of the IR language is correctly explained; but with inline assembly I feel alone at some point:
define i32 @main(i32 %argc, i8** %argv) #0 {
... //some uninteresting bloat here
call void asm sideeffect "outw %eax, $0", "imr,~{dirflag},~{fpsr},~{flags}"(i32 %8) #2, !srcloc !2
ret i32 0
}
I reduced the above code to the offending line containing: "imr,~{dirflag},~{fpsr},~{flags}".
How should I interpret this? I found no resource on this over the net. Maybe there are more options like that?
Do you have a link explaining this more in details?
thanks a lot.
--е║
Alex
I reduced the above code to the offending line containing: "imr,~{dirflag},~{fpsr},~{flags}".
How should I interpret this? I found no resource on this over the net. Maybe there are more options like that?
Do you have a link explaining this more in details?
It’s called a constraint string and it is documented here:
http://llvm.org/docs/LangRef.html#inline-asm-constraint-string
Cheers,
d
Thanks, but I could not find the imr, dirflag, fpsr constraints here. Just the usual gcc/clang inline assembly constraints.
Those one were of my concern, actually 
Those are register names.
-Krzysztof
The names in {} are register names. The "imr" is explained here:
http://llvm.org/docs/LangRef.html#supported-constraint-code-list
-K