mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-19 17:33:29 +00:00
aa5b9c0f6f
be deleted. This will be reapplied as soon as possible and before the 3.6 branch date at any rate. Approved by Jim Grosbach, Lang Hames, Rafael Espindola. This reverts commits r215111, 215115, 215116, 215117, 215136. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215154 91177308-0d34-0410-b5e6-96231b3b80d8
61 lines
2.0 KiB
LLVM
61 lines
2.0 KiB
LLVM
; RUN: %lli_mcjit -force-interpreter=true %s | FileCheck %s
|
|
; CHECK: 1
|
|
|
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
|
|
target triple = "i686-pc-linux-gnu"
|
|
@.str = internal constant [10 x i8] c"MSB = %d\0A\00" ; <[10 x i8]*> [#uses=1]
|
|
|
|
define i65 @foo(i65 %x) {
|
|
entry:
|
|
%x_addr = alloca i65 ; <i65*> [#uses=2]
|
|
%retval = alloca i65 ; <i65*> [#uses=2]
|
|
%tmp = alloca i65 ; <i65*> [#uses=2]
|
|
%"alloca point" = bitcast i65 0 to i65 ; <i65> [#uses=0]
|
|
store i65 %x, i65* %x_addr
|
|
%tmp1 = load i65* %x_addr, align 4 ; <i65> [#uses=1]
|
|
%tmp2 = ashr i65 %tmp1, 65 ; <i65> [#uses=1]
|
|
store i65 %tmp2, i65* %tmp, align 4
|
|
%tmp3 = load i65* %tmp, align 4 ; <i65> [#uses=1]
|
|
store i65 %tmp3, i65* %retval, align 4
|
|
br label %return
|
|
|
|
return: ; preds = %entry
|
|
%retval4 = load i65* %retval ; <i65> [#uses=1]
|
|
ret i65 %retval4
|
|
}
|
|
|
|
define i32 @main() {
|
|
entry:
|
|
%retval = alloca i32 ; <i32*> [#uses=1]
|
|
%iftmp.0 = alloca i32 ; <i32*> [#uses=3]
|
|
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
|
|
%tmp = call i65 @foo( i65 -9 ) ; <i65> [#uses=1]
|
|
%tmp1 = lshr i65 %tmp, 64 ; <i65> [#uses=1]
|
|
%tmp2 = xor i65 %tmp1, 1 ; <i65> [#uses=1]
|
|
%tmp3 = and i65 %tmp2, 1 ; <i65> [#uses=1]
|
|
%tmp34 = trunc i65 %tmp3 to i8 ; <i8> [#uses=1]
|
|
%toBool = icmp ne i8 %tmp34, 0 ; <i1> [#uses=1]
|
|
br i1 %toBool, label %cond_true, label %cond_false
|
|
|
|
cond_true: ; preds = %entry
|
|
store i32 0, i32* %iftmp.0, align 4
|
|
br label %cond_next
|
|
|
|
cond_false: ; preds = %entry
|
|
store i32 1, i32* %iftmp.0, align 4
|
|
br label %cond_next
|
|
|
|
cond_next: ; preds = %cond_false, %cond_true
|
|
%tmp5 = getelementptr [10 x i8]* @.str, i32 0, i32 0 ; <i8*> [#uses=1]
|
|
%tmp6 = load i32* %iftmp.0, align 4 ; <i32> [#uses=1]
|
|
%tmp7 = call i32 (i8*, ...)* @printf( i8* noalias %tmp5, i32 %tmp6 ) nounwind ; <i32> [#uses=0]
|
|
br label %return
|
|
|
|
return: ; preds = %cond_next
|
|
store i32 0, i32* %retval, align 4
|
|
%retval8 = load i32* %retval ; <i32> [#uses=1]
|
|
ret i32 %retval8
|
|
}
|
|
|
|
declare i32 @printf(i8* noalias , ...) nounwind
|