forked from NUDT-compiler/nudt-compiler-cpp
parent
ed15fa1c72
commit
a89c5fb0e4
Binary file not shown.
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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
1 2 3 2
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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,4 +0,0 @@
|
||||
110 70 30
|
||||
278 174 70
|
||||
446 278 110
|
||||
614 382 150
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
a
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
1691748973
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
1576633458
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
1352004184
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -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 +0,0 @@
|
||||
60255
|
||||
@ -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
|
||||
}
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue