删除了无用的输出文件

master
the-little-apprentice 2 weeks ago
parent ed15fa1c72
commit a89c5fb0e4

2
.gitignore vendored

@ -2,8 +2,10 @@
# Build / CMake
# =========================
build/
build_*/
cmake-build-*/
out/
output/
dist/
CMakeFiles/

Binary file not shown.

@ -1,25 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
store i32 1, ptr %a.addr.t0
store i32 2, ptr %b.addr.t1
%t2 = load i32, ptr %a.addr.t0
%t3 = load i32, ptr %b.addr.t1
%t4 = add i32 %t2, %t3
ret i32 %t4
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,650 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- constDecl
| |-- CONST: const
| |-- bType
| | `-- INT: int
| |-- constDef
| | |-- Ident: a
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- RBRACK: ]
| | |-- ASSIGN: =
| | `-- constInitVal
| | |-- LBRACE: {
| | |-- constInitVal
| | | |-- LBRACE: {
| | | |-- constInitVal
| | | | `-- constExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | |-- COMMA: ,
| | | |-- constInitVal
| | | | `-- constExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 2
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- constInitVal
| | | |-- LBRACE: {
| | | |-- constInitVal
| | | | `-- constExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 3
| | | |-- COMMA: ,
| | | |-- constInitVal
| | | | `-- constExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 4
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- constInitVal
| | | |-- LBRACE: {
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 7
| | `-- RBRACE: }
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- constDecl
| |-- CONST: const
| |-- bType
| | `-- INT: int
| |-- constDef
| | |-- Ident: N
| | |-- ASSIGN: =
| | `-- constInitVal
| | `-- constExp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 3
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: b
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- RBRACK: ]
| | |-- ASSIGN: =
| | `-- initVal
| | |-- LBRACE: {
| | `-- RBRACE: }
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: c
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- RBRACK: ]
| | |-- ASSIGN: =
| | `-- initVal
| | |-- LBRACE: {
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 3
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 5
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 6
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 7
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 8
| | `-- RBRACE: }
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: d
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: N
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- RBRACK: ]
| | |-- ASSIGN: =
| | `-- initVal
| | |-- LBRACE: {
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- COMMA: ,
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 3
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 5
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | |-- Ident: a
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 3
| | | |-- RBRACK: ]
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | `-- RBRACK: ]
| | |-- COMMA: ,
| | |-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 8
| | `-- RBRACE: }
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: e
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | |-- RBRACK: ]
| | |-- ASSIGN: =
| | `-- initVal
| | |-- LBRACE: {
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | |-- Ident: d
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 2
| | | | |-- RBRACK: ]
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- RBRACK: ]
| | | |-- COMMA: ,
| | | |-- initVal
| | | | |-- LBRACE: {
| | | | |-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: c
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | |-- RBRACK: ]
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- RBRACK: ]
| | | | `-- RBRACE: }
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 3
| | | |-- COMMA: ,
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 4
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 5
| | | |-- COMMA: ,
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 6
| | | `-- RBRACE: }
| | |-- COMMA: ,
| | |-- initVal
| | | |-- LBRACE: {
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 7
| | | |-- COMMA: ,
| | | |-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 8
| | | `-- RBRACE: }
| | `-- RBRACE: }
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | |-- addExp
| | | |-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: e
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 3
| | | | | |-- RBRACK: ]
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | |-- RBRACK: ]
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- RBRACK: ]
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | |-- Ident: e
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- RBRACK: ]
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- RBRACK: ]
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- RBRACK: ]
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | |-- Ident: e
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | |-- RBRACK: ]
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | |-- RBRACK: ]
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | `-- RBRACK: ]
| | |-- ADD: +
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | |-- Ident: d
| | |-- LBRACK: [
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 3
| | |-- RBRACK: ]
| | |-- LBRACK: [
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- RBRACK: ]
| `-- SEMI: ;
`-- RBRACE: }

@ -1,115 +0,0 @@
compUnit
|-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: a
| `-- SEMI: ;
|-- funcDef
| |-- funcType
| | `-- INT: int
| |-- Ident: func
| |-- LPAREN: (
| |-- funcFParams
| | `-- funcFParam
| | |-- bType
| | | `-- INT: int
| | `-- Ident: p
| |-- RPAREN: )
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: p
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: p
| | | |-- SUB: -
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- RETURN: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: p
| | `-- SEMI: ;
| `-- RBRACE: }
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: b
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: a
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 10
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: b
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: func
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: a
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: b
| `-- SEMI: ;
`-- RBRACE: }

@ -1,68 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: a
| |-- COMMA: ,
| |-- varDef
| | `-- Ident: b
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: a
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 10
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: b
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- unaryOp
| | | `-- SUB: -
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 1
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | |-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: a
| | |-- ADD: +
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: b
| `-- SEMI: ;
`-- RBRACE: }

@ -1,66 +0,0 @@
compUnit
|-- decl
| `-- constDecl
| |-- CONST: const
| |-- bType
| | `-- INT: int
| |-- constDef
| | |-- Ident: a
| | |-- ASSIGN: =
| | `-- constInitVal
| | `-- constExp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 10
| `-- SEMI: ;
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: b
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: b
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 2
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | |-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: b
| | |-- SUB: -
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: a
| `-- SEMI: ;
`-- RBRACE: }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,698 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: putch
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 97
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: putch
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 10
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: a
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 1
| |-- COMMA: ,
| |-- varDef
| | |-- Ident: putch
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: a
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: a
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | `-- SEMI: ;
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- INT: int
| | |-- varDef
| | | |-- Ident: b
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: a
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 3
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: b
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: b
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: putch
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: putch
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: a
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: b
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: b
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 5
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- decl
| | | `-- varDecl
| | | |-- bType
| | | | `-- INT: int
| | | |-- varDef
| | | | |-- Ident: main
| | | | |-- ASSIGN: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 6
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: a
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: a
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: main
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: putch
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | |-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: putch
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: a
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: main
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | `-- block
| | | |-- LBRACE: {
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: b
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: b
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: a
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- decl
| | | | `-- varDecl
| | | | |-- bType
| | | | | `-- INT: int
| | | | |-- varDef
| | | | | |-- Ident: a
| | | | | |-- ASSIGN: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: main
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 7
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: a
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: a
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 8
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: putch
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | |-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: putch
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: a
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: b
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: main
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | `-- block
| | | | |-- LBRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: b
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: b
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: a
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- decl
| | | | | `-- varDecl
| | | | | |-- bType
| | | | | | `-- INT: int
| | | | | |-- varDef
| | | | | | |-- Ident: b
| | | | | | |-- ASSIGN: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: main
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 9
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: a
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: a
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 10
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- decl
| | | | | `-- constDecl
| | | | | |-- CONST: const
| | | | | |-- bType
| | | | | | `-- INT: int
| | | | | |-- constDef
| | | | | | |-- Ident: a
| | | | | | |-- ASSIGN: =
| | | | | | `-- constInitVal
| | | | | | `-- constExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 11
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: b
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: b
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 12
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: putch
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | |-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: putch
| | | | | | | | |-- ADD: +
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: a
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: b
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: main
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- LBRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: main
| | | | | | |-- ASSIGN: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: main
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: b
| | | | | | `-- SEMI: ;
| | | | | |-- blockItem
| | | | | | `-- decl
| | | | | | `-- varDecl
| | | | | | |-- bType
| | | | | | | `-- INT: int
| | | | | | |-- varDef
| | | | | | | |-- Ident: main
| | | | | | | |-- ASSIGN: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: b
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 13
| | | | | | `-- SEMI: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: main
| | | | | | |-- ASSIGN: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: main
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: a
| | | | | | `-- SEMI: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: putch
| | | | | | |-- ASSIGN: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: putch
| | | | | | | | | |-- ADD: +
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: a
| | | | | | | | |-- ADD: +
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: b
| | | | | | | |-- ADD: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: main
| | | | | | `-- SEMI: ;
| | | | | `-- RBRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: putch
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: putch
| | | | | | |-- SUB: -
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: main
| | | | | `-- SEMI: ;
| | | | `-- RBRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: putch
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: putch
| | | | | |-- SUB: -
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | `-- SEMI: ;
| | | `-- RBRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: putch
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: putch
| | | | |-- SUB: -
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: a
| | | `-- SEMI: ;
| | `-- RBRACE: }
| `-- RBRACE: }
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | `-- mulExp
| | |-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: putch
| | |-- MOD: %
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 77
| `-- SEMI: ;
`-- RBRACE: }

@ -1,164 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: i
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: i
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: sum
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: sum
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- WHILE: while
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 100
| |-- RPAREN: )
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- IF: if
| | |-- LPAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | |-- eqExp
| | | | `-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- EQ: ==
| | | `-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 50
| | |-- RPAREN: )
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- BREAK: break
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: sum
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: sum
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: i
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: sum
| `-- SEMI: ;
`-- RBRACE: }

@ -1,124 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | `-- Ident: a
| |-- COMMA: ,
| |-- varDef
| | `-- Ident: b
| |-- COMMA: ,
| |-- varDef
| | `-- Ident: c
| |-- COMMA: ,
| |-- varDef
| | `-- Ident: d
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: a
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 10
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: b
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 4
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: c
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 2
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: d
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 2
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | `-- mulExp
| | |-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | |-- LPAREN: (
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: c
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: a
| | | `-- RPAREN: )
| | |-- MUL: *
| | `-- unaryExp
| | `-- primaryExp
| | |-- LPAREN: (
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: b
| | | |-- SUB: -
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: d
| | `-- RPAREN: )
| `-- SEMI: ;
`-- RBRACE: }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,778 +0,0 @@
compUnit
|-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: COUNT
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 500000
| `-- SEMI: ;
|-- funcDef
| |-- funcType
| | `-- FLOAT: float
| |-- Ident: loop
| |-- LPAREN: (
| |-- funcFParams
| | |-- funcFParam
| | | |-- bType
| | | | `-- FLOAT: float
| | | |-- Ident: x
| | | |-- LBRACK: [
| | | `-- RBRACK: ]
| | |-- COMMA: ,
| | |-- funcFParam
| | | |-- bType
| | | | `-- FLOAT: float
| | | |-- Ident: y
| | | |-- LBRACK: [
| | | `-- RBRACK: ]
| | |-- COMMA: ,
| | `-- funcFParam
| | |-- bType
| | | `-- INT: int
| | `-- Ident: length
| |-- RPAREN: )
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- INT: int
| | |-- varDef
| | | |-- Ident: i
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- SEMI: ;
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- FLOAT: float
| | |-- varDef
| | | |-- Ident: accumulator
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- FloatConst: 0.0
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- WHILE: while
| | |-- LPAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- LT: <
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: length
| | |-- RPAREN: )
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: accumulator
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: accumulator
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | |-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: x
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: i
| | | | | `-- RBRACK: ]
| | | | |-- MUL: *
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | |-- Ident: y
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: i
| | | | `-- RBRACK: ]
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: i
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: i
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- blockItem
| | `-- stmt
| | |-- RETURN: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: accumulator
| | `-- SEMI: ;
| `-- RBRACE: }
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: i
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| |-- COMMA: ,
| |-- varDef
| | |-- Ident: j
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: len
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: getint
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- FLOAT: float
| |-- varDef
| | |-- Ident: x
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4096
| | `-- RBRACK: ]
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- FLOAT: float
| |-- varDef
| | |-- Ident: y
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4096
| | `-- RBRACK: ]
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- FLOAT: float
| |-- varDef
| | |-- Ident: total
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- FloatConst: 0.0
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- FLOAT: float
| |-- varDef
| | |-- Ident: a
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- FloatConst: 0.0
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- FLOAT: float
| |-- varDef
| | |-- Ident: b
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- FloatConst: 1.0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: starttime
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- WHILE: while
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: COUNT
| |-- RPAREN: )
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- IF: if
| | |-- LPAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | |-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- MOD: %
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 10
| | |-- RPAREN: )
| | |-- stmt
| | | `-- block
| | | |-- LBRACE: {
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: a
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- FloatConst: 0.0
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: b
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- FloatConst: 1.0
| | | | `-- SEMI: ;
| | | `-- RBRACE: }
| | |-- ELSE: else
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: a
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: a
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- FloatConst: 0.1
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: b
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- FloatConst: 0.2
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- blockItem
| | `-- stmt
| | |-- WHILE: while
| | |-- LPAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: j
| | | |-- LT: <
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: len
| | |-- RPAREN: )
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | |-- Ident: x
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: j
| | | | `-- RBRACK: ]
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: a
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: j
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | |-- Ident: y
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: j
| | | | `-- RBRACK: ]
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: b
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: j
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: j
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: j
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: total
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: total
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: loop
| | | |-- LPAREN: (
| | | |-- funcRParams
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: x
| | | | |-- COMMA: ,
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: y
| | | | |-- COMMA: ,
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: len
| | | `-- RPAREN: )
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: i
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: stoptime
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- IF: if
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | |-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | |-- LPAREN: (
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: total
| | | | | |-- SUB: -
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- FloatConst: 11442437121638400.000000
| | | | `-- RPAREN: )
| | | |-- LE: <=
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- FloatConst: 0.000001
| | |-- OR: ||
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | |-- LPAREN: (
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: total
| | | | |-- SUB: -
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- FloatConst: 11442437121638400.000000
| | | `-- RPAREN: )
| | |-- GE: >=
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- unaryOp
| | | `-- SUB: -
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- FloatConst: 0.000001
| |-- RPAREN: )
| |-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | |-- Ident: putint
| | | | |-- LPAREN: (
| | | | |-- funcRParams
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- RPAREN: )
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- RETURN: return
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- ELSE: else
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: putint
| | | |-- LPAREN: (
| | | |-- funcRParams
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- RPAREN: )
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- RETURN: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
`-- RBRACE: }

@ -1,62 +0,0 @@
compUnit
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: a
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 1
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: b
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 2
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | |-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: a
| | |-- ADD: +
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: b
| `-- SEMI: ;
`-- RBRACE: }

@ -1,889 +0,0 @@
compUnit
|-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: matrix
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 20000000
| | `-- RBRACK: ]
| `-- SEMI: ;
|-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: a
| | |-- LBRACK: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 100000
| | `-- RBRACK: ]
| `-- SEMI: ;
|-- funcDef
| |-- funcType
| | `-- INT: int
| |-- Ident: transpose
| |-- LPAREN: (
| |-- funcFParams
| | |-- funcFParam
| | | |-- bType
| | | | `-- INT: int
| | | `-- Ident: n
| | |-- COMMA: ,
| | |-- funcFParam
| | | |-- bType
| | | | `-- INT: int
| | | |-- Ident: matrix
| | | |-- LBRACK: [
| | | `-- RBRACK: ]
| | |-- COMMA: ,
| | `-- funcFParam
| | |-- bType
| | | `-- INT: int
| | `-- Ident: rowsize
| |-- RPAREN: )
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- INT: int
| | |-- varDef
| | | |-- Ident: colsize
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | |-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: n
| | | |-- DIV: /
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: rowsize
| | `-- SEMI: ;
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- INT: int
| | |-- varDef
| | | |-- Ident: i
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- SEMI: ;
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- INT: int
| | |-- varDef
| | | |-- Ident: j
| | | |-- ASSIGN: =
| | | `-- initVal
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- WHILE: while
| | |-- LPAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- LT: <
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: colsize
| | |-- RPAREN: )
| | `-- stmt
| | `-- block
| | |-- LBRACE: {
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: j
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | `-- SEMI: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- WHILE: while
| | | |-- LPAREN: (
| | | |-- cond
| | | | `-- lOrExp
| | | | `-- lAndExp
| | | | `-- eqExp
| | | | `-- relExp
| | | | |-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: j
| | | | |-- LT: <
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: rowsize
| | | |-- RPAREN: )
| | | `-- stmt
| | | `-- block
| | | |-- LBRACE: {
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- IF: if
| | | | |-- LPAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: i
| | | | | |-- LT: <
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: j
| | | | |-- RPAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- LBRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: j
| | | | | |-- ASSIGN: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: j
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- SEMI: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- CONTINUE: continue
| | | | | `-- SEMI: ;
| | | | `-- RBRACE: }
| | | |-- blockItem
| | | | `-- decl
| | | | `-- varDecl
| | | | |-- bType
| | | | | `-- INT: int
| | | | |-- varDef
| | | | | |-- Ident: curr
| | | | | |-- ASSIGN: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: matrix
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- MUL: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: rowsize
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: j
| | | | | `-- RBRACK: ]
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | |-- Ident: matrix
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: j
| | | | | | | |-- MUL: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: colsize
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: i
| | | | | `-- RBRACK: ]
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: matrix
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- MUL: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: rowsize
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: j
| | | | | `-- RBRACK: ]
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | |-- Ident: matrix
| | | | | |-- LBRACK: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- MUL: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: rowsize
| | | | | | |-- ADD: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: j
| | | | | `-- RBRACK: ]
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: curr
| | | | `-- SEMI: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: j
| | | | |-- ASSIGN: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | |-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: j
| | | | | |-- ADD: +
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- SEMI: ;
| | | `-- RBRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: i
| | | |-- ASSIGN: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: i
| | | | |-- ADD: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- SEMI: ;
| | `-- RBRACE: }
| |-- blockItem
| | `-- stmt
| | |-- RETURN: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- unaryOp
| | | | `-- SUB: -
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
`-- funcDef
|-- funcType
| `-- INT: int
|-- Ident: main
|-- LPAREN: (
|-- RPAREN: )
`-- block
|-- LBRACE: {
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: n
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: getint
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: len
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: getarray
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: a
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: starttime
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: i
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- WHILE: while
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: n
| |-- RPAREN: )
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | |-- Ident: matrix
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | `-- RBRACK: ]
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: i
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: i
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- WHILE: while
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: len
| |-- RPAREN: )
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: transpose
| | | |-- LPAREN: (
| | | |-- funcRParams
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: n
| | | | |-- COMMA: ,
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: matrix
| | | | |-- COMMA: ,
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | |-- Ident: a
| | | | |-- LBRACK: [
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: i
| | | | `-- RBRACK: ]
| | | `-- RPAREN: )
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: i
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
|-- blockItem
| `-- decl
| `-- varDecl
| |-- bType
| | `-- INT: int
| |-- varDef
| | |-- Ident: ans
| | |-- ASSIGN: =
| | `-- initVal
| | `-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- lVal
| | `-- Ident: i
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- WHILE: while
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: i
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: len
| |-- RPAREN: )
| `-- stmt
| `-- block
| |-- LBRACE: {
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: ans
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: ans
| | | |-- ADD: +
| | | `-- mulExp
| | | |-- mulExp
| | | | |-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: i
| | | | |-- MUL: *
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- MUL: *
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | |-- Ident: matrix
| | | |-- LBRACK: [
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | `-- RBRACK: ]
| | `-- SEMI: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: i
| | |-- ASSIGN: =
| | |-- exp
| | | `-- addExp
| | | |-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: i
| | | |-- ADD: +
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | `-- SEMI: ;
| `-- RBRACE: }
|-- blockItem
| `-- stmt
| |-- IF: if
| |-- LPAREN: (
| |-- cond
| | `-- lOrExp
| | `-- lAndExp
| | `-- eqExp
| | `-- relExp
| | |-- relExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: ans
| | |-- LT: <
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| |-- RPAREN: )
| `-- stmt
| |-- lVal
| | `-- Ident: ans
| |-- ASSIGN: =
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- unaryOp
| | | `-- SUB: -
| | `-- unaryExp
| | `-- primaryExp
| | `-- lVal
| | `-- Ident: ans
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: stoptime
| | |-- LPAREN: (
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: putint
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- lVal
| | | `-- Ident: ans
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | |-- Ident: putch
| | |-- LPAREN: (
| | |-- funcRParams
| | | `-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 10
| | `-- RPAREN: )
| `-- SEMI: ;
|-- blockItem
| `-- stmt
| |-- RETURN: return
| |-- exp
| | `-- addExp
| | `-- mulExp
| | `-- unaryExp
| | `-- primaryExp
| | `-- number
| | `-- IntConst: 0
| `-- SEMI: ;
`-- RBRACE: }

File diff suppressed because it is too large Load Diff

@ -1,103 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca [4 x [2 x i32]]
%N.addr.t6 = alloca i32
%b.addr.t7 = alloca [4 x [2 x i32]]
%c.addr.t8 = alloca [4 x [2 x i32]]
%d.addr.t17 = alloca [4 x [2 x i32]]
%e.addr.t26 = alloca [4 x [2 x [1 x i32]]]
call void @llvm.memset.p0.i32(ptr %a.addr.t0, i8 0, i32 32, i1 0)
%t1 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 0, i32 0
store i32 1, ptr %t1
%t2 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 0, i32 1
store i32 2, ptr %t2
%t3 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 1, i32 0
store i32 3, ptr %t3
%t4 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 1, i32 1
store i32 4, ptr %t4
%t5 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 3, i32 0
store i32 7, ptr %t5
store i32 3, ptr %N.addr.t6
call void @llvm.memset.p0.i32(ptr %b.addr.t7, i8 0, i32 32, i1 0)
call void @llvm.memset.p0.i32(ptr %c.addr.t8, i8 0, i32 32, i1 0)
%t9 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 0, i32 0
store i32 1, ptr %t9
%t10 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 0, i32 1
store i32 2, ptr %t10
%t11 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 1, i32 0
store i32 3, ptr %t11
%t12 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 1, i32 1
store i32 4, ptr %t12
%t13 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 0
store i32 5, ptr %t13
%t14 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 1
store i32 6, ptr %t14
%t15 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 3, i32 0
store i32 7, ptr %t15
%t16 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 3, i32 1
store i32 8, ptr %t16
call void @llvm.memset.p0.i32(ptr %d.addr.t17, i8 0, i32 32, i1 0)
%t18 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 0, i32 0
store i32 1, ptr %t18
%t19 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 0, i32 1
store i32 2, ptr %t19
%t20 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 1, i32 0
store i32 3, ptr %t20
%t21 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 2, i32 0
store i32 5, ptr %t21
%t22 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 0
%t23 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 3, i32 0
%t24 = load i32, ptr %t23
store i32 %t24, ptr %t22
%t25 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 1
store i32 8, ptr %t25
call void @llvm.memset.p0.i32(ptr %e.addr.t26, i8 0, i32 32, i1 0)
%t27 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 0, i32 0
%t28 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 2, i32 1
%t29 = load i32, ptr %t28
store i32 %t29, ptr %t27
%t30 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 1, i32 0
%t31 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 1
%t32 = load i32, ptr %t31
store i32 %t32, ptr %t30
%t33 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 1, i32 0, i32 0
store i32 3, ptr %t33
%t34 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 1, i32 1, i32 0
store i32 4, ptr %t34
%t35 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 2, i32 0, i32 0
store i32 5, ptr %t35
%t36 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 2, i32 1, i32 0
store i32 6, ptr %t36
%t37 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 0, i32 0
store i32 7, ptr %t37
%t38 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 1, i32 0
store i32 8, ptr %t38
%t39 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 1, i32 0
%t40 = load i32, ptr %t39
%t41 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 0, i32 0
%t42 = load i32, ptr %t41
%t43 = add i32 %t40, %t42
%t44 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 1, i32 0
%t45 = load i32, ptr %t44
%t46 = add i32 %t43, %t45
%t47 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 0
%t48 = load i32, ptr %t47
%t49 = add i32 %t46, %t48
ret i32 %t49
}

@ -1,103 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca [4 x [2 x i32]]
%N.addr.t6 = alloca i32
%b.addr.t7 = alloca [4 x [2 x i32]]
%c.addr.t8 = alloca [4 x [2 x i32]]
%d.addr.t17 = alloca [4 x [2 x i32]]
%e.addr.t26 = alloca [4 x [2 x [1 x i32]]]
call void @llvm.memset.p0.i32(ptr %a.addr.t0, i8 0, i32 32, i1 0)
%t1 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 0, i32 0
store i32 1, ptr %t1
%t2 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 0, i32 1
store i32 2, ptr %t2
%t3 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 1, i32 0
store i32 3, ptr %t3
%t4 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 1, i32 1
store i32 4, ptr %t4
%t5 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 3, i32 0
store i32 7, ptr %t5
store i32 3, ptr %N.addr.t6
call void @llvm.memset.p0.i32(ptr %b.addr.t7, i8 0, i32 32, i1 0)
call void @llvm.memset.p0.i32(ptr %c.addr.t8, i8 0, i32 32, i1 0)
%t9 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 0, i32 0
store i32 1, ptr %t9
%t10 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 0, i32 1
store i32 2, ptr %t10
%t11 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 1, i32 0
store i32 3, ptr %t11
%t12 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 1, i32 1
store i32 4, ptr %t12
%t13 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 0
store i32 5, ptr %t13
%t14 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 1
store i32 6, ptr %t14
%t15 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 3, i32 0
store i32 7, ptr %t15
%t16 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 3, i32 1
store i32 8, ptr %t16
call void @llvm.memset.p0.i32(ptr %d.addr.t17, i8 0, i32 32, i1 0)
%t18 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 0, i32 0
store i32 1, ptr %t18
%t19 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 0, i32 1
store i32 2, ptr %t19
%t20 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 1, i32 0
store i32 3, ptr %t20
%t21 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 2, i32 0
store i32 5, ptr %t21
%t22 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 0
%t23 = getelementptr [4 x [2 x i32]], ptr %a.addr.t0, i32 0, i32 3, i32 0
%t24 = load i32, ptr %t23
store i32 %t24, ptr %t22
%t25 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 1
store i32 8, ptr %t25
call void @llvm.memset.p0.i32(ptr %e.addr.t26, i8 0, i32 32, i1 0)
%t27 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 0, i32 0
%t28 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 2, i32 1
%t29 = load i32, ptr %t28
store i32 %t29, ptr %t27
%t30 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 1, i32 0
%t31 = getelementptr [4 x [2 x i32]], ptr %c.addr.t8, i32 0, i32 2, i32 1
%t32 = load i32, ptr %t31
store i32 %t32, ptr %t30
%t33 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 1, i32 0, i32 0
store i32 3, ptr %t33
%t34 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 1, i32 1, i32 0
store i32 4, ptr %t34
%t35 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 2, i32 0, i32 0
store i32 5, ptr %t35
%t36 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 2, i32 1, i32 0
store i32 6, ptr %t36
%t37 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 0, i32 0
store i32 7, ptr %t37
%t38 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 1, i32 0
store i32 8, ptr %t38
%t39 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 3, i32 1, i32 0
%t40 = load i32, ptr %t39
%t41 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 0, i32 0
%t42 = load i32, ptr %t41
%t43 = add i32 %t40, %t42
%t44 = getelementptr [4 x [2 x [1 x i32]]], ptr %e.addr.t26, i32 0, i32 0, i32 1, i32 0
%t45 = load i32, ptr %t44
%t46 = add i32 %t43, %t45
%t47 = getelementptr [4 x [2 x i32]], ptr %d.addr.t17, i32 0, i32 3, i32 0
%t48 = load i32, ptr %t47
%t49 = add i32 %t46, %t48
ret i32 %t49
}

@ -1,38 +0,0 @@
@a = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @func(i32 %p) {
entry:
%p.addr = alloca i32
store i32 %p, ptr %p.addr
%t0 = load i32, ptr %p.addr
%t1 = sub i32 %t0, 1
store i32 %t1, ptr %p.addr
%t2 = load i32, ptr %p.addr
ret i32 %t2
}
define i32 @main() {
entry:
%b.addr.t3 = alloca i32
store i32 0, ptr %b.addr.t3
store i32 10, ptr @a
%t4 = load i32, ptr @a
%t5 = call i32 @func(i32 %t4)
store i32 %t5, ptr %b.addr.t3
%t6 = load i32, ptr %b.addr.t3
ret i32 %t6
}

@ -1,38 +0,0 @@
@a = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @func(i32 %p) {
entry:
%p.addr = alloca i32
store i32 %p, ptr %p.addr
%t0 = load i32, ptr %p.addr
%t1 = sub i32 %t0, 1
store i32 %t1, ptr %p.addr
%t2 = load i32, ptr %p.addr
ret i32 %t2
}
define i32 @main() {
entry:
%b.addr.t3 = alloca i32
store i32 0, ptr %b.addr.t3
store i32 10, ptr @a
%t4 = load i32, ptr @a
%t5 = call i32 @func(i32 %t4)
store i32 %t5, ptr %b.addr.t3
%t6 = load i32, ptr %b.addr.t3
ret i32 %t6
}

@ -1,28 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
store i32 0, ptr %a.addr.t0
store i32 0, ptr %b.addr.t1
store i32 10, ptr %a.addr.t0
%t2 = sub i32 0, 1
store i32 %t2, ptr %b.addr.t1
%t3 = load i32, ptr %a.addr.t0
%t4 = load i32, ptr %b.addr.t1
%t5 = add i32 %t3, %t4
ret i32 %t5
}

@ -1,28 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
store i32 0, ptr %a.addr.t0
store i32 0, ptr %b.addr.t1
store i32 10, ptr %a.addr.t0
%t2 = sub i32 0, 1
store i32 %t2, ptr %b.addr.t1
%t3 = load i32, ptr %a.addr.t0
%t4 = load i32, ptr %b.addr.t1
%t5 = add i32 %t3, %t4
ret i32 %t5
}

@ -1,25 +0,0 @@
@a = constant i32 10
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%b.addr.t0 = alloca i32
store i32 0, ptr %b.addr.t0
store i32 2, ptr %b.addr.t0
%t1 = load i32, ptr %b.addr.t0
%t2 = sub i32 %t1, 10
ret i32 %t2
}

@ -1,25 +0,0 @@
@a = constant i32 10
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%b.addr.t0 = alloca i32
store i32 0, ptr %b.addr.t0
store i32 2, ptr %b.addr.t0
%t1 = load i32, ptr %b.addr.t0
%t2 = sub i32 %t1, 10
ret i32 %t2
}

@ -1,232 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@V = constant i32 4
@space = constant i32 32
@LF = constant i32 10
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @printSolution(ptr %color) {
entry:
%i.addr.t0 = alloca i32
store i32 0, ptr %i.addr.t0
br label %while.cond.0
while.cond.0:
%t1 = load i32, ptr %i.addr.t0
%t2 = icmp slt i32 %t1, 4
br i1 %t2, label %while.body.1, label %while.end.2
while.body.1:
%t3 = load i32, ptr %i.addr.t0
%t4 = getelementptr i32, ptr %color, i32 %t3
%t5 = load i32, ptr %t4
call void @putint(i32 %t5)
call void @putch(i32 32)
%t6 = load i32, ptr %i.addr.t0
%t7 = add i32 %t6, 1
store i32 %t7, ptr %i.addr.t0
br label %while.cond.0
while.end.2:
call void @putch(i32 10)
ret void
}
define void @printMessage() {
entry:
call void @putch(i32 78)
call void @putch(i32 111)
call void @putch(i32 116)
call void @putch(i32 32)
call void @putch(i32 101)
call void @putch(i32 120)
call void @putch(i32 105)
call void @putch(i32 115)
call void @putch(i32 116)
ret void
}
define i32 @isSafe(ptr %graph, ptr %color) {
entry:
%i.addr.t8 = alloca i32
%j.addr.t11 = alloca i32
store i32 0, ptr %i.addr.t8
br label %while.cond.3
while.cond.3:
%t9 = load i32, ptr %i.addr.t8
%t10 = icmp slt i32 %t9, 4
br i1 %t10, label %while.body.4, label %while.end.5
while.body.4:
%t12 = load i32, ptr %i.addr.t8
%t13 = add i32 %t12, 1
store i32 %t13, ptr %j.addr.t11
br label %while.cond.6
while.end.5:
ret i32 1
while.cond.6:
%t14 = load i32, ptr %j.addr.t11
%t15 = icmp slt i32 %t14, 4
br i1 %t15, label %while.body.7, label %while.end.8
while.body.7:
%t16 = load i32, ptr %i.addr.t8
%t17 = load i32, ptr %j.addr.t11
%t18 = getelementptr [4 x i32], ptr %graph, i32 %t16, i32 %t17
%t19 = load i32, ptr %t18
%t20 = icmp ne i32 %t19, 0
br i1 %t20, label %land.rhs.11, label %if.end.10
while.end.8:
%t30 = load i32, ptr %i.addr.t8
%t31 = add i32 %t30, 1
store i32 %t31, ptr %i.addr.t8
br label %while.cond.3
if.then.9:
ret i32 0
if.end.10:
%t28 = load i32, ptr %j.addr.t11
%t29 = add i32 %t28, 1
store i32 %t29, ptr %j.addr.t11
br label %while.cond.6
land.rhs.11:
%t21 = load i32, ptr %j.addr.t11
%t22 = getelementptr i32, ptr %color, i32 %t21
%t23 = load i32, ptr %t22
%t24 = load i32, ptr %i.addr.t8
%t25 = getelementptr i32, ptr %color, i32 %t24
%t26 = load i32, ptr %t25
%t27 = icmp eq i32 %t23, %t26
br i1 %t27, label %if.then.9, label %if.end.10
}
define i32 @graphColoring(ptr %graph, i32 %m, i32 %i, ptr %color) {
entry:
%m.addr = alloca i32
%i.addr = alloca i32
%j.addr.t36 = alloca i32
store i32 %m, ptr %m.addr
store i32 %i, ptr %i.addr
%t32 = load i32, ptr %i.addr
%t33 = icmp eq i32 %t32, 4
br i1 %t33, label %if.then.12, label %if.end.13
if.then.12:
%t34 = call i32 @isSafe(ptr %graph, ptr %color)
%t35 = icmp ne i32 %t34, 0
br i1 %t35, label %if.then.14, label %if.end.15
if.end.13:
store i32 1, ptr %j.addr.t36
br label %while.cond.16
if.then.14:
call void @printSolution(ptr %color)
ret i32 1
if.end.15:
ret i32 0
while.cond.16:
%t37 = load i32, ptr %j.addr.t36
%t38 = load i32, ptr %m.addr
%t39 = icmp sle i32 %t37, %t38
br i1 %t39, label %while.body.17, label %while.end.18
while.body.17:
%t40 = load i32, ptr %i.addr
%t41 = getelementptr i32, ptr %color, i32 %t40
%t42 = load i32, ptr %j.addr.t36
store i32 %t42, ptr %t41
%t43 = load i32, ptr %m.addr
%t44 = load i32, ptr %i.addr
%t45 = add i32 %t44, 1
%t46 = call i32 @graphColoring(ptr %graph, i32 %t43, i32 %t45, ptr %color)
%t47 = icmp ne i32 %t46, 0
br i1 %t47, label %if.then.19, label %if.end.20
while.end.18:
ret i32 0
if.then.19:
ret i32 1
if.end.20:
%t48 = load i32, ptr %i.addr
%t49 = getelementptr i32, ptr %color, i32 %t48
store i32 0, ptr %t49
%t50 = load i32, ptr %j.addr.t36
%t51 = add i32 %t50, 1
store i32 %t51, ptr %j.addr.t36
br label %while.cond.16
}
define i32 @main() {
entry:
%graph.addr.t52 = alloca [4 x [4 x i32]]
%m.addr.t69 = alloca i32
%color.addr.t70 = alloca [4 x i32]
%i.addr.t71 = alloca i32
call void @llvm.memset.p0.i32(ptr %graph.addr.t52, i8 0, i32 64, i1 0)
%t53 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 0
store i32 0, ptr %t53
%t54 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 1
store i32 1, ptr %t54
%t55 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 2
store i32 1, ptr %t55
%t56 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 3
store i32 1, ptr %t56
%t57 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 0
store i32 1, ptr %t57
%t58 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 1
store i32 0, ptr %t58
%t59 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 2
store i32 1, ptr %t59
%t60 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 3
store i32 0, ptr %t60
%t61 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 0
store i32 1, ptr %t61
%t62 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 1
store i32 1, ptr %t62
%t63 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 2
store i32 0, ptr %t63
%t64 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 3
store i32 1, ptr %t64
%t65 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 0
store i32 1, ptr %t65
%t66 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 1
store i32 0, ptr %t66
%t67 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 2
store i32 1, ptr %t67
%t68 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 3
store i32 0, ptr %t68
store i32 3, ptr %m.addr.t69
call void @llvm.memset.p0.i32(ptr %color.addr.t70, i8 0, i32 16, i1 0)
store i32 0, ptr %i.addr.t71
br label %while.cond.21
while.cond.21:
%t72 = load i32, ptr %i.addr.t71
%t73 = icmp slt i32 %t72, 4
br i1 %t73, label %while.body.22, label %while.end.23
while.body.22:
%t74 = load i32, ptr %i.addr.t71
%t75 = getelementptr [4 x i32], ptr %color.addr.t70, i32 0, i32 %t74
store i32 0, ptr %t75
%t76 = load i32, ptr %i.addr.t71
%t77 = add i32 %t76, 1
store i32 %t77, ptr %i.addr.t71
br label %while.cond.21
while.end.23:
%t78 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0
%t79 = load i32, ptr %m.addr.t69
%t80 = getelementptr [4 x i32], ptr %color.addr.t70, i32 0, i32 0
%t81 = call i32 @graphColoring(ptr %t78, i32 %t79, i32 0, ptr %t80)
%t82 = icmp ne i32 %t81, 0
%t83 = xor i1 %t82, 1
%t84 = zext i1 %t83 to i32
%t85 = icmp ne i32 %t84, 0
br i1 %t85, label %if.then.24, label %if.end.25
if.then.24:
call void @printMessage()
br label %if.end.25
if.end.25:
ret i32 0
}

