[LLVMdev] [MIPS] How can I add a constraint to LLVM/Clang for MIPS BE?

Jia Liu proljc at gmail.com
Sun Mar 3 18:02:09 PST 2013


Hi Jack,

On Sat, Mar 2, 2013 at 8:15 AM, Jack Carter <Jack.Carter at imgtec.com> wrote:
> Jia,
>
> I made what I believe to be the correct changes and rebuilt clang and llc. Are the results what you expected? I so I will prepare the patches for commitment.
>
> Jack
>
> clang ../mips_R_JiaLiu.c -o mips_R_JiaLiu.ll -emit-llvm -O3 -S -target mipsel-unknown-linux -std=gnu89
> llc mips_R_JiaLiu.ll -o mips_R_JiaLiu.o -mcpu=mips32r2 -march=mipsel -filetype=obj
> mips-linux-gnu-gcc -mips32r2 -O3 -EL -fPIC -o mips_R_JiaLiu.exe mips_R_JiaLiu.o
>

I use your way to compile test case:
llvm-install/bin/clang constraints.c -o constraints.ll -emit-llvm -O3
-S -target mipsel-unknown-linux -std=gnu89 --sysroot
/Users/jia/project/Cross-SDK/sdk/mipsel-gnu-rootfs
llvm-install/bin/llc constraints.ll -o constraints.llc.s
-mcpu=mips32r2 -march=mipsel -filetype=asm
llvm-install/bin/llc constraints.ll -o constraints.o -mcpu=mips32r2
-march=mipsel -filetype=obj
mipsel-unknown-linux-gnu-gcc -mips32r2 -O3 -EL -fPIC -static -o
constraints.exe constraints.o

the inline-asm is:
	#APP
	lw $5, 0($1)
	#NO_APP

	#APP
	lw $5, 0($1)
	#NO_APP

	#APP
	lwl $5, 1 + 0($1)
	lwr $5, 2 + 0($1)	
	#NO_APP

It use different registers, but $1, that is $AT, cann't be used, it is
reserved for $AS using.
any ideas?

> inline_asm: run *.exe
> out is 4
> out is 10
> out is ccddffbb
> inline_asm:
>

Regards,
Jia



More information about the llvm-dev mailing list