|
From: Borja F. <bor...@gm...> - 2012-05-22 22:51:08
|
Yes, that's something handled by llvm, not the backend so we can't do too
much there, although it would be a nice optimization to do.
2012/5/23 Nicklas Bo Jensen <nbj...@gm...>
> Thanks for the explanation. It's clear :)
>
> Out of curiosity, why are the pushes and pops in the example below? movw
> leaves r17:r14 unchanged. Do we simply push and pop all registers to be on
> the safe side and limited static analysis?
>
> llvm:
> define i32 @return32_arg2(i32 %x, i32 %y, i32 %z) {
> ret i32 %z
> }
>
> asm:
> return32_arg2:
> push r14
> push r15
> push r16
> push r17
> movw r23:r22, r15:r14
> movw r25:r24, r17:r16
> pop r17
> pop r16
> pop r15
> pop r14
>
> On Tue, May 22, 2012 at 11:32 PM, Borja Ferrer <bor...@gm...>wrote:
>
>> Here you have a link that explains how registers are used:
>> www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage
>> Testing a calling convention without knowing how it actually works is
>> going to be an insane task to do xD
>>
>> About your question, when you read that link all will become clear but
>> basically here is what's going on. Arguments are passed from r25 down to
>> r8, since in this case three 64bit args can't fit in those registers the
>> last argument is passed through the stack, so you get:
>> arg1 is in: r25-r18
>> arg2 is in: r17-r10
>> arg3 obviously doesn't fit in 2 register so it's all passed through the
>> stack, thats why you get those loads. Notice that the lowest part of the
>> argument is in Y+5 because in +4 and +3 is r29:r28 you just pushed and in
>> +2 +1 is the the return address that was pushed into the stack after the
>> call was performed.
>>
>> Another thing, you should add checks on the pushes and pops for the
>> callee saved registers so we're sure that they're being saved.
>>
>>
>>
>> 2012/5/22 Nicklas Bo Jensen <nbj...@gm...>
>>
>>> Perfect :)
>>>
>>> I'm moving on to calling convention and have started with return values.
>>> However I'm a bit unsure what the calling convention actually is. For
>>> example with my last test, called "return64_arg2" in the attached .ll file
>>> and the generated assembly in the .s file, is the correct thing happening
>>> and how it should be tested? Couldn't we have passed the arguments in the
>>> normal registers? I.e. r25:r2.
>>>
>>> If the arguments don't fit in the registers, do we always store the
>>> result in the same place in ram?
>>>
>>>
>>> On Mon, May 21, 2012 at 11:38 PM, Borja Ferrer <bor...@gm...>wrote:
>>>
>>>> Nice, so now you have the same test failures as me, they are caused
>>>> because we're using custom address space stuff in clang, dont worry about
>>>> those. Basically they fail because these tests are writing into address
>>>> space 1 which is flash data and that is forbidden in our target (remember
>>>> flash memory is readonly).
>>>>
>>>> The test cases you just commited look great :) To which ones are you
>>>> going to move on next?
>>>>
>>>> Yes, that code looks correct, where is the problem?
>>>>
>>>>
>>>> 2012/5/21 Nicklas Bo Jensen <nbj...@gm...>
>>>>
>>>>> Is the following generated code correct:
>>>>>
>>>>> LLVM:
>>>>>
>>>>> define i8 @return8_arg(i8 %x) {
>>>>> ret i8 %x
>>>>> }
>>>>>
>>>>> Generated:
>>>>>
>>>>> return8_arg:
>>>>> ret
>>>>>
>>>>>
>>>>> Something similar in .c compiling with avr-gcc gives a few pushes,
>>>>> loads and pops.
>>>>>
>>>>> On Mon, May 21, 2012 at 10:48 PM, Nicklas Bo Jensen <
>>>>> nbj...@gm...> wrote:
>>>>>
>>>>>> When adding those targets I only have 10 unexpected failures:
>>>>>>
>>>>>> Clang :: CodeGen/address-space-compound-literal.c
>>>>>> Clang :: CodeGen/address-space-field1.c
>>>>>> Clang :: CodeGen/address-space.c
>>>>>> Clang :: CodeGenCXX/mangle-address-space.cpp
>>>>>> Clang :: PCH/types.c
>>>>>> Clang :: Sema/address_spaces.c
>>>>>> Clang :: SemaCXX/address-space-conversion.cpp
>>>>>> Clang :: SemaCXX/address-space-newdelete.cpp
>>>>>> Clang :: SemaCXX/address-space-references.cpp
>>>>>> Clang :: SemaTemplate/address-spaces.cpp
>>>>>>
>>>>>> I will try to run each test separately and try to figure out why they
>>>>>> are failing. I have also attached the test output.
>>>>>>
>>>>>> I'm also committing tests for and, or and xor in a minute. They are
>>>>>> really simple and similar to the add and sub tests. Please review these :)
>>>>>>
>>>>>>
>>>>>> On Mon, May 14, 2012 at 11:32 PM, Borja Ferrer <bor...@gm...
>>>>>> > wrote:
>>>>>>
>>>>>>> Did you try adding the x86 and x64 targets with the avr one? It's
>>>>>>> something related with an unsopported target.
>>>>>>>
>>>>>>> Good question, I think there's no need to do reg+imm for xor.
>>>>>>>
>>>>>>> Btw remember to add the SF mailing list so we can have a record ;)
>>>>>>>
>>>>>>>
>>>>>>> 2012/5/14 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>
>>>>>>>> Sorry, that is the llvm+clang trunk gives me 13 unsupported tests,
>>>>>>>> i.e. no failures versus the avr-llvm giving me 280 unexpected failures.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, May 14, 2012 at 9:08 PM, Nicklas Bo Jensen <
>>>>>>>> nbj...@gm...> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> BTW, the newest llvm and clang trunk only gives me 13 unexpected
>>>>>>>>> failures compared to the the newest trunk with avr-llvm where i get 280
>>>>>>>>> unexpected failures.
>>>>>>>>>
>>>>>>>>> Considering the regression tests for xor, does it make sense to
>>>>>>>>> test reg+imm, as the avr assembler does not have xor for immediate?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, May 10, 2012 at 9:12 PM, Borja Ferrer <
>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>
>>>>>>>>>> I don't think so, but I configured llvm to support both x86 and
>>>>>>>>>> x64, so maybe that could help, in fact I can't build clang if I don't add
>>>>>>>>>> support for x86.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2012/5/10 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>
>>>>>>>>>>> Target: x86_64-unknown-linux-gnu
>>>>>>>>>>>
>>>>>>>>>>> But I only configured for avr... Did I do something wrong?
>>>>>>>>>>>
>>>>>>>>>>> On Thu, May 10, 2012 at 5:32 PM, Borja Ferrer <
>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> This is what I'm getting:
>>>>>>>>>>>>
>>>>>>>>>>>> Expected Passes : 9914
>>>>>>>>>>>> Expected Failures : 66
>>>>>>>>>>>> Unsupported Tests : 569
>>>>>>>>>>>> Unexpected Failures: 11
>>>>>>>>>>>>
>>>>>>>>>>>> I've seen in that file you attached that you're getting errors
>>>>>>>>>>>> because of the target triple, errors like:
>>>>>>>>>>>>
>>>>>>>>>>>> error: unable to create target: 'No available targets are compatible with this triple, see -version for the available targets.'
>>>>>>>>>>>>
>>>>>>>>>>>> or
>>>>>>>>>>>>
>>>>>>>>>>>> error auto-selecting target for module 'No available targets are compatible with this triple, see -version for the available targets
>>>>>>>>>>>>
>>>>>>>>>>>> so I guess that's the reason, so what is your target triple? do
>>>>>>>>>>>> clang -v to get it, mine is i386-pc-linux-gnu
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> 2012/5/10 Borja Ferrer <bor...@gm...>
>>>>>>>>>>>>
>>>>>>>>>>>>> Interesting, I'll check it out tomorrow to see if I can find
>>>>>>>>>>>>> some reason behind this, because we're getting very different results here.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2012/5/9 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Sorry for my slow response.Got i working again now, thanks.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Building with optimization disabled and assertions turned on
>>>>>>>>>>>>>> i get:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Avr llvm+clang:
>>>>>>>>>>>>>> Expected Passes : 6978
>>>>>>>>>>>>>> Expected Failures : 39
>>>>>>>>>>>>>> Unsupported Tests : 3281
>>>>>>>>>>>>>> Unexpected Failures: 279
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In the 279 unexpected failures for example 143 of them are
>>>>>>>>>>>>>> test/CodeGen/Generic. I'm not really sure how these tests are supposed to
>>>>>>>>>>>>>> work? None of them seems to be using FileCheck.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> However building for msp430 seems to be giving me similar
>>>>>>>>>>>>>> results, indicating that it is not a avr-llvm specific problem. Please see
>>>>>>>>>>>>>> the attached output "make check-all" from avr-llvm.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, May 4, 2012 at 11:30 PM, Borja Ferrer <
>>>>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'm asking because last week you said that you were getting
>>>>>>>>>>>>>>> +200 fails, and since I'm getting 11 I wanted to know what's going on.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> faluco is me btw, I updated a patch today because I got a
>>>>>>>>>>>>>>> conflict when updating my clang repo. These variables are defined in
>>>>>>>>>>>>>>> DiagnosticSemaKinds.td so check that you have them, they come from the
>>>>>>>>>>>>>>> flash.diff patch.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2012/5/4 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The new tests should pass. I cannot check other tests now,
>>>>>>>>>>>>>>>> I'm having some issues after applying the newest patches that came in today
>>>>>>>>>>>>>>>> by faluco:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> /home/nicklas/install/avr-llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:4374:38:
>>>>>>>>>>>>>>>> error:
>>>>>>>>>>>>>>>> no member named 'err_flash_variable_requires_const'
>>>>>>>>>>>>>>>> in namespace
>>>>>>>>>>>>>>>> 'clang::diag'
>>>>>>>>>>>>>>>> Diag(NewVD->getLocation(),
>>>>>>>>>>>>>>>> diag::err_flash_variable_requires_const);
>>>>>>>>>>>>>>>> ~~~~~~^
>>>>>>>>>>>>>>>> /home/nicklas/install/avr-llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:4383:38:
>>>>>>>>>>>>>>>> error:
>>>>>>>>>>>>>>>> no member named 'err_flash_pointer_requires_const' in
>>>>>>>>>>>>>>>> namespace
>>>>>>>>>>>>>>>> 'clang::diag'
>>>>>>>>>>>>>>>> Diag(NewVD->getLocation(),
>>>>>>>>>>>>>>>> diag::err_flash_pointer_requires_const);
>>>>>>>>>>>>>>>> ~~~~~~^
>>>>>>>>>>>>>>>> /home/nicklas/install/avr-llvm/llvm/tools/clang/lib/Sema/SemaDecl.cpp:7208:25:
>>>>>>>>>>>>>>>> error:
>>>>>>>>>>>>>>>> no member named 'err_flash_pointer_requires_const' in
>>>>>>>>>>>>>>>> namespace
>>>>>>>>>>>>>>>> 'clang::diag'
>>>>>>>>>>>>>>>> Diag(NameLoc, diag::err_flash_pointer_requires_const);
>>>>>>>>>>>>>>>> ~~~~~~^
>>>>>>>>>>>>>>>> Have i done something wrong?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> Nicklas
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Fri, May 4, 2012 at 8:50 PM, Borja Ferrer <
>>>>>>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> How many tests failures are you getting now?
>>>>>>>>>>>>>>>>> I'm getting 11, 10 from clang due to address space stuff
>>>>>>>>>>>>>>>>> (you'll need to patch clang to get those) and 1 from llvm.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2012/5/4 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Ah, perfect.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I would actually guess that you need to run "make
>>>>>>>>>>>>>>>>>> check-all" before being able to test new tests individually. Sorry :)
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Fri, May 4, 2012 at 8:17 PM, Borja Ferrer <
>>>>>>>>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Nevermind, got it.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 2012/5/4 Borja Ferrer <bor...@gm...>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> One thing, i dont have llvm-lit in that dir, am I
>>>>>>>>>>>>>>>>>>>> supposed to build llvm with an addtional param or something in order to get
>>>>>>>>>>>>>>>>>>>> it?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> 2012/5/4 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Ok, I've committed now. To only run the AVR specific
>>>>>>>>>>>>>>>>>>>>> tests run something like:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> ./build/Debug+Asserts/bin/llvm-lit
>>>>>>>>>>>>>>>>>>>>> llvm/test/CodeGen/AVR/
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Fri, May 4, 2012 at 1:47 PM, Borja Ferrer <
>>>>>>>>>>>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Oh a small one I've just noticed, leave only 1
>>>>>>>>>>>>>>>>>>>>>> newline between tests not 2.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 2012/5/4 Borja Ferrer <bor...@gm...>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Ok they look great now, I don't have any other
>>>>>>>>>>>>>>>>>>>>>>> objections. Please commit this test to SVN, post your SF username here so
>>>>>>>>>>>>>>>>>>>>>>> that Eric or John can give you commit permissions. Once it gets commited
>>>>>>>>>>>>>>>>>>>>>>> I'll check if I need to add any pattern specific tests to it, these tests
>>>>>>>>>>>>>>>>>>>>>>> are corner cases of some instructions.
>>>>>>>>>>>>>>>>>>>>>>> Before commiting it, remove the testcases dir with
>>>>>>>>>>>>>>>>>>>>>>> all the files there, and create a new one called test/CodeGen/AVR, and
>>>>>>>>>>>>>>>>>>>>>>> place your file there, just to keep the same structure like in llvm's repo.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> About the rest of tests to do, from that list remove
>>>>>>>>>>>>>>>>>>>>>>> mul and division for now, mul isn't yet implemented and division can come
>>>>>>>>>>>>>>>>>>>>>>> later. Sub tests should be very similar to add, then add binary ops (or,
>>>>>>>>>>>>>>>>>>>>>>> and, xor). Add calling convention tests (argument passing through regs and
>>>>>>>>>>>>>>>>>>>>>>> stack, return values for each value type, calls). Memory operations, etc...
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> There are quite a few tests to add, but for now do
>>>>>>>>>>>>>>>>>>>>>>> the sub and binary op tests and we'll discuss the others by then.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> 2012/5/4 Nicklas Bo Jensen <nbj...@gm...>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> 1) Sure
>>>>>>>>>>>>>>>>>>>>>>>> 2) Yes, I've followed the msp430 backend that does
>>>>>>>>>>>>>>>>>>>>>>>> include it. I've removed it now.
>>>>>>>>>>>>>>>>>>>>>>>> 3) Again, I've moved the CHECK lines, but it
>>>>>>>>>>>>>>>>>>>>>>>> differs from backend to backend.
>>>>>>>>>>>>>>>>>>>>>>>> 4) Done
>>>>>>>>>>>>>>>>>>>>>>>> 5) Done
>>>>>>>>>>>>>>>>>>>>>>>> 6) Done
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> I will continue working other tests, which do we
>>>>>>>>>>>>>>>>>>>>>>>> need? Something like(and please add/comment):
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> -Sub
>>>>>>>>>>>>>>>>>>>>>>>> -division(Only working for multiples of 2?)
>>>>>>>>>>>>>>>>>>>>>>>> -mult
>>>>>>>>>>>>>>>>>>>>>>>> -Return argument(In a few variants)
>>>>>>>>>>>>>>>>>>>>>>>> -and
>>>>>>>>>>>>>>>>>>>>>>>> -or
>>>>>>>>>>>>>>>>>>>>>>>> -xor
>>>>>>>>>>>>>>>>>>>>>>>> -increment
>>>>>>>>>>>>>>>>>>>>>>>> -branching?
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Any ideas?
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>>>>>>> Nicklas
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> On Wed, May 2, 2012 at 12:29 AM, Borja Ferrer <
>>>>>>>>>>>>>>>>>>>>>>>> bor...@gm...> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> Obviously in the last line I meant adiw or
>>>>>>>>>>>>>>>>>>>>>>>>> subi/sbci pair, add for immediates doesn't exist for imms greater than 63
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> 2012/5/2 Borja Ferrer <bor...@gm...>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> They look good, very nice :)
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> Some small details and nitpicks:
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> 1) I think it's not necessary to add the
>>>>>>>>>>>>>>>>>>>>>>>>>> reg_reg_imm variant because you covered it with the other two tests.
>>>>>>>>>>>>>>>>>>>>>>>>>> 2) Do the tests work if you remove the target
>>>>>>>>>>>>>>>>>>>>>>>>>> triple line? I've seen other backends don't include it.
>>>>>>>>>>>>>>>>>>>>>>>>>> 3) Move the CHECK lines after the function
>>>>>>>>>>>>>>>>>>>>>>>>>> prototype like other backends do.
>>>>>>>>>>>>>>>>>>>>>>>>>> 4) In every CHECK line, can you remove the tabs
>>>>>>>>>>>>>>>>>>>>>>>>>> between the instr mnemonic and the first operand and add a single space?
>>>>>>>>>>>>>>>>>>>>>>>>>> (I'm unsure about this because i dont know if CHECK eats spaces). Also for
>>>>>>>>>>>>>>>>>>>>>>>>>> the future, the llvm coding standards says to config your editor to replace
>>>>>>>>>>>>>>>>>>>>>>>>>> tabs with spaces, so it's a good moment time to do it.
>>>>>>>>>>>>>>>>>>>>>>>>>> 5) Oh and the most important one, please add this
>>>>>>>>>>>>>>>>>>>>>>>>>> in only one file, add.ll or something like that, so we can keep this
>>>>>>>>>>>>>>>>>>>>>>>>>> convention in the future, otherwise we'll end having too many test files.
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> Something that should be covered is, when doing
>>>>>>>>>>>>>>>>>>>>>>>>>> 16 bit additions we can use adiw or add depending on the imm value, can you
>>>>>>>>>>>>>>>>>>>>>>>>>> cover this aswell?
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>> 2012/5/1 John Myers <ato...@gm...>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>> On Sun, Apr 29, 2012 at 10:46 AM, Nicklas Bo
>>>>>>>>>>>>>>>>>>>>>>>>>>> Jensen <nbj...@gm...> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>> I have successfully been able to compile your
>>>>>>>>>>>>>>>>>>>>>>>>>>>> testcases (/avr-llvm/testcases/*.ll) to something looking like valid avr
>>>>>>>>>>>>>>>>>>>>>>>>>>>> assembler.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>> How should I test/simulate the assembler? I get
>>>>>>>>>>>>>>>>>>>>>>>>>>>> errors when trying to simulate the generated assembler in AVRStudio.
>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perhaps they use a different assembler?
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>> avr-llvm produces GNU assembler syntax, which
>>>>>>>>>>>>>>>>>>>>>>>>>>> is different then the Atmel assembler syntax.
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>> Eventually we could support multiple asm
>>>>>>>>>>>>>>>>>>>>>>>>>>> syntax's like the X86 target does.
>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
|