@ -1,232 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@V = constant i32 4
@space = constant i32 32
@LF = constant i32 10
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @printSolution(ptr %color) {
entry:
%i.addr.t0 = alloca i32
store i32 0, ptr %i.addr.t0
br label %while.cond.0
while.cond.0:
%t1 = load i32, ptr %i.addr.t0
%t2 = icmp slt i32 %t1, 4
br i1 %t2, label %while.body.1, label %while.end.2
while.body.1:
%t3 = load i32, ptr %i.addr.t0
%t4 = getelementptr i32, ptr %color, i32 %t3
%t5 = load i32, ptr %t4
call void @putint(i32 %t5)
call void @putch(i32 32)
%t6 = load i32, ptr %i.addr.t0
%t7 = add i32 %t6, 1
store i32 %t7, ptr %i.addr.t0
br label %while.cond.0
while.end.2:
call void @putch(i32 10)
ret void
}
define void @printMessage() {
entry:
call void @putch(i32 78)
call void @putch(i32 111)
call void @putch(i32 116)
call void @putch(i32 32)
call void @putch(i32 101)
call void @putch(i32 120)
call void @putch(i32 105)
call void @putch(i32 115)
call void @putch(i32 116)
ret void
}
define i32 @isSafe(ptr %graph, ptr %color) {
entry:
%i.addr.t8 = alloca i32
%j.addr.t11 = alloca i32
store i32 0, ptr %i.addr.t8
br label %while.cond.3
while.cond.3:
%t9 = load i32, ptr %i.addr.t8
%t10 = icmp slt i32 %t9, 4
br i1 %t10, label %while.body.4, label %while.end.5
while.body.4:
%t12 = load i32, ptr %i.addr.t8
%t13 = add i32 %t12, 1
store i32 %t13, ptr %j.addr.t11
br label %while.cond.6
while.end.5:
ret i32 1
while.cond.6:
%t14 = load i32, ptr %j.addr.t11
%t15 = icmp slt i32 %t14, 4
br i1 %t15, label %while.body.7, label %while.end.8
while.body.7:
%t16 = load i32, ptr %i.addr.t8
%t17 = load i32, ptr %j.addr.t11
%t18 = getelementptr [4 x i32], ptr %graph, i32 %t16, i32 %t17
%t19 = load i32, ptr %t18
%t20 = icmp ne i32 %t19, 0
br i1 %t20, label %land.rhs.11, label %if.end.10
while.end.8:
%t30 = load i32, ptr %i.addr.t8
%t31 = add i32 %t30, 1
store i32 %t31, ptr %i.addr.t8
br label %while.cond.3
if.then.9:
ret i32 0
if.end.10:
%t28 = load i32, ptr %j.addr.t11
%t29 = add i32 %t28, 1
store i32 %t29, ptr %j.addr.t11
br label %while.cond.6
land.rhs.11:
%t21 = load i32, ptr %j.addr.t11
%t22 = getelementptr i32, ptr %color, i32 %t21
%t23 = load i32, ptr %t22
%t24 = load i32, ptr %i.addr.t8
%t25 = getelementptr i32, ptr %color, i32 %t24
%t26 = load i32, ptr %t25
%t27 = icmp eq i32 %t23, %t26
br i1 %t27, label %if.then.9, label %if.end.10
}
define i32 @graphColoring(ptr %graph, i32 %m, i32 %i, ptr %color) {
entry:
%m.addr = alloca i32
%i.addr = alloca i32
%j.addr.t36 = alloca i32
store i32 %m, ptr %m.addr
store i32 %i, ptr %i.addr
%t32 = load i32, ptr %i.addr
%t33 = icmp eq i32 %t32, 4
br i1 %t33, label %if.then.12, label %if.end.13
if.then.12:
%t34 = call i32 @isSafe(ptr %graph, ptr %color)
%t35 = icmp ne i32 %t34, 0
br i1 %t35, label %if.then.14, label %if.end.15
if.end.13:
store i32 1, ptr %j.addr.t36
br label %while.cond.16
if.then.14:
call void @printSolution(ptr %color)
ret i32 1
if.end.15:
ret i32 0
while.cond.16:
%t37 = load i32, ptr %j.addr.t36
%t38 = load i32, ptr %m.addr
%t39 = icmp sle i32 %t37, %t38
br i1 %t39, label %while.body.17, label %while.end.18
while.body.17:
%t40 = load i32, ptr %i.addr
%t41 = getelementptr i32, ptr %color, i32 %t40
%t42 = load i32, ptr %j.addr.t36
store i32 %t42, ptr %t41
%t43 = load i32, ptr %m.addr
%t44 = load i32, ptr %i.addr
%t45 = add i32 %t44, 1
%t46 = call i32 @graphColoring(ptr %graph, i32 %t43, i32 %t45, ptr %color)
%t47 = icmp ne i32 %t46, 0
br i1 %t47, label %if.then.19, label %if.end.20
while.end.18:
ret i32 0
if.then.19:
ret i32 1
if.end.20:
%t48 = load i32, ptr %i.addr
%t49 = getelementptr i32, ptr %color, i32 %t48
store i32 0, ptr %t49
%t50 = load i32, ptr %j.addr.t36
%t51 = add i32 %t50, 1
store i32 %t51, ptr %j.addr.t36
br label %while.cond.16
}
define i32 @main() {
entry:
%graph.addr.t52 = alloca [4 x [4 x i32]]
%m.addr.t69 = alloca i32
%color.addr.t70 = alloca [4 x i32]
%i.addr.t71 = alloca i32
call void @llvm.memset.p0.i32(ptr %graph.addr.t52, i8 0, i32 64, i1 0)
%t53 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 0
store i32 0, ptr %t53
%t54 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 1
store i32 1, ptr %t54
%t55 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 2
store i32 1, ptr %t55
%t56 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0, i32 3
store i32 1, ptr %t56
%t57 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 0
store i32 1, ptr %t57
%t58 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 1
store i32 0, ptr %t58
%t59 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 2
store i32 1, ptr %t59
%t60 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 1, i32 3
store i32 0, ptr %t60
%t61 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 0
store i32 1, ptr %t61
%t62 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 1
store i32 1, ptr %t62
%t63 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 2
store i32 0, ptr %t63
%t64 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 2, i32 3
store i32 1, ptr %t64
%t65 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 0
store i32 1, ptr %t65
%t66 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 1
store i32 0, ptr %t66
%t67 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 2
store i32 1, ptr %t67
%t68 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 3, i32 3
store i32 0, ptr %t68
store i32 3, ptr %m.addr.t69
call void @llvm.memset.p0.i32(ptr %color.addr.t70, i8 0, i32 16, i1 0)
store i32 0, ptr %i.addr.t71
br label %while.cond.21
while.cond.21:
%t72 = load i32, ptr %i.addr.t71
%t73 = icmp slt i32 %t72, 4
br i1 %t73, label %while.body.22, label %while.end.23
while.body.22:
%t74 = load i32, ptr %i.addr.t71
%t75 = getelementptr [4 x i32], ptr %color.addr.t70, i32 0, i32 %t74
store i32 0, ptr %t75
%t76 = load i32, ptr %i.addr.t71
%t77 = add i32 %t76, 1
store i32 %t77, ptr %i.addr.t71
br label %while.cond.21
while.end.23:
%t78 = getelementptr [4 x [4 x i32]], ptr %graph.addr.t52, i32 0, i32 0
%t79 = load i32, ptr %m.addr.t69
%t80 = getelementptr [4 x i32], ptr %color.addr.t70, i32 0, i32 0
%t81 = call i32 @graphColoring(ptr %t78, i32 %t79, i32 0, ptr %t80)
%t82 = icmp ne i32 %t81, 0
%t83 = xor i1 %t82, 1
%t84 = zext i1 %t83 to i32
%t85 = icmp ne i32 %t84, 0
br i1 %t85, label %if.then.24, label %if.end.25
if.then.24:
call void @printMessage()
br label %if.end.25
if.end.25:
ret i32 0
}

@ -1,200 +0,0 @@
@MAX_SIZE = constant i32 100
@a = global [100 x [100 x i32]] zeroinitializer
@b = global [100 x [100 x i32]] zeroinitializer
@res = global [100 x [100 x i32]] zeroinitializer
@n1 = global i32 0
@m1 = global i32 0
@n2 = global i32 0
@m2 = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @matrix_multiply() {
entry:
%i.addr.t0 = alloca i32
%j.addr.t4 = alloca i32
%k.addr.t8 = alloca i32
store i32 0, ptr %i.addr.t0
br label %while.cond.0
while.cond.0:
%t1 = load i32, ptr %i.addr.t0
%t2 = load i32, ptr @m1
%t3 = icmp slt i32 %t1, %t2
br i1 %t3, label %while.body.1, label %while.end.2
while.body.1:
store i32 0, ptr %j.addr.t4
br label %while.cond.3
while.end.2:
ret void
while.cond.3:
%t5 = load i32, ptr %j.addr.t4
%t6 = load i32, ptr @n2
%t7 = icmp slt i32 %t5, %t6
br i1 %t7, label %while.body.4, label %while.end.5
while.body.4:
store i32 0, ptr %k.addr.t8
br label %while.cond.6
while.end.5:
%t33 = load i32, ptr %i.addr.t0
%t34 = add i32 %t33, 1
store i32 %t34, ptr %i.addr.t0
br label %while.cond.0
while.cond.6:
%t9 = load i32, ptr %k.addr.t8
%t10 = load i32, ptr @n1
%t11 = icmp slt i32 %t9, %t10
br i1 %t11, label %while.body.7, label %while.end.8
while.body.7:
%t12 = load i32, ptr %i.addr.t0
%t13 = load i32, ptr %j.addr.t4
%t14 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t12, i32 %t13
%t15 = load i32, ptr %i.addr.t0
%t16 = load i32, ptr %j.addr.t4
%t17 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t15, i32 %t16
%t18 = load i32, ptr %t17
%t19 = load i32, ptr %i.addr.t0
%t20 = load i32, ptr %k.addr.t8
%t21 = getelementptr [100 x [100 x i32]], ptr @a, i32 0, i32 %t19, i32 %t20
%t22 = load i32, ptr %t21
%t23 = load i32, ptr %k.addr.t8
%t24 = load i32, ptr %j.addr.t4
%t25 = getelementptr [100 x [100 x i32]], ptr @b, i32 0, i32 %t23, i32 %t24
%t26 = load i32, ptr %t25
%t27 = mul i32 %t22, %t26
%t28 = add i32 %t18, %t27
store i32 %t28, ptr %t14
%t29 = load i32, ptr %k.addr.t8
%t30 = add i32 %t29, 1
store i32 %t30, ptr %k.addr.t8
br label %while.cond.6
while.end.8:
%t31 = load i32, ptr %j.addr.t4
%t32 = add i32 %t31, 1
store i32 %t32, ptr %j.addr.t4
br label %while.cond.3
}
define i32 @main() {
entry:
%i.addr.t35 = alloca i32
%j.addr.t36 = alloca i32
store i32 0, ptr %i.addr.t35
store i32 0, ptr %j.addr.t36
%t37 = call i32 @getint()
store i32 %t37, ptr @m1
%t38 = call i32 @getint()
store i32 %t38, ptr @n1
store i32 0, ptr %i.addr.t35
br label %while.cond.9
while.cond.9:
%t39 = load i32, ptr %i.addr.t35
%t40 = load i32, ptr @m1
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.10, label %while.end.11
while.body.10:
store i32 0, ptr %j.addr.t36
br label %while.cond.12
while.end.11:
%t53 = call i32 @getint()
store i32 %t53, ptr @m2
%t54 = call i32 @getint()
store i32 %t54, ptr @n2
store i32 0, ptr %i.addr.t35
br label %while.cond.15
while.cond.12:
%t42 = load i32, ptr %j.addr.t36
%t43 = load i32, ptr @n1
%t44 = icmp slt i32 %t42, %t43
br i1 %t44, label %while.body.13, label %while.end.14
while.body.13:
%t45 = load i32, ptr %i.addr.t35
%t46 = load i32, ptr %j.addr.t36
%t47 = getelementptr [100 x [100 x i32]], ptr @a, i32 0, i32 %t45, i32 %t46
%t48 = call i32 @getint()
store i32 %t48, ptr %t47
%t49 = load i32, ptr %j.addr.t36
%t50 = add i32 %t49, 1
store i32 %t50, ptr %j.addr.t36
br label %while.cond.12
while.end.14:
%t51 = load i32, ptr %i.addr.t35
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t35
br label %while.cond.9
while.cond.15:
%t55 = load i32, ptr %i.addr.t35
%t56 = load i32, ptr @m2
%t57 = icmp slt i32 %t55, %t56
br i1 %t57, label %while.body.16, label %while.end.17
while.body.16:
store i32 0, ptr %j.addr.t36
br label %while.cond.18
while.end.17:
call void @matrix_multiply()
store i32 0, ptr %i.addr.t35
br label %while.cond.21
while.cond.18:
%t58 = load i32, ptr %j.addr.t36
%t59 = load i32, ptr @n2
%t60 = icmp slt i32 %t58, %t59
br i1 %t60, label %while.body.19, label %while.end.20
while.body.19:
%t61 = load i32, ptr %i.addr.t35
%t62 = load i32, ptr %j.addr.t36
%t63 = getelementptr [100 x [100 x i32]], ptr @b, i32 0, i32 %t61, i32 %t62
%t64 = call i32 @getint()
store i32 %t64, ptr %t63
%t65 = load i32, ptr %j.addr.t36
%t66 = add i32 %t65, 1
store i32 %t66, ptr %j.addr.t36
br label %while.cond.18
while.end.20:
%t67 = load i32, ptr %i.addr.t35
%t68 = add i32 %t67, 1
store i32 %t68, ptr %i.addr.t35
br label %while.cond.15
while.cond.21:
%t69 = load i32, ptr %i.addr.t35
%t70 = load i32, ptr @m1
%t71 = icmp slt i32 %t69, %t70
br i1 %t71, label %while.body.22, label %while.end.23
while.body.22:
store i32 0, ptr %j.addr.t36
br label %while.cond.24
while.end.23:
ret i32 0
while.cond.24:
%t72 = load i32, ptr %j.addr.t36
%t73 = load i32, ptr @n2
%t74 = icmp slt i32 %t72, %t73
br i1 %t74, label %while.body.25, label %while.end.26
while.body.25:
%t75 = load i32, ptr %i.addr.t35
%t76 = load i32, ptr %j.addr.t36
%t77 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t75, i32 %t76
%t78 = load i32, ptr %t77
call void @putint(i32 %t78)
call void @putch(i32 32)
%t79 = load i32, ptr %j.addr.t36
%t80 = add i32 %t79, 1
store i32 %t80, ptr %j.addr.t36
br label %while.cond.24
while.end.26:
call void @putch(i32 10)
%t81 = load i32, ptr %i.addr.t35
%t82 = add i32 %t81, 1
store i32 %t82, ptr %i.addr.t35
br label %while.cond.21
}

@ -1,200 +0,0 @@
@MAX_SIZE = constant i32 100
@a = global [100 x [100 x i32]] zeroinitializer
@b = global [100 x [100 x i32]] zeroinitializer
@res = global [100 x [100 x i32]] zeroinitializer
@n1 = global i32 0
@m1 = global i32 0
@n2 = global i32 0
@m2 = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @matrix_multiply() {
entry:
%i.addr.t0 = alloca i32
%j.addr.t4 = alloca i32
%k.addr.t8 = alloca i32
store i32 0, ptr %i.addr.t0
br label %while.cond.0
while.cond.0:
%t1 = load i32, ptr %i.addr.t0
%t2 = load i32, ptr @m1
%t3 = icmp slt i32 %t1, %t2
br i1 %t3, label %while.body.1, label %while.end.2
while.body.1:
store i32 0, ptr %j.addr.t4
br label %while.cond.3
while.end.2:
ret void
while.cond.3:
%t5 = load i32, ptr %j.addr.t4
%t6 = load i32, ptr @n2
%t7 = icmp slt i32 %t5, %t6
br i1 %t7, label %while.body.4, label %while.end.5
while.body.4:
store i32 0, ptr %k.addr.t8
br label %while.cond.6
while.end.5:
%t33 = load i32, ptr %i.addr.t0
%t34 = add i32 %t33, 1
store i32 %t34, ptr %i.addr.t0
br label %while.cond.0
while.cond.6:
%t9 = load i32, ptr %k.addr.t8
%t10 = load i32, ptr @n1
%t11 = icmp slt i32 %t9, %t10
br i1 %t11, label %while.body.7, label %while.end.8
while.body.7:
%t12 = load i32, ptr %i.addr.t0
%t13 = load i32, ptr %j.addr.t4
%t14 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t12, i32 %t13
%t15 = load i32, ptr %i.addr.t0
%t16 = load i32, ptr %j.addr.t4
%t17 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t15, i32 %t16
%t18 = load i32, ptr %t17
%t19 = load i32, ptr %i.addr.t0
%t20 = load i32, ptr %k.addr.t8
%t21 = getelementptr [100 x [100 x i32]], ptr @a, i32 0, i32 %t19, i32 %t20
%t22 = load i32, ptr %t21
%t23 = load i32, ptr %k.addr.t8
%t24 = load i32, ptr %j.addr.t4
%t25 = getelementptr [100 x [100 x i32]], ptr @b, i32 0, i32 %t23, i32 %t24
%t26 = load i32, ptr %t25
%t27 = mul i32 %t22, %t26
%t28 = add i32 %t18, %t27
store i32 %t28, ptr %t14
%t29 = load i32, ptr %k.addr.t8
%t30 = add i32 %t29, 1
store i32 %t30, ptr %k.addr.t8
br label %while.cond.6
while.end.8:
%t31 = load i32, ptr %j.addr.t4
%t32 = add i32 %t31, 1
store i32 %t32, ptr %j.addr.t4
br label %while.cond.3
}
define i32 @main() {
entry:
%i.addr.t35 = alloca i32
%j.addr.t36 = alloca i32
store i32 0, ptr %i.addr.t35
store i32 0, ptr %j.addr.t36
%t37 = call i32 @getint()
store i32 %t37, ptr @m1
%t38 = call i32 @getint()
store i32 %t38, ptr @n1
store i32 0, ptr %i.addr.t35
br label %while.cond.9
while.cond.9:
%t39 = load i32, ptr %i.addr.t35
%t40 = load i32, ptr @m1
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.10, label %while.end.11
while.body.10:
store i32 0, ptr %j.addr.t36
br label %while.cond.12
while.end.11:
%t53 = call i32 @getint()
store i32 %t53, ptr @m2
%t54 = call i32 @getint()
store i32 %t54, ptr @n2
store i32 0, ptr %i.addr.t35
br label %while.cond.15
while.cond.12:
%t42 = load i32, ptr %j.addr.t36
%t43 = load i32, ptr @n1
%t44 = icmp slt i32 %t42, %t43
br i1 %t44, label %while.body.13, label %while.end.14
while.body.13:
%t45 = load i32, ptr %i.addr.t35
%t46 = load i32, ptr %j.addr.t36
%t47 = getelementptr [100 x [100 x i32]], ptr @a, i32 0, i32 %t45, i32 %t46
%t48 = call i32 @getint()
store i32 %t48, ptr %t47
%t49 = load i32, ptr %j.addr.t36
%t50 = add i32 %t49, 1
store i32 %t50, ptr %j.addr.t36
br label %while.cond.12
while.end.14:
%t51 = load i32, ptr %i.addr.t35
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t35
br label %while.cond.9
while.cond.15:
%t55 = load i32, ptr %i.addr.t35
%t56 = load i32, ptr @m2
%t57 = icmp slt i32 %t55, %t56
br i1 %t57, label %while.body.16, label %while.end.17
while.body.16:
store i32 0, ptr %j.addr.t36
br label %while.cond.18
while.end.17:
call void @matrix_multiply()
store i32 0, ptr %i.addr.t35
br label %while.cond.21
while.cond.18:
%t58 = load i32, ptr %j.addr.t36
%t59 = load i32, ptr @n2
%t60 = icmp slt i32 %t58, %t59
br i1 %t60, label %while.body.19, label %while.end.20
while.body.19:
%t61 = load i32, ptr %i.addr.t35
%t62 = load i32, ptr %j.addr.t36
%t63 = getelementptr [100 x [100 x i32]], ptr @b, i32 0, i32 %t61, i32 %t62
%t64 = call i32 @getint()
store i32 %t64, ptr %t63
%t65 = load i32, ptr %j.addr.t36
%t66 = add i32 %t65, 1
store i32 %t66, ptr %j.addr.t36
br label %while.cond.18
while.end.20:
%t67 = load i32, ptr %i.addr.t35
%t68 = add i32 %t67, 1
store i32 %t68, ptr %i.addr.t35
br label %while.cond.15
while.cond.21:
%t69 = load i32, ptr %i.addr.t35
%t70 = load i32, ptr @m1
%t71 = icmp slt i32 %t69, %t70
br i1 %t71, label %while.body.22, label %while.end.23
while.body.22:
store i32 0, ptr %j.addr.t36
br label %while.cond.24
while.end.23:
ret i32 0
while.cond.24:
%t72 = load i32, ptr %j.addr.t36
%t73 = load i32, ptr @n2
%t74 = icmp slt i32 %t72, %t73
br i1 %t74, label %while.body.25, label %while.end.26
while.body.25:
%t75 = load i32, ptr %i.addr.t35
%t76 = load i32, ptr %j.addr.t36
%t77 = getelementptr [100 x [100 x i32]], ptr @res, i32 0, i32 %t75, i32 %t76
%t78 = load i32, ptr %t77
call void @putint(i32 %t78)
call void @putch(i32 32)
%t79 = load i32, ptr %j.addr.t36
%t80 = add i32 %t79, 1
store i32 %t80, ptr %j.addr.t36
br label %while.cond.24
while.end.26:
call void @putch(i32 10)
%t81 = load i32, ptr %i.addr.t35
%t82 = add i32 %t81, 1
store i32 %t82, ptr %i.addr.t35
br label %while.cond.21
}

@ -1,133 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%putch.addr.t1 = alloca i32
%b.addr.t4 = alloca i32
%main.addr.t16 = alloca i32
%a.addr.t32 = alloca i32
%b.addr.t47 = alloca i32
%a.addr.t52 = alloca i32
%main.addr.t64 = alloca i32
call void @putch(i32 97)
call void @putch(i32 10)
store i32 1, ptr %a.addr.t0
store i32 0, ptr %putch.addr.t1
%t2 = load i32, ptr %a.addr.t0
%t3 = add i32 %t2, 2
store i32 %t3, ptr %a.addr.t0
%t5 = load i32, ptr %a.addr.t0
%t6 = add i32 %t5, 3
store i32 %t6, ptr %b.addr.t4
%t7 = load i32, ptr %b.addr.t4
%t8 = add i32 %t7, 4
store i32 %t8, ptr %b.addr.t4
%t9 = load i32, ptr %putch.addr.t1
%t10 = load i32, ptr %a.addr.t0
%t11 = add i32 %t9, %t10
%t12 = load i32, ptr %b.addr.t4
%t13 = add i32 %t11, %t12
store i32 %t13, ptr %putch.addr.t1
%t14 = load i32, ptr %b.addr.t4
%t15 = add i32 %t14, 5
store i32 %t15, ptr %b.addr.t4
%t17 = load i32, ptr %b.addr.t4
%t18 = add i32 %t17, 6
store i32 %t18, ptr %main.addr.t16
%t19 = load i32, ptr %a.addr.t0
%t20 = load i32, ptr %main.addr.t16
%t21 = add i32 %t19, %t20
store i32 %t21, ptr %a.addr.t0
%t22 = load i32, ptr %putch.addr.t1
%t23 = load i32, ptr %a.addr.t0
%t24 = add i32 %t22, %t23
%t25 = load i32, ptr %b.addr.t4
%t26 = add i32 %t24, %t25
%t27 = load i32, ptr %main.addr.t16
%t28 = add i32 %t26, %t27
store i32 %t28, ptr %putch.addr.t1
%t29 = load i32, ptr %b.addr.t4
%t30 = load i32, ptr %a.addr.t0
%t31 = add i32 %t29, %t30
store i32 %t31, ptr %b.addr.t4
%t33 = load i32, ptr %main.addr.t16
%t34 = add i32 %t33, 7
store i32 %t34, ptr %a.addr.t32
%t35 = load i32, ptr %a.addr.t32
%t36 = add i32 %t35, 8
store i32 %t36, ptr %a.addr.t32
%t37 = load i32, ptr %putch.addr.t1
%t38 = load i32, ptr %a.addr.t32
%t39 = add i32 %t37, %t38
%t40 = load i32, ptr %b.addr.t4
%t41 = add i32 %t39, %t40
%t42 = load i32, ptr %main.addr.t16
%t43 = add i32 %t41, %t42
store i32 %t43, ptr %putch.addr.t1
%t44 = load i32, ptr %b.addr.t4
%t45 = load i32, ptr %a.addr.t32
%t46 = add i32 %t44, %t45
store i32 %t46, ptr %b.addr.t4
%t48 = load i32, ptr %main.addr.t16
%t49 = add i32 %t48, 9
store i32 %t49, ptr %b.addr.t47
%t50 = load i32, ptr %a.addr.t32
%t51 = add i32 %t50, 10
store i32 %t51, ptr %a.addr.t32
store i32 11, ptr %a.addr.t52
%t53 = load i32, ptr %b.addr.t47
%t54 = add i32 %t53, 12
store i32 %t54, ptr %b.addr.t47
%t55 = load i32, ptr %putch.addr.t1
%t56 = add i32 %t55, 11
%t57 = load i32, ptr %b.addr.t47
%t58 = add i32 %t56, %t57
%t59 = load i32, ptr %main.addr.t16
%t60 = add i32 %t58, %t59
store i32 %t60, ptr %putch.addr.t1
%t61 = load i32, ptr %main.addr.t16
%t62 = load i32, ptr %b.addr.t47
%t63 = add i32 %t61, %t62
store i32 %t63, ptr %main.addr.t16
%t65 = load i32, ptr %b.addr.t47
%t66 = add i32 %t65, 13
store i32 %t66, ptr %main.addr.t64
%t67 = load i32, ptr %main.addr.t64
%t68 = add i32 %t67, 11
store i32 %t68, ptr %main.addr.t64
%t69 = load i32, ptr %putch.addr.t1
%t70 = add i32 %t69, 11
%t71 = load i32, ptr %b.addr.t47
%t72 = add i32 %t70, %t71
%t73 = load i32, ptr %main.addr.t64
%t74 = add i32 %t72, %t73
store i32 %t74, ptr %putch.addr.t1
%t75 = load i32, ptr %putch.addr.t1
%t76 = load i32, ptr %main.addr.t16
%t77 = sub i32 %t75, %t76
store i32 %t77, ptr %putch.addr.t1
%t78 = load i32, ptr %putch.addr.t1
%t79 = load i32, ptr %b.addr.t4
%t80 = sub i32 %t78, %t79
store i32 %t80, ptr %putch.addr.t1
%t81 = load i32, ptr %putch.addr.t1
%t82 = load i32, ptr %a.addr.t0
%t83 = sub i32 %t81, %t82
store i32 %t83, ptr %putch.addr.t1
%t84 = load i32, ptr %putch.addr.t1
%t85 = srem i32 %t84, 77
ret i32 %t85
}

@ -1,133 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%putch.addr.t1 = alloca i32
%b.addr.t4 = alloca i32
%main.addr.t16 = alloca i32
%a.addr.t32 = alloca i32
%b.addr.t47 = alloca i32
%a.addr.t52 = alloca i32
%main.addr.t64 = alloca i32
call void @putch(i32 97)
call void @putch(i32 10)
store i32 1, ptr %a.addr.t0
store i32 0, ptr %putch.addr.t1
%t2 = load i32, ptr %a.addr.t0
%t3 = add i32 %t2, 2
store i32 %t3, ptr %a.addr.t0
%t5 = load i32, ptr %a.addr.t0
%t6 = add i32 %t5, 3
store i32 %t6, ptr %b.addr.t4
%t7 = load i32, ptr %b.addr.t4
%t8 = add i32 %t7, 4
store i32 %t8, ptr %b.addr.t4
%t9 = load i32, ptr %putch.addr.t1
%t10 = load i32, ptr %a.addr.t0
%t11 = add i32 %t9, %t10
%t12 = load i32, ptr %b.addr.t4
%t13 = add i32 %t11, %t12
store i32 %t13, ptr %putch.addr.t1
%t14 = load i32, ptr %b.addr.t4
%t15 = add i32 %t14, 5
store i32 %t15, ptr %b.addr.t4
%t17 = load i32, ptr %b.addr.t4
%t18 = add i32 %t17, 6
store i32 %t18, ptr %main.addr.t16
%t19 = load i32, ptr %a.addr.t0
%t20 = load i32, ptr %main.addr.t16
%t21 = add i32 %t19, %t20
store i32 %t21, ptr %a.addr.t0
%t22 = load i32, ptr %putch.addr.t1
%t23 = load i32, ptr %a.addr.t0
%t24 = add i32 %t22, %t23
%t25 = load i32, ptr %b.addr.t4
%t26 = add i32 %t24, %t25
%t27 = load i32, ptr %main.addr.t16
%t28 = add i32 %t26, %t27
store i32 %t28, ptr %putch.addr.t1
%t29 = load i32, ptr %b.addr.t4
%t30 = load i32, ptr %a.addr.t0
%t31 = add i32 %t29, %t30
store i32 %t31, ptr %b.addr.t4
%t33 = load i32, ptr %main.addr.t16
%t34 = add i32 %t33, 7
store i32 %t34, ptr %a.addr.t32
%t35 = load i32, ptr %a.addr.t32
%t36 = add i32 %t35, 8
store i32 %t36, ptr %a.addr.t32
%t37 = load i32, ptr %putch.addr.t1
%t38 = load i32, ptr %a.addr.t32
%t39 = add i32 %t37, %t38
%t40 = load i32, ptr %b.addr.t4
%t41 = add i32 %t39, %t40
%t42 = load i32, ptr %main.addr.t16
%t43 = add i32 %t41, %t42
store i32 %t43, ptr %putch.addr.t1
%t44 = load i32, ptr %b.addr.t4
%t45 = load i32, ptr %a.addr.t32
%t46 = add i32 %t44, %t45
store i32 %t46, ptr %b.addr.t4
%t48 = load i32, ptr %main.addr.t16
%t49 = add i32 %t48, 9
store i32 %t49, ptr %b.addr.t47
%t50 = load i32, ptr %a.addr.t32
%t51 = add i32 %t50, 10
store i32 %t51, ptr %a.addr.t32
store i32 11, ptr %a.addr.t52
%t53 = load i32, ptr %b.addr.t47
%t54 = add i32 %t53, 12
store i32 %t54, ptr %b.addr.t47
%t55 = load i32, ptr %putch.addr.t1
%t56 = add i32 %t55, 11
%t57 = load i32, ptr %b.addr.t47
%t58 = add i32 %t56, %t57
%t59 = load i32, ptr %main.addr.t16
%t60 = add i32 %t58, %t59
store i32 %t60, ptr %putch.addr.t1
%t61 = load i32, ptr %main.addr.t16
%t62 = load i32, ptr %b.addr.t47
%t63 = add i32 %t61, %t62
store i32 %t63, ptr %main.addr.t16
%t65 = load i32, ptr %b.addr.t47
%t66 = add i32 %t65, 13
store i32 %t66, ptr %main.addr.t64
%t67 = load i32, ptr %main.addr.t64
%t68 = add i32 %t67, 11
store i32 %t68, ptr %main.addr.t64
%t69 = load i32, ptr %putch.addr.t1
%t70 = add i32 %t69, 11
%t71 = load i32, ptr %b.addr.t47
%t72 = add i32 %t70, %t71
%t73 = load i32, ptr %main.addr.t64
%t74 = add i32 %t72, %t73
store i32 %t74, ptr %putch.addr.t1
%t75 = load i32, ptr %putch.addr.t1
%t76 = load i32, ptr %main.addr.t16
%t77 = sub i32 %t75, %t76
store i32 %t77, ptr %putch.addr.t1
%t78 = load i32, ptr %putch.addr.t1
%t79 = load i32, ptr %b.addr.t4
%t80 = sub i32 %t78, %t79
store i32 %t80, ptr %putch.addr.t1
%t81 = load i32, ptr %putch.addr.t1
%t82 = load i32, ptr %a.addr.t0
%t83 = sub i32 %t81, %t82
store i32 %t83, ptr %putch.addr.t1
%t84 = load i32, ptr %putch.addr.t1
%t85 = srem i32 %t84, 77
ret i32 %t85
}

@ -1,46 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%i.addr.t0 = alloca i32
%sum.addr.t1 = alloca i32
store i32 0, ptr %i.addr.t0
store i32 0, ptr %i.addr.t0
store i32 0, ptr %sum.addr.t1
store i32 0, ptr %sum.addr.t1
br label %while.cond.0
while.cond.0:
%t2 = load i32, ptr %i.addr.t0
%t3 = icmp slt i32 %t2, 100
br i1 %t3, label %while.body.1, label %while.end.2
while.body.1:
%t4 = load i32, ptr %i.addr.t0
%t5 = icmp eq i32 %t4, 50
br i1 %t5, label %if.then.3, label %if.end.4
while.end.2:
%t11 = load i32, ptr %sum.addr.t1
ret i32 %t11
if.then.3:
br label %while.end.2
if.end.4:
%t6 = load i32, ptr %sum.addr.t1
%t7 = load i32, ptr %i.addr.t0
%t8 = add i32 %t6, %t7
store i32 %t8, ptr %sum.addr.t1
%t9 = load i32, ptr %i.addr.t0
%t10 = add i32 %t9, 1
store i32 %t10, ptr %i.addr.t0
br label %while.cond.0
}

@ -1,46 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%i.addr.t0 = alloca i32
%sum.addr.t1 = alloca i32
store i32 0, ptr %i.addr.t0
store i32 0, ptr %i.addr.t0
store i32 0, ptr %sum.addr.t1
store i32 0, ptr %sum.addr.t1
br label %while.cond.0
while.cond.0:
%t2 = load i32, ptr %i.addr.t0
%t3 = icmp slt i32 %t2, 100
br i1 %t3, label %while.body.1, label %while.end.2
while.body.1:
%t4 = load i32, ptr %i.addr.t0
%t5 = icmp eq i32 %t4, 50
br i1 %t5, label %if.then.3, label %if.end.4
while.end.2:
%t11 = load i32, ptr %sum.addr.t1
ret i32 %t11
if.then.3:
br label %while.end.2
if.end.4:
%t6 = load i32, ptr %sum.addr.t1
%t7 = load i32, ptr %i.addr.t0
%t8 = add i32 %t6, %t7
store i32 %t8, ptr %sum.addr.t1
%t9 = load i32, ptr %i.addr.t0
%t10 = add i32 %t9, 1
store i32 %t10, ptr %i.addr.t0
br label %while.cond.0
}

@ -1,37 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
%c.addr.t2 = alloca i32
%d.addr.t3 = alloca i32
store i32 0, ptr %a.addr.t0
store i32 0, ptr %b.addr.t1
store i32 0, ptr %c.addr.t2
store i32 0, ptr %d.addr.t3
store i32 10, ptr %a.addr.t0
store i32 4, ptr %b.addr.t1
store i32 2, ptr %c.addr.t2
store i32 2, ptr %d.addr.t3
%t4 = load i32, ptr %c.addr.t2
%t5 = load i32, ptr %a.addr.t0
%t6 = add i32 %t4, %t5
%t7 = load i32, ptr %b.addr.t1
%t8 = load i32, ptr %d.addr.t3
%t9 = sub i32 %t7, %t8
%t10 = mul i32 %t6, %t9
ret i32 %t10
}

@ -1,37 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
%c.addr.t2 = alloca i32
%d.addr.t3 = alloca i32
store i32 0, ptr %a.addr.t0
store i32 0, ptr %b.addr.t1
store i32 0, ptr %c.addr.t2
store i32 0, ptr %d.addr.t3
store i32 10, ptr %a.addr.t0
store i32 4, ptr %b.addr.t1
store i32 2, ptr %c.addr.t2
store i32 2, ptr %d.addr.t3
%t4 = load i32, ptr %c.addr.t2
%t5 = load i32, ptr %a.addr.t0
%t6 = add i32 %t4, %t5
%t7 = load i32, ptr %b.addr.t1
%t8 = load i32, ptr %d.addr.t3
%t9 = sub i32 %t7, %t8
%t10 = mul i32 %t6, %t9
ret i32 %t10
}

