|
From: Borja F. <bor...@gm...> - 2013-06-27 22:32:49
|
Yes fine
El jueves, 27 de junio de 2013, Stepan Dyatkovskiy escribió:
> OK. Will do.
> Currently there is a patch with memory constraint and draft multibyte
> constraint (supports only A and B). To be clean under multibyte constraints
> I mean something like this:
> asm volatile("mov __tmp_reg__, %A0" "\n\t"
> "mov %A0, %B0" "\n\t"
> "mov %B0, __tmp_reg__" "\n\t"
> : "=r" (value)
> : "0" (value)
> );
>
> -Stepan.
> Borja Ferrer wrote:
>
>> btw, if this is now feature complete you can commit it.
>>
>>
>> 2013/6/27 Borja Ferrer <bor...@gm...
>> <mailto:bor...@gm...>>
>>
>> No, that code is a personal modification of your examples. If you
>> aren't getting the correct output from clang that's because you
>> probably didn't apply a patch i commited last week for clang in our
>> SVN.
>> The assertion you're getting looks reasonable, it's an old friend of
>> mine. The reason is that if Y is being reserved as the frame
>> pointer, you cant have an instruction that uses 2 registers when
>> only Z is available. I wouldn't mind too much about it.
>>
>> Now, my 2nd question:
>>
>> Is there anything else that needs to be covered for the memory
>> constraint?
>>
>>
>> 2013/6/27 Stepan Dyatkovskiy <stp...@na...
>> <mailto:stp...@na...>>
>>
>> This one looks good. Though ./llc emits "run out of registers
>> allocation. I'll look at it. Is that from avr-libc?
>> -Stepan.
>> Borja Ferrer wrote:
>>
>> Yes, and then I replied the following:
>>
>> For this C code:
>>
>> char delay_count;
>> char aaa;
>> uint8_t delay(unsigned char p)
>> {
>> uint8_t cnt;
>> asm volatile (
>> "inst %0, %1" "\n\t"
>> : "=Q" (delay_count)
>> : "Q" (aaa));
>> return cnt;
>> }
>>
>> Clang produces:
>>
>> define i8 @delay(i8 %p) #0 {
>> entry:
>> tail call void asm sideeffect "inst $0, $1\0A\09",
>> "=*Q,*Q"(i8*
>> @delay_count, i8* @aaa) #2, !srcloc !4
>> ret i8 undef
>> }
>>
>> notice the *Q constraints, so is there anything wrong in
>> there?
>>
>> Is there anything else that needs to be covered for the
>> memory constraint?
>>
>>
>> 2013/6/27 Stepan Dyatkovskiy <stp...@na...
>> <mailto:stp...@na...> <mailto:stp...@na...
>> <mailto:stp...@na...>>>
>>
>>
>> Hi Borja,
>>
>> > Stepan, reply in this thread to my 2 questions again
>> if the email
>> got lost.
>>
>> My prev. reply:
>>
>>
>> > Ahh, I didn't know avr-gcc was buggy on this
>> feature, that's probably
>> > the reason for why the code i pasted in my previous
>> email didn't
>> work.
>> ...
>> > What's wrong with clang? I fixed clang inline asm
>> support back on
>> > friday, so is there anything else that is broken?
>> It should emit '*Q' instead of 'Q'. That's why code
>> from prev. email
>> didn't work, just compare -emit-llvm -S output of
>> avr-clang with
>> other backends,
>>
>> > About the getPointerRegClass function, what is it
>> used for? Also,
>> please
>> > move the implementation to the cpp file instead of
>> leaving it in
>> the .h.
>> Currently, it is used in registers coelescing pass.
>> While being
>> registers inflating, llvm lookups all register uses. If
>> it found
>> that register is used by inline-asm as memory operand,
>> it requests
>> the pointer class with this method (I think the largest
>> one). But
>> may be in future this method will be used in more cases.
>>
>> avr-gcc has buggy implementation of memory constraint,
>> that's why
>> avr-libs doesn't use it at all. We have a chance to be
>> first here
>>
>> -Stepan
>>
>> Borja Ferrer wrote:
>>
>> Stepan, reply in this thread to my 2 questions
>> again if the
>> email got lost.
>>
>>
>> 2013/6/27 Borja Ferrer <bor...@gm...
>> <mailto:bor...@gm...>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...>>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...> <mailto:bor...@gm...
>> <mailto:bor...@gm...>>__>__>
>>
>>
>> No, your last email only says : "So, can I
>> commit that memory
>> constraint patch?"
>>
>>
>> 2013/6/27 Stepan Dyatkovskiy
>> <stp...@na... <mailto:stp...@na...>
>> <mailto:stp...@na... <mailto:stp...@na...
>> >>
>> <mailto:stp...@na...
>> <mailto:stp...@na...> <mailto:stp...@na...
>> <mailto:stp...@na...>>>>
>>
>>
>>
>> Hm... Didn't you get my previous mail? If
>> not, I think,
>> I have
>> to change my mail box.
>>
>> -Stepan
>>
>>
>> -------- Original Message --------
>> Subject: Re: [avr-llvm-devel] Inline
>> assembly. Mostly
>> just a stub.
>> Date: Tue, 25 Jun 2013 18:30:46 +0400
>> From: Stepan Dyatkovskiy
>> <stp...@na... <mailto:stp...@na...>
>> <mailto:stp...@na... <mailto:stp...@na...
>> >>
>> <mailto:stp...@na...
>> <mailto:stp...@na...> <mailto:stp...@na...
>> <mailto:stp...@na...>>>>
>> To: Borja Ferrer <bor...@gm...
>> <mailto:bor...@gm...>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...>>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...>>__>__>
>> CC: avr-llvm
>> <avr-llvm-devel@lists.__source**____forge.net<http://source____forge.net>
>> <http://source__forge.net>
>> <http://source <http://sourceforge.net>
>
>
|