[LLVMdev] Using CallingConvLower in ARM target (ARM i64 lowering fixed by applying patch from pr 3898 )

Xerxes Rånby xerxes at zafena.se
Thu Apr 16 12:44:27 PDT 2009


Den 2009-04-16 13:37, Xerxes Rånby skrev:
> Some failing tests have now gotten better error reporting than before:
>
> $ llvm-as<  test/CodeGen/Generic/select-cc.ll | llc
> Formal argument #0 has unhandled type i64
> Stack dump:
> 0.    Program arguments: llc
> 1.    Running pass 'ARM Instruction Selection' on function '@vector_select'
> Aborted
>
> $ llvm-as<  test/CodeGen/X86/dagcombine-buildvector.ll | llc
> Formal argument #1 has unhandled type i64
> Stack dump:
> 0.    Program arguments: llc
> 1.    Running pass 'ARM Instruction Selection' on function '@test'
> Aborted
>    

These two test succeeds after applying the attached patch from pr 3898
http://llvm.org/bugs/show_bug.cgi?id=3898

[xranby at pusspuss llvm]$ llvm-as < test/CodeGen/Generic/select-cc.ll | 
llc -march=arm
     .file    "<stdin>"


     .text
     .globl    vector_select
     .align    2
vector_select:
     stmfd sp!, {r4, r5, r6, r7, lr}
     mov r4, r3
     mov r5, r2
     mov r6, r1
     mov r7, r0
     mov r2, #0
     mov r3, #0
     bl __gedf2
     ldr r2, [sp, #+32]
     cmp r0, #0
     mov r3, r4
     movge r3, r2
     ldr r1, [sp, #+28]
     cmp r0, #0
     mov r2, r5
     movge r2, r1
     ldr r12, [sp, #+24]
     cmp r0, #0
     mov r1, r6
     movge r1, r12
     ldr r12, [sp, #+20]
     cmp r0, #0
     mov r0, r7
     movge r0, r12
     ldmfd sp!, {r4, r5, r6, r7, pc}
     .size vector_select, .-vector_select

[xranby at pusspuss llvm]$ llvm-as < 
test/CodeGen/X86/dagcombine-buildvector.ll | llc -march=arm
     .file    "<stdin>"


     .text
     .globl    test
     .align    2
test:
     ldr r1, [sp, #+12]
     str r1, [r0, #+12]
     ldr r1, [sp, #+8]
     str r1, [r0, #+8]
     stmia r0, {r2, r3}
     bx lr
     .size test, .-test

[xranby at pusspuss llvm]$


Thanks Jakob!

Cheers, and have a great day!
Xerxes



More information about the llvm-dev mailing list