1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 06:22:51 +01:00
llvm-mirror/test/CodeGen/X86/fast-isel.ll
Dan Gohman a398d11527 Factor out the predicate check code from DAGISelEmitter.cpp
and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.

llvm-svn: 55156
2008-08-22 00:20:26 +00:00

44 lines
770 B
LLVM

; RUN: llvm-as < %s | llc -fast-isel -march=x86
; This tests very minimal fast-isel functionality.
define i32* @foo(i32* %p, i32* %q, i32** %z) {
entry:
%r = load i32* %p
%s = load i32* %q
%y = load i32** %z
br label %fast
fast:
%t0 = add i32 %r, %s
%t1 = mul i32 %t0, %s
%t2 = sub i32 %t1, %s
%t3 = and i32 %t2, %s
%t4 = or i32 %t3, %s
%t5 = xor i32 %t4, %s
%t6 = add i32 %t5, 2
%t7 = getelementptr i32* %y, i32 1
%t8 = getelementptr i32* %t7, i32 %t6
br label %exit
exit:
ret i32* %t8
}
define double @bar(double* %p, double* %q) {
entry:
%r = load double* %p
%s = load double* %q
br label %fast
fast:
%t0 = add double %r, %s
%t1 = mul double %t0, %s
%t2 = sub double %t1, %s
br label %exit
exit:
ret double %t2
}