inline asm semantics: output constraint width smaller than input

I've added LLVMDev to Cc.
Your first post to the list may take a little longer to reach it (first
post is moderated by listmaster, no subscription required).

[For those who missed the initial conversation, see:
http://llvm.org/bugs/show_bug.cgi?id=3373#c9]

Best regards,
--Edwin

Hi Ingo,

Could you describe what are the semantics you need for inline asm
constraints in the kernel?
GCC doesn't document all the corner cases, and defining inline asm =
"whatever gcc accepts" is not very useful for LLVM.

So far we've encountered the problem with input/output operand tied to
same register, but having different widths:
- output wider than input, both integers: do you need this case?
- output narrower than input, both integers: this is the common case, right?
- can it also happen that input is pointer, output is integer of
different width?
- .. any other mismatches?

Could you also describe why put_user/the example from pcbios needs the
different widths?

Best regards,
--Edwin