@ -1,267 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@RADIUS = constant float 0x4016000000000000
@PI = constant float 0x400921FB60000000
@EPS = constant float 0x3EB0C6F7A0000000
@PI_HEX = constant float 0x400921FB60000000
@HEX2 = constant float 0x3FB4000000000000
@FACT = constant float 0xC0E01D0000000000
@EVAL1 = constant float 0x4057C21FC0000000
@EVAL2 = constant float 0x4041475CE0000000
@EVAL3 = constant float 0x4041475CE0000000
@CONV1 = constant float 0x406D200000000000
@CONV2 = constant float 0x40AFFE0000000000
@MAX = constant i32 1000000000
@TWO = constant i32 2
@THREE = constant i32 3
@FIVE = constant i32 5
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define float @float_abs(float %x) {
entry:
%x.addr = alloca float
store float %x, ptr %x.addr
%t0 = load float, ptr %x.addr
%t1 = sitofp i32 0 to float
%t2 = fcmp olt float %t0, %t1
br i1 %t2, label %if.then.0, label %if.end.1
if.then.0:
%t3 = load float, ptr %x.addr
%t4 = fneg float %t3
ret float %t4
if.end.1:
%t5 = load float, ptr %x.addr
ret float %t5
}
define float @circle_area(i32 %radius) {
entry:
%radius.addr = alloca i32
store i32 %radius, ptr %radius.addr
%t6 = load i32, ptr %radius.addr
%t7 = sitofp i32 %t6 to float
%t8 = fmul float 0x400921FB60000000, %t7
%t9 = load i32, ptr %radius.addr
%t10 = sitofp i32 %t9 to float
%t11 = fmul float %t8, %t10
%t12 = load i32, ptr %radius.addr
%t13 = load i32, ptr %radius.addr
%t14 = mul i32 %t12, %t13
%t15 = sitofp i32 %t14 to float
%t16 = fmul float %t15, 0x400921FB60000000
%t17 = fadd float %t11, %t16
%t18 = sitofp i32 2 to float
%t19 = fdiv float %t17, %t18
ret float %t19
}
define i32 @float_eq(float %a, float %b) {
entry:
%a.addr = alloca float
%b.addr = alloca float
store float %a, ptr %a.addr
store float %b, ptr %b.addr
%t20 = load float, ptr %a.addr
%t21 = load float, ptr %b.addr
%t22 = fsub float %t20, %t21
%t23 = call float @float_abs(float %t22)
%t24 = fcmp olt float %t23, 0x3EB0C6F7A0000000
br i1 %t24, label %if.then.2, label %if.else.3
if.then.2:
%t25 = sitofp i32 1 to float
%t26 = fmul float %t25, 0x4000000000000000
%t27 = sitofp i32 2 to float
%t28 = fdiv float %t26, %t27
%t29 = fptosi float %t28 to i32
ret i32 %t29
if.else.3:
ret i32 0
}
define void @error() {
entry:
call void @putch(i32 101)
call void @putch(i32 114)
call void @putch(i32 114)
call void @putch(i32 111)
call void @putch(i32 114)
call void @putch(i32 10)
ret void
}
define void @ok() {
entry:
call void @putch(i32 111)
call void @putch(i32 107)
call void @putch(i32 10)
ret void
}
define void @assert(i32 %cond) {
entry:
%cond.addr = alloca i32
store i32 %cond, ptr %cond.addr
%t30 = load i32, ptr %cond.addr
%t31 = icmp ne i32 %t30, 0
%t32 = xor i1 %t31, 1
%t33 = zext i1 %t32 to i32
%t34 = icmp ne i32 %t33, 0
br i1 %t34, label %if.then.4, label %if.else.5
if.then.4:
call void @error()
br label %if.end.6
if.else.5:
call void @ok()
br label %if.end.6
if.end.6:
ret void
}
define void @assert_not(i32 %cond) {
entry:
%cond.addr = alloca i32
store i32 %cond, ptr %cond.addr
%t35 = load i32, ptr %cond.addr
%t36 = icmp ne i32 %t35, 0
br i1 %t36, label %if.then.7, label %if.else.8
if.then.7:
call void @error()
br label %if.end.9
if.else.8:
call void @ok()
br label %if.end.9
if.end.9:
ret void
}
define i32 @main() {
entry:
%i.addr.t57 = alloca i32
%p.addr.t58 = alloca i32
%arr.addr.t59 = alloca [10 x float]
%len.addr.t63 = alloca i32
%input.addr.t68 = alloca float
%area.addr.t70 = alloca float
%area_trunc.addr.t75 = alloca float
%t37 = call i32 @float_eq(float 0x3FB4000000000000, float 0xC0E01D0000000000)
call void @assert_not(i32 %t37)
%t38 = call i32 @float_eq(float 0x4057C21FC0000000, float 0x4041475CE0000000)
call void @assert_not(i32 %t38)
%t39 = call i32 @float_eq(float 0x4041475CE0000000, float 0x4041475CE0000000)
call void @assert(i32 %t39)
%t40 = fptosi float 0x4016000000000000 to i32
%t41 = call float @circle_area(i32 %t40)
%t42 = call float @circle_area(i32 5)
%t43 = call i32 @float_eq(float %t41, float %t42)
call void @assert(i32 %t43)
%t44 = call i32 @float_eq(float 0x406D200000000000, float 0x40AFFE0000000000)
call void @assert_not(i32 %t44)
%t45 = fcmp one float 0x3FF8000000000000, 0x0000000000000000
br i1 %t45, label %if.then.10, label %if.end.11
if.then.10:
call void @ok()
br label %if.end.11
if.end.11:
%t46 = fcmp one float 0x400A666660000000, 0x0000000000000000
%t47 = xor i1 %t46, 1
%t48 = zext i1 %t47 to i32
%t49 = icmp ne i32 %t48, 0
%t50 = xor i1 %t49, 1
%t51 = zext i1 %t50 to i32
%t52 = icmp ne i32 %t51, 0
br i1 %t52, label %if.then.12, label %if.end.13
if.then.12:
call void @ok()
br label %if.end.13
if.end.13:
%t53 = fcmp one float 0x0000000000000000, 0x0000000000000000
br i1 %t53, label %land.rhs.16, label %if.end.15
if.then.14:
call void @error()
br label %if.end.15
if.end.15:
%t55 = icmp ne i32 0, 0
br i1 %t55, label %if.then.17, label %lor.rhs.19
land.rhs.16:
%t54 = icmp ne i32 3, 0
br i1 %t54, label %if.then.14, label %if.end.15
if.then.17:
call void @ok()
br label %if.end.18
if.end.18:
store i32 1, ptr %i.addr.t57
store i32 0, ptr %p.addr.t58
call void @llvm.memset.p0.i32(ptr %arr.addr.t59, i8 0, i32 40, i1 0)
%t60 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
store float 0x3FF0000000000000, ptr %t60
%t61 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 1
%t62 = sitofp i32 2 to float
store float %t62, ptr %t61
%t64 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
%t65 = call i32 @getfarray(ptr %t64)
store i32 %t65, ptr %len.addr.t63
br label %while.cond.20
lor.rhs.19:
%t56 = fcmp one float 0x3FD3333340000000, 0x0000000000000000
br i1 %t56, label %if.then.17, label %if.end.18
while.cond.20:
%t66 = load i32, ptr %i.addr.t57
%t67 = icmp slt i32 %t66, 1000000000
br i1 %t67, label %while.body.21, label %while.end.22
while.body.21:
%t69 = call float @getfloat()
store float %t69, ptr %input.addr.t68
%t71 = load float, ptr %input.addr.t68
%t72 = fmul float 0x400921FB60000000, %t71
%t73 = load float, ptr %input.addr.t68
%t74 = fmul float %t72, %t73
store float %t74, ptr %area.addr.t70
%t76 = load float, ptr %input.addr.t68
%t77 = fptosi float %t76 to i32
%t78 = call float @circle_area(i32 %t77)
store float %t78, ptr %area_trunc.addr.t75
%t79 = load i32, ptr %p.addr.t58
%t80 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 %t79
%t81 = load i32, ptr %p.addr.t58
%t82 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 %t81
%t83 = load float, ptr %t82
%t84 = load float, ptr %input.addr.t68
%t85 = fadd float %t83, %t84
store float %t85, ptr %t80
%t86 = load float, ptr %area.addr.t70
call void @putfloat(float %t86)
call void @putch(i32 32)
%t87 = load float, ptr %area_trunc.addr.t75
%t88 = fptosi float %t87 to i32
call void @putint(i32 %t88)
call void @putch(i32 10)
%t89 = load i32, ptr %i.addr.t57
%t90 = fneg float 0x4024000000000000
%t91 = fneg float %t90
%t92 = sitofp i32 %t89 to float
%t93 = fmul float %t92, %t91
%t94 = fptosi float %t93 to i32
store i32 %t94, ptr %i.addr.t57
%t95 = load i32, ptr %p.addr.t58
%t96 = add i32 %t95, 1
store i32 %t96, ptr %p.addr.t58
br label %while.cond.20
while.end.22:
%t97 = load i32, ptr %len.addr.t63
%t98 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
call void @putfarray(i32 %t97, ptr %t98)
ret i32 0
}

@ -1,267 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@RADIUS = constant float 0x4016000000000000
@PI = constant float 0x400921FB60000000
@EPS = constant float 0x3EB0C6F7A0000000
@PI_HEX = constant float 0x400921FB60000000
@HEX2 = constant float 0x3FB4000000000000
@FACT = constant float 0xC0E01D0000000000
@EVAL1 = constant float 0x4057C21FC0000000
@EVAL2 = constant float 0x4041475CE0000000
@EVAL3 = constant float 0x4041475CE0000000
@CONV1 = constant float 0x406D200000000000
@CONV2 = constant float 0x40AFFE0000000000
@MAX = constant i32 1000000000
@TWO = constant i32 2
@THREE = constant i32 3
@FIVE = constant i32 5
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define float @float_abs(float %x) {
entry:
%x.addr = alloca float
store float %x, ptr %x.addr
%t0 = load float, ptr %x.addr
%t1 = sitofp i32 0 to float
%t2 = fcmp olt float %t0, %t1
br i1 %t2, label %if.then.0, label %if.end.1
if.then.0:
%t3 = load float, ptr %x.addr
%t4 = fneg float %t3
ret float %t4
if.end.1:
%t5 = load float, ptr %x.addr
ret float %t5
}
define float @circle_area(i32 %radius) {
entry:
%radius.addr = alloca i32
store i32 %radius, ptr %radius.addr
%t6 = load i32, ptr %radius.addr
%t7 = sitofp i32 %t6 to float
%t8 = fmul float 0x400921FB60000000, %t7
%t9 = load i32, ptr %radius.addr
%t10 = sitofp i32 %t9 to float
%t11 = fmul float %t8, %t10
%t12 = load i32, ptr %radius.addr
%t13 = load i32, ptr %radius.addr
%t14 = mul i32 %t12, %t13
%t15 = sitofp i32 %t14 to float
%t16 = fmul float %t15, 0x400921FB60000000
%t17 = fadd float %t11, %t16
%t18 = sitofp i32 2 to float
%t19 = fdiv float %t17, %t18
ret float %t19
}
define i32 @float_eq(float %a, float %b) {
entry:
%a.addr = alloca float
%b.addr = alloca float
store float %a, ptr %a.addr
store float %b, ptr %b.addr
%t20 = load float, ptr %a.addr
%t21 = load float, ptr %b.addr
%t22 = fsub float %t20, %t21
%t23 = call float @float_abs(float %t22)
%t24 = fcmp olt float %t23, 0x3EB0C6F7A0000000
br i1 %t24, label %if.then.2, label %if.else.3
if.then.2:
%t25 = sitofp i32 1 to float
%t26 = fmul float %t25, 0x4000000000000000
%t27 = sitofp i32 2 to float
%t28 = fdiv float %t26, %t27
%t29 = fptosi float %t28 to i32
ret i32 %t29
if.else.3:
ret i32 0
}
define void @error() {
entry:
call void @putch(i32 101)
call void @putch(i32 114)
call void @putch(i32 114)
call void @putch(i32 111)
call void @putch(i32 114)
call void @putch(i32 10)
ret void
}
define void @ok() {
entry:
call void @putch(i32 111)
call void @putch(i32 107)
call void @putch(i32 10)
ret void
}
define void @assert(i32 %cond) {
entry:
%cond.addr = alloca i32
store i32 %cond, ptr %cond.addr
%t30 = load i32, ptr %cond.addr
%t31 = icmp ne i32 %t30, 0
%t32 = xor i1 %t31, 1
%t33 = zext i1 %t32 to i32
%t34 = icmp ne i32 %t33, 0
br i1 %t34, label %if.then.4, label %if.else.5
if.then.4:
call void @error()
br label %if.end.6
if.else.5:
call void @ok()
br label %if.end.6
if.end.6:
ret void
}
define void @assert_not(i32 %cond) {
entry:
%cond.addr = alloca i32
store i32 %cond, ptr %cond.addr
%t35 = load i32, ptr %cond.addr
%t36 = icmp ne i32 %t35, 0
br i1 %t36, label %if.then.7, label %if.else.8
if.then.7:
call void @error()
br label %if.end.9
if.else.8:
call void @ok()
br label %if.end.9
if.end.9:
ret void
}
define i32 @main() {
entry:
%i.addr.t57 = alloca i32
%p.addr.t58 = alloca i32
%arr.addr.t59 = alloca [10 x float]
%len.addr.t63 = alloca i32
%input.addr.t68 = alloca float
%area.addr.t70 = alloca float
%area_trunc.addr.t75 = alloca float
%t37 = call i32 @float_eq(float 0x3FB4000000000000, float 0xC0E01D0000000000)
call void @assert_not(i32 %t37)
%t38 = call i32 @float_eq(float 0x4057C21FC0000000, float 0x4041475CE0000000)
call void @assert_not(i32 %t38)
%t39 = call i32 @float_eq(float 0x4041475CE0000000, float 0x4041475CE0000000)
call void @assert(i32 %t39)
%t40 = fptosi float 0x4016000000000000 to i32
%t41 = call float @circle_area(i32 %t40)
%t42 = call float @circle_area(i32 5)
%t43 = call i32 @float_eq(float %t41, float %t42)
call void @assert(i32 %t43)
%t44 = call i32 @float_eq(float 0x406D200000000000, float 0x40AFFE0000000000)
call void @assert_not(i32 %t44)
%t45 = fcmp one float 0x3FF8000000000000, 0x0000000000000000
br i1 %t45, label %if.then.10, label %if.end.11
if.then.10:
call void @ok()
br label %if.end.11
if.end.11:
%t46 = fcmp one float 0x400A666660000000, 0x0000000000000000
%t47 = xor i1 %t46, 1
%t48 = zext i1 %t47 to i32
%t49 = icmp ne i32 %t48, 0
%t50 = xor i1 %t49, 1
%t51 = zext i1 %t50 to i32
%t52 = icmp ne i32 %t51, 0
br i1 %t52, label %if.then.12, label %if.end.13
if.then.12:
call void @ok()
br label %if.end.13
if.end.13:
%t53 = fcmp one float 0x0000000000000000, 0x0000000000000000
br i1 %t53, label %land.rhs.16, label %if.end.15
if.then.14:
call void @error()
br label %if.end.15
if.end.15:
%t55 = icmp ne i32 0, 0
br i1 %t55, label %if.then.17, label %lor.rhs.19
land.rhs.16:
%t54 = icmp ne i32 3, 0
br i1 %t54, label %if.then.14, label %if.end.15
if.then.17:
call void @ok()
br label %if.end.18
if.end.18:
store i32 1, ptr %i.addr.t57
store i32 0, ptr %p.addr.t58
call void @llvm.memset.p0.i32(ptr %arr.addr.t59, i8 0, i32 40, i1 0)
%t60 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
store float 0x3FF0000000000000, ptr %t60
%t61 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 1
%t62 = sitofp i32 2 to float
store float %t62, ptr %t61
%t64 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
%t65 = call i32 @getfarray(ptr %t64)
store i32 %t65, ptr %len.addr.t63
br label %while.cond.20
lor.rhs.19:
%t56 = fcmp one float 0x3FD3333340000000, 0x0000000000000000
br i1 %t56, label %if.then.17, label %if.end.18
while.cond.20:
%t66 = load i32, ptr %i.addr.t57
%t67 = icmp slt i32 %t66, 1000000000
br i1 %t67, label %while.body.21, label %while.end.22
while.body.21:
%t69 = call float @getfloat()
store float %t69, ptr %input.addr.t68
%t71 = load float, ptr %input.addr.t68
%t72 = fmul float 0x400921FB60000000, %t71
%t73 = load float, ptr %input.addr.t68
%t74 = fmul float %t72, %t73
store float %t74, ptr %area.addr.t70
%t76 = load float, ptr %input.addr.t68
%t77 = fptosi float %t76 to i32
%t78 = call float @circle_area(i32 %t77)
store float %t78, ptr %area_trunc.addr.t75
%t79 = load i32, ptr %p.addr.t58
%t80 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 %t79
%t81 = load i32, ptr %p.addr.t58
%t82 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 %t81
%t83 = load float, ptr %t82
%t84 = load float, ptr %input.addr.t68
%t85 = fadd float %t83, %t84
store float %t85, ptr %t80
%t86 = load float, ptr %area.addr.t70
call void @putfloat(float %t86)
call void @putch(i32 32)
%t87 = load float, ptr %area_trunc.addr.t75
%t88 = fptosi float %t87 to i32
call void @putint(i32 %t88)
call void @putch(i32 10)
%t89 = load i32, ptr %i.addr.t57
%t90 = fneg float 0x4024000000000000
%t91 = fneg float %t90
%t92 = sitofp i32 %t89 to float
%t93 = fmul float %t92, %t91
%t94 = fptosi float %t93 to i32
store i32 %t94, ptr %i.addr.t57
%t95 = load i32, ptr %p.addr.t58
%t96 = add i32 %t95, 1
store i32 %t96, ptr %p.addr.t58
br label %while.cond.20
while.end.22:
%t97 = load i32, ptr %len.addr.t63
%t98 = getelementptr [10 x float], ptr %arr.addr.t59, i32 0, i32 0
call void @putfarray(i32 %t97, ptr %t98)
ret i32 0
}

@ -1,18 +0,0 @@
ok
ok
ok
ok
ok
ok
ok
ok
0x1.e691e6p+1 3
0x1.e691e6p+3 12
0x1.11b21p+5 28
0x1.e691e6p+5 50
0x1.7c21fcp+6 78
0x1.11b21p+7 113
0x1.7487b2p+7 153
0x1.e691e6p+7 201
0x1.33e85p+8 254
10: 0x1.333334p+0 0x1.333334p+1 0x1.ccccccp+1 0x1.333334p+2 0x1.8p+2 0x1.ccccccp+2 0x1.0cccccp+3 0x1.333334p+3 0x1.599998p+3 0x1p+0

@ -1,25 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
store i32 1, ptr %a.addr.t0
store i32 2, ptr %b.addr.t1
%t2 = load i32, ptr %a.addr.t0
%t3 = load i32, ptr %b.addr.t1
%t4 = add i32 %t2, %t3
ret i32 %t4
}

@ -1,25 +0,0 @@
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%a.addr.t0 = alloca i32
%b.addr.t1 = alloca i32
store i32 1, ptr %a.addr.t0
store i32 2, ptr %b.addr.t1
%t2 = load i32, ptr %a.addr.t0
%t3 = load i32, ptr %b.addr.t1
%t4 = add i32 %t2, %t3
ret i32 %t4
}

@ -1,271 +0,0 @@
@N = constant i32 1024
@A = global [1024 x [1024 x i32]] zeroinitializer
@B = global [1024 x [1024 x i32]] zeroinitializer
@C = global [1024 x [1024 x i32]] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @mm(i32 %n, ptr %A, ptr %B, ptr %C) {
entry:
%n.addr = alloca i32
%i.addr.t0 = alloca i32
%j.addr.t1 = alloca i32
%k.addr.t2 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
store i32 0, ptr %k.addr.t2
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
br label %while.cond.0
while.cond.0:
%t3 = load i32, ptr %i.addr.t0
%t4 = load i32, ptr %n.addr
%t5 = icmp slt i32 %t3, %t4
br i1 %t5, label %while.body.1, label %while.end.2
while.body.1:
store i32 0, ptr %j.addr.t1
br label %while.cond.3
while.end.2:
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
store i32 0, ptr %k.addr.t2
br label %while.cond.6
while.cond.3:
%t6 = load i32, ptr %j.addr.t1
%t7 = load i32, ptr %n.addr
%t8 = icmp slt i32 %t6, %t7
br i1 %t8, label %while.body.4, label %while.end.5
while.body.4:
%t9 = load i32, ptr %i.addr.t0
%t10 = load i32, ptr %j.addr.t1
%t11 = getelementptr [1024 x i32], ptr %C, i32 %t9, i32 %t10
store i32 0, ptr %t11
%t12 = load i32, ptr %j.addr.t1
%t13 = add i32 %t12, 1
store i32 %t13, ptr %j.addr.t1
br label %while.cond.3
while.end.5:
%t14 = load i32, ptr %i.addr.t0
%t15 = add i32 %t14, 1
store i32 %t15, ptr %i.addr.t0
br label %while.cond.0
while.cond.6:
%t16 = load i32, ptr %k.addr.t2
%t17 = load i32, ptr %n.addr
%t18 = icmp slt i32 %t16, %t17
br i1 %t18, label %while.body.7, label %while.end.8
while.body.7:
store i32 0, ptr %i.addr.t0
br label %while.cond.9
while.end.8:
ret void
while.cond.9:
%t19 = load i32, ptr %i.addr.t0
%t20 = load i32, ptr %n.addr
%t21 = icmp slt i32 %t19, %t20
br i1 %t21, label %while.body.10, label %while.end.11
while.body.10:
%t22 = load i32, ptr %i.addr.t0
%t23 = load i32, ptr %k.addr.t2
%t24 = getelementptr [1024 x i32], ptr %A, i32 %t22, i32 %t23
%t25 = load i32, ptr %t24
%t26 = icmp eq i32 %t25, 0
br i1 %t26, label %if.then.12, label %if.end.13
while.end.11:
%t53 = load i32, ptr %k.addr.t2
%t54 = add i32 %t53, 1
store i32 %t54, ptr %k.addr.t2
br label %while.cond.6
if.then.12:
%t27 = load i32, ptr %i.addr.t0
%t28 = add i32 %t27, 1
store i32 %t28, ptr %i.addr.t0
br label %while.cond.9
if.end.13:
store i32 0, ptr %j.addr.t1
br label %while.cond.14
while.cond.14:
%t29 = load i32, ptr %j.addr.t1
%t30 = load i32, ptr %n.addr
%t31 = icmp slt i32 %t29, %t30
br i1 %t31, label %while.body.15, label %while.end.16
while.body.15:
%t32 = load i32, ptr %i.addr.t0
%t33 = load i32, ptr %j.addr.t1
%t34 = getelementptr [1024 x i32], ptr %C, i32 %t32, i32 %t33
%t35 = load i32, ptr %i.addr.t0
%t36 = load i32, ptr %j.addr.t1
%t37 = getelementptr [1024 x i32], ptr %C, i32 %t35, i32 %t36
%t38 = load i32, ptr %t37
%t39 = load i32, ptr %i.addr.t0
%t40 = load i32, ptr %k.addr.t2
%t41 = getelementptr [1024 x i32], ptr %A, i32 %t39, i32 %t40
%t42 = load i32, ptr %t41
%t43 = load i32, ptr %k.addr.t2
%t44 = load i32, ptr %j.addr.t1
%t45 = getelementptr [1024 x i32], ptr %B, i32 %t43, i32 %t44
%t46 = load i32, ptr %t45
%t47 = mul i32 %t42, %t46
%t48 = add i32 %t38, %t47
store i32 %t48, ptr %t34
%t49 = load i32, ptr %j.addr.t1
%t50 = add i32 %t49, 1
store i32 %t50, ptr %j.addr.t1
br label %while.cond.14
while.end.16:
%t51 = load i32, ptr %i.addr.t0
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t0
br label %while.cond.9
}
define i32 @main() {
entry:
%n.addr.t55 = alloca i32
%i.addr.t57 = alloca i32
%j.addr.t58 = alloca i32
%ans.addr.t99 = alloca i32
%t56 = call i32 @getint()
store i32 %t56, ptr %n.addr.t55
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
br label %while.cond.17
while.cond.17:
%t59 = load i32, ptr %i.addr.t57
%t60 = load i32, ptr %n.addr.t55
%t61 = icmp slt i32 %t59, %t60
br i1 %t61, label %while.body.18, label %while.end.19
while.body.18:
store i32 0, ptr %j.addr.t58
br label %while.cond.20
while.end.19:
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
br label %while.cond.23
while.cond.20:
%t62 = load i32, ptr %j.addr.t58
%t63 = load i32, ptr %n.addr.t55
%t64 = icmp slt i32 %t62, %t63
br i1 %t64, label %while.body.21, label %while.end.22
while.body.21:
%t65 = load i32, ptr %i.addr.t57
%t66 = load i32, ptr %j.addr.t58
%t67 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t65, i32 %t66
%t68 = call i32 @getint()
store i32 %t68, ptr %t67
%t69 = load i32, ptr %j.addr.t58
%t70 = add i32 %t69, 1
store i32 %t70, ptr %j.addr.t58
br label %while.cond.20
while.end.22:
%t71 = load i32, ptr %i.addr.t57
%t72 = add i32 %t71, 1
store i32 %t72, ptr %i.addr.t57
br label %while.cond.17
while.cond.23:
%t73 = load i32, ptr %i.addr.t57
%t74 = load i32, ptr %n.addr.t55
%t75 = icmp slt i32 %t73, %t74
br i1 %t75, label %while.body.24, label %while.end.25
while.body.24:
store i32 0, ptr %j.addr.t58
br label %while.cond.26
while.end.25:
call void @starttime()
store i32 0, ptr %i.addr.t57
br label %while.cond.29
while.cond.26:
%t76 = load i32, ptr %j.addr.t58
%t77 = load i32, ptr %n.addr.t55
%t78 = icmp slt i32 %t76, %t77
br i1 %t78, label %while.body.27, label %while.end.28
while.body.27:
%t79 = load i32, ptr %i.addr.t57
%t80 = load i32, ptr %j.addr.t58
%t81 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t79, i32 %t80
%t82 = call i32 @getint()
store i32 %t82, ptr %t81
%t83 = load i32, ptr %j.addr.t58
%t84 = add i32 %t83, 1
store i32 %t84, ptr %j.addr.t58
br label %while.cond.26
while.end.28:
%t85 = load i32, ptr %i.addr.t57
%t86 = add i32 %t85, 1
store i32 %t86, ptr %i.addr.t57
br label %while.cond.23
while.cond.29:
%t87 = load i32, ptr %i.addr.t57
%t88 = icmp slt i32 %t87, 5
br i1 %t88, label %while.body.30, label %while.end.31
while.body.30:
%t89 = load i32, ptr %n.addr.t55
%t90 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 0
%t91 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 0
%t92 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 0
call void @mm(i32 %t89, ptr %t90, ptr %t91, ptr %t92)
%t93 = load i32, ptr %n.addr.t55
%t94 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 0
%t95 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 0
%t96 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 0
call void @mm(i32 %t93, ptr %t94, ptr %t95, ptr %t96)
%t97 = load i32, ptr %i.addr.t57
%t98 = add i32 %t97, 1
store i32 %t98, ptr %i.addr.t57
br label %while.cond.29
while.end.31:
store i32 0, ptr %ans.addr.t99
store i32 0, ptr %i.addr.t57
br label %while.cond.32
while.cond.32:
%t100 = load i32, ptr %i.addr.t57
%t101 = load i32, ptr %n.addr.t55
%t102 = icmp slt i32 %t100, %t101
br i1 %t102, label %while.body.33, label %while.end.34
while.body.33:
store i32 0, ptr %j.addr.t58
br label %while.cond.35
while.end.34:
call void @stoptime()
%t116 = load i32, ptr %ans.addr.t99
call void @putint(i32 %t116)
call void @putch(i32 10)
ret i32 0
while.cond.35:
%t103 = load i32, ptr %j.addr.t58
%t104 = load i32, ptr %n.addr.t55
%t105 = icmp slt i32 %t103, %t104
br i1 %t105, label %while.body.36, label %while.end.37
while.body.36:
%t106 = load i32, ptr %ans.addr.t99
%t107 = load i32, ptr %i.addr.t57
%t108 = load i32, ptr %j.addr.t58
%t109 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t107, i32 %t108
%t110 = load i32, ptr %t109
%t111 = add i32 %t106, %t110
store i32 %t111, ptr %ans.addr.t99
%t112 = load i32, ptr %j.addr.t58
%t113 = add i32 %t112, 1
store i32 %t113, ptr %j.addr.t58
br label %while.cond.35
while.end.37:
%t114 = load i32, ptr %i.addr.t57
%t115 = add i32 %t114, 1
store i32 %t115, ptr %i.addr.t57
br label %while.cond.32
}

@ -1,271 +0,0 @@
@N = constant i32 1024
@A = global [1024 x [1024 x i32]] zeroinitializer
@B = global [1024 x [1024 x i32]] zeroinitializer
@C = global [1024 x [1024 x i32]] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @mm(i32 %n, ptr %A, ptr %B, ptr %C) {
entry:
%n.addr = alloca i32
%i.addr.t0 = alloca i32
%j.addr.t1 = alloca i32
%k.addr.t2 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
store i32 0, ptr %k.addr.t2
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
br label %while.cond.0
while.cond.0:
%t3 = load i32, ptr %i.addr.t0
%t4 = load i32, ptr %n.addr
%t5 = icmp slt i32 %t3, %t4
br i1 %t5, label %while.body.1, label %while.end.2
while.body.1:
store i32 0, ptr %j.addr.t1
br label %while.cond.3
while.end.2:
store i32 0, ptr %i.addr.t0
store i32 0, ptr %j.addr.t1
store i32 0, ptr %k.addr.t2
br label %while.cond.6
while.cond.3:
%t6 = load i32, ptr %j.addr.t1
%t7 = load i32, ptr %n.addr
%t8 = icmp slt i32 %t6, %t7
br i1 %t8, label %while.body.4, label %while.end.5
while.body.4:
%t9 = load i32, ptr %i.addr.t0
%t10 = load i32, ptr %j.addr.t1
%t11 = getelementptr [1024 x i32], ptr %C, i32 %t9, i32 %t10
store i32 0, ptr %t11
%t12 = load i32, ptr %j.addr.t1
%t13 = add i32 %t12, 1
store i32 %t13, ptr %j.addr.t1
br label %while.cond.3
while.end.5:
%t14 = load i32, ptr %i.addr.t0
%t15 = add i32 %t14, 1
store i32 %t15, ptr %i.addr.t0
br label %while.cond.0
while.cond.6:
%t16 = load i32, ptr %k.addr.t2
%t17 = load i32, ptr %n.addr
%t18 = icmp slt i32 %t16, %t17
br i1 %t18, label %while.body.7, label %while.end.8
while.body.7:
store i32 0, ptr %i.addr.t0
br label %while.cond.9
while.end.8:
ret void
while.cond.9:
%t19 = load i32, ptr %i.addr.t0
%t20 = load i32, ptr %n.addr
%t21 = icmp slt i32 %t19, %t20
br i1 %t21, label %while.body.10, label %while.end.11
while.body.10:
%t22 = load i32, ptr %i.addr.t0
%t23 = load i32, ptr %k.addr.t2
%t24 = getelementptr [1024 x i32], ptr %A, i32 %t22, i32 %t23
%t25 = load i32, ptr %t24
%t26 = icmp eq i32 %t25, 0
br i1 %t26, label %if.then.12, label %if.end.13
while.end.11:
%t53 = load i32, ptr %k.addr.t2
%t54 = add i32 %t53, 1
store i32 %t54, ptr %k.addr.t2
br label %while.cond.6
if.then.12:
%t27 = load i32, ptr %i.addr.t0
%t28 = add i32 %t27, 1
store i32 %t28, ptr %i.addr.t0
br label %while.cond.9
if.end.13:
store i32 0, ptr %j.addr.t1
br label %while.cond.14
while.cond.14:
%t29 = load i32, ptr %j.addr.t1
%t30 = load i32, ptr %n.addr
%t31 = icmp slt i32 %t29, %t30
br i1 %t31, label %while.body.15, label %while.end.16
while.body.15:
%t32 = load i32, ptr %i.addr.t0
%t33 = load i32, ptr %j.addr.t1
%t34 = getelementptr [1024 x i32], ptr %C, i32 %t32, i32 %t33
%t35 = load i32, ptr %i.addr.t0
%t36 = load i32, ptr %j.addr.t1
%t37 = getelementptr [1024 x i32], ptr %C, i32 %t35, i32 %t36
%t38 = load i32, ptr %t37
%t39 = load i32, ptr %i.addr.t0
%t40 = load i32, ptr %k.addr.t2
%t41 = getelementptr [1024 x i32], ptr %A, i32 %t39, i32 %t40
%t42 = load i32, ptr %t41
%t43 = load i32, ptr %k.addr.t2
%t44 = load i32, ptr %j.addr.t1
%t45 = getelementptr [1024 x i32], ptr %B, i32 %t43, i32 %t44
%t46 = load i32, ptr %t45
%t47 = mul i32 %t42, %t46
%t48 = add i32 %t38, %t47
store i32 %t48, ptr %t34
%t49 = load i32, ptr %j.addr.t1
%t50 = add i32 %t49, 1
store i32 %t50, ptr %j.addr.t1
br label %while.cond.14
while.end.16:
%t51 = load i32, ptr %i.addr.t0
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t0
br label %while.cond.9
}
define i32 @main() {
entry:
%n.addr.t55 = alloca i32
%i.addr.t57 = alloca i32
%j.addr.t58 = alloca i32
%ans.addr.t99 = alloca i32
%t56 = call i32 @getint()
store i32 %t56, ptr %n.addr.t55
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
br label %while.cond.17
while.cond.17:
%t59 = load i32, ptr %i.addr.t57
%t60 = load i32, ptr %n.addr.t55
%t61 = icmp slt i32 %t59, %t60
br i1 %t61, label %while.body.18, label %while.end.19
while.body.18:
store i32 0, ptr %j.addr.t58
br label %while.cond.20
while.end.19:
store i32 0, ptr %i.addr.t57
store i32 0, ptr %j.addr.t58
br label %while.cond.23
while.cond.20:
%t62 = load i32, ptr %j.addr.t58
%t63 = load i32, ptr %n.addr.t55
%t64 = icmp slt i32 %t62, %t63
br i1 %t64, label %while.body.21, label %while.end.22
while.body.21:
%t65 = load i32, ptr %i.addr.t57
%t66 = load i32, ptr %j.addr.t58
%t67 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t65, i32 %t66
%t68 = call i32 @getint()
store i32 %t68, ptr %t67
%t69 = load i32, ptr %j.addr.t58
%t70 = add i32 %t69, 1
store i32 %t70, ptr %j.addr.t58
br label %while.cond.20
while.end.22:
%t71 = load i32, ptr %i.addr.t57
%t72 = add i32 %t71, 1
store i32 %t72, ptr %i.addr.t57
br label %while.cond.17
while.cond.23:
%t73 = load i32, ptr %i.addr.t57
%t74 = load i32, ptr %n.addr.t55
%t75 = icmp slt i32 %t73, %t74
br i1 %t75, label %while.body.24, label %while.end.25
while.body.24:
store i32 0, ptr %j.addr.t58
br label %while.cond.26
while.end.25:
call void @starttime()
store i32 0, ptr %i.addr.t57
br label %while.cond.29
while.cond.26:
%t76 = load i32, ptr %j.addr.t58
%t77 = load i32, ptr %n.addr.t55
%t78 = icmp slt i32 %t76, %t77
br i1 %t78, label %while.body.27, label %while.end.28
while.body.27:
%t79 = load i32, ptr %i.addr.t57
%t80 = load i32, ptr %j.addr.t58
%t81 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t79, i32 %t80
%t82 = call i32 @getint()
store i32 %t82, ptr %t81
%t83 = load i32, ptr %j.addr.t58
%t84 = add i32 %t83, 1
store i32 %t84, ptr %j.addr.t58
br label %while.cond.26
while.end.28:
%t85 = load i32, ptr %i.addr.t57
%t86 = add i32 %t85, 1
store i32 %t86, ptr %i.addr.t57
br label %while.cond.23
while.cond.29:
%t87 = load i32, ptr %i.addr.t57
%t88 = icmp slt i32 %t87, 5
br i1 %t88, label %while.body.30, label %while.end.31
while.body.30:
%t89 = load i32, ptr %n.addr.t55
%t90 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 0
%t91 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 0
%t92 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 0
call void @mm(i32 %t89, ptr %t90, ptr %t91, ptr %t92)
%t93 = load i32, ptr %n.addr.t55
%t94 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 0
%t95 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 0
%t96 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 0
call void @mm(i32 %t93, ptr %t94, ptr %t95, ptr %t96)
%t97 = load i32, ptr %i.addr.t57
%t98 = add i32 %t97, 1
store i32 %t98, ptr %i.addr.t57
br label %while.cond.29
while.end.31:
store i32 0, ptr %ans.addr.t99
store i32 0, ptr %i.addr.t57
br label %while.cond.32
while.cond.32:
%t100 = load i32, ptr %i.addr.t57
%t101 = load i32, ptr %n.addr.t55
%t102 = icmp slt i32 %t100, %t101
br i1 %t102, label %while.body.33, label %while.end.34
while.body.33:
store i32 0, ptr %j.addr.t58
br label %while.cond.35
while.end.34:
call void @stoptime()
%t116 = load i32, ptr %ans.addr.t99
call void @putint(i32 %t116)
call void @putch(i32 10)
ret i32 0
while.cond.35:
%t103 = load i32, ptr %j.addr.t58
%t104 = load i32, ptr %n.addr.t55
%t105 = icmp slt i32 %t103, %t104
br i1 %t105, label %while.body.36, label %while.end.37
while.body.36:
%t106 = load i32, ptr %ans.addr.t99
%t107 = load i32, ptr %i.addr.t57
%t108 = load i32, ptr %j.addr.t58
%t109 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t107, i32 %t108
%t110 = load i32, ptr %t109
%t111 = add i32 %t106, %t110
store i32 %t111, ptr %ans.addr.t99
%t112 = load i32, ptr %j.addr.t58
%t113 = add i32 %t112, 1
store i32 %t113, ptr %j.addr.t58
br label %while.cond.35
while.end.37:
%t114 = load i32, ptr %i.addr.t57
%t115 = add i32 %t114, 1
store i32 %t115, ptr %i.addr.t57
br label %while.cond.32
}

@ -1,206 +0,0 @@
@x = global i32 0
@N = constant i32 2010
@A = global [2010 x [2010 x i32]] zeroinitializer
@B = global [2010 x i32] zeroinitializer
@C = global [2010 x i32] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @mv(i32 %n, ptr %A, ptr %b, ptr %res) {
entry:
%n.addr = alloca i32
%x.addr.t0 = alloca i32
%y.addr.t1 = alloca i32
%i.addr.t2 = alloca i32
%j.addr.t3 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %x.addr.t0
store i32 0, ptr %y.addr.t1
store i32 0, ptr %y.addr.t1
store i32 11, ptr %x.addr.t0
store i32 0, ptr %i.addr.t2
store i32 0, ptr %j.addr.t3
store i32 0, ptr %i.addr.t2
br label %while.cond.0
while.cond.0:
%t4 = load i32, ptr %i.addr.t2
%t5 = load i32, ptr %n.addr
%t6 = icmp slt i32 %t4, %t5
br i1 %t6, label %while.body.1, label %while.end.2
while.body.1:
%t7 = load i32, ptr %i.addr.t2
%t8 = getelementptr i32, ptr %res, i32 %t7
store i32 0, ptr %t8
%t9 = load i32, ptr %i.addr.t2
%t10 = add i32 %t9, 1
store i32 %t10, ptr %i.addr.t2
br label %while.cond.0
while.end.2:
store i32 0, ptr %i.addr.t2
store i32 0, ptr %j.addr.t3
br label %while.cond.3
while.cond.3:
%t11 = load i32, ptr %i.addr.t2
%t12 = load i32, ptr %n.addr
%t13 = icmp slt i32 %t11, %t12
br i1 %t13, label %while.body.4, label %while.end.5
while.body.4:
store i32 0, ptr %j.addr.t3
br label %while.cond.6
while.end.5:
ret void
while.cond.6:
%t14 = load i32, ptr %j.addr.t3
%t15 = load i32, ptr %n.addr
%t16 = icmp slt i32 %t14, %t15
br i1 %t16, label %while.body.7, label %while.end.8
while.body.7:
%t17 = load i32, ptr %i.addr.t2
%t18 = load i32, ptr %j.addr.t3
%t19 = getelementptr [2010 x i32], ptr %A, i32 %t17, i32 %t18
%t20 = load i32, ptr %t19
%t21 = icmp eq i32 %t20, 0
br i1 %t21, label %if.then.9, label %if.else.10
while.end.8:
%t50 = load i32, ptr %i.addr.t2
%t51 = add i32 %t50, 1
store i32 %t51, ptr %i.addr.t2
br label %while.cond.3
if.then.9:
%t22 = load i32, ptr %x.addr.t0
%t23 = load i32, ptr %i.addr.t2
%t24 = getelementptr i32, ptr %b, i32 %t23
%t25 = load i32, ptr %t24
%t26 = mul i32 %t22, %t25
%t27 = load i32, ptr %j.addr.t3
%t28 = getelementptr i32, ptr %b, i32 %t27
%t29 = load i32, ptr %t28
%t30 = add i32 %t26, %t29
store i32 %t30, ptr %x.addr.t0
%t31 = load i32, ptr %y.addr.t1
%t32 = load i32, ptr %x.addr.t0
%t33 = sub i32 %t31, %t32
store i32 %t33, ptr %y.addr.t1
br label %if.end.11
if.else.10:
%t34 = load i32, ptr %i.addr.t2
%t35 = getelementptr i32, ptr %res, i32 %t34
%t36 = load i32, ptr %i.addr.t2
%t37 = getelementptr i32, ptr %res, i32 %t36
%t38 = load i32, ptr %t37
%t39 = load i32, ptr %i.addr.t2
%t40 = load i32, ptr %j.addr.t3
%t41 = getelementptr [2010 x i32], ptr %A, i32 %t39, i32 %t40
%t42 = load i32, ptr %t41
%t43 = load i32, ptr %j.addr.t3
%t44 = getelementptr i32, ptr %b, i32 %t43
%t45 = load i32, ptr %t44
%t46 = mul i32 %t42, %t45
%t47 = add i32 %t38, %t46
store i32 %t47, ptr %t35
br label %if.end.11
if.end.11:
%t48 = load i32, ptr %j.addr.t3
%t49 = add i32 %t48, 1
store i32 %t49, ptr %j.addr.t3
br label %while.cond.6
}
define i32 @main() {
entry:
%n.addr.t52 = alloca i32
%i.addr.t54 = alloca i32
%j.addr.t55 = alloca i32
%t53 = call i32 @getint()
store i32 %t53, ptr %n.addr.t52
store i32 0, ptr %i.addr.t54
store i32 0, ptr %j.addr.t55
store i32 0, ptr %i.addr.t54
br label %while.cond.12
while.cond.12:
%t56 = load i32, ptr %i.addr.t54
%t57 = load i32, ptr %n.addr.t52
%t58 = icmp slt i32 %t56, %t57
br i1 %t58, label %while.body.13, label %while.end.14
while.body.13:
store i32 0, ptr %j.addr.t55
br label %while.cond.15
while.end.14:
store i32 0, ptr %i.addr.t54
br label %while.cond.18
while.cond.15:
%t59 = load i32, ptr %j.addr.t55
%t60 = load i32, ptr %n.addr.t52
%t61 = icmp slt i32 %t59, %t60
br i1 %t61, label %while.body.16, label %while.end.17
while.body.16:
%t62 = load i32, ptr %i.addr.t54
%t63 = load i32, ptr %j.addr.t55
%t64 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 %t62, i32 %t63
%t65 = call i32 @getint()
store i32 %t65, ptr %t64
%t66 = load i32, ptr %j.addr.t55
%t67 = add i32 %t66, 1
store i32 %t67, ptr %j.addr.t55
br label %while.cond.15
while.end.17:
%t68 = load i32, ptr %i.addr.t54
%t69 = add i32 %t68, 1
store i32 %t69, ptr %i.addr.t54
br label %while.cond.12
while.cond.18:
%t70 = load i32, ptr %i.addr.t54
%t71 = load i32, ptr %n.addr.t52
%t72 = icmp slt i32 %t70, %t71
br i1 %t72, label %while.body.19, label %while.end.20
while.body.19:
%t73 = load i32, ptr %i.addr.t54
%t74 = getelementptr [2010 x i32], ptr @B, i32 0, i32 %t73
%t75 = call i32 @getint()
store i32 %t75, ptr %t74
%t76 = load i32, ptr %i.addr.t54
%t77 = add i32 %t76, 1
store i32 %t77, ptr %i.addr.t54
br label %while.cond.18
while.end.20:
call void @starttime()
store i32 0, ptr %i.addr.t54
br label %while.cond.21
while.cond.21:
%t78 = load i32, ptr %i.addr.t54
%t79 = icmp slt i32 %t78, 50
br i1 %t79, label %while.body.22, label %while.end.23
while.body.22:
%t80 = load i32, ptr %n.addr.t52
%t81 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 0
%t82 = getelementptr [2010 x i32], ptr @B, i32 0, i32 0
%t83 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
call void @mv(i32 %t80, ptr %t81, ptr %t82, ptr %t83)
%t84 = load i32, ptr %n.addr.t52
%t85 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 0
%t86 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
%t87 = getelementptr [2010 x i32], ptr @B, i32 0, i32 0
call void @mv(i32 %t84, ptr %t85, ptr %t86, ptr %t87)
%t88 = load i32, ptr %i.addr.t54
%t89 = add i32 %t88, 1
store i32 %t89, ptr %i.addr.t54
br label %while.cond.21
while.end.23:
call void @stoptime()
%t90 = load i32, ptr %n.addr.t52
%t91 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
call void @putarray(i32 %t90, ptr %t91)
ret i32 0
}

@ -1,206 +0,0 @@
@x = global i32 0
@N = constant i32 2010
@A = global [2010 x [2010 x i32]] zeroinitializer
@B = global [2010 x i32] zeroinitializer
@C = global [2010 x i32] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @mv(i32 %n, ptr %A, ptr %b, ptr %res) {
entry:
%n.addr = alloca i32
%x.addr.t0 = alloca i32
%y.addr.t1 = alloca i32
%i.addr.t2 = alloca i32
%j.addr.t3 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %x.addr.t0
store i32 0, ptr %y.addr.t1
store i32 0, ptr %y.addr.t1
store i32 11, ptr %x.addr.t0
store i32 0, ptr %i.addr.t2
store i32 0, ptr %j.addr.t3
store i32 0, ptr %i.addr.t2
br label %while.cond.0
while.cond.0:
%t4 = load i32, ptr %i.addr.t2
%t5 = load i32, ptr %n.addr
%t6 = icmp slt i32 %t4, %t5
br i1 %t6, label %while.body.1, label %while.end.2
while.body.1:
%t7 = load i32, ptr %i.addr.t2
%t8 = getelementptr i32, ptr %res, i32 %t7
store i32 0, ptr %t8
%t9 = load i32, ptr %i.addr.t2
%t10 = add i32 %t9, 1
store i32 %t10, ptr %i.addr.t2
br label %while.cond.0
while.end.2:
store i32 0, ptr %i.addr.t2
store i32 0, ptr %j.addr.t3
br label %while.cond.3
while.cond.3:
%t11 = load i32, ptr %i.addr.t2
%t12 = load i32, ptr %n.addr
%t13 = icmp slt i32 %t11, %t12
br i1 %t13, label %while.body.4, label %while.end.5
while.body.4:
store i32 0, ptr %j.addr.t3
br label %while.cond.6
while.end.5:
ret void
while.cond.6:
%t14 = load i32, ptr %j.addr.t3
%t15 = load i32, ptr %n.addr
%t16 = icmp slt i32 %t14, %t15
br i1 %t16, label %while.body.7, label %while.end.8
while.body.7:
%t17 = load i32, ptr %i.addr.t2
%t18 = load i32, ptr %j.addr.t3
%t19 = getelementptr [2010 x i32], ptr %A, i32 %t17, i32 %t18
%t20 = load i32, ptr %t19
%t21 = icmp eq i32 %t20, 0
br i1 %t21, label %if.then.9, label %if.else.10
while.end.8:
%t50 = load i32, ptr %i.addr.t2
%t51 = add i32 %t50, 1
store i32 %t51, ptr %i.addr.t2
br label %while.cond.3
if.then.9:
%t22 = load i32, ptr %x.addr.t0
%t23 = load i32, ptr %i.addr.t2
%t24 = getelementptr i32, ptr %b, i32 %t23
%t25 = load i32, ptr %t24
%t26 = mul i32 %t22, %t25
%t27 = load i32, ptr %j.addr.t3
%t28 = getelementptr i32, ptr %b, i32 %t27
%t29 = load i32, ptr %t28
%t30 = add i32 %t26, %t29
store i32 %t30, ptr %x.addr.t0
%t31 = load i32, ptr %y.addr.t1
%t32 = load i32, ptr %x.addr.t0
%t33 = sub i32 %t31, %t32
store i32 %t33, ptr %y.addr.t1
br label %if.end.11
if.else.10:
%t34 = load i32, ptr %i.addr.t2
%t35 = getelementptr i32, ptr %res, i32 %t34
%t36 = load i32, ptr %i.addr.t2
%t37 = getelementptr i32, ptr %res, i32 %t36
%t38 = load i32, ptr %t37
%t39 = load i32, ptr %i.addr.t2
%t40 = load i32, ptr %j.addr.t3
%t41 = getelementptr [2010 x i32], ptr %A, i32 %t39, i32 %t40
%t42 = load i32, ptr %t41
%t43 = load i32, ptr %j.addr.t3
%t44 = getelementptr i32, ptr %b, i32 %t43
%t45 = load i32, ptr %t44
%t46 = mul i32 %t42, %t45
%t47 = add i32 %t38, %t46
store i32 %t47, ptr %t35
br label %if.end.11
if.end.11:
%t48 = load i32, ptr %j.addr.t3
%t49 = add i32 %t48, 1
store i32 %t49, ptr %j.addr.t3
br label %while.cond.6
}
define i32 @main() {
entry:
%n.addr.t52 = alloca i32
%i.addr.t54 = alloca i32
%j.addr.t55 = alloca i32
%t53 = call i32 @getint()
store i32 %t53, ptr %n.addr.t52
store i32 0, ptr %i.addr.t54
store i32 0, ptr %j.addr.t55
store i32 0, ptr %i.addr.t54
br label %while.cond.12
while.cond.12:
%t56 = load i32, ptr %i.addr.t54
%t57 = load i32, ptr %n.addr.t52
%t58 = icmp slt i32 %t56, %t57
br i1 %t58, label %while.body.13, label %while.end.14
while.body.13:
store i32 0, ptr %j.addr.t55
br label %while.cond.15
while.end.14:
store i32 0, ptr %i.addr.t54
br label %while.cond.18
while.cond.15:
%t59 = load i32, ptr %j.addr.t55
%t60 = load i32, ptr %n.addr.t52
%t61 = icmp slt i32 %t59, %t60
br i1 %t61, label %while.body.16, label %while.end.17
while.body.16:
%t62 = load i32, ptr %i.addr.t54
%t63 = load i32, ptr %j.addr.t55
%t64 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 %t62, i32 %t63
%t65 = call i32 @getint()
store i32 %t65, ptr %t64
%t66 = load i32, ptr %j.addr.t55
%t67 = add i32 %t66, 1
store i32 %t67, ptr %j.addr.t55
br label %while.cond.15
while.end.17:
%t68 = load i32, ptr %i.addr.t54
%t69 = add i32 %t68, 1
store i32 %t69, ptr %i.addr.t54
br label %while.cond.12
while.cond.18:
%t70 = load i32, ptr %i.addr.t54
%t71 = load i32, ptr %n.addr.t52
%t72 = icmp slt i32 %t70, %t71
br i1 %t72, label %while.body.19, label %while.end.20
while.body.19:
%t73 = load i32, ptr %i.addr.t54
%t74 = getelementptr [2010 x i32], ptr @B, i32 0, i32 %t73
%t75 = call i32 @getint()
store i32 %t75, ptr %t74
%t76 = load i32, ptr %i.addr.t54
%t77 = add i32 %t76, 1
store i32 %t77, ptr %i.addr.t54
br label %while.cond.18
while.end.20:
call void @starttime()
store i32 0, ptr %i.addr.t54
br label %while.cond.21
while.cond.21:
%t78 = load i32, ptr %i.addr.t54
%t79 = icmp slt i32 %t78, 50
br i1 %t79, label %while.body.22, label %while.end.23
while.body.22:
%t80 = load i32, ptr %n.addr.t52
%t81 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 0
%t82 = getelementptr [2010 x i32], ptr @B, i32 0, i32 0
%t83 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
call void @mv(i32 %t80, ptr %t81, ptr %t82, ptr %t83)
%t84 = load i32, ptr %n.addr.t52
%t85 = getelementptr [2010 x [2010 x i32]], ptr @A, i32 0, i32 0
%t86 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
%t87 = getelementptr [2010 x i32], ptr @B, i32 0, i32 0
call void @mv(i32 %t84, ptr %t85, ptr %t86, ptr %t87)
%t88 = load i32, ptr %i.addr.t54
%t89 = add i32 %t88, 1
store i32 %t89, ptr %i.addr.t54
br label %while.cond.21
while.end.23:
call void @stoptime()
%t90 = load i32, ptr %n.addr.t52
%t91 = getelementptr [2010 x i32], ptr @C, i32 0, i32 0
call void @putarray(i32 %t90, ptr %t91)
ret i32 0
}

File diff suppressed because one or more lines are too long

@ -1,377 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@base = constant i32 16
@a = global [30000010 x i32] zeroinitializer
@ans = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @getMaxNum(i32 %n, ptr %arr) {
entry:
%n.addr = alloca i32
%ret.addr.t0 = alloca i32
%i.addr.t1 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %ret.addr.t0
store i32 0, ptr %i.addr.t1
br label %while.cond.0
while.cond.0:
%t2 = load i32, ptr %i.addr.t1
%t3 = load i32, ptr %n.addr
%t4 = icmp slt i32 %t2, %t3
br i1 %t4, label %while.body.1, label %while.end.2
while.body.1:
%t5 = load i32, ptr %i.addr.t1
%t6 = getelementptr i32, ptr %arr, i32 %t5
%t7 = load i32, ptr %t6
%t8 = load i32, ptr %ret.addr.t0
%t9 = icmp sgt i32 %t7, %t8
br i1 %t9, label %if.then.3, label %if.end.4
while.end.2:
%t15 = load i32, ptr %ret.addr.t0
ret i32 %t15
if.then.3:
%t10 = load i32, ptr %i.addr.t1
%t11 = getelementptr i32, ptr %arr, i32 %t10
%t12 = load i32, ptr %t11
store i32 %t12, ptr %ret.addr.t0
br label %if.end.4
if.end.4:
%t13 = load i32, ptr %i.addr.t1
%t14 = add i32 %t13, 1
store i32 %t14, ptr %i.addr.t1
br label %while.cond.0
}
define i32 @getNumPos(i32 %num, i32 %pos) {
entry:
%num.addr = alloca i32
%pos.addr = alloca i32
%tmp.addr.t16 = alloca i32
%i.addr.t17 = alloca i32
store i32 %num, ptr %num.addr
store i32 %pos, ptr %pos.addr
store i32 1, ptr %tmp.addr.t16
store i32 0, ptr %i.addr.t17
br label %while.cond.5
while.cond.5:
%t18 = load i32, ptr %i.addr.t17
%t19 = load i32, ptr %pos.addr
%t20 = icmp slt i32 %t18, %t19
br i1 %t20, label %while.body.6, label %while.end.7
while.body.6:
%t21 = load i32, ptr %num.addr
%t22 = sdiv i32 %t21, 16
store i32 %t22, ptr %num.addr
%t23 = load i32, ptr %i.addr.t17
%t24 = add i32 %t23, 1
store i32 %t24, ptr %i.addr.t17
br label %while.cond.5
while.end.7:
%t25 = load i32, ptr %num.addr
%t26 = srem i32 %t25, 16
ret i32 %t26
}
define void @radixSort(i32 %bitround, ptr %a, i32 %l, i32 %r) {
entry:
%bitround.addr = alloca i32
%l.addr = alloca i32
%r.addr = alloca i32
%head.addr.t27 = alloca [16 x i32]
%tail.addr.t28 = alloca [16 x i32]
%cnt.addr.t29 = alloca [16 x i32]
%i.addr.t37 = alloca i32
%v.addr.t93 = alloca i32
%t.addr.t104 = alloca i32
%i.addr.t143 = alloca i32
store i32 %bitround, ptr %bitround.addr
store i32 %l, ptr %l.addr
store i32 %r, ptr %r.addr
call void @llvm.memset.p0.i32(ptr %head.addr.t27, i8 0, i32 64, i1 0)
call void @llvm.memset.p0.i32(ptr %tail.addr.t28, i8 0, i32 64, i1 0)
call void @llvm.memset.p0.i32(ptr %cnt.addr.t29, i8 0, i32 64, i1 0)
%t30 = load i32, ptr %bitround.addr
%t31 = sub i32 0, 1
%t32 = icmp eq i32 %t30, %t31
br i1 %t32, label %if.then.8, label %lor.rhs.10
if.then.8:
ret void
if.end.9:
%t38 = load i32, ptr %l.addr
store i32 %t38, ptr %i.addr.t37
br label %while.cond.11
lor.rhs.10:
%t33 = load i32, ptr %l.addr
%t34 = add i32 %t33, 1
%t35 = load i32, ptr %r.addr
%t36 = icmp sge i32 %t34, %t35
br i1 %t36, label %if.then.8, label %if.end.9
while.cond.11:
%t39 = load i32, ptr %i.addr.t37
%t40 = load i32, ptr %r.addr
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.12, label %while.end.13
while.body.12:
%t42 = load i32, ptr %i.addr.t37
%t43 = getelementptr i32, ptr %a, i32 %t42
%t44 = load i32, ptr %t43
%t45 = load i32, ptr %bitround.addr
%t46 = call i32 @getNumPos(i32 %t44, i32 %t45)
%t47 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t46
%t48 = load i32, ptr %i.addr.t37
%t49 = getelementptr i32, ptr %a, i32 %t48
%t50 = load i32, ptr %t49
%t51 = load i32, ptr %bitround.addr
%t52 = call i32 @getNumPos(i32 %t50, i32 %t51)
%t53 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t52
%t54 = load i32, ptr %t53
%t55 = add i32 %t54, 1
store i32 %t55, ptr %t47
%t56 = load i32, ptr %i.addr.t37
%t57 = add i32 %t56, 1
store i32 %t57, ptr %i.addr.t37
br label %while.cond.11
while.end.13:
%t58 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 0
%t59 = load i32, ptr %l.addr
store i32 %t59, ptr %t58
%t60 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 0
%t61 = load i32, ptr %l.addr
%t62 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 0
%t63 = load i32, ptr %t62
%t64 = add i32 %t61, %t63
store i32 %t64, ptr %t60
store i32 1, ptr %i.addr.t37
br label %while.cond.14
while.cond.14:
%t65 = load i32, ptr %i.addr.t37
%t66 = icmp slt i32 %t65, 16
br i1 %t66, label %while.body.15, label %while.end.16
while.body.15:
%t67 = load i32, ptr %i.addr.t37
%t68 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t67
%t69 = load i32, ptr %i.addr.t37
%t70 = sub i32 %t69, 1
%t71 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t70
%t72 = load i32, ptr %t71
store i32 %t72, ptr %t68
%t73 = load i32, ptr %i.addr.t37
%t74 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t73
%t75 = load i32, ptr %i.addr.t37
%t76 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t75
%t77 = load i32, ptr %t76
%t78 = load i32, ptr %i.addr.t37
%t79 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t78
%t80 = load i32, ptr %t79
%t81 = add i32 %t77, %t80
store i32 %t81, ptr %t74
%t82 = load i32, ptr %i.addr.t37
%t83 = add i32 %t82, 1
store i32 %t83, ptr %i.addr.t37
br label %while.cond.14
while.end.16:
store i32 0, ptr %i.addr.t37
br label %while.cond.17
while.cond.17:
%t84 = load i32, ptr %i.addr.t37
%t85 = icmp slt i32 %t84, 16
br i1 %t85, label %while.body.18, label %while.end.19
while.body.18:
br label %while.cond.20
while.end.19:
%t144 = load i32, ptr %l.addr
store i32 %t144, ptr %i.addr.t143
%t145 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 0
%t146 = load i32, ptr %l.addr
store i32 %t146, ptr %t145
%t147 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 0
%t148 = load i32, ptr %l.addr
%t149 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 0
%t150 = load i32, ptr %t149
%t151 = add i32 %t148, %t150
store i32 %t151, ptr %t147
store i32 0, ptr %i.addr.t143
br label %while.cond.26
while.cond.20:
%t86 = load i32, ptr %i.addr.t37
%t87 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t86
%t88 = load i32, ptr %t87
%t89 = load i32, ptr %i.addr.t37
%t90 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t89
%t91 = load i32, ptr %t90
%t92 = icmp slt i32 %t88, %t91
br i1 %t92, label %while.body.21, label %while.end.22
while.body.21:
%t94 = load i32, ptr %i.addr.t37
%t95 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t94
%t96 = load i32, ptr %t95
%t97 = getelementptr i32, ptr %a, i32 %t96
%t98 = load i32, ptr %t97
store i32 %t98, ptr %v.addr.t93
br label %while.cond.23
while.end.22:
%t141 = load i32, ptr %i.addr.t37
%t142 = add i32 %t141, 1
store i32 %t142, ptr %i.addr.t37
br label %while.cond.17
while.cond.23:
%t99 = load i32, ptr %v.addr.t93
%t100 = load i32, ptr %bitround.addr
%t101 = call i32 @getNumPos(i32 %t99, i32 %t100)
%t102 = load i32, ptr %i.addr.t37
%t103 = icmp ne i32 %t101, %t102
br i1 %t103, label %while.body.24, label %while.end.25
while.body.24:
%t105 = load i32, ptr %v.addr.t93
store i32 %t105, ptr %t.addr.t104
%t106 = load i32, ptr %t.addr.t104
%t107 = load i32, ptr %bitround.addr
%t108 = call i32 @getNumPos(i32 %t106, i32 %t107)
%t109 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t108
%t110 = load i32, ptr %t109
%t111 = getelementptr i32, ptr %a, i32 %t110
%t112 = load i32, ptr %t111
store i32 %t112, ptr %v.addr.t93
%t113 = load i32, ptr %t.addr.t104
%t114 = load i32, ptr %bitround.addr
%t115 = call i32 @getNumPos(i32 %t113, i32 %t114)
%t116 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t115
%t117 = load i32, ptr %t116
%t118 = getelementptr i32, ptr %a, i32 %t117
%t119 = load i32, ptr %t.addr.t104
store i32 %t119, ptr %t118
%t120 = load i32, ptr %t.addr.t104
%t121 = load i32, ptr %bitround.addr
%t122 = call i32 @getNumPos(i32 %t120, i32 %t121)
%t123 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t122
%t124 = load i32, ptr %t.addr.t104
%t125 = load i32, ptr %bitround.addr
%t126 = call i32 @getNumPos(i32 %t124, i32 %t125)
%t127 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t126
%t128 = load i32, ptr %t127
%t129 = add i32 %t128, 1
store i32 %t129, ptr %t123
br label %while.cond.23
while.end.25:
%t130 = load i32, ptr %i.addr.t37
%t131 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t130
%t132 = load i32, ptr %t131
%t133 = getelementptr i32, ptr %a, i32 %t132
%t134 = load i32, ptr %v.addr.t93
store i32 %t134, ptr %t133
%t135 = load i32, ptr %i.addr.t37
%t136 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t135
%t137 = load i32, ptr %i.addr.t37
%t138 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t137
%t139 = load i32, ptr %t138
%t140 = add i32 %t139, 1
store i32 %t140, ptr %t136
br label %while.cond.20
while.cond.26:
%t152 = load i32, ptr %i.addr.t143
%t153 = icmp slt i32 %t152, 16
br i1 %t153, label %while.body.27, label %while.end.28
while.body.27:
%t154 = load i32, ptr %i.addr.t143
%t155 = icmp sgt i32 %t154, 0
br i1 %t155, label %if.then.29, label %if.end.30
while.end.28:
ret void
if.then.29:
%t156 = load i32, ptr %i.addr.t143
%t157 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t156
%t158 = load i32, ptr %i.addr.t143
%t159 = sub i32 %t158, 1
%t160 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t159
%t161 = load i32, ptr %t160
store i32 %t161, ptr %t157
%t162 = load i32, ptr %i.addr.t143
%t163 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t162
%t164 = load i32, ptr %i.addr.t143
%t165 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t164
%t166 = load i32, ptr %t165
%t167 = load i32, ptr %i.addr.t143
%t168 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t167
%t169 = load i32, ptr %t168
%t170 = add i32 %t166, %t169
store i32 %t170, ptr %t163
br label %if.end.30
if.end.30:
%t171 = load i32, ptr %bitround.addr
%t172 = sub i32 %t171, 1
%t173 = load i32, ptr %i.addr.t143
%t174 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t173
%t175 = load i32, ptr %t174
%t176 = load i32, ptr %i.addr.t143
%t177 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t176
%t178 = load i32, ptr %t177
call void @radixSort(i32 %t172, ptr %a, i32 %t175, i32 %t178)
%t179 = load i32, ptr %i.addr.t143
%t180 = add i32 %t179, 1
store i32 %t180, ptr %i.addr.t143
br label %while.cond.26
}
define i32 @main() {
entry:
%n.addr.t181 = alloca i32
%i.addr.t186 = alloca i32
%t182 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 0
%t183 = call i32 @getarray(ptr %t182)
store i32 %t183, ptr %n.addr.t181
call void @starttime()
%t184 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 0
%t185 = load i32, ptr %n.addr.t181
call void @radixSort(i32 8, ptr %t184, i32 0, i32 %t185)
store i32 0, ptr %i.addr.t186
br label %while.cond.31
while.cond.31:
%t187 = load i32, ptr %i.addr.t186
%t188 = load i32, ptr %n.addr.t181
%t189 = icmp slt i32 %t187, %t188
br i1 %t189, label %while.body.32, label %while.end.33
while.body.32:
%t190 = load i32, ptr @ans
%t191 = load i32, ptr %i.addr.t186
%t192 = load i32, ptr %i.addr.t186
%t193 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 %t192
%t194 = load i32, ptr %t193
%t195 = load i32, ptr %i.addr.t186
%t196 = add i32 2, %t195
%t197 = srem i32 %t194, %t196
%t198 = mul i32 %t191, %t197
%t199 = add i32 %t190, %t198
store i32 %t199, ptr @ans
%t200 = load i32, ptr %i.addr.t186
%t201 = add i32 %t200, 1
store i32 %t201, ptr %i.addr.t186
br label %while.cond.31
while.end.33:
%t202 = load i32, ptr @ans
%t203 = icmp slt i32 %t202, 0
br i1 %t203, label %if.then.34, label %if.end.35
if.then.34:
%t204 = load i32, ptr @ans
%t205 = sub i32 0, %t204
store i32 %t205, ptr @ans
br label %if.end.35
if.end.35:
call void @stoptime()
%t206 = load i32, ptr @ans
call void @putint(i32 %t206)
call void @putch(i32 10)
ret i32 0
}

@ -1,377 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@base = constant i32 16
@a = global [30000010 x i32] zeroinitializer
@ans = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @getMaxNum(i32 %n, ptr %arr) {
entry:
%n.addr = alloca i32
%ret.addr.t0 = alloca i32
%i.addr.t1 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %ret.addr.t0
store i32 0, ptr %i.addr.t1
br label %while.cond.0
while.cond.0:
%t2 = load i32, ptr %i.addr.t1
%t3 = load i32, ptr %n.addr
%t4 = icmp slt i32 %t2, %t3
br i1 %t4, label %while.body.1, label %while.end.2
while.body.1:
%t5 = load i32, ptr %i.addr.t1
%t6 = getelementptr i32, ptr %arr, i32 %t5
%t7 = load i32, ptr %t6
%t8 = load i32, ptr %ret.addr.t0
%t9 = icmp sgt i32 %t7, %t8
br i1 %t9, label %if.then.3, label %if.end.4
while.end.2:
%t15 = load i32, ptr %ret.addr.t0
ret i32 %t15
if.then.3:
%t10 = load i32, ptr %i.addr.t1
%t11 = getelementptr i32, ptr %arr, i32 %t10
%t12 = load i32, ptr %t11
store i32 %t12, ptr %ret.addr.t0
br label %if.end.4
if.end.4:
%t13 = load i32, ptr %i.addr.t1
%t14 = add i32 %t13, 1
store i32 %t14, ptr %i.addr.t1
br label %while.cond.0
}
define i32 @getNumPos(i32 %num, i32 %pos) {
entry:
%num.addr = alloca i32
%pos.addr = alloca i32
%tmp.addr.t16 = alloca i32
%i.addr.t17 = alloca i32
store i32 %num, ptr %num.addr
store i32 %pos, ptr %pos.addr
store i32 1, ptr %tmp.addr.t16
store i32 0, ptr %i.addr.t17
br label %while.cond.5
while.cond.5:
%t18 = load i32, ptr %i.addr.t17
%t19 = load i32, ptr %pos.addr
%t20 = icmp slt i32 %t18, %t19
br i1 %t20, label %while.body.6, label %while.end.7
while.body.6:
%t21 = load i32, ptr %num.addr
%t22 = sdiv i32 %t21, 16
store i32 %t22, ptr %num.addr
%t23 = load i32, ptr %i.addr.t17
%t24 = add i32 %t23, 1
store i32 %t24, ptr %i.addr.t17
br label %while.cond.5
while.end.7:
%t25 = load i32, ptr %num.addr
%t26 = srem i32 %t25, 16
ret i32 %t26
}
define void @radixSort(i32 %bitround, ptr %a, i32 %l, i32 %r) {
entry:
%bitround.addr = alloca i32
%l.addr = alloca i32
%r.addr = alloca i32
%head.addr.t27 = alloca [16 x i32]
%tail.addr.t28 = alloca [16 x i32]
%cnt.addr.t29 = alloca [16 x i32]
%i.addr.t37 = alloca i32
%v.addr.t93 = alloca i32
%t.addr.t104 = alloca i32
%i.addr.t143 = alloca i32
store i32 %bitround, ptr %bitround.addr
store i32 %l, ptr %l.addr
store i32 %r, ptr %r.addr
call void @llvm.memset.p0.i32(ptr %head.addr.t27, i8 0, i32 64, i1 0)
call void @llvm.memset.p0.i32(ptr %tail.addr.t28, i8 0, i32 64, i1 0)
call void @llvm.memset.p0.i32(ptr %cnt.addr.t29, i8 0, i32 64, i1 0)
%t30 = load i32, ptr %bitround.addr
%t31 = sub i32 0, 1
%t32 = icmp eq i32 %t30, %t31
br i1 %t32, label %if.then.8, label %lor.rhs.10
if.then.8:
ret void
if.end.9:
%t38 = load i32, ptr %l.addr
store i32 %t38, ptr %i.addr.t37
br label %while.cond.11
lor.rhs.10:
%t33 = load i32, ptr %l.addr
%t34 = add i32 %t33, 1
%t35 = load i32, ptr %r.addr
%t36 = icmp sge i32 %t34, %t35
br i1 %t36, label %if.then.8, label %if.end.9
while.cond.11:
%t39 = load i32, ptr %i.addr.t37
%t40 = load i32, ptr %r.addr
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.12, label %while.end.13
while.body.12:
%t42 = load i32, ptr %i.addr.t37
%t43 = getelementptr i32, ptr %a, i32 %t42
%t44 = load i32, ptr %t43
%t45 = load i32, ptr %bitround.addr
%t46 = call i32 @getNumPos(i32 %t44, i32 %t45)
%t47 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t46
%t48 = load i32, ptr %i.addr.t37
%t49 = getelementptr i32, ptr %a, i32 %t48
%t50 = load i32, ptr %t49
%t51 = load i32, ptr %bitround.addr
%t52 = call i32 @getNumPos(i32 %t50, i32 %t51)
%t53 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t52
%t54 = load i32, ptr %t53
%t55 = add i32 %t54, 1
store i32 %t55, ptr %t47
%t56 = load i32, ptr %i.addr.t37
%t57 = add i32 %t56, 1
store i32 %t57, ptr %i.addr.t37
br label %while.cond.11
while.end.13:
%t58 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 0
%t59 = load i32, ptr %l.addr
store i32 %t59, ptr %t58
%t60 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 0
%t61 = load i32, ptr %l.addr
%t62 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 0
%t63 = load i32, ptr %t62
%t64 = add i32 %t61, %t63
store i32 %t64, ptr %t60
store i32 1, ptr %i.addr.t37
br label %while.cond.14
while.cond.14:
%t65 = load i32, ptr %i.addr.t37
%t66 = icmp slt i32 %t65, 16
br i1 %t66, label %while.body.15, label %while.end.16
while.body.15:
%t67 = load i32, ptr %i.addr.t37
%t68 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t67
%t69 = load i32, ptr %i.addr.t37
%t70 = sub i32 %t69, 1
%t71 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t70
%t72 = load i32, ptr %t71
store i32 %t72, ptr %t68
%t73 = load i32, ptr %i.addr.t37
%t74 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t73
%t75 = load i32, ptr %i.addr.t37
%t76 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t75
%t77 = load i32, ptr %t76
%t78 = load i32, ptr %i.addr.t37
%t79 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t78
%t80 = load i32, ptr %t79
%t81 = add i32 %t77, %t80
store i32 %t81, ptr %t74
%t82 = load i32, ptr %i.addr.t37
%t83 = add i32 %t82, 1
store i32 %t83, ptr %i.addr.t37
br label %while.cond.14
while.end.16:
store i32 0, ptr %i.addr.t37
br label %while.cond.17
while.cond.17:
%t84 = load i32, ptr %i.addr.t37
%t85 = icmp slt i32 %t84, 16
br i1 %t85, label %while.body.18, label %while.end.19
while.body.18:
br label %while.cond.20
while.end.19:
%t144 = load i32, ptr %l.addr
store i32 %t144, ptr %i.addr.t143
%t145 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 0
%t146 = load i32, ptr %l.addr
store i32 %t146, ptr %t145
%t147 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 0
%t148 = load i32, ptr %l.addr
%t149 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 0
%t150 = load i32, ptr %t149
%t151 = add i32 %t148, %t150
store i32 %t151, ptr %t147
store i32 0, ptr %i.addr.t143
br label %while.cond.26
while.cond.20:
%t86 = load i32, ptr %i.addr.t37
%t87 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t86
%t88 = load i32, ptr %t87
%t89 = load i32, ptr %i.addr.t37
%t90 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t89
%t91 = load i32, ptr %t90
%t92 = icmp slt i32 %t88, %t91
br i1 %t92, label %while.body.21, label %while.end.22
while.body.21:
%t94 = load i32, ptr %i.addr.t37
%t95 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t94
%t96 = load i32, ptr %t95
%t97 = getelementptr i32, ptr %a, i32 %t96
%t98 = load i32, ptr %t97
store i32 %t98, ptr %v.addr.t93
br label %while.cond.23
while.end.22:
%t141 = load i32, ptr %i.addr.t37
%t142 = add i32 %t141, 1
store i32 %t142, ptr %i.addr.t37
br label %while.cond.17
while.cond.23:
%t99 = load i32, ptr %v.addr.t93
%t100 = load i32, ptr %bitround.addr
%t101 = call i32 @getNumPos(i32 %t99, i32 %t100)
%t102 = load i32, ptr %i.addr.t37
%t103 = icmp ne i32 %t101, %t102
br i1 %t103, label %while.body.24, label %while.end.25
while.body.24:
%t105 = load i32, ptr %v.addr.t93
store i32 %t105, ptr %t.addr.t104
%t106 = load i32, ptr %t.addr.t104
%t107 = load i32, ptr %bitround.addr
%t108 = call i32 @getNumPos(i32 %t106, i32 %t107)
%t109 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t108
%t110 = load i32, ptr %t109
%t111 = getelementptr i32, ptr %a, i32 %t110
%t112 = load i32, ptr %t111
store i32 %t112, ptr %v.addr.t93
%t113 = load i32, ptr %t.addr.t104
%t114 = load i32, ptr %bitround.addr
%t115 = call i32 @getNumPos(i32 %t113, i32 %t114)
%t116 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t115
%t117 = load i32, ptr %t116
%t118 = getelementptr i32, ptr %a, i32 %t117
%t119 = load i32, ptr %t.addr.t104
store i32 %t119, ptr %t118
%t120 = load i32, ptr %t.addr.t104
%t121 = load i32, ptr %bitround.addr
%t122 = call i32 @getNumPos(i32 %t120, i32 %t121)
%t123 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t122
%t124 = load i32, ptr %t.addr.t104
%t125 = load i32, ptr %bitround.addr
%t126 = call i32 @getNumPos(i32 %t124, i32 %t125)
%t127 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t126
%t128 = load i32, ptr %t127
%t129 = add i32 %t128, 1
store i32 %t129, ptr %t123
br label %while.cond.23
while.end.25:
%t130 = load i32, ptr %i.addr.t37
%t131 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t130
%t132 = load i32, ptr %t131
%t133 = getelementptr i32, ptr %a, i32 %t132
%t134 = load i32, ptr %v.addr.t93
store i32 %t134, ptr %t133
%t135 = load i32, ptr %i.addr.t37
%t136 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t135
%t137 = load i32, ptr %i.addr.t37
%t138 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t137
%t139 = load i32, ptr %t138
%t140 = add i32 %t139, 1
store i32 %t140, ptr %t136
br label %while.cond.20
while.cond.26:
%t152 = load i32, ptr %i.addr.t143
%t153 = icmp slt i32 %t152, 16
br i1 %t153, label %while.body.27, label %while.end.28
while.body.27:
%t154 = load i32, ptr %i.addr.t143
%t155 = icmp sgt i32 %t154, 0
br i1 %t155, label %if.then.29, label %if.end.30
while.end.28:
ret void
if.then.29:
%t156 = load i32, ptr %i.addr.t143
%t157 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t156
%t158 = load i32, ptr %i.addr.t143
%t159 = sub i32 %t158, 1
%t160 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t159
%t161 = load i32, ptr %t160
store i32 %t161, ptr %t157
%t162 = load i32, ptr %i.addr.t143
%t163 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t162
%t164 = load i32, ptr %i.addr.t143
%t165 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t164
%t166 = load i32, ptr %t165
%t167 = load i32, ptr %i.addr.t143
%t168 = getelementptr [16 x i32], ptr %cnt.addr.t29, i32 0, i32 %t167
%t169 = load i32, ptr %t168
%t170 = add i32 %t166, %t169
store i32 %t170, ptr %t163
br label %if.end.30
if.end.30:
%t171 = load i32, ptr %bitround.addr
%t172 = sub i32 %t171, 1
%t173 = load i32, ptr %i.addr.t143
%t174 = getelementptr [16 x i32], ptr %head.addr.t27, i32 0, i32 %t173
%t175 = load i32, ptr %t174
%t176 = load i32, ptr %i.addr.t143
%t177 = getelementptr [16 x i32], ptr %tail.addr.t28, i32 0, i32 %t176
%t178 = load i32, ptr %t177
call void @radixSort(i32 %t172, ptr %a, i32 %t175, i32 %t178)
%t179 = load i32, ptr %i.addr.t143
%t180 = add i32 %t179, 1
store i32 %t180, ptr %i.addr.t143
br label %while.cond.26
}
define i32 @main() {
entry:
%n.addr.t181 = alloca i32
%i.addr.t186 = alloca i32
%t182 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 0
%t183 = call i32 @getarray(ptr %t182)
store i32 %t183, ptr %n.addr.t181
call void @starttime()
%t184 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 0
%t185 = load i32, ptr %n.addr.t181
call void @radixSort(i32 8, ptr %t184, i32 0, i32 %t185)
store i32 0, ptr %i.addr.t186
br label %while.cond.31
while.cond.31:
%t187 = load i32, ptr %i.addr.t186
%t188 = load i32, ptr %n.addr.t181
%t189 = icmp slt i32 %t187, %t188
br i1 %t189, label %while.body.32, label %while.end.33
while.body.32:
%t190 = load i32, ptr @ans
%t191 = load i32, ptr %i.addr.t186
%t192 = load i32, ptr %i.addr.t186
%t193 = getelementptr [30000010 x i32], ptr @a, i32 0, i32 %t192
%t194 = load i32, ptr %t193
%t195 = load i32, ptr %i.addr.t186
%t196 = add i32 2, %t195
%t197 = srem i32 %t194, %t196
%t198 = mul i32 %t191, %t197
%t199 = add i32 %t190, %t198
store i32 %t199, ptr @ans
%t200 = load i32, ptr %i.addr.t186
%t201 = add i32 %t200, 1
store i32 %t201, ptr %i.addr.t186
br label %while.cond.31
while.end.33:
%t202 = load i32, ptr @ans
%t203 = icmp slt i32 %t202, 0
br i1 %t203, label %if.then.34, label %if.end.35
if.then.34:
%t204 = load i32, ptr @ans
%t205 = sub i32 0, %t204
store i32 %t205, ptr @ans
br label %if.end.35
if.end.35:
call void @stoptime()
%t206 = load i32, ptr @ans
call void @putint(i32 %t206)
call void @putch(i32 10)
ret i32 0
}

@ -1,367 +0,0 @@
@A = global [1024 x [1024 x i32]] zeroinitializer
@B = global [1024 x [1024 x i32]] zeroinitializer
@C = global [1024 x [1024 x i32]] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%T.addr.t0 = alloca i32
%R.addr.t2 = alloca i32
%i.addr.t4 = alloca i32
%j.addr.t38 = alloca i32
%j.addr.t57 = alloca i32
%j.addr.t72 = alloca i32
%j.addr.t97 = alloca i32
%val.addr.t101 = alloca i32
%j.addr.t123 = alloca i32
%k.addr.t127 = alloca i32
%sum.addr.t128 = alloca i32
%total.addr.t153 = alloca i32
%r.addr.t154 = alloca i32
%j.addr.t161 = alloca i32
%t1 = call i32 @getint()
store i32 %t1, ptr %T.addr.t0
%t3 = call i32 @getint()
store i32 %t3, ptr %R.addr.t2
store i32 0, ptr %i.addr.t4
br label %while.cond.0
while.cond.0:
%t5 = load i32, ptr %i.addr.t4
%t6 = load i32, ptr %T.addr.t0
%t7 = icmp slt i32 %t5, %t6
br i1 %t7, label %while.body.1, label %while.end.2
while.body.1:
%t8 = load i32, ptr %i.addr.t4
%t9 = load i32, ptr %T.addr.t0
%t10 = sdiv i32 %t9, 2
%t11 = icmp slt i32 %t8, %t10
br i1 %t11, label %if.then.3, label %if.end.4
while.end.2:
store i32 0, ptr %i.addr.t4
br label %while.cond.5
if.then.3:
%t12 = load i32, ptr %i.addr.t4
%t13 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t12
%t14 = getelementptr [1024 x i32], ptr %t13, i32 0, i32 0
%t15 = call i32 @getarray(ptr %t14)
br label %if.end.4
if.end.4:
%t16 = load i32, ptr %i.addr.t4
%t17 = add i32 %t16, 1
store i32 %t17, ptr %i.addr.t4
br label %while.cond.0
while.cond.5:
%t18 = load i32, ptr %i.addr.t4
%t19 = load i32, ptr %T.addr.t0
%t20 = icmp slt i32 %t18, %t19
br i1 %t20, label %while.body.6, label %while.end.7
while.body.6:
%t21 = load i32, ptr %i.addr.t4
%t22 = load i32, ptr %T.addr.t0
%t23 = sdiv i32 %t22, 2
%t24 = icmp sge i32 %t21, %t23
br i1 %t24, label %if.then.8, label %if.end.9
while.end.7:
call void @starttime()
store i32 0, ptr %i.addr.t4
br label %while.cond.10
if.then.8:
%t25 = load i32, ptr %i.addr.t4
%t26 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t25
%t27 = getelementptr [1024 x i32], ptr %t26, i32 0, i32 0
%t28 = call i32 @getarray(ptr %t27)
br label %if.end.9
if.end.9:
%t29 = load i32, ptr %i.addr.t4
%t30 = add i32 %t29, 1
store i32 %t30, ptr %i.addr.t4
br label %while.cond.5
while.cond.10:
%t31 = load i32, ptr %i.addr.t4
%t32 = load i32, ptr %T.addr.t0
%t33 = icmp slt i32 %t31, %t32
br i1 %t33, label %while.body.11, label %while.end.12
while.body.11:
%t34 = load i32, ptr %i.addr.t4
%t35 = load i32, ptr %T.addr.t0
%t36 = sdiv i32 %t35, 2
%t37 = icmp sge i32 %t34, %t36
br i1 %t37, label %if.then.13, label %if.end.14
while.end.12:
store i32 0, ptr %i.addr.t4
br label %while.cond.18
if.then.13:
store i32 0, ptr %j.addr.t38
br label %while.cond.15
if.end.14:
%t48 = load i32, ptr %i.addr.t4
%t49 = add i32 %t48, 1
store i32 %t49, ptr %i.addr.t4
br label %while.cond.10
while.cond.15:
%t39 = load i32, ptr %j.addr.t38
%t40 = load i32, ptr %T.addr.t0
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.16, label %while.end.17
while.body.16:
%t42 = load i32, ptr %i.addr.t4
%t43 = load i32, ptr %j.addr.t38
%t44 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t42, i32 %t43
%t45 = sub i32 0, 1
store i32 %t45, ptr %t44
%t46 = load i32, ptr %j.addr.t38
%t47 = add i32 %t46, 1
store i32 %t47, ptr %j.addr.t38
br label %while.cond.15
while.end.17:
br label %if.end.14
while.cond.18:
%t50 = load i32, ptr %i.addr.t4
%t51 = load i32, ptr %T.addr.t0
%t52 = icmp slt i32 %t50, %t51
br i1 %t52, label %while.body.19, label %while.end.20
while.body.19:
%t53 = load i32, ptr %i.addr.t4
%t54 = load i32, ptr %T.addr.t0
%t55 = sdiv i32 %t54, 2
%t56 = icmp slt i32 %t53, %t55
br i1 %t56, label %if.then.21, label %if.end.22
while.end.20:
store i32 0, ptr %i.addr.t4
br label %while.cond.26
if.then.21:
store i32 0, ptr %j.addr.t57
br label %while.cond.23
if.end.22:
%t67 = load i32, ptr %i.addr.t4
%t68 = add i32 %t67, 1
store i32 %t68, ptr %i.addr.t4
br label %while.cond.18
while.cond.23:
%t58 = load i32, ptr %j.addr.t57
%t59 = load i32, ptr %T.addr.t0
%t60 = icmp slt i32 %t58, %t59
br i1 %t60, label %while.body.24, label %while.end.25
while.body.24:
%t61 = load i32, ptr %i.addr.t4
%t62 = load i32, ptr %j.addr.t57
%t63 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t61, i32 %t62
%t64 = sub i32 0, 1
store i32 %t64, ptr %t63
%t65 = load i32, ptr %j.addr.t57
%t66 = add i32 %t65, 1
store i32 %t66, ptr %j.addr.t57
br label %while.cond.23
while.end.25:
br label %if.end.22
while.cond.26:
%t69 = load i32, ptr %i.addr.t4
%t70 = load i32, ptr %T.addr.t0
%t71 = icmp slt i32 %t69, %t70
br i1 %t71, label %while.body.27, label %while.end.28
while.body.27:
store i32 0, ptr %j.addr.t72
br label %while.cond.29
while.end.28:
store i32 0, ptr %i.addr.t4
br label %while.cond.32
while.cond.29:
%t73 = load i32, ptr %j.addr.t72
%t74 = load i32, ptr %T.addr.t0
%t75 = icmp slt i32 %t73, %t74
br i1 %t75, label %while.body.30, label %while.end.31
while.body.30:
%t76 = load i32, ptr %i.addr.t4
%t77 = load i32, ptr %j.addr.t72
%t78 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t76, i32 %t77
%t79 = load i32, ptr %i.addr.t4
%t80 = load i32, ptr %j.addr.t72
%t81 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t79, i32 %t80
%t82 = load i32, ptr %t81
%t83 = mul i32 %t82, 2
%t84 = load i32, ptr %i.addr.t4
%t85 = load i32, ptr %j.addr.t72
%t86 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t84, i32 %t85
%t87 = load i32, ptr %t86
%t88 = mul i32 %t87, 3
%t89 = add i32 %t83, %t88
store i32 %t89, ptr %t78
%t90 = load i32, ptr %j.addr.t72
%t91 = add i32 %t90, 1
store i32 %t91, ptr %j.addr.t72
br label %while.cond.29
while.end.31:
%t92 = load i32, ptr %i.addr.t4
%t93 = add i32 %t92, 1
store i32 %t93, ptr %i.addr.t4
br label %while.cond.26
while.cond.32:
%t94 = load i32, ptr %i.addr.t4
%t95 = load i32, ptr %T.addr.t0
%t96 = icmp slt i32 %t94, %t95
br i1 %t96, label %while.body.33, label %while.end.34
while.body.33:
store i32 0, ptr %j.addr.t97
br label %while.cond.35
while.end.34:
store i32 0, ptr %i.addr.t4
br label %while.cond.38
while.cond.35:
%t98 = load i32, ptr %j.addr.t97
%t99 = load i32, ptr %T.addr.t0
%t100 = icmp slt i32 %t98, %t99
br i1 %t100, label %while.body.36, label %while.end.37
while.body.36:
%t102 = load i32, ptr %i.addr.t4
%t103 = load i32, ptr %j.addr.t97
%t104 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t102, i32 %t103
%t105 = load i32, ptr %t104
store i32 %t105, ptr %val.addr.t101
%t106 = load i32, ptr %val.addr.t101
%t107 = load i32, ptr %val.addr.t101
%t108 = mul i32 %t106, %t107
%t109 = add i32 %t108, 7
store i32 %t109, ptr %val.addr.t101
%t110 = load i32, ptr %val.addr.t101
%t111 = sdiv i32 %t110, 3
store i32 %t111, ptr %val.addr.t101
%t112 = load i32, ptr %i.addr.t4
%t113 = load i32, ptr %j.addr.t97
%t114 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t112, i32 %t113
%t115 = load i32, ptr %val.addr.t101
store i32 %t115, ptr %t114
%t116 = load i32, ptr %j.addr.t97
%t117 = add i32 %t116, 1
store i32 %t117, ptr %j.addr.t97
br label %while.cond.35
while.end.37:
%t118 = load i32, ptr %i.addr.t4
%t119 = add i32 %t118, 1
store i32 %t119, ptr %i.addr.t4
br label %while.cond.32
while.cond.38:
%t120 = load i32, ptr %i.addr.t4
%t121 = load i32, ptr %T.addr.t0
%t122 = icmp slt i32 %t120, %t121
br i1 %t122, label %while.body.39, label %while.end.40
while.body.39:
store i32 0, ptr %j.addr.t123
br label %while.cond.41
while.end.40:
store i32 0, ptr %total.addr.t153
store i32 0, ptr %r.addr.t154
br label %while.cond.47
while.cond.41:
%t124 = load i32, ptr %j.addr.t123
%t125 = load i32, ptr %T.addr.t0
%t126 = icmp slt i32 %t124, %t125
br i1 %t126, label %while.body.42, label %while.end.43
while.body.42:
store i32 0, ptr %k.addr.t127
store i32 0, ptr %sum.addr.t128
br label %while.cond.44
while.end.43:
%t151 = load i32, ptr %i.addr.t4
%t152 = add i32 %t151, 1
store i32 %t152, ptr %i.addr.t4
br label %while.cond.38
while.cond.44:
%t129 = load i32, ptr %k.addr.t127
%t130 = load i32, ptr %T.addr.t0
%t131 = icmp slt i32 %t129, %t130
br i1 %t131, label %while.body.45, label %while.end.46
while.body.45:
%t132 = load i32, ptr %sum.addr.t128
%t133 = load i32, ptr %i.addr.t4
%t134 = load i32, ptr %k.addr.t127
%t135 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t133, i32 %t134
%t136 = load i32, ptr %t135
%t137 = load i32, ptr %k.addr.t127
%t138 = load i32, ptr %j.addr.t123
%t139 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t137, i32 %t138
%t140 = load i32, ptr %t139
%t141 = mul i32 %t136, %t140
%t142 = add i32 %t132, %t141
store i32 %t142, ptr %sum.addr.t128
%t143 = load i32, ptr %k.addr.t127
%t144 = add i32 %t143, 1
store i32 %t144, ptr %k.addr.t127
br label %while.cond.44
while.end.46:
%t145 = load i32, ptr %i.addr.t4
%t146 = load i32, ptr %j.addr.t123
%t147 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t145, i32 %t146
%t148 = load i32, ptr %sum.addr.t128
store i32 %t148, ptr %t147
%t149 = load i32, ptr %j.addr.t123
%t150 = add i32 %t149, 1
store i32 %t150, ptr %j.addr.t123
br label %while.cond.41
while.cond.47:
%t155 = load i32, ptr %r.addr.t154
%t156 = load i32, ptr %R.addr.t2
%t157 = icmp slt i32 %t155, %t156
br i1 %t157, label %while.body.48, label %while.end.49
while.body.48:
store i32 0, ptr %i.addr.t4
br label %while.cond.50
while.end.49:
call void @stoptime()
%t182 = load i32, ptr %total.addr.t153
call void @putint(i32 %t182)
call void @putch(i32 10)
ret i32 0
while.cond.50:
%t158 = load i32, ptr %i.addr.t4
%t159 = load i32, ptr %T.addr.t0
%t160 = icmp slt i32 %t158, %t159
br i1 %t160, label %while.body.51, label %while.end.52
while.body.51:
store i32 0, ptr %j.addr.t161
br label %while.cond.53
while.end.52:
%t180 = load i32, ptr %r.addr.t154
%t181 = add i32 %t180, 1
store i32 %t181, ptr %r.addr.t154
br label %while.cond.47
while.cond.53:
%t162 = load i32, ptr %j.addr.t161
%t163 = load i32, ptr %T.addr.t0
%t164 = icmp slt i32 %t162, %t163
br i1 %t164, label %while.body.54, label %while.end.55
while.body.54:
%t165 = load i32, ptr %total.addr.t153
%t166 = load i32, ptr %i.addr.t4
%t167 = load i32, ptr %j.addr.t161
%t168 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t166, i32 %t167
%t169 = load i32, ptr %t168
%t170 = load i32, ptr %i.addr.t4
%t171 = load i32, ptr %j.addr.t161
%t172 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t170, i32 %t171
%t173 = load i32, ptr %t172
%t174 = mul i32 %t169, %t173
%t175 = add i32 %t165, %t174
store i32 %t175, ptr %total.addr.t153
%t176 = load i32, ptr %j.addr.t161
%t177 = add i32 %t176, 1
store i32 %t177, ptr %j.addr.t161
br label %while.cond.53
while.end.55:
%t178 = load i32, ptr %i.addr.t4
%t179 = add i32 %t178, 1
store i32 %t179, ptr %i.addr.t4
br label %while.cond.50
}

@ -1,367 +0,0 @@
@A = global [1024 x [1024 x i32]] zeroinitializer
@B = global [1024 x [1024 x i32]] zeroinitializer
@C = global [1024 x [1024 x i32]] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @main() {
entry:
%T.addr.t0 = alloca i32
%R.addr.t2 = alloca i32
%i.addr.t4 = alloca i32
%j.addr.t38 = alloca i32
%j.addr.t57 = alloca i32
%j.addr.t72 = alloca i32
%j.addr.t97 = alloca i32
%val.addr.t101 = alloca i32
%j.addr.t123 = alloca i32
%k.addr.t127 = alloca i32
%sum.addr.t128 = alloca i32
%total.addr.t153 = alloca i32
%r.addr.t154 = alloca i32
%j.addr.t161 = alloca i32
%t1 = call i32 @getint()
store i32 %t1, ptr %T.addr.t0
%t3 = call i32 @getint()
store i32 %t3, ptr %R.addr.t2
store i32 0, ptr %i.addr.t4
br label %while.cond.0
while.cond.0:
%t5 = load i32, ptr %i.addr.t4
%t6 = load i32, ptr %T.addr.t0
%t7 = icmp slt i32 %t5, %t6
br i1 %t7, label %while.body.1, label %while.end.2
while.body.1:
%t8 = load i32, ptr %i.addr.t4
%t9 = load i32, ptr %T.addr.t0
%t10 = sdiv i32 %t9, 2
%t11 = icmp slt i32 %t8, %t10
br i1 %t11, label %if.then.3, label %if.end.4
while.end.2:
store i32 0, ptr %i.addr.t4
br label %while.cond.5
if.then.3:
%t12 = load i32, ptr %i.addr.t4
%t13 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t12
%t14 = getelementptr [1024 x i32], ptr %t13, i32 0, i32 0
%t15 = call i32 @getarray(ptr %t14)
br label %if.end.4
if.end.4:
%t16 = load i32, ptr %i.addr.t4
%t17 = add i32 %t16, 1
store i32 %t17, ptr %i.addr.t4
br label %while.cond.0
while.cond.5:
%t18 = load i32, ptr %i.addr.t4
%t19 = load i32, ptr %T.addr.t0
%t20 = icmp slt i32 %t18, %t19
br i1 %t20, label %while.body.6, label %while.end.7
while.body.6:
%t21 = load i32, ptr %i.addr.t4
%t22 = load i32, ptr %T.addr.t0
%t23 = sdiv i32 %t22, 2
%t24 = icmp sge i32 %t21, %t23
br i1 %t24, label %if.then.8, label %if.end.9
while.end.7:
call void @starttime()
store i32 0, ptr %i.addr.t4
br label %while.cond.10
if.then.8:
%t25 = load i32, ptr %i.addr.t4
%t26 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t25
%t27 = getelementptr [1024 x i32], ptr %t26, i32 0, i32 0
%t28 = call i32 @getarray(ptr %t27)
br label %if.end.9
if.end.9:
%t29 = load i32, ptr %i.addr.t4
%t30 = add i32 %t29, 1
store i32 %t30, ptr %i.addr.t4
br label %while.cond.5
while.cond.10:
%t31 = load i32, ptr %i.addr.t4
%t32 = load i32, ptr %T.addr.t0
%t33 = icmp slt i32 %t31, %t32
br i1 %t33, label %while.body.11, label %while.end.12
while.body.11:
%t34 = load i32, ptr %i.addr.t4
%t35 = load i32, ptr %T.addr.t0
%t36 = sdiv i32 %t35, 2
%t37 = icmp sge i32 %t34, %t36
br i1 %t37, label %if.then.13, label %if.end.14
while.end.12:
store i32 0, ptr %i.addr.t4
br label %while.cond.18
if.then.13:
store i32 0, ptr %j.addr.t38
br label %while.cond.15
if.end.14:
%t48 = load i32, ptr %i.addr.t4
%t49 = add i32 %t48, 1
store i32 %t49, ptr %i.addr.t4
br label %while.cond.10
while.cond.15:
%t39 = load i32, ptr %j.addr.t38
%t40 = load i32, ptr %T.addr.t0
%t41 = icmp slt i32 %t39, %t40
br i1 %t41, label %while.body.16, label %while.end.17
while.body.16:
%t42 = load i32, ptr %i.addr.t4
%t43 = load i32, ptr %j.addr.t38
%t44 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t42, i32 %t43
%t45 = sub i32 0, 1
store i32 %t45, ptr %t44
%t46 = load i32, ptr %j.addr.t38
%t47 = add i32 %t46, 1
store i32 %t47, ptr %j.addr.t38
br label %while.cond.15
while.end.17:
br label %if.end.14
while.cond.18:
%t50 = load i32, ptr %i.addr.t4
%t51 = load i32, ptr %T.addr.t0
%t52 = icmp slt i32 %t50, %t51
br i1 %t52, label %while.body.19, label %while.end.20
while.body.19:
%t53 = load i32, ptr %i.addr.t4
%t54 = load i32, ptr %T.addr.t0
%t55 = sdiv i32 %t54, 2
%t56 = icmp slt i32 %t53, %t55
br i1 %t56, label %if.then.21, label %if.end.22
while.end.20:
store i32 0, ptr %i.addr.t4
br label %while.cond.26
if.then.21:
store i32 0, ptr %j.addr.t57
br label %while.cond.23
if.end.22:
%t67 = load i32, ptr %i.addr.t4
%t68 = add i32 %t67, 1
store i32 %t68, ptr %i.addr.t4
br label %while.cond.18
while.cond.23:
%t58 = load i32, ptr %j.addr.t57
%t59 = load i32, ptr %T.addr.t0
%t60 = icmp slt i32 %t58, %t59
br i1 %t60, label %while.body.24, label %while.end.25
while.body.24:
%t61 = load i32, ptr %i.addr.t4
%t62 = load i32, ptr %j.addr.t57
%t63 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t61, i32 %t62
%t64 = sub i32 0, 1
store i32 %t64, ptr %t63
%t65 = load i32, ptr %j.addr.t57
%t66 = add i32 %t65, 1
store i32 %t66, ptr %j.addr.t57
br label %while.cond.23
while.end.25:
br label %if.end.22
while.cond.26:
%t69 = load i32, ptr %i.addr.t4
%t70 = load i32, ptr %T.addr.t0
%t71 = icmp slt i32 %t69, %t70
br i1 %t71, label %while.body.27, label %while.end.28
while.body.27:
store i32 0, ptr %j.addr.t72
br label %while.cond.29
while.end.28:
store i32 0, ptr %i.addr.t4
br label %while.cond.32
while.cond.29:
%t73 = load i32, ptr %j.addr.t72
%t74 = load i32, ptr %T.addr.t0
%t75 = icmp slt i32 %t73, %t74
br i1 %t75, label %while.body.30, label %while.end.31
while.body.30:
%t76 = load i32, ptr %i.addr.t4
%t77 = load i32, ptr %j.addr.t72
%t78 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t76, i32 %t77
%t79 = load i32, ptr %i.addr.t4
%t80 = load i32, ptr %j.addr.t72
%t81 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t79, i32 %t80
%t82 = load i32, ptr %t81
%t83 = mul i32 %t82, 2
%t84 = load i32, ptr %i.addr.t4
%t85 = load i32, ptr %j.addr.t72
%t86 = getelementptr [1024 x [1024 x i32]], ptr @B, i32 0, i32 %t84, i32 %t85
%t87 = load i32, ptr %t86
%t88 = mul i32 %t87, 3
%t89 = add i32 %t83, %t88
store i32 %t89, ptr %t78
%t90 = load i32, ptr %j.addr.t72
%t91 = add i32 %t90, 1
store i32 %t91, ptr %j.addr.t72
br label %while.cond.29
while.end.31:
%t92 = load i32, ptr %i.addr.t4
%t93 = add i32 %t92, 1
store i32 %t93, ptr %i.addr.t4
br label %while.cond.26
while.cond.32:
%t94 = load i32, ptr %i.addr.t4
%t95 = load i32, ptr %T.addr.t0
%t96 = icmp slt i32 %t94, %t95
br i1 %t96, label %while.body.33, label %while.end.34
while.body.33:
store i32 0, ptr %j.addr.t97
br label %while.cond.35
while.end.34:
store i32 0, ptr %i.addr.t4
br label %while.cond.38
while.cond.35:
%t98 = load i32, ptr %j.addr.t97
%t99 = load i32, ptr %T.addr.t0
%t100 = icmp slt i32 %t98, %t99
br i1 %t100, label %while.body.36, label %while.end.37
while.body.36:
%t102 = load i32, ptr %i.addr.t4
%t103 = load i32, ptr %j.addr.t97
%t104 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t102, i32 %t103
%t105 = load i32, ptr %t104
store i32 %t105, ptr %val.addr.t101
%t106 = load i32, ptr %val.addr.t101
%t107 = load i32, ptr %val.addr.t101
%t108 = mul i32 %t106, %t107
%t109 = add i32 %t108, 7
store i32 %t109, ptr %val.addr.t101
%t110 = load i32, ptr %val.addr.t101
%t111 = sdiv i32 %t110, 3
store i32 %t111, ptr %val.addr.t101
%t112 = load i32, ptr %i.addr.t4
%t113 = load i32, ptr %j.addr.t97
%t114 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t112, i32 %t113
%t115 = load i32, ptr %val.addr.t101
store i32 %t115, ptr %t114
%t116 = load i32, ptr %j.addr.t97
%t117 = add i32 %t116, 1
store i32 %t117, ptr %j.addr.t97
br label %while.cond.35
while.end.37:
%t118 = load i32, ptr %i.addr.t4
%t119 = add i32 %t118, 1
store i32 %t119, ptr %i.addr.t4
br label %while.cond.32
while.cond.38:
%t120 = load i32, ptr %i.addr.t4
%t121 = load i32, ptr %T.addr.t0
%t122 = icmp slt i32 %t120, %t121
br i1 %t122, label %while.body.39, label %while.end.40
while.body.39:
store i32 0, ptr %j.addr.t123
br label %while.cond.41
while.end.40:
store i32 0, ptr %total.addr.t153
store i32 0, ptr %r.addr.t154
br label %while.cond.47
while.cond.41:
%t124 = load i32, ptr %j.addr.t123
%t125 = load i32, ptr %T.addr.t0
%t126 = icmp slt i32 %t124, %t125
br i1 %t126, label %while.body.42, label %while.end.43
while.body.42:
store i32 0, ptr %k.addr.t127
store i32 0, ptr %sum.addr.t128
br label %while.cond.44
while.end.43:
%t151 = load i32, ptr %i.addr.t4
%t152 = add i32 %t151, 1
store i32 %t152, ptr %i.addr.t4
br label %while.cond.38
while.cond.44:
%t129 = load i32, ptr %k.addr.t127
%t130 = load i32, ptr %T.addr.t0
%t131 = icmp slt i32 %t129, %t130
br i1 %t131, label %while.body.45, label %while.end.46
while.body.45:
%t132 = load i32, ptr %sum.addr.t128
%t133 = load i32, ptr %i.addr.t4
%t134 = load i32, ptr %k.addr.t127
%t135 = getelementptr [1024 x [1024 x i32]], ptr @C, i32 0, i32 %t133, i32 %t134
%t136 = load i32, ptr %t135
%t137 = load i32, ptr %k.addr.t127
%t138 = load i32, ptr %j.addr.t123
%t139 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t137, i32 %t138
%t140 = load i32, ptr %t139
%t141 = mul i32 %t136, %t140
%t142 = add i32 %t132, %t141
store i32 %t142, ptr %sum.addr.t128
%t143 = load i32, ptr %k.addr.t127
%t144 = add i32 %t143, 1
store i32 %t144, ptr %k.addr.t127
br label %while.cond.44
while.end.46:
%t145 = load i32, ptr %i.addr.t4
%t146 = load i32, ptr %j.addr.t123
%t147 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t145, i32 %t146
%t148 = load i32, ptr %sum.addr.t128
store i32 %t148, ptr %t147
%t149 = load i32, ptr %j.addr.t123
%t150 = add i32 %t149, 1
store i32 %t150, ptr %j.addr.t123
br label %while.cond.41
while.cond.47:
%t155 = load i32, ptr %r.addr.t154
%t156 = load i32, ptr %R.addr.t2
%t157 = icmp slt i32 %t155, %t156
br i1 %t157, label %while.body.48, label %while.end.49
while.body.48:
store i32 0, ptr %i.addr.t4
br label %while.cond.50
while.end.49:
call void @stoptime()
%t182 = load i32, ptr %total.addr.t153
call void @putint(i32 %t182)
call void @putch(i32 10)
ret i32 0
while.cond.50:
%t158 = load i32, ptr %i.addr.t4
%t159 = load i32, ptr %T.addr.t0
%t160 = icmp slt i32 %t158, %t159
br i1 %t160, label %while.body.51, label %while.end.52
while.body.51:
store i32 0, ptr %j.addr.t161
br label %while.cond.53
while.end.52:
%t180 = load i32, ptr %r.addr.t154
%t181 = add i32 %t180, 1
store i32 %t181, ptr %r.addr.t154
br label %while.cond.47
while.cond.53:
%t162 = load i32, ptr %j.addr.t161
%t163 = load i32, ptr %T.addr.t0
%t164 = icmp slt i32 %t162, %t163
br i1 %t164, label %while.body.54, label %while.end.55
while.body.54:
%t165 = load i32, ptr %total.addr.t153
%t166 = load i32, ptr %i.addr.t4
%t167 = load i32, ptr %j.addr.t161
%t168 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t166, i32 %t167
%t169 = load i32, ptr %t168
%t170 = load i32, ptr %i.addr.t4
%t171 = load i32, ptr %j.addr.t161
%t172 = getelementptr [1024 x [1024 x i32]], ptr @A, i32 0, i32 %t170, i32 %t171
%t173 = load i32, ptr %t172
%t174 = mul i32 %t169, %t173
%t175 = add i32 %t165, %t174
store i32 %t175, ptr %total.addr.t153
%t176 = load i32, ptr %j.addr.t161
%t177 = add i32 %t176, 1
store i32 %t177, ptr %j.addr.t161
br label %while.cond.53
while.end.55:
%t178 = load i32, ptr %i.addr.t4
%t179 = add i32 %t178, 1
store i32 %t179, ptr %i.addr.t4
br label %while.cond.50
}

