forked from NUDT-compiler/nudt-compiler-cpp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
6.1 KiB
100 lines
6.1 KiB
@__HELLO = global [100 x i32] [i32 87, i32 101, i32 108, i32 99, i32 111, i32 109, i32 101, i32 32, i32 116, i32 111, i32 32, i32 116, i32 104, i32 101, i32 32, i32 74, i32 97, i32 112, i32 97, i32 114, i32 105, i32 32, i32 80, i32 97, i32 114, i32 107, i32 33, i32 10, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0]
|
|
@N4__mE___ = global [300 x i32] [i32 83, i32 97, i32 97, i32 98, i32 97, i32 114, i32 117, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 75, i32 97, i32 98, i32 97, i32 110, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 72, i32 97, i32 115, i32 104, i32 105, i32 98, i32 105, i32 114, i32 111, i32 107, i32 111, i32 117, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 65, i32 114, i32 97, i32 105, i32 103, i32 117, i32 109, i32 97, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 72, i32 117, i32 110, i32 98, i32 111, i32 114, i32 117, i32 116, i32 111, i32 32, i32 80, i32 101, i32 110, i32 103, i32 105, i32 110, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 84, i32 97, i32 105, i32 114, i32 105, i32 107, i32 117, i32 32, i32 79, i32 111, i32 107, i32 97, i32 109, i32 105, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0]
|
|
@saY_HeI10_To = global [40 x i32] [i32 32, i32 115, i32 97, i32 121, i32 115, i32 32, i32 104, i32 101, i32 108, i32 108, i32 111, i32 32, i32 116, i32 111, i32 32, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0]
|
|
@RET = global [5 x i32] [i32 10, i32 0, i32 0, i32 0, i32 0]
|
|
|
|
declare i32 @getint()
|
|
declare float @getfloat()
|
|
declare i32 @getarray(i32* %arg.a)
|
|
declare i32 @getfarray(float* %arg.a)
|
|
declare i32 @getch()
|
|
declare void @putint(i32 %arg.x)
|
|
declare void @putfloat(float %arg.x)
|
|
declare void @putarray(i32 %arg.n, i32* %arg.a)
|
|
declare void @putfarray(i32 %arg.n, float* %arg.a)
|
|
declare void @putch(i32 %arg.x)
|
|
declare void @starttime()
|
|
declare void @stoptime()
|
|
define i32 @putstr(i32* %arg.str) {
|
|
entry:
|
|
%t0 = alloca i32
|
|
store i32 0, i32* %t0
|
|
store i32 0, i32* %t0
|
|
br label %while.cond.1
|
|
while.cond.1:
|
|
%t1 = load i32, i32* %t0
|
|
%t2 = getelementptr inbounds i32, i32* %arg.str, i32 %t1
|
|
%t3 = load i32, i32* %t2
|
|
%t4 = icmp ne i32 %t3, 0
|
|
br i1 %t4, label %while.body.2, label %while.end.3
|
|
while.body.2:
|
|
%t5 = load i32, i32* %t0
|
|
%t6 = getelementptr inbounds i32, i32* %arg.str, i32 %t5
|
|
%t7 = load i32, i32* %t6
|
|
call void @putch(i32 %t7)
|
|
%t9 = load i32, i32* %t0
|
|
%t10 = add i32 %t9, 1
|
|
store i32 %t10, i32* %t0
|
|
br label %while.cond.1
|
|
while.end.3:
|
|
%t11 = load i32, i32* %t0
|
|
ret i32 %t11
|
|
}
|
|
define i32 @main() {
|
|
entry:
|
|
%t14 = alloca i32
|
|
%t16 = alloca i32
|
|
%t19 = alloca i32
|
|
%t12 = getelementptr inbounds [100 x i32], [100 x i32]* @__HELLO, i32 0, i32 0
|
|
%t13 = call i32 @putstr(i32* %t12)
|
|
store i32 0, i32* %t14
|
|
br label %while.cond.4
|
|
while.cond.4:
|
|
%t15 = icmp ne i32 1, 0
|
|
br i1 %t15, label %while.body.5, label %while.end.6
|
|
while.body.5:
|
|
%t17 = load i32, i32* %t14
|
|
%t18 = sdiv i32 %t17, 6
|
|
store i32 %t18, i32* %t16
|
|
%t20 = load i32, i32* %t14
|
|
%t21 = srem i32 %t20, 6
|
|
store i32 %t21, i32* %t19
|
|
%t22 = load i32, i32* %t16
|
|
%t23 = load i32, i32* %t19
|
|
%t24 = icmp ne i32 %t22, %t23
|
|
%t25 = zext i1 %t24 to i32
|
|
%t26 = icmp ne i32 %t25, 0
|
|
br i1 %t26, label %if.then.7, label %if.end.8
|
|
while.end.6:
|
|
ret i32 0
|
|
if.then.7:
|
|
%t27 = load i32, i32* %t16
|
|
%t28 = mul i32 %t27, 50
|
|
%t29 = getelementptr inbounds [300 x i32], [300 x i32]* @N4__mE___, i32 0, i32 %t28
|
|
%t30 = call i32 @putstr(i32* %t29)
|
|
%t31 = getelementptr inbounds [40 x i32], [40 x i32]* @saY_HeI10_To, i32 0, i32 0
|
|
%t32 = call i32 @putstr(i32* %t31)
|
|
%t33 = load i32, i32* %t19
|
|
%t34 = mul i32 %t33, 50
|
|
%t35 = getelementptr inbounds [300 x i32], [300 x i32]* @N4__mE___, i32 0, i32 %t34
|
|
%t36 = call i32 @putstr(i32* %t35)
|
|
%t37 = getelementptr inbounds [5 x i32], [5 x i32]* @RET, i32 0, i32 0
|
|
%t38 = call i32 @putstr(i32* %t37)
|
|
br label %if.end.8
|
|
if.end.8:
|
|
%t39 = load i32, i32* %t14
|
|
%t40 = mul i32 %t39, 17
|
|
%t41 = add i32 %t40, 23
|
|
%t42 = srem i32 %t41, 32
|
|
store i32 %t42, i32* %t14
|
|
%t43 = load i32, i32* %t14
|
|
%t44 = icmp eq i32 %t43, 0
|
|
%t45 = zext i1 %t44 to i32
|
|
%t46 = icmp ne i32 %t45, 0
|
|
br i1 %t46, label %if.then.9, label %if.end.10
|
|
if.then.9:
|
|
br label %while.end.6
|
|
if.end.10:
|
|
br label %while.cond.4
|
|
}
|