The 'z' constraint is used to deal with the floating-point condition code register. Using this constraint the following short, although useless piece of code
float a = 1.0, b = 2.0; int res; __asm__ __volatile__( "c.eq.s %1,%2" : "+z" (res) : "f" (a), "f" (a) : );
translated to this series of assembler commands
ctc1 $1, $fcc0 c.eq.s $f2, $f0 cfc1 $1, $fcc0
So we can read/write the floating-point condition code register from/to a variable.
This patch adds support for the 'z' constraint on LLVM level only. One more fix is required to support the constraint in the Clang.
Document the constraint in the above comment.