@ -1,387 +0,0 @@
@mod = constant i32 998244353
@d = global i32 0
@maxlen = constant i32 2097152
@temp = global [2097152 x i32] zeroinitializer
@a = global [2097152 x i32] zeroinitializer
@b = global [2097152 x i32] zeroinitializer
@c = global [2097152 x i32] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @multiply(i32 %a, i32 %b) {
entry:
%a.addr = alloca i32
%b.addr = alloca i32
%cur.addr.t6 = alloca i32
store i32 %a, ptr %a.addr
store i32 %b, ptr %b.addr
%t0 = load i32, ptr %b.addr
%t1 = icmp eq i32 %t0, 0
br i1 %t1, label %if.then.0, label %if.end.1
if.then.0:
ret i32 0
if.end.1:
%t2 = load i32, ptr %b.addr
%t3 = icmp eq i32 %t2, 1
br i1 %t3, label %if.then.2, label %if.end.3
if.then.2:
%t4 = load i32, ptr %a.addr
%t5 = srem i32 %t4, 998244353
ret i32 %t5
if.end.3:
%t7 = load i32, ptr %a.addr
%t8 = load i32, ptr %b.addr
%t9 = sdiv i32 %t8, 2
%t10 = call i32 @multiply(i32 %t7, i32 %t9)
store i32 %t10, ptr %cur.addr.t6
%t11 = load i32, ptr %cur.addr.t6
%t12 = load i32, ptr %cur.addr.t6
%t13 = add i32 %t11, %t12
%t14 = srem i32 %t13, 998244353
store i32 %t14, ptr %cur.addr.t6
%t15 = load i32, ptr %b.addr
%t16 = srem i32 %t15, 2
%t17 = icmp eq i32 %t16, 1
br i1 %t17, label %if.then.4, label %if.else.5
if.then.4:
%t18 = load i32, ptr %cur.addr.t6
%t19 = load i32, ptr %a.addr
%t20 = add i32 %t18, %t19
%t21 = srem i32 %t20, 998244353
ret i32 %t21
if.else.5:
%t22 = load i32, ptr %cur.addr.t6
ret i32 %t22
}
define i32 @power(i32 %a, i32 %b) {
entry:
%a.addr = alloca i32
%b.addr = alloca i32
%cur.addr.t25 = alloca i32
store i32 %a, ptr %a.addr
store i32 %b, ptr %b.addr
%t23 = load i32, ptr %b.addr
%t24 = icmp eq i32 %t23, 0
br i1 %t24, label %if.then.6, label %if.end.7
if.then.6:
ret i32 1
if.end.7:
%t26 = load i32, ptr %a.addr
%t27 = load i32, ptr %b.addr
%t28 = sdiv i32 %t27, 2
%t29 = call i32 @power(i32 %t26, i32 %t28)
store i32 %t29, ptr %cur.addr.t25
%t30 = load i32, ptr %cur.addr.t25
%t31 = load i32, ptr %cur.addr.t25
%t32 = call i32 @multiply(i32 %t30, i32 %t31)
store i32 %t32, ptr %cur.addr.t25
%t33 = load i32, ptr %b.addr
%t34 = srem i32 %t33, 2
%t35 = icmp eq i32 %t34, 1
br i1 %t35, label %if.then.8, label %if.else.9
if.then.8:
%t36 = load i32, ptr %cur.addr.t25
%t37 = load i32, ptr %a.addr
%t38 = call i32 @multiply(i32 %t36, i32 %t37)
ret i32 %t38
if.else.9:
%t39 = load i32, ptr %cur.addr.t25
ret i32 %t39
}
define i32 @memmove(ptr %dst, i32 %dst_pos, ptr %src, i32 %len) {
entry:
%dst_pos.addr = alloca i32
%len.addr = alloca i32
%i.addr.t40 = alloca i32
store i32 %dst_pos, ptr %dst_pos.addr
store i32 %len, ptr %len.addr
store i32 0, ptr %i.addr.t40
br label %while.cond.10
while.cond.10:
%t41 = load i32, ptr %i.addr.t40
%t42 = load i32, ptr %len.addr
%t43 = icmp slt i32 %t41, %t42
br i1 %t43, label %while.body.11, label %while.end.12
while.body.11:
%t44 = load i32, ptr %dst_pos.addr
%t45 = load i32, ptr %i.addr.t40
%t46 = add i32 %t44, %t45
%t47 = getelementptr i32, ptr %dst, i32 %t46
%t48 = load i32, ptr %i.addr.t40
%t49 = getelementptr i32, ptr %src, i32 %t48
%t50 = load i32, ptr %t49
store i32 %t50, ptr %t47
%t51 = load i32, ptr %i.addr.t40
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t40
br label %while.cond.10
while.end.12:
%t53 = load i32, ptr %i.addr.t40
ret i32 %t53
}
define i32 @fft(ptr %arr, i32 %begin_pos, i32 %n, i32 %w) {
entry:
%begin_pos.addr = alloca i32
%n.addr = alloca i32
%w.addr = alloca i32
%i.addr.t56 = alloca i32
%wn.addr.t105 = alloca i32
%x.addr.t110 = alloca i32
%y.addr.t116 = alloca i32
store i32 %begin_pos, ptr %begin_pos.addr
store i32 %n, ptr %n.addr
store i32 %w, ptr %w.addr
%t54 = load i32, ptr %n.addr
%t55 = icmp eq i32 %t54, 1
br i1 %t55, label %if.then.13, label %if.end.14
if.then.13:
ret i32 1
if.end.14:
store i32 0, ptr %i.addr.t56
br label %while.cond.15
while.cond.15:
%t57 = load i32, ptr %i.addr.t56
%t58 = load i32, ptr %n.addr
%t59 = icmp slt i32 %t57, %t58
br i1 %t59, label %while.body.16, label %while.end.17
while.body.16:
%t60 = load i32, ptr %i.addr.t56
%t61 = srem i32 %t60, 2
%t62 = icmp eq i32 %t61, 0
br i1 %t62, label %if.then.18, label %if.else.19
while.end.17:
%t84 = load i32, ptr %begin_pos.addr
%t85 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 0
%t86 = load i32, ptr %n.addr
%t87 = call i32 @memmove(ptr %arr, i32 %t84, ptr %t85, i32 %t86)
%t88 = load i32, ptr %begin_pos.addr
%t89 = load i32, ptr %n.addr
%t90 = sdiv i32 %t89, 2
%t91 = load i32, ptr %w.addr
%t92 = load i32, ptr %w.addr
%t93 = call i32 @multiply(i32 %t91, i32 %t92)
%t94 = call i32 @fft(ptr %arr, i32 %t88, i32 %t90, i32 %t93)
%t95 = load i32, ptr %begin_pos.addr
%t96 = load i32, ptr %n.addr
%t97 = sdiv i32 %t96, 2
%t98 = add i32 %t95, %t97
%t99 = load i32, ptr %n.addr
%t100 = sdiv i32 %t99, 2
%t101 = load i32, ptr %w.addr
%t102 = load i32, ptr %w.addr
%t103 = call i32 @multiply(i32 %t101, i32 %t102)
%t104 = call i32 @fft(ptr %arr, i32 %t98, i32 %t100, i32 %t103)
store i32 0, ptr %i.addr.t56
store i32 1, ptr %wn.addr.t105
br label %while.cond.21
if.then.18:
%t63 = load i32, ptr %i.addr.t56
%t64 = sdiv i32 %t63, 2
%t65 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 %t64
%t66 = load i32, ptr %i.addr.t56
%t67 = load i32, ptr %begin_pos.addr
%t68 = add i32 %t66, %t67
%t69 = getelementptr i32, ptr %arr, i32 %t68
%t70 = load i32, ptr %t69
store i32 %t70, ptr %t65
br label %if.end.20
if.else.19:
%t71 = load i32, ptr %n.addr
%t72 = sdiv i32 %t71, 2
%t73 = load i32, ptr %i.addr.t56
%t74 = sdiv i32 %t73, 2
%t75 = add i32 %t72, %t74
%t76 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 %t75
%t77 = load i32, ptr %i.addr.t56
%t78 = load i32, ptr %begin_pos.addr
%t79 = add i32 %t77, %t78
%t80 = getelementptr i32, ptr %arr, i32 %t79
%t81 = load i32, ptr %t80
store i32 %t81, ptr %t76
br label %if.end.20
if.end.20:
%t82 = load i32, ptr %i.addr.t56
%t83 = add i32 %t82, 1
store i32 %t83, ptr %i.addr.t56
br label %while.cond.15
while.cond.21:
%t106 = load i32, ptr %i.addr.t56
%t107 = load i32, ptr %n.addr
%t108 = sdiv i32 %t107, 2
%t109 = icmp slt i32 %t106, %t108
br i1 %t109, label %while.body.22, label %while.end.23
while.body.22:
%t111 = load i32, ptr %begin_pos.addr
%t112 = load i32, ptr %i.addr.t56
%t113 = add i32 %t111, %t112
%t114 = getelementptr i32, ptr %arr, i32 %t113
%t115 = load i32, ptr %t114
store i32 %t115, ptr %x.addr.t110
%t117 = load i32, ptr %begin_pos.addr
%t118 = load i32, ptr %i.addr.t56
%t119 = add i32 %t117, %t118
%t120 = load i32, ptr %n.addr
%t121 = sdiv i32 %t120, 2
%t122 = add i32 %t119, %t121
%t123 = getelementptr i32, ptr %arr, i32 %t122
%t124 = load i32, ptr %t123
store i32 %t124, ptr %y.addr.t116
%t125 = load i32, ptr %begin_pos.addr
%t126 = load i32, ptr %i.addr.t56
%t127 = add i32 %t125, %t126
%t128 = getelementptr i32, ptr %arr, i32 %t127
%t129 = load i32, ptr %x.addr.t110
%t130 = load i32, ptr %wn.addr.t105
%t131 = load i32, ptr %y.addr.t116
%t132 = call i32 @multiply(i32 %t130, i32 %t131)
%t133 = add i32 %t129, %t132
%t134 = srem i32 %t133, 998244353
store i32 %t134, ptr %t128
%t135 = load i32, ptr %begin_pos.addr
%t136 = load i32, ptr %i.addr.t56
%t137 = add i32 %t135, %t136
%t138 = load i32, ptr %n.addr
%t139 = sdiv i32 %t138, 2
%t140 = add i32 %t137, %t139
%t141 = getelementptr i32, ptr %arr, i32 %t140
%t142 = load i32, ptr %x.addr.t110
%t143 = load i32, ptr %wn.addr.t105
%t144 = load i32, ptr %y.addr.t116
%t145 = call i32 @multiply(i32 %t143, i32 %t144)
%t146 = sub i32 %t142, %t145
%t147 = add i32 %t146, 998244353
%t148 = srem i32 %t147, 998244353
store i32 %t148, ptr %t141
%t149 = load i32, ptr %wn.addr.t105
%t150 = load i32, ptr %w.addr
%t151 = call i32 @multiply(i32 %t149, i32 %t150)
store i32 %t151, ptr %wn.addr.t105
%t152 = load i32, ptr %i.addr.t56
%t153 = add i32 %t152, 1
store i32 %t153, ptr %i.addr.t56
br label %while.cond.21
while.end.23:
ret i32 0
}
define i32 @main() {
entry:
%n.addr.t154 = alloca i32
%m.addr.t157 = alloca i32
%i.addr.t182 = alloca i32
%t155 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t156 = call i32 @getarray(ptr %t155)
store i32 %t156, ptr %n.addr.t154
%t158 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 0
%t159 = call i32 @getarray(ptr %t158)
store i32 %t159, ptr %m.addr.t157
call void @starttime()
store i32 1, ptr @d
br label %while.cond.24
while.cond.24:
%t160 = load i32, ptr @d
%t161 = load i32, ptr %n.addr.t154
%t162 = load i32, ptr %m.addr.t157
%t163 = add i32 %t161, %t162
%t164 = sub i32 %t163, 1
%t165 = icmp slt i32 %t160, %t164
br i1 %t165, label %while.body.25, label %while.end.26
while.body.25:
%t166 = load i32, ptr @d
%t167 = mul i32 %t166, 2
store i32 %t167, ptr @d
br label %while.cond.24
while.end.26:
%t168 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t169 = load i32, ptr @d
%t170 = sub i32 998244353, 1
%t171 = load i32, ptr @d
%t172 = sdiv i32 %t170, %t171
%t173 = call i32 @power(i32 3, i32 %t172)
%t174 = call i32 @fft(ptr %t168, i32 0, i32 %t169, i32 %t173)
%t175 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 0
%t176 = load i32, ptr @d
%t177 = sub i32 998244353, 1
%t178 = load i32, ptr @d
%t179 = sdiv i32 %t177, %t178
%t180 = call i32 @power(i32 3, i32 %t179)
%t181 = call i32 @fft(ptr %t175, i32 0, i32 %t176, i32 %t180)
store i32 0, ptr %i.addr.t182
br label %while.cond.27
while.cond.27:
%t183 = load i32, ptr %i.addr.t182
%t184 = load i32, ptr @d
%t185 = icmp slt i32 %t183, %t184
br i1 %t185, label %while.body.28, label %while.end.29
while.body.28:
%t186 = load i32, ptr %i.addr.t182
%t187 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t186
%t188 = load i32, ptr %i.addr.t182
%t189 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t188
%t190 = load i32, ptr %t189
%t191 = load i32, ptr %i.addr.t182
%t192 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 %t191
%t193 = load i32, ptr %t192
%t194 = call i32 @multiply(i32 %t190, i32 %t193)
store i32 %t194, ptr %t187
%t195 = load i32, ptr %i.addr.t182
%t196 = add i32 %t195, 1
store i32 %t196, ptr %i.addr.t182
br label %while.cond.27
while.end.29:
%t197 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t198 = load i32, ptr @d
%t199 = sub i32 998244353, 1
%t200 = sub i32 998244353, 1
%t201 = load i32, ptr @d
%t202 = sdiv i32 %t200, %t201
%t203 = sub i32 %t199, %t202
%t204 = call i32 @power(i32 3, i32 %t203)
%t205 = call i32 @fft(ptr %t197, i32 0, i32 %t198, i32 %t204)
store i32 0, ptr %i.addr.t182
br label %while.cond.30
while.cond.30:
%t206 = load i32, ptr %i.addr.t182
%t207 = load i32, ptr @d
%t208 = icmp slt i32 %t206, %t207
br i1 %t208, label %while.body.31, label %while.end.32
while.body.31:
%t209 = load i32, ptr %i.addr.t182
%t210 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t209
%t211 = load i32, ptr %i.addr.t182
%t212 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t211
%t213 = load i32, ptr %t212
%t214 = load i32, ptr @d
%t215 = sub i32 998244353, 2
%t216 = call i32 @power(i32 %t214, i32 %t215)
%t217 = call i32 @multiply(i32 %t213, i32 %t216)
store i32 %t217, ptr %t210
%t218 = load i32, ptr %i.addr.t182
%t219 = add i32 %t218, 1
store i32 %t219, ptr %i.addr.t182
br label %while.cond.30
while.end.32:
call void @stoptime()
%t220 = load i32, ptr %n.addr.t154
%t221 = load i32, ptr %m.addr.t157
%t222 = add i32 %t220, %t221
%t223 = sub i32 %t222, 1
%t224 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
call void @putarray(i32 %t223, ptr %t224)
ret i32 0
}

@ -1,387 +0,0 @@
@mod = constant i32 998244353
@d = global i32 0
@maxlen = constant i32 2097152
@temp = global [2097152 x i32] zeroinitializer
@a = global [2097152 x i32] zeroinitializer
@b = global [2097152 x i32] zeroinitializer
@c = global [2097152 x i32] zeroinitializer
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @multiply(i32 %a, i32 %b) {
entry:
%a.addr = alloca i32
%b.addr = alloca i32
%cur.addr.t6 = alloca i32
store i32 %a, ptr %a.addr
store i32 %b, ptr %b.addr
%t0 = load i32, ptr %b.addr
%t1 = icmp eq i32 %t0, 0
br i1 %t1, label %if.then.0, label %if.end.1
if.then.0:
ret i32 0
if.end.1:
%t2 = load i32, ptr %b.addr
%t3 = icmp eq i32 %t2, 1
br i1 %t3, label %if.then.2, label %if.end.3
if.then.2:
%t4 = load i32, ptr %a.addr
%t5 = srem i32 %t4, 998244353
ret i32 %t5
if.end.3:
%t7 = load i32, ptr %a.addr
%t8 = load i32, ptr %b.addr
%t9 = sdiv i32 %t8, 2
%t10 = call i32 @multiply(i32 %t7, i32 %t9)
store i32 %t10, ptr %cur.addr.t6
%t11 = load i32, ptr %cur.addr.t6
%t12 = load i32, ptr %cur.addr.t6
%t13 = add i32 %t11, %t12
%t14 = srem i32 %t13, 998244353
store i32 %t14, ptr %cur.addr.t6
%t15 = load i32, ptr %b.addr
%t16 = srem i32 %t15, 2
%t17 = icmp eq i32 %t16, 1
br i1 %t17, label %if.then.4, label %if.else.5
if.then.4:
%t18 = load i32, ptr %cur.addr.t6
%t19 = load i32, ptr %a.addr
%t20 = add i32 %t18, %t19
%t21 = srem i32 %t20, 998244353
ret i32 %t21
if.else.5:
%t22 = load i32, ptr %cur.addr.t6
ret i32 %t22
}
define i32 @power(i32 %a, i32 %b) {
entry:
%a.addr = alloca i32
%b.addr = alloca i32
%cur.addr.t25 = alloca i32
store i32 %a, ptr %a.addr
store i32 %b, ptr %b.addr
%t23 = load i32, ptr %b.addr
%t24 = icmp eq i32 %t23, 0
br i1 %t24, label %if.then.6, label %if.end.7
if.then.6:
ret i32 1
if.end.7:
%t26 = load i32, ptr %a.addr
%t27 = load i32, ptr %b.addr
%t28 = sdiv i32 %t27, 2
%t29 = call i32 @power(i32 %t26, i32 %t28)
store i32 %t29, ptr %cur.addr.t25
%t30 = load i32, ptr %cur.addr.t25
%t31 = load i32, ptr %cur.addr.t25
%t32 = call i32 @multiply(i32 %t30, i32 %t31)
store i32 %t32, ptr %cur.addr.t25
%t33 = load i32, ptr %b.addr
%t34 = srem i32 %t33, 2
%t35 = icmp eq i32 %t34, 1
br i1 %t35, label %if.then.8, label %if.else.9
if.then.8:
%t36 = load i32, ptr %cur.addr.t25
%t37 = load i32, ptr %a.addr
%t38 = call i32 @multiply(i32 %t36, i32 %t37)
ret i32 %t38
if.else.9:
%t39 = load i32, ptr %cur.addr.t25
ret i32 %t39
}
define i32 @memmove(ptr %dst, i32 %dst_pos, ptr %src, i32 %len) {
entry:
%dst_pos.addr = alloca i32
%len.addr = alloca i32
%i.addr.t40 = alloca i32
store i32 %dst_pos, ptr %dst_pos.addr
store i32 %len, ptr %len.addr
store i32 0, ptr %i.addr.t40
br label %while.cond.10
while.cond.10:
%t41 = load i32, ptr %i.addr.t40
%t42 = load i32, ptr %len.addr
%t43 = icmp slt i32 %t41, %t42
br i1 %t43, label %while.body.11, label %while.end.12
while.body.11:
%t44 = load i32, ptr %dst_pos.addr
%t45 = load i32, ptr %i.addr.t40
%t46 = add i32 %t44, %t45
%t47 = getelementptr i32, ptr %dst, i32 %t46
%t48 = load i32, ptr %i.addr.t40
%t49 = getelementptr i32, ptr %src, i32 %t48
%t50 = load i32, ptr %t49
store i32 %t50, ptr %t47
%t51 = load i32, ptr %i.addr.t40
%t52 = add i32 %t51, 1
store i32 %t52, ptr %i.addr.t40
br label %while.cond.10
while.end.12:
%t53 = load i32, ptr %i.addr.t40
ret i32 %t53
}
define i32 @fft(ptr %arr, i32 %begin_pos, i32 %n, i32 %w) {
entry:
%begin_pos.addr = alloca i32
%n.addr = alloca i32
%w.addr = alloca i32
%i.addr.t56 = alloca i32
%wn.addr.t105 = alloca i32
%x.addr.t110 = alloca i32
%y.addr.t116 = alloca i32
store i32 %begin_pos, ptr %begin_pos.addr
store i32 %n, ptr %n.addr
store i32 %w, ptr %w.addr
%t54 = load i32, ptr %n.addr
%t55 = icmp eq i32 %t54, 1
br i1 %t55, label %if.then.13, label %if.end.14
if.then.13:
ret i32 1
if.end.14:
store i32 0, ptr %i.addr.t56
br label %while.cond.15
while.cond.15:
%t57 = load i32, ptr %i.addr.t56
%t58 = load i32, ptr %n.addr
%t59 = icmp slt i32 %t57, %t58
br i1 %t59, label %while.body.16, label %while.end.17
while.body.16:
%t60 = load i32, ptr %i.addr.t56
%t61 = srem i32 %t60, 2
%t62 = icmp eq i32 %t61, 0
br i1 %t62, label %if.then.18, label %if.else.19
while.end.17:
%t84 = load i32, ptr %begin_pos.addr
%t85 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 0
%t86 = load i32, ptr %n.addr
%t87 = call i32 @memmove(ptr %arr, i32 %t84, ptr %t85, i32 %t86)
%t88 = load i32, ptr %begin_pos.addr
%t89 = load i32, ptr %n.addr
%t90 = sdiv i32 %t89, 2
%t91 = load i32, ptr %w.addr
%t92 = load i32, ptr %w.addr
%t93 = call i32 @multiply(i32 %t91, i32 %t92)
%t94 = call i32 @fft(ptr %arr, i32 %t88, i32 %t90, i32 %t93)
%t95 = load i32, ptr %begin_pos.addr
%t96 = load i32, ptr %n.addr
%t97 = sdiv i32 %t96, 2
%t98 = add i32 %t95, %t97
%t99 = load i32, ptr %n.addr
%t100 = sdiv i32 %t99, 2
%t101 = load i32, ptr %w.addr
%t102 = load i32, ptr %w.addr
%t103 = call i32 @multiply(i32 %t101, i32 %t102)
%t104 = call i32 @fft(ptr %arr, i32 %t98, i32 %t100, i32 %t103)
store i32 0, ptr %i.addr.t56
store i32 1, ptr %wn.addr.t105
br label %while.cond.21
if.then.18:
%t63 = load i32, ptr %i.addr.t56
%t64 = sdiv i32 %t63, 2
%t65 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 %t64
%t66 = load i32, ptr %i.addr.t56
%t67 = load i32, ptr %begin_pos.addr
%t68 = add i32 %t66, %t67
%t69 = getelementptr i32, ptr %arr, i32 %t68
%t70 = load i32, ptr %t69
store i32 %t70, ptr %t65
br label %if.end.20
if.else.19:
%t71 = load i32, ptr %n.addr
%t72 = sdiv i32 %t71, 2
%t73 = load i32, ptr %i.addr.t56
%t74 = sdiv i32 %t73, 2
%t75 = add i32 %t72, %t74
%t76 = getelementptr [2097152 x i32], ptr @temp, i32 0, i32 %t75
%t77 = load i32, ptr %i.addr.t56
%t78 = load i32, ptr %begin_pos.addr
%t79 = add i32 %t77, %t78
%t80 = getelementptr i32, ptr %arr, i32 %t79
%t81 = load i32, ptr %t80
store i32 %t81, ptr %t76
br label %if.end.20
if.end.20:
%t82 = load i32, ptr %i.addr.t56
%t83 = add i32 %t82, 1
store i32 %t83, ptr %i.addr.t56
br label %while.cond.15
while.cond.21:
%t106 = load i32, ptr %i.addr.t56
%t107 = load i32, ptr %n.addr
%t108 = sdiv i32 %t107, 2
%t109 = icmp slt i32 %t106, %t108
br i1 %t109, label %while.body.22, label %while.end.23
while.body.22:
%t111 = load i32, ptr %begin_pos.addr
%t112 = load i32, ptr %i.addr.t56
%t113 = add i32 %t111, %t112
%t114 = getelementptr i32, ptr %arr, i32 %t113
%t115 = load i32, ptr %t114
store i32 %t115, ptr %x.addr.t110
%t117 = load i32, ptr %begin_pos.addr
%t118 = load i32, ptr %i.addr.t56
%t119 = add i32 %t117, %t118
%t120 = load i32, ptr %n.addr
%t121 = sdiv i32 %t120, 2
%t122 = add i32 %t119, %t121
%t123 = getelementptr i32, ptr %arr, i32 %t122
%t124 = load i32, ptr %t123
store i32 %t124, ptr %y.addr.t116
%t125 = load i32, ptr %begin_pos.addr
%t126 = load i32, ptr %i.addr.t56
%t127 = add i32 %t125, %t126
%t128 = getelementptr i32, ptr %arr, i32 %t127
%t129 = load i32, ptr %x.addr.t110
%t130 = load i32, ptr %wn.addr.t105
%t131 = load i32, ptr %y.addr.t116
%t132 = call i32 @multiply(i32 %t130, i32 %t131)
%t133 = add i32 %t129, %t132
%t134 = srem i32 %t133, 998244353
store i32 %t134, ptr %t128
%t135 = load i32, ptr %begin_pos.addr
%t136 = load i32, ptr %i.addr.t56
%t137 = add i32 %t135, %t136
%t138 = load i32, ptr %n.addr
%t139 = sdiv i32 %t138, 2
%t140 = add i32 %t137, %t139
%t141 = getelementptr i32, ptr %arr, i32 %t140
%t142 = load i32, ptr %x.addr.t110
%t143 = load i32, ptr %wn.addr.t105
%t144 = load i32, ptr %y.addr.t116
%t145 = call i32 @multiply(i32 %t143, i32 %t144)
%t146 = sub i32 %t142, %t145
%t147 = add i32 %t146, 998244353
%t148 = srem i32 %t147, 998244353
store i32 %t148, ptr %t141
%t149 = load i32, ptr %wn.addr.t105
%t150 = load i32, ptr %w.addr
%t151 = call i32 @multiply(i32 %t149, i32 %t150)
store i32 %t151, ptr %wn.addr.t105
%t152 = load i32, ptr %i.addr.t56
%t153 = add i32 %t152, 1
store i32 %t153, ptr %i.addr.t56
br label %while.cond.21
while.end.23:
ret i32 0
}
define i32 @main() {
entry:
%n.addr.t154 = alloca i32
%m.addr.t157 = alloca i32
%i.addr.t182 = alloca i32
%t155 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t156 = call i32 @getarray(ptr %t155)
store i32 %t156, ptr %n.addr.t154
%t158 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 0
%t159 = call i32 @getarray(ptr %t158)
store i32 %t159, ptr %m.addr.t157
call void @starttime()
store i32 1, ptr @d
br label %while.cond.24
while.cond.24:
%t160 = load i32, ptr @d
%t161 = load i32, ptr %n.addr.t154
%t162 = load i32, ptr %m.addr.t157
%t163 = add i32 %t161, %t162
%t164 = sub i32 %t163, 1
%t165 = icmp slt i32 %t160, %t164
br i1 %t165, label %while.body.25, label %while.end.26
while.body.25:
%t166 = load i32, ptr @d
%t167 = mul i32 %t166, 2
store i32 %t167, ptr @d
br label %while.cond.24
while.end.26:
%t168 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t169 = load i32, ptr @d
%t170 = sub i32 998244353, 1
%t171 = load i32, ptr @d
%t172 = sdiv i32 %t170, %t171
%t173 = call i32 @power(i32 3, i32 %t172)
%t174 = call i32 @fft(ptr %t168, i32 0, i32 %t169, i32 %t173)
%t175 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 0
%t176 = load i32, ptr @d
%t177 = sub i32 998244353, 1
%t178 = load i32, ptr @d
%t179 = sdiv i32 %t177, %t178
%t180 = call i32 @power(i32 3, i32 %t179)
%t181 = call i32 @fft(ptr %t175, i32 0, i32 %t176, i32 %t180)
store i32 0, ptr %i.addr.t182
br label %while.cond.27
while.cond.27:
%t183 = load i32, ptr %i.addr.t182
%t184 = load i32, ptr @d
%t185 = icmp slt i32 %t183, %t184
br i1 %t185, label %while.body.28, label %while.end.29
while.body.28:
%t186 = load i32, ptr %i.addr.t182
%t187 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t186
%t188 = load i32, ptr %i.addr.t182
%t189 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t188
%t190 = load i32, ptr %t189
%t191 = load i32, ptr %i.addr.t182
%t192 = getelementptr [2097152 x i32], ptr @b, i32 0, i32 %t191
%t193 = load i32, ptr %t192
%t194 = call i32 @multiply(i32 %t190, i32 %t193)
store i32 %t194, ptr %t187
%t195 = load i32, ptr %i.addr.t182
%t196 = add i32 %t195, 1
store i32 %t196, ptr %i.addr.t182
br label %while.cond.27
while.end.29:
%t197 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
%t198 = load i32, ptr @d
%t199 = sub i32 998244353, 1
%t200 = sub i32 998244353, 1
%t201 = load i32, ptr @d
%t202 = sdiv i32 %t200, %t201
%t203 = sub i32 %t199, %t202
%t204 = call i32 @power(i32 3, i32 %t203)
%t205 = call i32 @fft(ptr %t197, i32 0, i32 %t198, i32 %t204)
store i32 0, ptr %i.addr.t182
br label %while.cond.30
while.cond.30:
%t206 = load i32, ptr %i.addr.t182
%t207 = load i32, ptr @d
%t208 = icmp slt i32 %t206, %t207
br i1 %t208, label %while.body.31, label %while.end.32
while.body.31:
%t209 = load i32, ptr %i.addr.t182
%t210 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t209
%t211 = load i32, ptr %i.addr.t182
%t212 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 %t211
%t213 = load i32, ptr %t212
%t214 = load i32, ptr @d
%t215 = sub i32 998244353, 2
%t216 = call i32 @power(i32 %t214, i32 %t215)
%t217 = call i32 @multiply(i32 %t213, i32 %t216)
store i32 %t217, ptr %t210
%t218 = load i32, ptr %i.addr.t182
%t219 = add i32 %t218, 1
store i32 %t219, ptr %i.addr.t182
br label %while.cond.30
while.end.32:
call void @stoptime()
%t220 = load i32, ptr %n.addr.t154
%t221 = load i32, ptr %m.addr.t157
%t222 = add i32 %t220, %t221
%t223 = sub i32 %t222, 1
%t224 = getelementptr [2097152 x i32], ptr @a, i32 0, i32 0
call void @putarray(i32 %t223, ptr %t224)
ret i32 0
}

File diff suppressed because one or more lines are too long

@ -1,336 +0,0 @@
@sheet1 = global [500 x [500 x i32]] zeroinitializer
@sheet2 = global [500 x [500 x i32]] zeroinitializer
@active = global i32 1
@width = global i32 0
@height = global i32 0
@steps = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @read_map() {
entry:
%i.addr.t4 = alloca i32
%j.addr.t5 = alloca i32
%get.addr.t12 = alloca i32
%t0 = call i32 @getint()
store i32 %t0, ptr @width
%t1 = call i32 @getint()
store i32 %t1, ptr @height
%t2 = call i32 @getint()
store i32 %t2, ptr @steps
%t3 = call i32 @getch()
store i32 1, ptr %i.addr.t4
store i32 1, ptr %j.addr.t5
br label %while.cond.0
while.cond.0:
%t6 = load i32, ptr %j.addr.t5
%t7 = load i32, ptr @height
%t8 = icmp sle i32 %t6, %t7
br i1 %t8, label %while.body.1, label %while.end.2
while.body.1:
store i32 1, ptr %i.addr.t4
br label %while.cond.3
while.end.2:
ret void
while.cond.3:
%t9 = load i32, ptr %i.addr.t4
%t10 = load i32, ptr @width
%t11 = icmp sle i32 %t9, %t10
br i1 %t11, label %while.body.4, label %while.end.5
while.body.4:
%t13 = call i32 @getch()
store i32 %t13, ptr %get.addr.t12
%t14 = load i32, ptr %get.addr.t12
%t15 = icmp eq i32 %t14, 35
br i1 %t15, label %if.then.6, label %if.else.7
while.end.5:
%t24 = call i32 @getch()
%t25 = load i32, ptr %j.addr.t5
%t26 = add i32 %t25, 1
store i32 %t26, ptr %j.addr.t5
br label %while.cond.0
if.then.6:
%t16 = load i32, ptr %j.addr.t5
%t17 = load i32, ptr %i.addr.t4
%t18 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t16, i32 %t17
store i32 1, ptr %t18
br label %if.end.8
if.else.7:
%t19 = load i32, ptr %j.addr.t5
%t20 = load i32, ptr %i.addr.t4
%t21 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t19, i32 %t20
store i32 0, ptr %t21
br label %if.end.8
if.end.8:
%t22 = load i32, ptr %i.addr.t4
%t23 = add i32 %t22, 1
store i32 %t23, ptr %i.addr.t4
br label %while.cond.3
}
define void @put_map() {
entry:
%i.addr.t27 = alloca i32
%j.addr.t28 = alloca i32
store i32 1, ptr %i.addr.t27
store i32 1, ptr %j.addr.t28
br label %while.cond.9
while.cond.9:
%t29 = load i32, ptr %j.addr.t28
%t30 = load i32, ptr @height
%t31 = icmp sle i32 %t29, %t30
br i1 %t31, label %while.body.10, label %while.end.11
while.body.10:
store i32 1, ptr %i.addr.t27
br label %while.cond.12
while.end.11:
ret void
while.cond.12:
%t32 = load i32, ptr %i.addr.t27
%t33 = load i32, ptr @width
%t34 = icmp sle i32 %t32, %t33
br i1 %t34, label %while.body.13, label %while.end.14
while.body.13:
%t35 = load i32, ptr %j.addr.t28
%t36 = load i32, ptr %i.addr.t27
%t37 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t35, i32 %t36
%t38 = load i32, ptr %t37
%t39 = icmp eq i32 %t38, 1
br i1 %t39, label %if.then.15, label %if.else.16
while.end.14:
call void @putch(i32 10)
%t42 = load i32, ptr %j.addr.t28
%t43 = add i32 %t42, 1
store i32 %t43, ptr %j.addr.t28
br label %while.cond.9
if.then.15:
call void @putch(i32 35)
br label %if.end.17
if.else.16:
call void @putch(i32 46)
br label %if.end.17
if.end.17:
%t40 = load i32, ptr %i.addr.t27
%t41 = add i32 %t40, 1
store i32 %t41, ptr %i.addr.t27
br label %while.cond.12
}
define void @swap12() {
entry:
%i.addr.t44 = alloca i32
%j.addr.t45 = alloca i32
store i32 1, ptr %i.addr.t44
store i32 1, ptr %j.addr.t45
br label %while.cond.18
while.cond.18:
%t46 = load i32, ptr %j.addr.t45
%t47 = load i32, ptr @height
%t48 = icmp sle i32 %t46, %t47
br i1 %t48, label %while.body.19, label %while.end.20
while.body.19:
store i32 1, ptr %i.addr.t44
br label %while.cond.21
while.end.20:
ret void
while.cond.21:
%t49 = load i32, ptr %i.addr.t44
%t50 = load i32, ptr @width
%t51 = icmp sle i32 %t49, %t50
br i1 %t51, label %while.body.22, label %while.end.23
while.body.22:
%t52 = load i32, ptr %j.addr.t45
%t53 = load i32, ptr %i.addr.t44
%t54 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t52, i32 %t53
%t55 = load i32, ptr %j.addr.t45
%t56 = load i32, ptr %i.addr.t44
%t57 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 %t55, i32 %t56
%t58 = load i32, ptr %t57
store i32 %t58, ptr %t54
%t59 = load i32, ptr %i.addr.t44
%t60 = add i32 %t59, 1
store i32 %t60, ptr %i.addr.t44
br label %while.cond.21
while.end.23:
%t61 = load i32, ptr %j.addr.t45
%t62 = add i32 %t61, 1
store i32 %t62, ptr %j.addr.t45
br label %while.cond.18
}
define void @step(ptr %source, ptr %target) {
entry:
%i.addr.t63 = alloca i32
%j.addr.t64 = alloca i32
%alive_count.addr.t71 = alloca i32
store i32 1, ptr %i.addr.t63
store i32 1, ptr %j.addr.t64
br label %while.cond.24
while.cond.24:
%t65 = load i32, ptr %j.addr.t64
%t66 = load i32, ptr @height
%t67 = icmp sle i32 %t65, %t66
br i1 %t67, label %while.body.25, label %while.end.26
while.body.25:
store i32 1, ptr %i.addr.t63
br label %while.cond.27
while.end.26:
ret void
while.cond.27:
%t68 = load i32, ptr %i.addr.t63
%t69 = load i32, ptr @width
%t70 = icmp sle i32 %t68, %t69
br i1 %t70, label %while.body.28, label %while.end.29
while.body.28:
%t72 = load i32, ptr %j.addr.t64
%t73 = sub i32 %t72, 1
%t74 = load i32, ptr %i.addr.t63
%t75 = sub i32 %t74, 1
%t76 = getelementptr [500 x i32], ptr %source, i32 %t73, i32 %t75
%t77 = load i32, ptr %t76
%t78 = load i32, ptr %j.addr.t64
%t79 = sub i32 %t78, 1
%t80 = load i32, ptr %i.addr.t63
%t81 = getelementptr [500 x i32], ptr %source, i32 %t79, i32 %t80
%t82 = load i32, ptr %t81
%t83 = add i32 %t77, %t82
%t84 = load i32, ptr %j.addr.t64
%t85 = sub i32 %t84, 1
%t86 = load i32, ptr %i.addr.t63
%t87 = add i32 %t86, 1
%t88 = getelementptr [500 x i32], ptr %source, i32 %t85, i32 %t87
%t89 = load i32, ptr %t88
%t90 = add i32 %t83, %t89
%t91 = load i32, ptr %j.addr.t64
%t92 = load i32, ptr %i.addr.t63
%t93 = sub i32 %t92, 1
%t94 = getelementptr [500 x i32], ptr %source, i32 %t91, i32 %t93
%t95 = load i32, ptr %t94
%t96 = add i32 %t90, %t95
%t97 = load i32, ptr %j.addr.t64
%t98 = load i32, ptr %i.addr.t63
%t99 = add i32 %t98, 1
%t100 = getelementptr [500 x i32], ptr %source, i32 %t97, i32 %t99
%t101 = load i32, ptr %t100
%t102 = add i32 %t96, %t101
%t103 = load i32, ptr %j.addr.t64
%t104 = add i32 %t103, 1
%t105 = load i32, ptr %i.addr.t63
%t106 = sub i32 %t105, 1
%t107 = getelementptr [500 x i32], ptr %source, i32 %t104, i32 %t106
%t108 = load i32, ptr %t107
%t109 = add i32 %t102, %t108
%t110 = load i32, ptr %j.addr.t64
%t111 = add i32 %t110, 1
%t112 = load i32, ptr %i.addr.t63
%t113 = getelementptr [500 x i32], ptr %source, i32 %t111, i32 %t112
%t114 = load i32, ptr %t113
%t115 = add i32 %t109, %t114
%t116 = load i32, ptr %j.addr.t64
%t117 = add i32 %t116, 1
%t118 = load i32, ptr %i.addr.t63
%t119 = add i32 %t118, 1
%t120 = getelementptr [500 x i32], ptr %source, i32 %t117, i32 %t119
%t121 = load i32, ptr %t120
%t122 = add i32 %t115, %t121
store i32 %t122, ptr %alive_count.addr.t71
%t123 = load i32, ptr %j.addr.t64
%t124 = load i32, ptr %i.addr.t63
%t125 = getelementptr [500 x i32], ptr %source, i32 %t123, i32 %t124
%t126 = load i32, ptr %t125
%t127 = icmp eq i32 %t126, 1
br i1 %t127, label %land.rhs.32, label %if.else.31
while.end.29:
%t143 = load i32, ptr %j.addr.t64
%t144 = add i32 %t143, 1
store i32 %t144, ptr %j.addr.t64
br label %while.cond.24
if.then.30:
%t130 = load i32, ptr %j.addr.t64
%t131 = load i32, ptr %i.addr.t63
%t132 = getelementptr [500 x i32], ptr %target, i32 %t130, i32 %t131
store i32 1, ptr %t132
br label %if.end.33
if.else.31:
%t133 = load i32, ptr %alive_count.addr.t71
%t134 = icmp eq i32 %t133, 3
br i1 %t134, label %if.then.34, label %if.else.35
land.rhs.32:
%t128 = load i32, ptr %alive_count.addr.t71
%t129 = icmp eq i32 %t128, 2
br i1 %t129, label %if.then.30, label %if.else.31
if.end.33:
%t141 = load i32, ptr %i.addr.t63
%t142 = add i32 %t141, 1
store i32 %t142, ptr %i.addr.t63
br label %while.cond.27
if.then.34:
%t135 = load i32, ptr %j.addr.t64
%t136 = load i32, ptr %i.addr.t63
%t137 = getelementptr [500 x i32], ptr %target, i32 %t135, i32 %t136
store i32 1, ptr %t137
br label %if.end.36
if.else.35:
%t138 = load i32, ptr %j.addr.t64
%t139 = load i32, ptr %i.addr.t63
%t140 = getelementptr [500 x i32], ptr %target, i32 %t138, i32 %t139
store i32 0, ptr %t140
br label %if.end.36
if.end.36:
br label %if.end.33
}
define i32 @main() {
entry:
call void @read_map()
call void @starttime()
br label %while.cond.37
while.cond.37:
%t145 = load i32, ptr @steps
%t146 = icmp sgt i32 %t145, 0
br i1 %t146, label %while.body.38, label %while.end.39
while.body.38:
%t147 = load i32, ptr @active
%t148 = icmp eq i32 %t147, 1
br i1 %t148, label %if.then.40, label %if.else.41
while.end.39:
call void @stoptime()
%t155 = load i32, ptr @active
%t156 = icmp eq i32 %t155, 2
br i1 %t156, label %if.then.43, label %if.end.44
if.then.40:
%t149 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 0
%t150 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 0
call void @step(ptr %t149, ptr %t150)
store i32 2, ptr @active
br label %if.end.42
if.else.41:
%t151 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 0
%t152 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 0
call void @step(ptr %t151, ptr %t152)
store i32 1, ptr @active
br label %if.end.42
if.end.42:
%t153 = load i32, ptr @steps
%t154 = sub i32 %t153, 1
store i32 %t154, ptr @steps
br label %while.cond.37
if.then.43:
call void @swap12()
br label %if.end.44
if.end.44:
call void @put_map()
ret i32 0
}

