Török Edwin
2009-Jan-23 18:52 UTC
[LLVMdev] inline asm semantics: output constraint width smaller than input
On 2009-01-23 20:30, Ingo Molnar wrote:> * Török Edwin <edwintorok at gmail.com> wrote: > > >> Having said that, llvm-gcc is not yet able to compile the full Linux >> kernel on its own [for example the boot code, due to asm(".code16gcc")], >> but with LLVM 2.4 it was possible to build "arch=UM", and "arch=X86" (by >> using gcc to build the bootcode). I'd like LLVM 2.5 to be able to build >> the kernel, so I'll file bugs for llvm/kernel depending on where the >> problem is. >> > > Could we get LLVM folks on the Cc: and see how difficult it would be to > fix this on the LLVM side? Asm constraints are used all around the place > and different input/output types are very common.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
Török Edwin
2009-Jan-23 20:42 UTC
[LLVMdev] inline asm semantics: output constraint width smaller than input
On 2009-01-23 20:52, Török Edwin wrote:> On 2009-01-23 20:30, Ingo Molnar wrote: > >> * Török Edwin <edwintorok at gmail.com> wrote: >> >> >> >>> Having said that, llvm-gcc is not yet able to compile the full Linux >>> kernel on its own [for example the boot code, due to asm(".code16gcc")], >>> but with LLVM 2.4 it was possible to build "arch=UM", and "arch=X86" (by >>> using gcc to build the bootcode). I'd like LLVM 2.5 to be able to build >>> the kernel, so I'll file bugs for llvm/kernel depending on where the >>> problem is. >>> >>> >> Could we get LLVM folks on the Cc: and see how difficult it would be to >> fix this on the LLVM side? Asm constraints are used all around the place >> and different input/output types are very common. >> > >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
Possibly Parallel Threads
- [LLVMdev] inline asm semantics: output constraint width smaller than input
- [LLVMdev] inline asm semantics: output constraint width smaller than input
- [LLVMdev] inline asm semantics: output constraint width smaller than input
- [LLVMdev] inline asm semantics: output constraint width smaller than input
- [LLVMdev] inline asm semantics: output constraint width smaller than input