@ -1,336 +0,0 @@
@sheet1 = global [500 x [500 x i32]] zeroinitializer
@sheet2 = global [500 x [500 x i32]] zeroinitializer
@active = global i32 1
@width = global i32 0
@height = global i32 0
@steps = global i32 0
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define void @read_map() {
entry:
%i.addr.t4 = alloca i32
%j.addr.t5 = alloca i32
%get.addr.t12 = alloca i32
%t0 = call i32 @getint()
store i32 %t0, ptr @width
%t1 = call i32 @getint()
store i32 %t1, ptr @height
%t2 = call i32 @getint()
store i32 %t2, ptr @steps
%t3 = call i32 @getch()
store i32 1, ptr %i.addr.t4
store i32 1, ptr %j.addr.t5
br label %while.cond.0
while.cond.0:
%t6 = load i32, ptr %j.addr.t5
%t7 = load i32, ptr @height
%t8 = icmp sle i32 %t6, %t7
br i1 %t8, label %while.body.1, label %while.end.2
while.body.1:
store i32 1, ptr %i.addr.t4
br label %while.cond.3
while.end.2:
ret void
while.cond.3:
%t9 = load i32, ptr %i.addr.t4
%t10 = load i32, ptr @width
%t11 = icmp sle i32 %t9, %t10
br i1 %t11, label %while.body.4, label %while.end.5
while.body.4:
%t13 = call i32 @getch()
store i32 %t13, ptr %get.addr.t12
%t14 = load i32, ptr %get.addr.t12
%t15 = icmp eq i32 %t14, 35
br i1 %t15, label %if.then.6, label %if.else.7
while.end.5:
%t24 = call i32 @getch()
%t25 = load i32, ptr %j.addr.t5
%t26 = add i32 %t25, 1
store i32 %t26, ptr %j.addr.t5
br label %while.cond.0
if.then.6:
%t16 = load i32, ptr %j.addr.t5
%t17 = load i32, ptr %i.addr.t4
%t18 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t16, i32 %t17
store i32 1, ptr %t18
br label %if.end.8
if.else.7:
%t19 = load i32, ptr %j.addr.t5
%t20 = load i32, ptr %i.addr.t4
%t21 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t19, i32 %t20
store i32 0, ptr %t21
br label %if.end.8
if.end.8:
%t22 = load i32, ptr %i.addr.t4
%t23 = add i32 %t22, 1
store i32 %t23, ptr %i.addr.t4
br label %while.cond.3
}
define void @put_map() {
entry:
%i.addr.t27 = alloca i32
%j.addr.t28 = alloca i32
store i32 1, ptr %i.addr.t27
store i32 1, ptr %j.addr.t28
br label %while.cond.9
while.cond.9:
%t29 = load i32, ptr %j.addr.t28
%t30 = load i32, ptr @height
%t31 = icmp sle i32 %t29, %t30
br i1 %t31, label %while.body.10, label %while.end.11
while.body.10:
store i32 1, ptr %i.addr.t27
br label %while.cond.12
while.end.11:
ret void
while.cond.12:
%t32 = load i32, ptr %i.addr.t27
%t33 = load i32, ptr @width
%t34 = icmp sle i32 %t32, %t33
br i1 %t34, label %while.body.13, label %while.end.14
while.body.13:
%t35 = load i32, ptr %j.addr.t28
%t36 = load i32, ptr %i.addr.t27
%t37 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t35, i32 %t36
%t38 = load i32, ptr %t37
%t39 = icmp eq i32 %t38, 1
br i1 %t39, label %if.then.15, label %if.else.16
while.end.14:
call void @putch(i32 10)
%t42 = load i32, ptr %j.addr.t28
%t43 = add i32 %t42, 1
store i32 %t43, ptr %j.addr.t28
br label %while.cond.9
if.then.15:
call void @putch(i32 35)
br label %if.end.17
if.else.16:
call void @putch(i32 46)
br label %if.end.17
if.end.17:
%t40 = load i32, ptr %i.addr.t27
%t41 = add i32 %t40, 1
store i32 %t41, ptr %i.addr.t27
br label %while.cond.12
}
define void @swap12() {
entry:
%i.addr.t44 = alloca i32
%j.addr.t45 = alloca i32
store i32 1, ptr %i.addr.t44
store i32 1, ptr %j.addr.t45
br label %while.cond.18
while.cond.18:
%t46 = load i32, ptr %j.addr.t45
%t47 = load i32, ptr @height
%t48 = icmp sle i32 %t46, %t47
br i1 %t48, label %while.body.19, label %while.end.20
while.body.19:
store i32 1, ptr %i.addr.t44
br label %while.cond.21
while.end.20:
ret void
while.cond.21:
%t49 = load i32, ptr %i.addr.t44
%t50 = load i32, ptr @width
%t51 = icmp sle i32 %t49, %t50
br i1 %t51, label %while.body.22, label %while.end.23
while.body.22:
%t52 = load i32, ptr %j.addr.t45
%t53 = load i32, ptr %i.addr.t44
%t54 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 %t52, i32 %t53
%t55 = load i32, ptr %j.addr.t45
%t56 = load i32, ptr %i.addr.t44
%t57 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 %t55, i32 %t56
%t58 = load i32, ptr %t57
store i32 %t58, ptr %t54
%t59 = load i32, ptr %i.addr.t44
%t60 = add i32 %t59, 1
store i32 %t60, ptr %i.addr.t44
br label %while.cond.21
while.end.23:
%t61 = load i32, ptr %j.addr.t45
%t62 = add i32 %t61, 1
store i32 %t62, ptr %j.addr.t45
br label %while.cond.18
}
define void @step(ptr %source, ptr %target) {
entry:
%i.addr.t63 = alloca i32
%j.addr.t64 = alloca i32
%alive_count.addr.t71 = alloca i32
store i32 1, ptr %i.addr.t63
store i32 1, ptr %j.addr.t64
br label %while.cond.24
while.cond.24:
%t65 = load i32, ptr %j.addr.t64
%t66 = load i32, ptr @height
%t67 = icmp sle i32 %t65, %t66
br i1 %t67, label %while.body.25, label %while.end.26
while.body.25:
store i32 1, ptr %i.addr.t63
br label %while.cond.27
while.end.26:
ret void
while.cond.27:
%t68 = load i32, ptr %i.addr.t63
%t69 = load i32, ptr @width
%t70 = icmp sle i32 %t68, %t69
br i1 %t70, label %while.body.28, label %while.end.29
while.body.28:
%t72 = load i32, ptr %j.addr.t64
%t73 = sub i32 %t72, 1
%t74 = load i32, ptr %i.addr.t63
%t75 = sub i32 %t74, 1
%t76 = getelementptr [500 x i32], ptr %source, i32 %t73, i32 %t75
%t77 = load i32, ptr %t76
%t78 = load i32, ptr %j.addr.t64
%t79 = sub i32 %t78, 1
%t80 = load i32, ptr %i.addr.t63
%t81 = getelementptr [500 x i32], ptr %source, i32 %t79, i32 %t80
%t82 = load i32, ptr %t81
%t83 = add i32 %t77, %t82
%t84 = load i32, ptr %j.addr.t64
%t85 = sub i32 %t84, 1
%t86 = load i32, ptr %i.addr.t63
%t87 = add i32 %t86, 1
%t88 = getelementptr [500 x i32], ptr %source, i32 %t85, i32 %t87
%t89 = load i32, ptr %t88
%t90 = add i32 %t83, %t89
%t91 = load i32, ptr %j.addr.t64
%t92 = load i32, ptr %i.addr.t63
%t93 = sub i32 %t92, 1
%t94 = getelementptr [500 x i32], ptr %source, i32 %t91, i32 %t93
%t95 = load i32, ptr %t94
%t96 = add i32 %t90, %t95
%t97 = load i32, ptr %j.addr.t64
%t98 = load i32, ptr %i.addr.t63
%t99 = add i32 %t98, 1
%t100 = getelementptr [500 x i32], ptr %source, i32 %t97, i32 %t99
%t101 = load i32, ptr %t100
%t102 = add i32 %t96, %t101
%t103 = load i32, ptr %j.addr.t64
%t104 = add i32 %t103, 1
%t105 = load i32, ptr %i.addr.t63
%t106 = sub i32 %t105, 1
%t107 = getelementptr [500 x i32], ptr %source, i32 %t104, i32 %t106
%t108 = load i32, ptr %t107
%t109 = add i32 %t102, %t108
%t110 = load i32, ptr %j.addr.t64
%t111 = add i32 %t110, 1
%t112 = load i32, ptr %i.addr.t63
%t113 = getelementptr [500 x i32], ptr %source, i32 %t111, i32 %t112
%t114 = load i32, ptr %t113
%t115 = add i32 %t109, %t114
%t116 = load i32, ptr %j.addr.t64
%t117 = add i32 %t116, 1
%t118 = load i32, ptr %i.addr.t63
%t119 = add i32 %t118, 1
%t120 = getelementptr [500 x i32], ptr %source, i32 %t117, i32 %t119
%t121 = load i32, ptr %t120
%t122 = add i32 %t115, %t121
store i32 %t122, ptr %alive_count.addr.t71
%t123 = load i32, ptr %j.addr.t64
%t124 = load i32, ptr %i.addr.t63
%t125 = getelementptr [500 x i32], ptr %source, i32 %t123, i32 %t124
%t126 = load i32, ptr %t125
%t127 = icmp eq i32 %t126, 1
br i1 %t127, label %land.rhs.32, label %if.else.31
while.end.29:
%t143 = load i32, ptr %j.addr.t64
%t144 = add i32 %t143, 1
store i32 %t144, ptr %j.addr.t64
br label %while.cond.24
if.then.30:
%t130 = load i32, ptr %j.addr.t64
%t131 = load i32, ptr %i.addr.t63
%t132 = getelementptr [500 x i32], ptr %target, i32 %t130, i32 %t131
store i32 1, ptr %t132
br label %if.end.33
if.else.31:
%t133 = load i32, ptr %alive_count.addr.t71
%t134 = icmp eq i32 %t133, 3
br i1 %t134, label %if.then.34, label %if.else.35
land.rhs.32:
%t128 = load i32, ptr %alive_count.addr.t71
%t129 = icmp eq i32 %t128, 2
br i1 %t129, label %if.then.30, label %if.else.31
if.end.33:
%t141 = load i32, ptr %i.addr.t63
%t142 = add i32 %t141, 1
store i32 %t142, ptr %i.addr.t63
br label %while.cond.27
if.then.34:
%t135 = load i32, ptr %j.addr.t64
%t136 = load i32, ptr %i.addr.t63
%t137 = getelementptr [500 x i32], ptr %target, i32 %t135, i32 %t136
store i32 1, ptr %t137
br label %if.end.36
if.else.35:
%t138 = load i32, ptr %j.addr.t64
%t139 = load i32, ptr %i.addr.t63
%t140 = getelementptr [500 x i32], ptr %target, i32 %t138, i32 %t139
store i32 0, ptr %t140
br label %if.end.36
if.end.36:
br label %if.end.33
}
define i32 @main() {
entry:
call void @read_map()
call void @starttime()
br label %while.cond.37
while.cond.37:
%t145 = load i32, ptr @steps
%t146 = icmp sgt i32 %t145, 0
br i1 %t146, label %while.body.38, label %while.end.39
while.body.38:
%t147 = load i32, ptr @active
%t148 = icmp eq i32 %t147, 1
br i1 %t148, label %if.then.40, label %if.else.41
while.end.39:
call void @stoptime()
%t155 = load i32, ptr @active
%t156 = icmp eq i32 %t155, 2
br i1 %t156, label %if.then.43, label %if.end.44
if.then.40:
%t149 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 0
%t150 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 0
call void @step(ptr %t149, ptr %t150)
store i32 2, ptr @active
br label %if.end.42
if.else.41:
%t151 = getelementptr [500 x [500 x i32]], ptr @sheet2, i32 0, i32 0
%t152 = getelementptr [500 x [500 x i32]], ptr @sheet1, i32 0, i32 0
call void @step(ptr %t151, ptr %t152)
store i32 1, ptr @active
br label %if.end.42
if.end.42:
%t153 = load i32, ptr @steps
%t154 = sub i32 %t153, 1
store i32 %t154, ptr @steps
br label %while.cond.37
if.then.43:
call void @swap12()
br label %if.end.44
if.end.44:
call void @put_map()
ret i32 0
}

@ -1,50 +0,0 @@
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
......................##..........................
.....................####.........................
....................#....#........................
...................##....##.......................
...................##....##.......................
....................#....#........................
.....................####.........................
......................##..........................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................
..................................................

@ -1,887 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @func(i32 %n) {
entry:
%n.addr = alloca i32
%sum.addr.t0 = alloca i32
%i.addr.t1 = alloca i32
%j.addr.t2 = alloca i32
%s.addr.t3 = alloca [100 x i32]
%m.addr.t4 = alloca i32
%m.addr.t313 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %sum.addr.t0
store i32 200, ptr %i.addr.t1
store i32 0, ptr %j.addr.t2
call void @llvm.memset.p0.i32(ptr %s.addr.t3, i8 0, i32 400, i1 0)
store i32 0, ptr %m.addr.t4
br label %while.cond.0
while.cond.0:
%t5 = load i32, ptr %m.addr.t4
%t6 = icmp slt i32 %t5, 100
br i1 %t6, label %while.body.1, label %while.end.2
while.body.1:
%t7 = load i32, ptr %m.addr.t4
%t8 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 %t7
store i32 0, ptr %t8
%t9 = load i32, ptr %m.addr.t4
%t10 = add i32 %t9, 1
store i32 %t10, ptr %m.addr.t4
br label %while.cond.0
while.end.2:
br label %while.cond.3
while.cond.3:
%t11 = load i32, ptr %j.addr.t2
%t12 = load i32, ptr %n.addr
%t13 = icmp slt i32 %t11, %t12
br i1 %t13, label %while.body.4, label %while.end.5
while.body.4:
%t14 = load i32, ptr %i.addr.t1
%t15 = icmp sgt i32 %t14, 1
br i1 %t15, label %if.then.6, label %if.end.7
while.end.5:
%t325 = load i32, ptr %sum.addr.t0
ret i32 %t325
if.then.6:
%t16 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 1
store i32 1, ptr %t16
%t17 = load i32, ptr %i.addr.t1
%t18 = icmp sgt i32 %t17, 2
br i1 %t18, label %if.then.8, label %if.end.9
if.end.7:
%t311 = load i32, ptr %j.addr.t2
%t312 = add i32 %t311, 1
store i32 %t312, ptr %j.addr.t2
store i32 0, ptr %m.addr.t313
br label %while.cond.204
if.then.8:
%t19 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 2
store i32 2, ptr %t19
%t20 = load i32, ptr %i.addr.t1
%t21 = icmp sgt i32 %t20, 3
br i1 %t21, label %if.then.10, label %if.end.11
if.end.9:
br label %if.end.7
if.then.10:
%t22 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 3
store i32 3, ptr %t22
%t23 = load i32, ptr %i.addr.t1
%t24 = icmp sgt i32 %t23, 4
br i1 %t24, label %if.then.12, label %if.end.13
if.end.11:
br label %if.end.9
if.then.12:
%t25 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 4
store i32 4, ptr %t25
%t26 = load i32, ptr %i.addr.t1
%t27 = icmp sgt i32 %t26, 5
br i1 %t27, label %if.then.14, label %if.end.15
if.end.13:
br label %if.end.11
if.then.14:
%t28 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 5
store i32 5, ptr %t28
%t29 = load i32, ptr %i.addr.t1
%t30 = icmp sgt i32 %t29, 6
br i1 %t30, label %if.then.16, label %if.end.17
if.end.15:
br label %if.end.13
if.then.16:
%t31 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 6
store i32 6, ptr %t31
%t32 = load i32, ptr %i.addr.t1
%t33 = icmp sgt i32 %t32, 7
br i1 %t33, label %if.then.18, label %if.end.19
if.end.17:
br label %if.end.15
if.then.18:
%t34 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 7
store i32 7, ptr %t34
%t35 = load i32, ptr %i.addr.t1
%t36 = icmp sgt i32 %t35, 8
br i1 %t36, label %if.then.20, label %if.end.21
if.end.19:
br label %if.end.17
if.then.20:
%t37 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 8
store i32 8, ptr %t37
%t38 = load i32, ptr %i.addr.t1
%t39 = icmp sgt i32 %t38, 9
br i1 %t39, label %if.then.22, label %if.end.23
if.end.21:
br label %if.end.19
if.then.22:
%t40 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 9
store i32 9, ptr %t40
%t41 = load i32, ptr %i.addr.t1
%t42 = icmp sgt i32 %t41, 10
br i1 %t42, label %if.then.24, label %if.end.25
if.end.23:
br label %if.end.21
if.then.24:
%t43 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 10
store i32 10, ptr %t43
%t44 = load i32, ptr %i.addr.t1
%t45 = icmp sgt i32 %t44, 11
br i1 %t45, label %if.then.26, label %if.end.27
if.end.25:
br label %if.end.23
if.then.26:
%t46 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 11
store i32 11, ptr %t46
%t47 = load i32, ptr %i.addr.t1
%t48 = icmp sgt i32 %t47, 12
br i1 %t48, label %if.then.28, label %if.end.29
if.end.27:
br label %if.end.25
if.then.28:
%t49 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 12
store i32 12, ptr %t49
%t50 = load i32, ptr %i.addr.t1
%t51 = icmp sgt i32 %t50, 13
br i1 %t51, label %if.then.30, label %if.end.31
if.end.29:
br label %if.end.27
if.then.30:
%t52 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 13
store i32 13, ptr %t52
%t53 = load i32, ptr %i.addr.t1
%t54 = icmp sgt i32 %t53, 14
br i1 %t54, label %if.then.32, label %if.end.33
if.end.31:
br label %if.end.29
if.then.32:
%t55 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 14
store i32 14, ptr %t55
%t56 = load i32, ptr %i.addr.t1
%t57 = icmp sgt i32 %t56, 15
br i1 %t57, label %if.then.34, label %if.end.35
if.end.33:
br label %if.end.31
if.then.34:
%t58 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 15
store i32 15, ptr %t58
%t59 = load i32, ptr %i.addr.t1
%t60 = icmp sgt i32 %t59, 16
br i1 %t60, label %if.then.36, label %if.end.37
if.end.35:
br label %if.end.33
if.then.36:
%t61 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 16
store i32 16, ptr %t61
%t62 = load i32, ptr %i.addr.t1
%t63 = icmp sgt i32 %t62, 17
br i1 %t63, label %if.then.38, label %if.end.39
if.end.37:
br label %if.end.35
if.then.38:
%t64 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 17
store i32 17, ptr %t64
%t65 = load i32, ptr %i.addr.t1
%t66 = icmp sgt i32 %t65, 18
br i1 %t66, label %if.then.40, label %if.end.41
if.end.39:
br label %if.end.37
if.then.40:
%t67 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 18
store i32 18, ptr %t67
%t68 = load i32, ptr %i.addr.t1
%t69 = icmp sgt i32 %t68, 19
br i1 %t69, label %if.then.42, label %if.end.43
if.end.41:
br label %if.end.39
if.then.42:
%t70 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 19
store i32 19, ptr %t70
%t71 = load i32, ptr %i.addr.t1
%t72 = icmp sgt i32 %t71, 20
br i1 %t72, label %if.then.44, label %if.end.45
if.end.43:
br label %if.end.41
if.then.44:
%t73 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 20
store i32 20, ptr %t73
%t74 = load i32, ptr %i.addr.t1
%t75 = icmp sgt i32 %t74, 21
br i1 %t75, label %if.then.46, label %if.end.47
if.end.45:
br label %if.end.43
if.then.46:
%t76 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 21
store i32 21, ptr %t76
%t77 = load i32, ptr %i.addr.t1
%t78 = icmp sgt i32 %t77, 22
br i1 %t78, label %if.then.48, label %if.end.49
if.end.47:
br label %if.end.45
if.then.48:
%t79 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 22
store i32 22, ptr %t79
%t80 = load i32, ptr %i.addr.t1
%t81 = icmp sgt i32 %t80, 23
br i1 %t81, label %if.then.50, label %if.end.51
if.end.49:
br label %if.end.47
if.then.50:
%t82 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 23
store i32 23, ptr %t82
%t83 = load i32, ptr %i.addr.t1
%t84 = icmp sgt i32 %t83, 24
br i1 %t84, label %if.then.52, label %if.end.53
if.end.51:
br label %if.end.49
if.then.52:
%t85 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 24
store i32 24, ptr %t85
%t86 = load i32, ptr %i.addr.t1
%t87 = icmp sgt i32 %t86, 25
br i1 %t87, label %if.then.54, label %if.end.55
if.end.53:
br label %if.end.51
if.then.54:
%t88 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 25
store i32 25, ptr %t88
%t89 = load i32, ptr %i.addr.t1
%t90 = icmp sgt i32 %t89, 26
br i1 %t90, label %if.then.56, label %if.end.57
if.end.55:
br label %if.end.53
if.then.56:
%t91 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 26
store i32 26, ptr %t91
%t92 = load i32, ptr %i.addr.t1
%t93 = icmp sgt i32 %t92, 27
br i1 %t93, label %if.then.58, label %if.end.59
if.end.57:
br label %if.end.55
if.then.58:
%t94 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 27
store i32 27, ptr %t94
%t95 = load i32, ptr %i.addr.t1
%t96 = icmp sgt i32 %t95, 28
br i1 %t96, label %if.then.60, label %if.end.61
if.end.59:
br label %if.end.57
if.then.60:
%t97 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 28
store i32 28, ptr %t97
%t98 = load i32, ptr %i.addr.t1
%t99 = icmp sgt i32 %t98, 29
br i1 %t99, label %if.then.62, label %if.end.63
if.end.61:
br label %if.end.59
if.then.62:
%t100 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 29
store i32 29, ptr %t100
%t101 = load i32, ptr %i.addr.t1
%t102 = icmp sgt i32 %t101, 30
br i1 %t102, label %if.then.64, label %if.end.65
if.end.63:
br label %if.end.61
if.then.64:
%t103 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 30
store i32 30, ptr %t103
%t104 = load i32, ptr %i.addr.t1
%t105 = icmp sgt i32 %t104, 31
br i1 %t105, label %if.then.66, label %if.end.67
if.end.65:
br label %if.end.63
if.then.66:
%t106 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 31
store i32 31, ptr %t106
%t107 = load i32, ptr %i.addr.t1
%t108 = icmp sgt i32 %t107, 32
br i1 %t108, label %if.then.68, label %if.end.69
if.end.67:
br label %if.end.65
if.then.68:
%t109 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 32
store i32 32, ptr %t109
%t110 = load i32, ptr %i.addr.t1
%t111 = icmp sgt i32 %t110, 33
br i1 %t111, label %if.then.70, label %if.end.71
if.end.69:
br label %if.end.67
if.then.70:
%t112 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 33
store i32 33, ptr %t112
%t113 = load i32, ptr %i.addr.t1
%t114 = icmp sgt i32 %t113, 34
br i1 %t114, label %if.then.72, label %if.end.73
if.end.71:
br label %if.end.69
if.then.72:
%t115 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 34
store i32 34, ptr %t115
%t116 = load i32, ptr %i.addr.t1
%t117 = icmp sgt i32 %t116, 35
br i1 %t117, label %if.then.74, label %if.end.75
if.end.73:
br label %if.end.71
if.then.74:
%t118 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 35
store i32 35, ptr %t118
%t119 = load i32, ptr %i.addr.t1
%t120 = icmp sgt i32 %t119, 36
br i1 %t120, label %if.then.76, label %if.end.77
if.end.75:
br label %if.end.73
if.then.76:
%t121 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 36
store i32 36, ptr %t121
%t122 = load i32, ptr %i.addr.t1
%t123 = icmp sgt i32 %t122, 37
br i1 %t123, label %if.then.78, label %if.end.79
if.end.77:
br label %if.end.75
if.then.78:
%t124 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 37
store i32 37, ptr %t124
%t125 = load i32, ptr %i.addr.t1
%t126 = icmp sgt i32 %t125, 38
br i1 %t126, label %if.then.80, label %if.end.81
if.end.79:
br label %if.end.77
if.then.80:
%t127 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 38
store i32 38, ptr %t127
%t128 = load i32, ptr %i.addr.t1
%t129 = icmp sgt i32 %t128, 39
br i1 %t129, label %if.then.82, label %if.end.83
if.end.81:
br label %if.end.79
if.then.82:
%t130 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 39
store i32 39, ptr %t130
%t131 = load i32, ptr %i.addr.t1
%t132 = icmp sgt i32 %t131, 40
br i1 %t132, label %if.then.84, label %if.end.85
if.end.83:
br label %if.end.81
if.then.84:
%t133 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 40
store i32 40, ptr %t133
%t134 = load i32, ptr %i.addr.t1
%t135 = icmp sgt i32 %t134, 41
br i1 %t135, label %if.then.86, label %if.end.87
if.end.85:
br label %if.end.83
if.then.86:
%t136 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 41
store i32 41, ptr %t136
%t137 = load i32, ptr %i.addr.t1
%t138 = icmp sgt i32 %t137, 42
br i1 %t138, label %if.then.88, label %if.end.89
if.end.87:
br label %if.end.85
if.then.88:
%t139 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 42
store i32 42, ptr %t139
%t140 = load i32, ptr %i.addr.t1
%t141 = icmp sgt i32 %t140, 43
br i1 %t141, label %if.then.90, label %if.end.91
if.end.89:
br label %if.end.87
if.then.90:
%t142 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 43
store i32 43, ptr %t142
%t143 = load i32, ptr %i.addr.t1
%t144 = icmp sgt i32 %t143, 44
br i1 %t144, label %if.then.92, label %if.end.93
if.end.91:
br label %if.end.89
if.then.92:
%t145 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 44
store i32 44, ptr %t145
%t146 = load i32, ptr %i.addr.t1
%t147 = icmp sgt i32 %t146, 45
br i1 %t147, label %if.then.94, label %if.end.95
if.end.93:
br label %if.end.91
if.then.94:
%t148 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 45
store i32 45, ptr %t148
%t149 = load i32, ptr %i.addr.t1
%t150 = icmp sgt i32 %t149, 46
br i1 %t150, label %if.then.96, label %if.end.97
if.end.95:
br label %if.end.93
if.then.96:
%t151 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 46
store i32 46, ptr %t151
%t152 = load i32, ptr %i.addr.t1
%t153 = icmp sgt i32 %t152, 47
br i1 %t153, label %if.then.98, label %if.end.99
if.end.97:
br label %if.end.95
if.then.98:
%t154 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 47
store i32 47, ptr %t154
%t155 = load i32, ptr %i.addr.t1
%t156 = icmp sgt i32 %t155, 48
br i1 %t156, label %if.then.100, label %if.end.101
if.end.99:
br label %if.end.97
if.then.100:
%t157 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 48
store i32 48, ptr %t157
%t158 = load i32, ptr %i.addr.t1
%t159 = icmp sgt i32 %t158, 49
br i1 %t159, label %if.then.102, label %if.end.103
if.end.101:
br label %if.end.99
if.then.102:
%t160 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 49
store i32 49, ptr %t160
%t161 = load i32, ptr %i.addr.t1
%t162 = icmp sgt i32 %t161, 50
br i1 %t162, label %if.then.104, label %if.end.105
if.end.103:
br label %if.end.101
if.then.104:
%t163 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 50
store i32 50, ptr %t163
%t164 = load i32, ptr %i.addr.t1
%t165 = icmp sgt i32 %t164, 51
br i1 %t165, label %if.then.106, label %if.end.107
if.end.105:
br label %if.end.103
if.then.106:
%t166 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 51
store i32 51, ptr %t166
%t167 = load i32, ptr %i.addr.t1
%t168 = icmp sgt i32 %t167, 52
br i1 %t168, label %if.then.108, label %if.end.109
if.end.107:
br label %if.end.105
if.then.108:
%t169 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 52
store i32 52, ptr %t169
%t170 = load i32, ptr %i.addr.t1
%t171 = icmp sgt i32 %t170, 53
br i1 %t171, label %if.then.110, label %if.end.111
if.end.109:
br label %if.end.107
if.then.110:
%t172 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 53
store i32 53, ptr %t172
%t173 = load i32, ptr %i.addr.t1
%t174 = icmp sgt i32 %t173, 54
br i1 %t174, label %if.then.112, label %if.end.113
if.end.111:
br label %if.end.109
if.then.112:
%t175 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 54
store i32 54, ptr %t175
%t176 = load i32, ptr %i.addr.t1
%t177 = icmp sgt i32 %t176, 55
br i1 %t177, label %if.then.114, label %if.end.115
if.end.113:
br label %if.end.111
if.then.114:
%t178 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 55
store i32 55, ptr %t178
%t179 = load i32, ptr %i.addr.t1
%t180 = icmp sgt i32 %t179, 56
br i1 %t180, label %if.then.116, label %if.end.117
if.end.115:
br label %if.end.113
if.then.116:
%t181 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 56
store i32 56, ptr %t181
%t182 = load i32, ptr %i.addr.t1
%t183 = icmp sgt i32 %t182, 57
br i1 %t183, label %if.then.118, label %if.end.119
if.end.117:
br label %if.end.115
if.then.118:
%t184 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 57
store i32 57, ptr %t184
%t185 = load i32, ptr %i.addr.t1
%t186 = icmp sgt i32 %t185, 58
br i1 %t186, label %if.then.120, label %if.end.121
if.end.119:
br label %if.end.117
if.then.120:
%t187 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 58
store i32 58, ptr %t187
%t188 = load i32, ptr %i.addr.t1
%t189 = icmp sgt i32 %t188, 59
br i1 %t189, label %if.then.122, label %if.end.123
if.end.121:
br label %if.end.119
if.then.122:
%t190 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 59
store i32 59, ptr %t190
%t191 = load i32, ptr %i.addr.t1
%t192 = icmp sgt i32 %t191, 60
br i1 %t192, label %if.then.124, label %if.end.125
if.end.123:
br label %if.end.121
if.then.124:
%t193 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 60
store i32 60, ptr %t193
%t194 = load i32, ptr %i.addr.t1
%t195 = icmp sgt i32 %t194, 61
br i1 %t195, label %if.then.126, label %if.end.127
if.end.125:
br label %if.end.123
if.then.126:
%t196 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 61
store i32 61, ptr %t196
%t197 = load i32, ptr %i.addr.t1
%t198 = icmp sgt i32 %t197, 62
br i1 %t198, label %if.then.128, label %if.end.129
if.end.127:
br label %if.end.125
if.then.128:
%t199 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 62
store i32 62, ptr %t199
%t200 = load i32, ptr %i.addr.t1
%t201 = icmp sgt i32 %t200, 63
br i1 %t201, label %if.then.130, label %if.end.131
if.end.129:
br label %if.end.127
if.then.130:
%t202 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 63
store i32 63, ptr %t202
%t203 = load i32, ptr %i.addr.t1
%t204 = icmp sgt i32 %t203, 64
br i1 %t204, label %if.then.132, label %if.end.133
if.end.131:
br label %if.end.129
if.then.132:
%t205 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 64
store i32 64, ptr %t205
%t206 = load i32, ptr %i.addr.t1
%t207 = icmp sgt i32 %t206, 65
br i1 %t207, label %if.then.134, label %if.end.135
if.end.133:
br label %if.end.131
if.then.134:
%t208 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 65
store i32 65, ptr %t208
%t209 = load i32, ptr %i.addr.t1
%t210 = icmp sgt i32 %t209, 66
br i1 %t210, label %if.then.136, label %if.end.137
if.end.135:
br label %if.end.133
if.then.136:
%t211 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 66
store i32 66, ptr %t211
%t212 = load i32, ptr %i.addr.t1
%t213 = icmp sgt i32 %t212, 67
br i1 %t213, label %if.then.138, label %if.end.139
if.end.137:
br label %if.end.135
if.then.138:
%t214 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 67
store i32 67, ptr %t214
%t215 = load i32, ptr %i.addr.t1
%t216 = icmp sgt i32 %t215, 68
br i1 %t216, label %if.then.140, label %if.end.141
if.end.139:
br label %if.end.137
if.then.140:
%t217 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 68
store i32 68, ptr %t217
%t218 = load i32, ptr %i.addr.t1
%t219 = icmp sgt i32 %t218, 69
br i1 %t219, label %if.then.142, label %if.end.143
if.end.141:
br label %if.end.139
if.then.142:
%t220 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 69
store i32 69, ptr %t220
%t221 = load i32, ptr %i.addr.t1
%t222 = icmp sgt i32 %t221, 70
br i1 %t222, label %if.then.144, label %if.end.145
if.end.143:
br label %if.end.141
if.then.144:
%t223 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 70
store i32 70, ptr %t223
%t224 = load i32, ptr %i.addr.t1
%t225 = icmp sgt i32 %t224, 71
br i1 %t225, label %if.then.146, label %if.end.147
if.end.145:
br label %if.end.143
if.then.146:
%t226 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 71
store i32 71, ptr %t226
%t227 = load i32, ptr %i.addr.t1
%t228 = icmp sgt i32 %t227, 72
br i1 %t228, label %if.then.148, label %if.end.149
if.end.147:
br label %if.end.145
if.then.148:
%t229 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 72
store i32 72, ptr %t229
%t230 = load i32, ptr %i.addr.t1
%t231 = icmp sgt i32 %t230, 73
br i1 %t231, label %if.then.150, label %if.end.151
if.end.149:
br label %if.end.147
if.then.150:
%t232 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 73
store i32 73, ptr %t232
%t233 = load i32, ptr %i.addr.t1
%t234 = icmp sgt i32 %t233, 74
br i1 %t234, label %if.then.152, label %if.end.153
if.end.151:
br label %if.end.149
if.then.152:
%t235 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 74
store i32 74, ptr %t235
%t236 = load i32, ptr %i.addr.t1
%t237 = icmp sgt i32 %t236, 75
br i1 %t237, label %if.then.154, label %if.end.155
if.end.153:
br label %if.end.151
if.then.154:
%t238 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 75
store i32 75, ptr %t238
%t239 = load i32, ptr %i.addr.t1
%t240 = icmp sgt i32 %t239, 76
br i1 %t240, label %if.then.156, label %if.end.157
if.end.155:
br label %if.end.153
if.then.156:
%t241 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 76
store i32 76, ptr %t241
%t242 = load i32, ptr %i.addr.t1
%t243 = icmp sgt i32 %t242, 77
br i1 %t243, label %if.then.158, label %if.end.159
if.end.157:
br label %if.end.155
if.then.158:
%t244 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 77
store i32 77, ptr %t244
%t245 = load i32, ptr %i.addr.t1
%t246 = icmp sgt i32 %t245, 78
br i1 %t246, label %if.then.160, label %if.end.161
if.end.159:
br label %if.end.157
if.then.160:
%t247 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 78
store i32 78, ptr %t247
%t248 = load i32, ptr %i.addr.t1
%t249 = icmp sgt i32 %t248, 79
br i1 %t249, label %if.then.162, label %if.end.163
if.end.161:
br label %if.end.159
if.then.162:
%t250 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 79
store i32 79, ptr %t250
%t251 = load i32, ptr %i.addr.t1
%t252 = icmp sgt i32 %t251, 80
br i1 %t252, label %if.then.164, label %if.end.165
if.end.163:
br label %if.end.161
if.then.164:
%t253 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 80
store i32 80, ptr %t253
%t254 = load i32, ptr %i.addr.t1
%t255 = icmp sgt i32 %t254, 81
br i1 %t255, label %if.then.166, label %if.end.167
if.end.165:
br label %if.end.163
if.then.166:
%t256 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 81
store i32 81, ptr %t256
%t257 = load i32, ptr %i.addr.t1
%t258 = icmp sgt i32 %t257, 82
br i1 %t258, label %if.then.168, label %if.end.169
if.end.167:
br label %if.end.165
if.then.168:
%t259 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 82
store i32 82, ptr %t259
%t260 = load i32, ptr %i.addr.t1
%t261 = icmp sgt i32 %t260, 83
br i1 %t261, label %if.then.170, label %if.end.171
if.end.169:
br label %if.end.167
if.then.170:
%t262 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 83
store i32 83, ptr %t262
%t263 = load i32, ptr %i.addr.t1
%t264 = icmp sgt i32 %t263, 84
br i1 %t264, label %if.then.172, label %if.end.173
if.end.171:
br label %if.end.169
if.then.172:
%t265 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 84
store i32 84, ptr %t265
%t266 = load i32, ptr %i.addr.t1
%t267 = icmp sgt i32 %t266, 85
br i1 %t267, label %if.then.174, label %if.end.175
if.end.173:
br label %if.end.171
if.then.174:
%t268 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 85
store i32 85, ptr %t268
%t269 = load i32, ptr %i.addr.t1
%t270 = icmp sgt i32 %t269, 86
br i1 %t270, label %if.then.176, label %if.end.177
if.end.175:
br label %if.end.173
if.then.176:
%t271 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 86
store i32 86, ptr %t271
%t272 = load i32, ptr %i.addr.t1
%t273 = icmp sgt i32 %t272, 87
br i1 %t273, label %if.then.178, label %if.end.179
if.end.177:
br label %if.end.175
if.then.178:
%t274 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 87
store i32 87, ptr %t274
%t275 = load i32, ptr %i.addr.t1
%t276 = icmp sgt i32 %t275, 88
br i1 %t276, label %if.then.180, label %if.end.181
if.end.179:
br label %if.end.177
if.then.180:
%t277 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 88
store i32 88, ptr %t277
%t278 = load i32, ptr %i.addr.t1
%t279 = icmp sgt i32 %t278, 89
br i1 %t279, label %if.then.182, label %if.end.183
if.end.181:
br label %if.end.179
if.then.182:
%t280 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 89
store i32 89, ptr %t280
%t281 = load i32, ptr %i.addr.t1
%t282 = icmp sgt i32 %t281, 90
br i1 %t282, label %if.then.184, label %if.end.185
if.end.183:
br label %if.end.181
if.then.184:
%t283 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 90
store i32 90, ptr %t283
%t284 = load i32, ptr %i.addr.t1
%t285 = icmp sgt i32 %t284, 91
br i1 %t285, label %if.then.186, label %if.end.187
if.end.185:
br label %if.end.183
if.then.186:
%t286 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 91
store i32 91, ptr %t286
%t287 = load i32, ptr %i.addr.t1
%t288 = icmp sgt i32 %t287, 92
br i1 %t288, label %if.then.188, label %if.end.189
if.end.187:
br label %if.end.185
if.then.188:
%t289 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 92
store i32 92, ptr %t289
%t290 = load i32, ptr %i.addr.t1
%t291 = icmp sgt i32 %t290, 93
br i1 %t291, label %if.then.190, label %if.end.191
if.end.189:
br label %if.end.187
if.then.190:
%t292 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 93
store i32 93, ptr %t292
%t293 = load i32, ptr %i.addr.t1
%t294 = icmp sgt i32 %t293, 94
br i1 %t294, label %if.then.192, label %if.end.193
if.end.191:
br label %if.end.189
if.then.192:
%t295 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 94
store i32 94, ptr %t295
%t296 = load i32, ptr %i.addr.t1
%t297 = icmp sgt i32 %t296, 95
br i1 %t297, label %if.then.194, label %if.end.195
if.end.193:
br label %if.end.191
if.then.194:
%t298 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 95
store i32 95, ptr %t298
%t299 = load i32, ptr %i.addr.t1
%t300 = icmp sgt i32 %t299, 96
br i1 %t300, label %if.then.196, label %if.end.197
if.end.195:
br label %if.end.193
if.then.196:
%t301 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 96
store i32 96, ptr %t301
%t302 = load i32, ptr %i.addr.t1
%t303 = icmp sgt i32 %t302, 97
br i1 %t303, label %if.then.198, label %if.end.199
if.end.197:
br label %if.end.195
if.then.198:
%t304 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 97
store i32 97, ptr %t304
%t305 = load i32, ptr %i.addr.t1
%t306 = icmp sgt i32 %t305, 98
br i1 %t306, label %if.then.200, label %if.end.201
if.end.199:
br label %if.end.197
if.then.200:
%t307 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 98
store i32 98, ptr %t307
%t308 = load i32, ptr %i.addr.t1
%t309 = icmp sgt i32 %t308, 99
br i1 %t309, label %if.then.202, label %if.end.203
if.end.201:
br label %if.end.199
if.then.202:
%t310 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 99
store i32 99, ptr %t310
br label %if.end.203
if.end.203:
br label %if.end.201
while.cond.204:
%t314 = load i32, ptr %m.addr.t313
%t315 = icmp slt i32 %t314, 100
br i1 %t315, label %while.body.205, label %while.end.206
while.body.205:
%t316 = load i32, ptr %sum.addr.t0
%t317 = load i32, ptr %m.addr.t313
%t318 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 %t317
%t319 = load i32, ptr %t318
%t320 = add i32 %t316, %t319
store i32 %t320, ptr %sum.addr.t0
%t321 = load i32, ptr %m.addr.t313
%t322 = add i32 %t321, 1
store i32 %t322, ptr %m.addr.t313
br label %while.cond.204
while.end.206:
%t323 = load i32, ptr %sum.addr.t0
%t324 = srem i32 %t323, 65535
store i32 %t324, ptr %sum.addr.t0
br label %while.cond.3
}
define i32 @main() {
entry:
%loopcount.addr.t326 = alloca i32
call void @starttime()
%t327 = call i32 @getint()
store i32 %t327, ptr %loopcount.addr.t326
%t328 = load i32, ptr %loopcount.addr.t326
%t329 = call i32 @func(i32 %t328)
call void @putint(i32 %t329)
call void @putch(i32 10)
call void @stoptime()
ret i32 0
}

@ -1,887 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define i32 @func(i32 %n) {
entry:
%n.addr = alloca i32
%sum.addr.t0 = alloca i32
%i.addr.t1 = alloca i32
%j.addr.t2 = alloca i32
%s.addr.t3 = alloca [100 x i32]
%m.addr.t4 = alloca i32
%m.addr.t313 = alloca i32
store i32 %n, ptr %n.addr
store i32 0, ptr %sum.addr.t0
store i32 200, ptr %i.addr.t1
store i32 0, ptr %j.addr.t2
call void @llvm.memset.p0.i32(ptr %s.addr.t3, i8 0, i32 400, i1 0)
store i32 0, ptr %m.addr.t4
br label %while.cond.0
while.cond.0:
%t5 = load i32, ptr %m.addr.t4
%t6 = icmp slt i32 %t5, 100
br i1 %t6, label %while.body.1, label %while.end.2
while.body.1:
%t7 = load i32, ptr %m.addr.t4
%t8 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 %t7
store i32 0, ptr %t8
%t9 = load i32, ptr %m.addr.t4
%t10 = add i32 %t9, 1
store i32 %t10, ptr %m.addr.t4
br label %while.cond.0
while.end.2:
br label %while.cond.3
while.cond.3:
%t11 = load i32, ptr %j.addr.t2
%t12 = load i32, ptr %n.addr
%t13 = icmp slt i32 %t11, %t12
br i1 %t13, label %while.body.4, label %while.end.5
while.body.4:
%t14 = load i32, ptr %i.addr.t1
%t15 = icmp sgt i32 %t14, 1
br i1 %t15, label %if.then.6, label %if.end.7
while.end.5:
%t325 = load i32, ptr %sum.addr.t0
ret i32 %t325
if.then.6:
%t16 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 1
store i32 1, ptr %t16
%t17 = load i32, ptr %i.addr.t1
%t18 = icmp sgt i32 %t17, 2
br i1 %t18, label %if.then.8, label %if.end.9
if.end.7:
%t311 = load i32, ptr %j.addr.t2
%t312 = add i32 %t311, 1
store i32 %t312, ptr %j.addr.t2
store i32 0, ptr %m.addr.t313
br label %while.cond.204
if.then.8:
%t19 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 2
store i32 2, ptr %t19
%t20 = load i32, ptr %i.addr.t1
%t21 = icmp sgt i32 %t20, 3
br i1 %t21, label %if.then.10, label %if.end.11
if.end.9:
br label %if.end.7
if.then.10:
%t22 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 3
store i32 3, ptr %t22
%t23 = load i32, ptr %i.addr.t1
%t24 = icmp sgt i32 %t23, 4
br i1 %t24, label %if.then.12, label %if.end.13
if.end.11:
br label %if.end.9
if.then.12:
%t25 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 4
store i32 4, ptr %t25
%t26 = load i32, ptr %i.addr.t1
%t27 = icmp sgt i32 %t26, 5
br i1 %t27, label %if.then.14, label %if.end.15
if.end.13:
br label %if.end.11
if.then.14:
%t28 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 5
store i32 5, ptr %t28
%t29 = load i32, ptr %i.addr.t1
%t30 = icmp sgt i32 %t29, 6
br i1 %t30, label %if.then.16, label %if.end.17
if.end.15:
br label %if.end.13
if.then.16:
%t31 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 6
store i32 6, ptr %t31
%t32 = load i32, ptr %i.addr.t1
%t33 = icmp sgt i32 %t32, 7
br i1 %t33, label %if.then.18, label %if.end.19
if.end.17:
br label %if.end.15
if.then.18:
%t34 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 7
store i32 7, ptr %t34
%t35 = load i32, ptr %i.addr.t1
%t36 = icmp sgt i32 %t35, 8
br i1 %t36, label %if.then.20, label %if.end.21
if.end.19:
br label %if.end.17
if.then.20:
%t37 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 8
store i32 8, ptr %t37
%t38 = load i32, ptr %i.addr.t1
%t39 = icmp sgt i32 %t38, 9
br i1 %t39, label %if.then.22, label %if.end.23
if.end.21:
br label %if.end.19
if.then.22:
%t40 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 9
store i32 9, ptr %t40
%t41 = load i32, ptr %i.addr.t1
%t42 = icmp sgt i32 %t41, 10
br i1 %t42, label %if.then.24, label %if.end.25
if.end.23:
br label %if.end.21
if.then.24:
%t43 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 10
store i32 10, ptr %t43
%t44 = load i32, ptr %i.addr.t1
%t45 = icmp sgt i32 %t44, 11
br i1 %t45, label %if.then.26, label %if.end.27
if.end.25:
br label %if.end.23
if.then.26:
%t46 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 11
store i32 11, ptr %t46
%t47 = load i32, ptr %i.addr.t1
%t48 = icmp sgt i32 %t47, 12
br i1 %t48, label %if.then.28, label %if.end.29
if.end.27:
br label %if.end.25
if.then.28:
%t49 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 12
store i32 12, ptr %t49
%t50 = load i32, ptr %i.addr.t1
%t51 = icmp sgt i32 %t50, 13
br i1 %t51, label %if.then.30, label %if.end.31
if.end.29:
br label %if.end.27
if.then.30:
%t52 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 13
store i32 13, ptr %t52
%t53 = load i32, ptr %i.addr.t1
%t54 = icmp sgt i32 %t53, 14
br i1 %t54, label %if.then.32, label %if.end.33
if.end.31:
br label %if.end.29
if.then.32:
%t55 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 14
store i32 14, ptr %t55
%t56 = load i32, ptr %i.addr.t1
%t57 = icmp sgt i32 %t56, 15
br i1 %t57, label %if.then.34, label %if.end.35
if.end.33:
br label %if.end.31
if.then.34:
%t58 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 15
store i32 15, ptr %t58
%t59 = load i32, ptr %i.addr.t1
%t60 = icmp sgt i32 %t59, 16
br i1 %t60, label %if.then.36, label %if.end.37
if.end.35:
br label %if.end.33
if.then.36:
%t61 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 16
store i32 16, ptr %t61
%t62 = load i32, ptr %i.addr.t1
%t63 = icmp sgt i32 %t62, 17
br i1 %t63, label %if.then.38, label %if.end.39
if.end.37:
br label %if.end.35
if.then.38:
%t64 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 17
store i32 17, ptr %t64
%t65 = load i32, ptr %i.addr.t1
%t66 = icmp sgt i32 %t65, 18
br i1 %t66, label %if.then.40, label %if.end.41
if.end.39:
br label %if.end.37
if.then.40:
%t67 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 18
store i32 18, ptr %t67
%t68 = load i32, ptr %i.addr.t1
%t69 = icmp sgt i32 %t68, 19
br i1 %t69, label %if.then.42, label %if.end.43
if.end.41:
br label %if.end.39
if.then.42:
%t70 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 19
store i32 19, ptr %t70
%t71 = load i32, ptr %i.addr.t1
%t72 = icmp sgt i32 %t71, 20
br i1 %t72, label %if.then.44, label %if.end.45
if.end.43:
br label %if.end.41
if.then.44:
%t73 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 20
store i32 20, ptr %t73
%t74 = load i32, ptr %i.addr.t1
%t75 = icmp sgt i32 %t74, 21
br i1 %t75, label %if.then.46, label %if.end.47
if.end.45:
br label %if.end.43
if.then.46:
%t76 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 21
store i32 21, ptr %t76
%t77 = load i32, ptr %i.addr.t1
%t78 = icmp sgt i32 %t77, 22
br i1 %t78, label %if.then.48, label %if.end.49
if.end.47:
br label %if.end.45
if.then.48:
%t79 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 22
store i32 22, ptr %t79
%t80 = load i32, ptr %i.addr.t1
%t81 = icmp sgt i32 %t80, 23
br i1 %t81, label %if.then.50, label %if.end.51
if.end.49:
br label %if.end.47
if.then.50:
%t82 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 23
store i32 23, ptr %t82
%t83 = load i32, ptr %i.addr.t1
%t84 = icmp sgt i32 %t83, 24
br i1 %t84, label %if.then.52, label %if.end.53
if.end.51:
br label %if.end.49
if.then.52:
%t85 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 24
store i32 24, ptr %t85
%t86 = load i32, ptr %i.addr.t1
%t87 = icmp sgt i32 %t86, 25
br i1 %t87, label %if.then.54, label %if.end.55
if.end.53:
br label %if.end.51
if.then.54:
%t88 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 25
store i32 25, ptr %t88
%t89 = load i32, ptr %i.addr.t1
%t90 = icmp sgt i32 %t89, 26
br i1 %t90, label %if.then.56, label %if.end.57
if.end.55:
br label %if.end.53
if.then.56:
%t91 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 26
store i32 26, ptr %t91
%t92 = load i32, ptr %i.addr.t1
%t93 = icmp sgt i32 %t92, 27
br i1 %t93, label %if.then.58, label %if.end.59
if.end.57:
br label %if.end.55
if.then.58:
%t94 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 27
store i32 27, ptr %t94
%t95 = load i32, ptr %i.addr.t1
%t96 = icmp sgt i32 %t95, 28
br i1 %t96, label %if.then.60, label %if.end.61
if.end.59:
br label %if.end.57
if.then.60:
%t97 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 28
store i32 28, ptr %t97
%t98 = load i32, ptr %i.addr.t1
%t99 = icmp sgt i32 %t98, 29
br i1 %t99, label %if.then.62, label %if.end.63
if.end.61:
br label %if.end.59
if.then.62:
%t100 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 29
store i32 29, ptr %t100
%t101 = load i32, ptr %i.addr.t1
%t102 = icmp sgt i32 %t101, 30
br i1 %t102, label %if.then.64, label %if.end.65
if.end.63:
br label %if.end.61
if.then.64:
%t103 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 30
store i32 30, ptr %t103
%t104 = load i32, ptr %i.addr.t1
%t105 = icmp sgt i32 %t104, 31
br i1 %t105, label %if.then.66, label %if.end.67
if.end.65:
br label %if.end.63
if.then.66:
%t106 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 31
store i32 31, ptr %t106
%t107 = load i32, ptr %i.addr.t1
%t108 = icmp sgt i32 %t107, 32
br i1 %t108, label %if.then.68, label %if.end.69
if.end.67:
br label %if.end.65
if.then.68:
%t109 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 32
store i32 32, ptr %t109
%t110 = load i32, ptr %i.addr.t1
%t111 = icmp sgt i32 %t110, 33
br i1 %t111, label %if.then.70, label %if.end.71
if.end.69:
br label %if.end.67
if.then.70:
%t112 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 33
store i32 33, ptr %t112
%t113 = load i32, ptr %i.addr.t1
%t114 = icmp sgt i32 %t113, 34
br i1 %t114, label %if.then.72, label %if.end.73
if.end.71:
br label %if.end.69
if.then.72:
%t115 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 34
store i32 34, ptr %t115
%t116 = load i32, ptr %i.addr.t1
%t117 = icmp sgt i32 %t116, 35
br i1 %t117, label %if.then.74, label %if.end.75
if.end.73:
br label %if.end.71
if.then.74:
%t118 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 35
store i32 35, ptr %t118
%t119 = load i32, ptr %i.addr.t1
%t120 = icmp sgt i32 %t119, 36
br i1 %t120, label %if.then.76, label %if.end.77
if.end.75:
br label %if.end.73
if.then.76:
%t121 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 36
store i32 36, ptr %t121
%t122 = load i32, ptr %i.addr.t1
%t123 = icmp sgt i32 %t122, 37
br i1 %t123, label %if.then.78, label %if.end.79
if.end.77:
br label %if.end.75
if.then.78:
%t124 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 37
store i32 37, ptr %t124
%t125 = load i32, ptr %i.addr.t1
%t126 = icmp sgt i32 %t125, 38
br i1 %t126, label %if.then.80, label %if.end.81
if.end.79:
br label %if.end.77
if.then.80:
%t127 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 38
store i32 38, ptr %t127
%t128 = load i32, ptr %i.addr.t1
%t129 = icmp sgt i32 %t128, 39
br i1 %t129, label %if.then.82, label %if.end.83
if.end.81:
br label %if.end.79
if.then.82:
%t130 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 39
store i32 39, ptr %t130
%t131 = load i32, ptr %i.addr.t1
%t132 = icmp sgt i32 %t131, 40
br i1 %t132, label %if.then.84, label %if.end.85
if.end.83:
br label %if.end.81
if.then.84:
%t133 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 40
store i32 40, ptr %t133
%t134 = load i32, ptr %i.addr.t1
%t135 = icmp sgt i32 %t134, 41
br i1 %t135, label %if.then.86, label %if.end.87
if.end.85:
br label %if.end.83
if.then.86:
%t136 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 41
store i32 41, ptr %t136
%t137 = load i32, ptr %i.addr.t1
%t138 = icmp sgt i32 %t137, 42
br i1 %t138, label %if.then.88, label %if.end.89
if.end.87:
br label %if.end.85
if.then.88:
%t139 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 42
store i32 42, ptr %t139
%t140 = load i32, ptr %i.addr.t1
%t141 = icmp sgt i32 %t140, 43
br i1 %t141, label %if.then.90, label %if.end.91
if.end.89:
br label %if.end.87
if.then.90:
%t142 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 43
store i32 43, ptr %t142
%t143 = load i32, ptr %i.addr.t1
%t144 = icmp sgt i32 %t143, 44
br i1 %t144, label %if.then.92, label %if.end.93
if.end.91:
br label %if.end.89
if.then.92:
%t145 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 44
store i32 44, ptr %t145
%t146 = load i32, ptr %i.addr.t1
%t147 = icmp sgt i32 %t146, 45
br i1 %t147, label %if.then.94, label %if.end.95
if.end.93:
br label %if.end.91
if.then.94:
%t148 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 45
store i32 45, ptr %t148
%t149 = load i32, ptr %i.addr.t1
%t150 = icmp sgt i32 %t149, 46
br i1 %t150, label %if.then.96, label %if.end.97
if.end.95:
br label %if.end.93
if.then.96:
%t151 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 46
store i32 46, ptr %t151
%t152 = load i32, ptr %i.addr.t1
%t153 = icmp sgt i32 %t152, 47
br i1 %t153, label %if.then.98, label %if.end.99
if.end.97:
br label %if.end.95
if.then.98:
%t154 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 47
store i32 47, ptr %t154
%t155 = load i32, ptr %i.addr.t1
%t156 = icmp sgt i32 %t155, 48
br i1 %t156, label %if.then.100, label %if.end.101
if.end.99:
br label %if.end.97
if.then.100:
%t157 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 48
store i32 48, ptr %t157
%t158 = load i32, ptr %i.addr.t1
%t159 = icmp sgt i32 %t158, 49
br i1 %t159, label %if.then.102, label %if.end.103
if.end.101:
br label %if.end.99
if.then.102:
%t160 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 49
store i32 49, ptr %t160
%t161 = load i32, ptr %i.addr.t1
%t162 = icmp sgt i32 %t161, 50
br i1 %t162, label %if.then.104, label %if.end.105
if.end.103:
br label %if.end.101
if.then.104:
%t163 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 50
store i32 50, ptr %t163
%t164 = load i32, ptr %i.addr.t1
%t165 = icmp sgt i32 %t164, 51
br i1 %t165, label %if.then.106, label %if.end.107
if.end.105:
br label %if.end.103
if.then.106:
%t166 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 51
store i32 51, ptr %t166
%t167 = load i32, ptr %i.addr.t1
%t168 = icmp sgt i32 %t167, 52
br i1 %t168, label %if.then.108, label %if.end.109
if.end.107:
br label %if.end.105
if.then.108:
%t169 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 52
store i32 52, ptr %t169
%t170 = load i32, ptr %i.addr.t1
%t171 = icmp sgt i32 %t170, 53
br i1 %t171, label %if.then.110, label %if.end.111
if.end.109:
br label %if.end.107
if.then.110:
%t172 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 53
store i32 53, ptr %t172
%t173 = load i32, ptr %i.addr.t1
%t174 = icmp sgt i32 %t173, 54
br i1 %t174, label %if.then.112, label %if.end.113
if.end.111:
br label %if.end.109
if.then.112:
%t175 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 54
store i32 54, ptr %t175
%t176 = load i32, ptr %i.addr.t1
%t177 = icmp sgt i32 %t176, 55
br i1 %t177, label %if.then.114, label %if.end.115
if.end.113:
br label %if.end.111
if.then.114:
%t178 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 55
store i32 55, ptr %t178
%t179 = load i32, ptr %i.addr.t1
%t180 = icmp sgt i32 %t179, 56
br i1 %t180, label %if.then.116, label %if.end.117
if.end.115:
br label %if.end.113
if.then.116:
%t181 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 56
store i32 56, ptr %t181
%t182 = load i32, ptr %i.addr.t1
%t183 = icmp sgt i32 %t182, 57
br i1 %t183, label %if.then.118, label %if.end.119
if.end.117:
br label %if.end.115
if.then.118:
%t184 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 57
store i32 57, ptr %t184
%t185 = load i32, ptr %i.addr.t1
%t186 = icmp sgt i32 %t185, 58
br i1 %t186, label %if.then.120, label %if.end.121
if.end.119:
br label %if.end.117
if.then.120:
%t187 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 58
store i32 58, ptr %t187
%t188 = load i32, ptr %i.addr.t1
%t189 = icmp sgt i32 %t188, 59
br i1 %t189, label %if.then.122, label %if.end.123
if.end.121:
br label %if.end.119
if.then.122:
%t190 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 59
store i32 59, ptr %t190
%t191 = load i32, ptr %i.addr.t1
%t192 = icmp sgt i32 %t191, 60
br i1 %t192, label %if.then.124, label %if.end.125
if.end.123:
br label %if.end.121
if.then.124:
%t193 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 60
store i32 60, ptr %t193
%t194 = load i32, ptr %i.addr.t1
%t195 = icmp sgt i32 %t194, 61
br i1 %t195, label %if.then.126, label %if.end.127
if.end.125:
br label %if.end.123
if.then.126:
%t196 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 61
store i32 61, ptr %t196
%t197 = load i32, ptr %i.addr.t1
%t198 = icmp sgt i32 %t197, 62
br i1 %t198, label %if.then.128, label %if.end.129
if.end.127:
br label %if.end.125
if.then.128:
%t199 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 62
store i32 62, ptr %t199
%t200 = load i32, ptr %i.addr.t1
%t201 = icmp sgt i32 %t200, 63
br i1 %t201, label %if.then.130, label %if.end.131
if.end.129:
br label %if.end.127
if.then.130:
%t202 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 63
store i32 63, ptr %t202
%t203 = load i32, ptr %i.addr.t1
%t204 = icmp sgt i32 %t203, 64
br i1 %t204, label %if.then.132, label %if.end.133
if.end.131:
br label %if.end.129
if.then.132:
%t205 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 64
store i32 64, ptr %t205
%t206 = load i32, ptr %i.addr.t1
%t207 = icmp sgt i32 %t206, 65
br i1 %t207, label %if.then.134, label %if.end.135
if.end.133:
br label %if.end.131
if.then.134:
%t208 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 65
store i32 65, ptr %t208
%t209 = load i32, ptr %i.addr.t1
%t210 = icmp sgt i32 %t209, 66
br i1 %t210, label %if.then.136, label %if.end.137
if.end.135:
br label %if.end.133
if.then.136:
%t211 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 66
store i32 66, ptr %t211
%t212 = load i32, ptr %i.addr.t1
%t213 = icmp sgt i32 %t212, 67
br i1 %t213, label %if.then.138, label %if.end.139
if.end.137:
br label %if.end.135
if.then.138:
%t214 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 67
store i32 67, ptr %t214
%t215 = load i32, ptr %i.addr.t1
%t216 = icmp sgt i32 %t215, 68
br i1 %t216, label %if.then.140, label %if.end.141
if.end.139:
br label %if.end.137
if.then.140:
%t217 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 68
store i32 68, ptr %t217
%t218 = load i32, ptr %i.addr.t1
%t219 = icmp sgt i32 %t218, 69
br i1 %t219, label %if.then.142, label %if.end.143
if.end.141:
br label %if.end.139
if.then.142:
%t220 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 69
store i32 69, ptr %t220
%t221 = load i32, ptr %i.addr.t1
%t222 = icmp sgt i32 %t221, 70
br i1 %t222, label %if.then.144, label %if.end.145
if.end.143:
br label %if.end.141
if.then.144:
%t223 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 70
store i32 70, ptr %t223
%t224 = load i32, ptr %i.addr.t1
%t225 = icmp sgt i32 %t224, 71
br i1 %t225, label %if.then.146, label %if.end.147
if.end.145:
br label %if.end.143
if.then.146:
%t226 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 71
store i32 71, ptr %t226
%t227 = load i32, ptr %i.addr.t1
%t228 = icmp sgt i32 %t227, 72
br i1 %t228, label %if.then.148, label %if.end.149
if.end.147:
br label %if.end.145
if.then.148:
%t229 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 72
store i32 72, ptr %t229
%t230 = load i32, ptr %i.addr.t1
%t231 = icmp sgt i32 %t230, 73
br i1 %t231, label %if.then.150, label %if.end.151
if.end.149:
br label %if.end.147
if.then.150:
%t232 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 73
store i32 73, ptr %t232
%t233 = load i32, ptr %i.addr.t1
%t234 = icmp sgt i32 %t233, 74
br i1 %t234, label %if.then.152, label %if.end.153
if.end.151:
br label %if.end.149
if.then.152:
%t235 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 74
store i32 74, ptr %t235
%t236 = load i32, ptr %i.addr.t1
%t237 = icmp sgt i32 %t236, 75
br i1 %t237, label %if.then.154, label %if.end.155
if.end.153:
br label %if.end.151
if.then.154:
%t238 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 75
store i32 75, ptr %t238
%t239 = load i32, ptr %i.addr.t1
%t240 = icmp sgt i32 %t239, 76
br i1 %t240, label %if.then.156, label %if.end.157
if.end.155:
br label %if.end.153
if.then.156:
%t241 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 76
store i32 76, ptr %t241
%t242 = load i32, ptr %i.addr.t1
%t243 = icmp sgt i32 %t242, 77
br i1 %t243, label %if.then.158, label %if.end.159
if.end.157:
br label %if.end.155
if.then.158:
%t244 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 77
store i32 77, ptr %t244
%t245 = load i32, ptr %i.addr.t1
%t246 = icmp sgt i32 %t245, 78
br i1 %t246, label %if.then.160, label %if.end.161
if.end.159:
br label %if.end.157
if.then.160:
%t247 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 78
store i32 78, ptr %t247
%t248 = load i32, ptr %i.addr.t1
%t249 = icmp sgt i32 %t248, 79
br i1 %t249, label %if.then.162, label %if.end.163
if.end.161:
br label %if.end.159
if.then.162:
%t250 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 79
store i32 79, ptr %t250
%t251 = load i32, ptr %i.addr.t1
%t252 = icmp sgt i32 %t251, 80
br i1 %t252, label %if.then.164, label %if.end.165
if.end.163:
br label %if.end.161
if.then.164:
%t253 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 80
store i32 80, ptr %t253
%t254 = load i32, ptr %i.addr.t1
%t255 = icmp sgt i32 %t254, 81
br i1 %t255, label %if.then.166, label %if.end.167
if.end.165:
br label %if.end.163
if.then.166:
%t256 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 81
store i32 81, ptr %t256
%t257 = load i32, ptr %i.addr.t1
%t258 = icmp sgt i32 %t257, 82
br i1 %t258, label %if.then.168, label %if.end.169
if.end.167:
br label %if.end.165
if.then.168:
%t259 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 82
store i32 82, ptr %t259
%t260 = load i32, ptr %i.addr.t1
%t261 = icmp sgt i32 %t260, 83
br i1 %t261, label %if.then.170, label %if.end.171
if.end.169:
br label %if.end.167
if.then.170:
%t262 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 83
store i32 83, ptr %t262
%t263 = load i32, ptr %i.addr.t1
%t264 = icmp sgt i32 %t263, 84
br i1 %t264, label %if.then.172, label %if.end.173
if.end.171:
br label %if.end.169
if.then.172:
%t265 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 84
store i32 84, ptr %t265
%t266 = load i32, ptr %i.addr.t1
%t267 = icmp sgt i32 %t266, 85
br i1 %t267, label %if.then.174, label %if.end.175
if.end.173:
br label %if.end.171
if.then.174:
%t268 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 85
store i32 85, ptr %t268
%t269 = load i32, ptr %i.addr.t1
%t270 = icmp sgt i32 %t269, 86
br i1 %t270, label %if.then.176, label %if.end.177
if.end.175:
br label %if.end.173
if.then.176:
%t271 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 86
store i32 86, ptr %t271
%t272 = load i32, ptr %i.addr.t1
%t273 = icmp sgt i32 %t272, 87
br i1 %t273, label %if.then.178, label %if.end.179
if.end.177:
br label %if.end.175
if.then.178:
%t274 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 87
store i32 87, ptr %t274
%t275 = load i32, ptr %i.addr.t1
%t276 = icmp sgt i32 %t275, 88
br i1 %t276, label %if.then.180, label %if.end.181
if.end.179:
br label %if.end.177
if.then.180:
%t277 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 88
store i32 88, ptr %t277
%t278 = load i32, ptr %i.addr.t1
%t279 = icmp sgt i32 %t278, 89
br i1 %t279, label %if.then.182, label %if.end.183
if.end.181:
br label %if.end.179
if.then.182:
%t280 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 89
store i32 89, ptr %t280
%t281 = load i32, ptr %i.addr.t1
%t282 = icmp sgt i32 %t281, 90
br i1 %t282, label %if.then.184, label %if.end.185
if.end.183:
br label %if.end.181
if.then.184:
%t283 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 90
store i32 90, ptr %t283
%t284 = load i32, ptr %i.addr.t1
%t285 = icmp sgt i32 %t284, 91
br i1 %t285, label %if.then.186, label %if.end.187
if.end.185:
br label %if.end.183
if.then.186:
%t286 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 91
store i32 91, ptr %t286
%t287 = load i32, ptr %i.addr.t1
%t288 = icmp sgt i32 %t287, 92
br i1 %t288, label %if.then.188, label %if.end.189
if.end.187:
br label %if.end.185
if.then.188:
%t289 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 92
store i32 92, ptr %t289
%t290 = load i32, ptr %i.addr.t1
%t291 = icmp sgt i32 %t290, 93
br i1 %t291, label %if.then.190, label %if.end.191
if.end.189:
br label %if.end.187
if.then.190:
%t292 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 93
store i32 93, ptr %t292
%t293 = load i32, ptr %i.addr.t1
%t294 = icmp sgt i32 %t293, 94
br i1 %t294, label %if.then.192, label %if.end.193
if.end.191:
br label %if.end.189
if.then.192:
%t295 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 94
store i32 94, ptr %t295
%t296 = load i32, ptr %i.addr.t1
%t297 = icmp sgt i32 %t296, 95
br i1 %t297, label %if.then.194, label %if.end.195
if.end.193:
br label %if.end.191
if.then.194:
%t298 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 95
store i32 95, ptr %t298
%t299 = load i32, ptr %i.addr.t1
%t300 = icmp sgt i32 %t299, 96
br i1 %t300, label %if.then.196, label %if.end.197
if.end.195:
br label %if.end.193
if.then.196:
%t301 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 96
store i32 96, ptr %t301
%t302 = load i32, ptr %i.addr.t1
%t303 = icmp sgt i32 %t302, 97
br i1 %t303, label %if.then.198, label %if.end.199
if.end.197:
br label %if.end.195
if.then.198:
%t304 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 97
store i32 97, ptr %t304
%t305 = load i32, ptr %i.addr.t1
%t306 = icmp sgt i32 %t305, 98
br i1 %t306, label %if.then.200, label %if.end.201
if.end.199:
br label %if.end.197
if.then.200:
%t307 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 98
store i32 98, ptr %t307
%t308 = load i32, ptr %i.addr.t1
%t309 = icmp sgt i32 %t308, 99
br i1 %t309, label %if.then.202, label %if.end.203
if.end.201:
br label %if.end.199
if.then.202:
%t310 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 99
store i32 99, ptr %t310
br label %if.end.203
if.end.203:
br label %if.end.201
while.cond.204:
%t314 = load i32, ptr %m.addr.t313
%t315 = icmp slt i32 %t314, 100
br i1 %t315, label %while.body.205, label %while.end.206
while.body.205:
%t316 = load i32, ptr %sum.addr.t0
%t317 = load i32, ptr %m.addr.t313
%t318 = getelementptr [100 x i32], ptr %s.addr.t3, i32 0, i32 %t317
%t319 = load i32, ptr %t318
%t320 = add i32 %t316, %t319
store i32 %t320, ptr %sum.addr.t0
%t321 = load i32, ptr %m.addr.t313
%t322 = add i32 %t321, 1
store i32 %t322, ptr %m.addr.t313
br label %while.cond.204
while.end.206:
%t323 = load i32, ptr %sum.addr.t0
%t324 = srem i32 %t323, 65535
store i32 %t324, ptr %sum.addr.t0
br label %while.cond.3
}
define i32 @main() {
entry:
%loopcount.addr.t326 = alloca i32
call void @starttime()
%t327 = call i32 @getint()
store i32 %t327, ptr %loopcount.addr.t326
%t328 = load i32, ptr %loopcount.addr.t326
%t329 = call i32 @func(i32 %t328)
call void @putint(i32 %t329)
call void @putch(i32 10)
call void @stoptime()
ret i32 0
}

@ -1,152 +0,0 @@
declare void @llvm.memset.p0.i32(ptr, i8, i32, i1)
@COUNT = global i32 500000
declare i32 @getint()
declare i32 @getch()
declare float @getfloat()
declare i32 @getarray(ptr)
declare i32 @getfarray(ptr)
declare void @putint(i32)
declare void @putch(i32)
declare void @putfloat(float)
declare void @putarray(i32, ptr)
declare void @putfarray(i32, ptr)
declare void @starttime()
declare void @stoptime()
define float @loop(ptr %x, ptr %y, i32 %length) {
entry:
%length.addr = alloca i32
%i.addr.t0 = alloca i32
%accumulator.addr.t1 = alloca float
store i32 %length, ptr %length.addr
store i32 0, ptr %i.addr.t0
store float 0x0000000000000000, ptr %accumulator.addr.t1
br label %while.cond.0
while.cond.0:
%t2 = load i32, ptr %i.addr.t0
%t3 = load i32, ptr %length.addr
%t4 = icmp slt i32 %t2, %t3
br i1 %t4, label %while.body.1, label %while.end.2
while.body.1:
%t5 = load float, ptr %accumulator.addr.t1
%t6 = load i32, ptr %i.addr.t0
%t7 = getelementptr float, ptr %x, i32 %t6
%t8 = load float, ptr %t7
%t9 = load i32, ptr %i.addr.t0
%t10 = getelementptr float, ptr %y, i32 %t9
%t11 = load float, ptr %t10
%t12 = fmul float %t8, %t11
%t13 = fadd float %t5, %t12
store float %t13, ptr %accumulator.addr.t1
%t14 = load i32, ptr %i.addr.t0
%t15 = add i32 %t14, 1
store i32 %t15, ptr %i.addr.t0
br label %while.cond.0
while.end.2:
%t16 = load float, ptr %accumulator.addr.t1
ret float %t16
}
define i32 @main() {
entry:
%i.addr.t17 = alloca i32
%j.addr.t18 = alloca i32
%len.addr.t19 = alloca i32
%x.addr.t21 = alloca [4096 x float]
%y.addr.t22 = alloca [4096 x float]
%total.addr.t23 = alloca float
%a.addr.t24 = alloca float
%b.addr.t25 = alloca float
store i32 0, ptr %i.addr.t17
store i32 0, ptr %j.addr.t18
%t20 = call i32 @getint()
store i32 %t20, ptr %len.addr.t19
call void @llvm.memset.p0.i32(ptr %x.addr.t21, i8 0, i32 16384, i1 0)
call void @llvm.memset.p0.i32(ptr %y.addr.t22, i8 0, i32 16384, i1 0)
store float 0x0000000000000000, ptr %total.addr.t23
store float 0x0000000000000000, ptr %a.addr.t24
store float 0x3FF0000000000000, ptr %b.addr.t25
call void @starttime()
br label %while.cond.3
while.cond.3:
%t26 = load i32, ptr %i.addr.t17
%t27 = load i32, ptr @COUNT
%t28 = icmp slt i32 %t26, %t27
br i1 %t28, label %while.body.4, label %while.end.5
while.body.4:
%t29 = load i32, ptr %i.addr.t17
%t30 = srem i32 %t29, 10
%t31 = icmp ne i32 %t30, 0
br i1 %t31, label %if.then.6, label %if.else.7
while.end.5:
call void @stoptime()
%t61 = load float, ptr %total.addr.t23
%t62 = fsub float %t61, 0x4344536B00000000
%t63 = fcmp ole float %t62, 0x3EB0C6F7A0000000
br i1 %t63, label %if.then.12, label %lor.rhs.14
if.then.6:
store float 0x0000000000000000, ptr %a.addr.t24
store float 0x3FF0000000000000, ptr %b.addr.t25
br label %if.end.8
if.else.7:
%t32 = load float, ptr %a.addr.t24
%t33 = fadd float %t32, 0x3FB99999A0000000
store float %t33, ptr %a.addr.t24
%t34 = load float, ptr %b.addr.t25
%t35 = fadd float %t34, 0x3FC99999A0000000
store float %t35, ptr %b.addr.t25
br label %if.end.8
if.end.8:
br label %while.cond.9
while.cond.9:
%t36 = load i32, ptr %j.addr.t18
%t37 = load i32, ptr %len.addr.t19
%t38 = icmp slt i32 %t36, %t37
br i1 %t38, label %while.body.10, label %while.end.11
while.body.10:
%t39 = load i32, ptr %j.addr.t18
%t40 = getelementptr [4096 x float], ptr %x.addr.t21, i32 0, i32 %t39
%t41 = load float, ptr %a.addr.t24
%t42 = load i32, ptr %j.addr.t18
%t43 = sitofp i32 %t42 to float
%t44 = fadd float %t41, %t43
store float %t44, ptr %t40
%t45 = load i32, ptr %j.addr.t18
%t46 = getelementptr [4096 x float], ptr %y.addr.t22, i32 0, i32 %t45
%t47 = load float, ptr %b.addr.t25
%t48 = load i32, ptr %j.addr.t18
%t49 = sitofp i32 %t48 to float
%t50 = fadd float %t47, %t49
store float %t50, ptr %t46
%t51 = load i32, ptr %j.addr.t18
%t52 = add i32 %t51, 1
store i32 %t52, ptr %j.addr.t18
br label %while.cond.9
while.end.11:
%t53 = load float, ptr %total.addr.t23
%t54 = getelementptr [4096 x float], ptr %x.addr.t21, i32 0, i32 0
%t55 = getelementptr [4096 x float], ptr %y.addr.t22, i32 0, i32 0
%t56 = load i32, ptr %len.addr.t19
%t57 = call float @loop(ptr %t54, ptr %t55, i32 %t56)
%t58 = fadd float %t53, %t57
store float %t58, ptr %total.addr.t23
%t59 = load i32, ptr %i.addr.t17
%t60 = add i32 %t59, 1
store i32 %t60, ptr %i.addr.t17
br label %while.cond.3
if.then.12:
call void @putint(i32 0)
ret i32 0
if.else.13:
call void @putint(i32 1)
ret i32 1
lor.rhs.14:
%t64 = load float, ptr %total.addr.t23
%t65 = fsub float %t64, 0x4344536B00000000
%t66 = fneg float 0x3EB0C6F7A0000000
%t67 = fcmp oge float %t65, %t66
br i1 %t67, label %if.then.12, label %if.else.13
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save