Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
2
2022fall-Compiler_CMinus
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李晓奇
2022fall-Compiler_CMinus
Commits
65f92b2a
"tests/parser/syntree_simple/*.syntax_tree" did not exist on "4eae2dbef01625db25764caf0b2313dee06e80c0"
Commit
65f92b2a
authored
Oct 28, 2022
by
李晓奇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update README for TA to debug
parent
763c9d66
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
602 additions
and
3 deletions
+602
-3
README.md
README.md
+21
-3
tests/3-ir-gen/testcases/lv3/complex4.ll
tests/3-ir-gen/testcases/lv3/complex4.ll
+581
-0
No files found.
README.md
View file @
65f92b2a
# 重现问题
-
构建
`cminusfc`
-
```
$ # at path `2022fall-compiler_cminus`
$ cd tests/3-ir-gen/testcases/lv3/
$ cminusfc complex4.cminus
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::erase: __pos (which is 18446744073709551615) > this->size() (which is 8)
[1] 22357 IOT instruction (core dumped) cminusfc complex4.cminus
```
-
# 实验说明
请 fork 此 repo 到自己的仓库下,随后在自己的仓库中完成实验,请确保自己的 repo 为 Private。
...
...
@@ -5,12 +20,15 @@
## 目前已布置的实验
*
[
lab1
](
./Documentations/1-parser/
)
+
DDL:2022-10-03 23:59:59 (UTC+8)
*
[
lab2
](
./Documentations/2-ir-gen-warmup/
)
+
DDL:2022-10-23 23:59:59 (UTC+8)
*
[
lab3
](
./Documentations/3-ir-gen/
)
+
DDL:2022-11-07 23:59:59 (UTC+8)
## FAQ: How to merge upstream remote branches
...
...
tests/3-ir-gen/testcases/lv3/complex4.ll
0 → 100644
View file @
65f92b2a
; ModuleID = 'cminus'
source_filename
=
"complex4.cminus"
declare
i32
@input
()
declare
void
@output
(
i32
)
declare
void
@outputFloat
(
float
)
declare
void
@neg_idx_except
()
define
float
@get
(
float
*
%arg0
,
i32
%arg1
,
i32
%arg2
,
i32
%arg3
)
{
label_entry:
%op4
=
alloca
float
*
store
float
*
%arg0
,
float
**
%op4
%op5
=
alloca
i32
store
i32
%arg1
,
i32
*
%op5
%op6
=
alloca
i32
store
i32
%arg2
,
i32
*
%op6
%op7
=
alloca
i32
store
i32
%arg3
,
i32
*
%op7
%op8
=
load
i32
,
i32
*
%op5
%op9
=
load
i32
,
i32
*
%op7
%op10
=
mul
i32
%op8
,
%op9
%op11
=
load
i32
,
i32
*
%op6
%op12
=
add
i32
%op10
,
%op11
%op13
=
icmp
slt
i32
%op12
,
0
br
i1
%op13
,
label
%label14
,
label
%label15
label14:
; preds = %label_entry
call
void
@neg_idx_except
()
br
label
%label15
label15:
; preds = %label_entry, %label14
%op16
=
load
float
*,
float
**
%op4
%op17
=
getelementptr
float
,
float
*
%op16
,
i32
%op12
%op18
=
load
float
,
float
*
%op17
ret
float
%op18
}
define
float
@abs
(
float
%arg0
)
{
label_entry:
%op1
=
alloca
float
store
float
%arg0
,
float
*
%op1
%op2
=
load
float
,
float
*
%op1
%op3
=
sitofp
i32
0
to
float
%op4
=
fcmp
ugt
float
%op2
,
%op3
br
i1
%op4
,
label
%label5
,
label
%label8
label5:
; preds = %label_entry
%op6
=
load
float
,
float
*
%op1
ret
float
%op6
br
label
%label7
label7:
; preds = %label5, %label8
ret
float
0x0
label8:
; preds = %label_entry
%op9
=
load
float
,
float
*
%op1
%op10
=
sitofp
i32
0
to
float
%op11
=
fsub
float
%op10
,
%op9
ret
float
%op11
br
label
%label7
}
define
float
@isZero
(
float
%arg0
)
{
label_entry:
%op1
=
alloca
float
store
float
%arg0
,
float
*
%op1
%op2
=
load
float
,
float
*
%op1
%op3
=
call
float
@abs
(
float
%op2
)
%op4
=
fcmp
ult
float
%op3
,
0x3eb0c6f7a0000000
%op5
=
sitofp
i1
%op4
to
float
ret
float
%op5
}
define
i32
@gauss
(
float
*
%arg0
,
float
*
%arg1
,
i32
%arg2
)
{
label_entry:
%op3
=
alloca
float
*
store
float
*
%arg0
,
float
**
%op3
%op4
=
alloca
float
*
store
float
*
%arg1
,
float
**
%op4
%op5
=
alloca
i32
store
i32
%arg2
,
i32
*
%op5
%op6
=
alloca
i32
%op7
=
alloca
i32
%op8
=
alloca
i32
%op9
=
alloca
i32
%op10
=
alloca
i32
%op11
=
alloca
i32
%op12
=
alloca
i32
%op13
=
load
i32
,
i32
*
%op5
%op14
=
add
i32
%op13
,
1
store
i32
%op14
,
i32
*
%op9
store
i32
0
,
i32
*
%op6
br
label
%label15
label15:
; preds = %label_entry, %label24
%op16
=
load
i32
,
i32
*
%op6
%op17
=
load
i32
,
i32
*
%op5
%op18
=
icmp
slt
i32
%op16
,
%op17
br
i1
%op18
,
label
%label19
,
label
%label22
label19:
; preds = %label15
%op20
=
load
i32
,
i32
*
%op6
%op21
=
icmp
slt
i32
%op20
,
0
br
i1
%op21
,
label
%label23
,
label
%label24
label22:
; preds = %label15
store
i32
0
,
i32
*
%op11
store
i32
0
,
i32
*
%op8
br
label
%label30
label23:
; preds = %label19
call
void
@neg_idx_except
()
br
label
%label24
label24:
; preds = %label19, %label23
%op25
=
load
float
*,
float
**
%op3
%op26
=
getelementptr
float
,
float
*
%op25
,
i32
%op20
%op27
=
sitofp
i32
0
to
float
store
float
%op27
,
float
*
%op26
%op28
=
load
i32
,
i32
*
%op6
%op29
=
add
i32
%op28
,
1
store
i32
%op29
,
i32
*
%op6
br
label
%label15
label30:
; preds = %label22, %label122
%op31
=
load
i32
,
i32
*
%op8
%op32
=
load
i32
,
i32
*
%op5
%op33
=
icmp
slt
i32
%op31
,
%op32
br
i1
%op33
,
label
%label34
,
label
%label38
label34:
; preds = %label30
%op35
=
load
i32
,
i32
*
%op8
store
i32
%op35
,
i32
*
%op10
%op36
=
load
i32
,
i32
*
%op8
%op37
=
add
i32
%op36
,
1
store
i32
%op37
,
i32
*
%op6
br
label
%label41
label38:
; preds = %label30
%op39
=
load
i32
,
i32
*
%op5
%op40
=
sub
i32
%op39
,
1
store
i32
%op40
,
i32
*
%op6
br
label
%label200
label41:
; preds = %label34, %label65
%op42
=
load
i32
,
i32
*
%op6
%op43
=
load
i32
,
i32
*
%op5
%op44
=
icmp
slt
i32
%op42
,
%op43
br
i1
%op44
,
label
%label45
,
label
%label59
label45:
; preds = %label41
%op46
=
load
float
*,
float
**
%op4
%op47
=
load
i32
,
i32
*
%op6
%op48
=
load
i32
,
i32
*
%op11
%op49
=
load
i32
,
i32
*
%op9
%op50
=
call
float
@get
(
float
*
%op46
,
i32
%op47
,
i32
%op48
,
i32
%op49
)
%op51
=
call
float
@abs
(
float
%op50
)
%op52
=
load
float
*,
float
**
%op4
%op53
=
load
i32
,
i32
*
%op10
%op54
=
load
i32
,
i32
*
%op11
%op55
=
load
i32
,
i32
*
%op9
%op56
=
call
float
@get
(
float
*
%op52
,
i32
%op53
,
i32
%op54
,
i32
%op55
)
%op57
=
call
float
@abs
(
float
%op56
)
%op58
=
fcmp
ugt
float
%op51
,
%op57
br
i1
%op58
,
label
%label63
,
label
%label65
label59:
; preds = %label41
%op60
=
load
i32
,
i32
*
%op10
%op61
=
load
i32
,
i32
*
%op8
%op62
=
icmp
ne
i32
%op60
,
%op61
br
i1
%op62
,
label
%label68
,
label
%label70
label63:
; preds = %label45
%op64
=
load
i32
,
i32
*
%op6
store
i32
%op64
,
i32
*
%op10
br
label
%label65
label65:
; preds = %label45, %label63
%op66
=
load
i32
,
i32
*
%op6
%op67
=
add
i32
%op66
,
1
store
i32
%op67
,
i32
*
%op6
br
label
%label41
label68:
; preds = %label59
%op69
=
load
i32
,
i32
*
%op8
store
i32
%op69
,
i32
*
%op7
br
label
%label78
label70:
; preds = %label59, %label95
%op71
=
load
float
*,
float
**
%op4
%op72
=
load
i32
,
i32
*
%op8
%op73
=
load
i32
,
i32
*
%op11
%op74
=
load
i32
,
i32
*
%op9
%op75
=
call
float
@get
(
float
*
%op71
,
i32
%op72
,
i32
%op73
,
i32
%op74
)
%op76
=
call
float
@isZero
(
float
%op75
)
%op77
=
fcmp
une
float
%op76
,
0x0
br
i1
%op77
,
label
%label119
,
label
%label127
label78:
; preds = %label68, %label112
%op79
=
load
i32
,
i32
*
%op7
%op80
=
load
i32
,
i32
*
%op9
%op81
=
icmp
slt
i32
%op79
,
%op80
br
i1
%op81
,
label
%label82
,
label
%label95
label82:
; preds = %label78
%op83
=
load
float
*,
float
**
%op4
%op84
=
load
i32
,
i32
*
%op8
%op85
=
load
i32
,
i32
*
%op7
%op86
=
load
i32
,
i32
*
%op9
%op87
=
call
float
@get
(
float
*
%op83
,
i32
%op84
,
i32
%op85
,
i32
%op86
)
%op88
=
fptosi
float
%op87
to
i32
store
i32
%op88
,
i32
*
%op12
%op89
=
load
i32
,
i32
*
%op8
%op90
=
load
i32
,
i32
*
%op9
%op91
=
mul
i32
%op89
,
%op90
%op92
=
load
i32
,
i32
*
%op7
%op93
=
add
i32
%op91
,
%op92
%op94
=
icmp
slt
i32
%op93
,
0
br
i1
%op94
,
label
%label96
,
label
%label97
label95:
; preds = %label78
br
label
%label70
label96:
; preds = %label82
call
void
@neg_idx_except
()
br
label
%label97
label97:
; preds = %label82, %label96
%op98
=
load
float
*,
float
**
%op4
%op99
=
getelementptr
float
,
float
*
%op98
,
i32
%op93
%op100
=
load
float
*,
float
**
%op4
%op101
=
load
i32
,
i32
*
%op10
%op102
=
load
i32
,
i32
*
%op7
%op103
=
load
i32
,
i32
*
%op9
%op104
=
call
float
@get
(
float
*
%op100
,
i32
%op101
,
i32
%op102
,
i32
%op103
)
store
float
%op104
,
float
*
%op99
%op105
=
load
i32
,
i32
*
%op10
%op106
=
load
i32
,
i32
*
%op9
%op107
=
mul
i32
%op105
,
%op106
%op108
=
load
i32
,
i32
*
%op7
%op109
=
add
i32
%op107
,
%op108
%op110
=
icmp
slt
i32
%op109
,
0
br
i1
%op110
,
label
%label111
,
label
%label112
label111:
; preds = %label97
call
void
@neg_idx_except
()
br
label
%label112
label112:
; preds = %label97, %label111
%op113
=
load
float
*,
float
**
%op4
%op114
=
getelementptr
float
,
float
*
%op113
,
i32
%op109
%op115
=
load
i32
,
i32
*
%op12
%op116
=
sitofp
i32
%op115
to
float
store
float
%op116
,
float
*
%op114
%op117
=
load
i32
,
i32
*
%op7
%op118
=
add
i32
%op117
,
1
store
i32
%op118
,
i32
*
%op7
br
label
%label78
label119:
; preds = %label70
%op120
=
load
i32
,
i32
*
%op8
%op121
=
sub
i32
%op120
,
1
store
i32
%op121
,
i32
*
%op8
br
label
%label122
label122:
; preds = %label119, %label144
%op123
=
load
i32
,
i32
*
%op8
%op124
=
add
i32
%op123
,
1
store
i32
%op124
,
i32
*
%op8
%op125
=
load
i32
,
i32
*
%op11
%op126
=
add
i32
%op125
,
1
store
i32
%op126
,
i32
*
%op11
br
label
%label30
label127:
; preds = %label70
%op128
=
load
i32
,
i32
*
%op8
%op129
=
add
i32
%op128
,
1
store
i32
%op129
,
i32
*
%op6
br
label
%label130
label130:
; preds = %label127, %label159
%op131
=
load
i32
,
i32
*
%op6
%op132
=
load
i32
,
i32
*
%op5
%op133
=
icmp
slt
i32
%op131
,
%op132
br
i1
%op133
,
label
%label134
,
label
%label144
label134:
; preds = %label130
%op135
=
load
float
*,
float
**
%op4
%op136
=
load
i32
,
i32
*
%op6
%op137
=
load
i32
,
i32
*
%op11
%op138
=
load
i32
,
i32
*
%op9
%op139
=
call
float
@get
(
float
*
%op135
,
i32
%op136
,
i32
%op137
,
i32
%op138
)
%op140
=
call
float
@isZero
(
float
%op139
)
%op141
=
sitofp
i32
1
to
float
%op142
=
fsub
float
%op141
,
%op140
%op143
=
fcmp
une
float
%op142
,
0x0
br
i1
%op143
,
label
%label145
,
label
%label159
label144:
; preds = %label130
br
label
%label122
label145:
; preds = %label134
%op146
=
load
float
*,
float
**
%op4
%op147
=
load
i32
,
i32
*
%op6
%op148
=
load
i32
,
i32
*
%op11
%op149
=
load
i32
,
i32
*
%op9
%op150
=
call
float
@get
(
float
*
%op146
,
i32
%op147
,
i32
%op148
,
i32
%op149
)
%op151
=
load
float
*,
float
**
%op4
%op152
=
load
i32
,
i32
*
%op8
%op153
=
load
i32
,
i32
*
%op11
%op154
=
load
i32
,
i32
*
%op9
%op155
=
call
float
@get
(
float
*
%op151
,
i32
%op152
,
i32
%op153
,
i32
%op154
)
%op156
=
fdiv
float
%op150
,
%op155
%op157
=
fptosi
float
%op156
to
i32
store
i32
%op157
,
i32
*
%op12
%op158
=
load
i32
,
i32
*
%op11
store
i32
%op158
,
i32
*
%op7
br
label
%label162
label159:
; preds = %label134, %label173
%op160
=
load
i32
,
i32
*
%op6
%op161
=
add
i32
%op160
,
1
store
i32
%op161
,
i32
*
%op6
br
label
%label130
label162:
; preds = %label145, %label185
%op163
=
load
i32
,
i32
*
%op7
%op164
=
load
i32
,
i32
*
%op9
%op165
=
icmp
slt
i32
%op163
,
%op164
br
i1
%op165
,
label
%label166
,
label
%label173
label166:
; preds = %label162
%op167
=
load
i32
,
i32
*
%op6
%op168
=
load
i32
,
i32
*
%op9
%op169
=
mul
i32
%op167
,
%op168
%op170
=
load
i32
,
i32
*
%op7
%op171
=
add
i32
%op169
,
%op170
%op172
=
icmp
slt
i32
%op171
,
0
br
i1
%op172
,
label
%label174
,
label
%label175
label173:
; preds = %label162
br
label
%label159
label174:
; preds = %label166
call
void
@neg_idx_except
()
br
label
%label175
label175:
; preds = %label166, %label174
%op176
=
load
float
*,
float
**
%op4
%op177
=
getelementptr
float
,
float
*
%op176
,
i32
%op171
%op178
=
load
i32
,
i32
*
%op6
%op179
=
load
i32
,
i32
*
%op9
%op180
=
mul
i32
%op178
,
%op179
%op181
=
load
i32
,
i32
*
%op7
%op182
=
add
i32
%op180
,
%op181
%op183
=
icmp
slt
i32
%op182
,
0
br
i1
%op183
,
label
%label184
,
label
%label185
label184:
; preds = %label175
call
void
@neg_idx_except
()
br
label
%label185
label185:
; preds = %label175, %label184
%op186
=
load
float
*,
float
**
%op4
%op187
=
getelementptr
float
,
float
*
%op186
,
i32
%op182
%op188
=
load
float
,
float
*
%op187
%op189
=
load
float
*,
float
**
%op4
%op190
=
load
i32
,
i32
*
%op8
%op191
=
load
i32
,
i32
*
%op7
%op192
=
load
i32
,
i32
*
%op9
%op193
=
call
float
@get
(
float
*
%op189
,
i32
%op190
,
i32
%op191
,
i32
%op192
)
%op194
=
load
i32
,
i32
*
%op12
%op195
=
sitofp
i32
%op194
to
float
%op196
=
fmul
float
%op193
,
%op195
%op197
=
fsub
float
%op188
,
%op196
store
float
%op197
,
float
*
%op177
%op198
=
load
i32
,
i32
*
%op7
%op199
=
add
i32
%op198
,
1
store
i32
%op199
,
i32
*
%op7
br
label
%label162
label200:
; preds = %label38, %label252
%op201
=
load
i32
,
i32
*
%op6
%op202
=
icmp
sge
i32
%op201
,
0
br
i1
%op202
,
label
%label203
,
label
%label212
label203:
; preds = %label200
%op204
=
load
float
*,
float
**
%op4
%op205
=
load
i32
,
i32
*
%op6
%op206
=
load
i32
,
i32
*
%op5
%op207
=
load
i32
,
i32
*
%op9
%op208
=
call
float
@get
(
float
*
%op204
,
i32
%op205
,
i32
%op206
,
i32
%op207
)
%op209
=
fptosi
float
%op208
to
i32
store
i32
%op209
,
i32
*
%op12
%op210
=
load
i32
,
i32
*
%op6
%op211
=
add
i32
%op210
,
1
store
i32
%op211
,
i32
*
%op7
br
label
%label213
label212:
; preds = %label200
ret
i32
0
label213:
; preds = %label203, %label239
%op214
=
load
i32
,
i32
*
%op7
%op215
=
load
i32
,
i32
*
%op5
%op216
=
icmp
slt
i32
%op214
,
%op215
br
i1
%op216
,
label
%label217
,
label
%label227
label217:
; preds = %label213
%op218
=
load
float
*,
float
**
%op4
%op219
=
load
i32
,
i32
*
%op6
%op220
=
load
i32
,
i32
*
%op7
%op221
=
load
i32
,
i32
*
%op9
%op222
=
call
float
@get
(
float
*
%op218
,
i32
%op219
,
i32
%op220
,
i32
%op221
)
%op223
=
call
float
@isZero
(
float
%op222
)
%op224
=
sitofp
i32
1
to
float
%op225
=
fsub
float
%op224
,
%op223
%op226
=
fcmp
une
float
%op225
,
0x0
br
i1
%op226
,
label
%label230
,
label
%label239
label227:
; preds = %label213
%op228
=
load
i32
,
i32
*
%op6
%op229
=
icmp
slt
i32
%op228
,
0
br
i1
%op229
,
label
%label251
,
label
%label252
label230:
; preds = %label217
%op231
=
load
i32
,
i32
*
%op12
%op232
=
load
float
*,
float
**
%op4
%op233
=
load
i32
,
i32
*
%op6
%op234
=
load
i32
,
i32
*
%op7
%op235
=
load
i32
,
i32
*
%op9
%op236
=
call
float
@get
(
float
*
%op232
,
i32
%op233
,
i32
%op234
,
i32
%op235
)
%op237
=
load
i32
,
i32
*
%op7
%op238
=
icmp
slt
i32
%op237
,
0
br
i1
%op238
,
label
%label242
,
label
%label243
label239:
; preds = %label217, %label243
%op240
=
load
i32
,
i32
*
%op7
%op241
=
add
i32
%op240
,
1
store
i32
%op241
,
i32
*
%op7
br
label
%label213
label242:
; preds = %label230
call
void
@neg_idx_except
()
br
label
%label243
label243:
; preds = %label230, %label242
%op244
=
load
float
*,
float
**
%op3
%op245
=
getelementptr
float
,
float
*
%op244
,
i32
%op237
%op246
=
load
float
,
float
*
%op245
%op247
=
fmul
float
%op236
,
%op246
%op248
=
sitofp
i32
%op231
to
float
%op249
=
fsub
float
%op248
,
%op247
%op250
=
fptosi
float
%op249
to
i32
store
i32
%op250
,
i32
*
%op12
br
label
%label239
label251:
; preds = %label227
call
void
@neg_idx_except
()
br
label
%label252
label252:
; preds = %label227, %label251
%op253
=
load
float
*,
float
**
%op3
%op254
=
getelementptr
float
,
float
*
%op253
,
i32
%op228
%op255
=
load
i32
,
i32
*
%op12
%op256
=
load
float
*,
float
**
%op4
%op257
=
load
i32
,
i32
*
%op6
%op258
=
load
i32
,
i32
*
%op6
%op259
=
load
i32
,
i32
*
%op9
%op260
=
call
float
@get
(
float
*
%op256
,
i32
%op257
,
i32
%op258
,
i32
%op259
)
%op261
=
sitofp
i32
%op255
to
float
%op262
=
fdiv
float
%op261
,
%op260
store
float
%op262
,
float
*
%op254
%op263
=
load
i32
,
i32
*
%op6
%op264
=
sub
i32
%op263
,
1
store
i32
%op264
,
i32
*
%op6
br
label
%label200
}
define
void
@main
()
{
label_entry:
%op0
=
alloca
i32
%op1
=
alloca
[
3
x
float
]
%op2
=
alloca
[
12
x
float
]
%op3
=
icmp
slt
i32
0
,
0
br
i1
%op3
,
label
%label4
,
label
%label5
label4:
; preds = %label_entry
call
void
@neg_idx_except
()
br
label
%label5
label5:
; preds = %label_entry, %label4
%op6
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
0
%op7
=
sitofp
i32
1
to
float
store
float
%op7
,
float
*
%op6
%op8
=
icmp
slt
i32
1
,
0
br
i1
%op8
,
label
%label9
,
label
%label10
label9:
; preds = %label5
call
void
@neg_idx_except
()
br
label
%label10
label10:
; preds = %label5, %label9
%op11
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
1
%op12
=
sitofp
i32
2
to
float
store
float
%op12
,
float
*
%op11
%op13
=
icmp
slt
i32
2
,
0
br
i1
%op13
,
label
%label14
,
label
%label15
label14:
; preds = %label10
call
void
@neg_idx_except
()
br
label
%label15
label15:
; preds = %label10, %label14
%op16
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
2
%op17
=
sitofp
i32
1
to
float
store
float
%op17
,
float
*
%op16
%op18
=
icmp
slt
i32
3
,
0
br
i1
%op18
,
label
%label19
,
label
%label20
label19:
; preds = %label15
call
void
@neg_idx_except
()
br
label
%label20
label20:
; preds = %label15, %label19
%op21
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
3
%op22
=
sitofp
i32
1
to
float
store
float
%op22
,
float
*
%op21
%op23
=
mul
i32
1
,
4
%op24
=
add
i32
%op23
,
0
%op25
=
icmp
slt
i32
%op24
,
0
br
i1
%op25
,
label
%label26
,
label
%label27
label26:
; preds = %label20
call
void
@neg_idx_except
()
br
label
%label27
label27:
; preds = %label20, %label26
%op28
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op24
%op29
=
sitofp
i32
2
to
float
store
float
%op29
,
float
*
%op28
%op30
=
mul
i32
1
,
4
%op31
=
add
i32
%op30
,
1
%op32
=
icmp
slt
i32
%op31
,
0
br
i1
%op32
,
label
%label33
,
label
%label34
label33:
; preds = %label27
call
void
@neg_idx_except
()
br
label
%label34
label34:
; preds = %label27, %label33
%op35
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op31
%op36
=
sitofp
i32
3
to
float
store
float
%op36
,
float
*
%op35
%op37
=
mul
i32
1
,
4
%op38
=
add
i32
%op37
,
2
%op39
=
icmp
slt
i32
%op38
,
0
br
i1
%op39
,
label
%label40
,
label
%label41
label40:
; preds = %label34
call
void
@neg_idx_except
()
br
label
%label41
label41:
; preds = %label34, %label40
%op42
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op38
%op43
=
sitofp
i32
4
to
float
store
float
%op43
,
float
*
%op42
%op44
=
mul
i32
1
,
4
%op45
=
add
i32
%op44
,
3
%op46
=
icmp
slt
i32
%op45
,
0
br
i1
%op46
,
label
%label47
,
label
%label48
label47:
; preds = %label41
call
void
@neg_idx_except
()
br
label
%label48
label48:
; preds = %label41, %label47
%op49
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op45
%op50
=
sitofp
i32
3
to
float
store
float
%op50
,
float
*
%op49
%op51
=
mul
i32
2
,
4
%op52
=
add
i32
%op51
,
0
%op53
=
icmp
slt
i32
%op52
,
0
br
i1
%op53
,
label
%label54
,
label
%label55
label54:
; preds = %label48
call
void
@neg_idx_except
()
br
label
%label55
label55:
; preds = %label48, %label54
%op56
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op52
%op57
=
sitofp
i32
1
to
float
store
float
%op57
,
float
*
%op56
%op58
=
mul
i32
2
,
4
%op59
=
add
i32
%op58
,
1
%op60
=
icmp
slt
i32
%op59
,
0
br
i1
%op60
,
label
%label61
,
label
%label62
label61:
; preds = %label55
call
void
@neg_idx_except
()
br
label
%label62
label62:
; preds = %label55, %label61
%op63
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op59
%op64
=
sitofp
i32
1
to
float
store
float
%op64
,
float
*
%op63
%op65
=
mul
i32
2
,
4
%op66
=
add
i32
%op65
,
2
%op67
=
icmp
slt
i32
%op66
,
0
br
i1
%op67
,
label
%label68
,
label
%label69
label68:
; preds = %label62
call
void
@neg_idx_except
()
br
label
%label69
label69:
; preds = %label62, %label68
%op70
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op66
%op71
=
sub
i32
0
,
2
%op72
=
sitofp
i32
%op71
to
float
store
float
%op72
,
float
*
%op70
%op73
=
mul
i32
2
,
4
%op74
=
add
i32
%op73
,
3
%op75
=
icmp
slt
i32
%op74
,
0
br
i1
%op75
,
label
%label76
,
label
%label77
label76:
; preds = %label69
call
void
@neg_idx_except
()
br
label
%label77
label77:
; preds = %label69, %label76
%op78
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
%op74
%op79
=
sitofp
i32
0
to
float
store
float
%op79
,
float
*
%op78
%op80
=
getelementptr
[
3
x
float
],
[
3
x
float
]*
%op1
,
i32
0
,
i32
0
%op81
=
getelementptr
[
12
x
float
],
[
12
x
float
]*
%op2
,
i32
0
,
i32
0
%op82
=
call
i32
@gauss
(
float
*
%op80
,
float
*
%op81
,
i32
3
)
store
i32
0
,
i32
*
%op0
br
label
%label83
label83:
; preds = %label77, %label91
%op84
=
load
i32
,
i32
*
%op0
%op85
=
icmp
slt
i32
%op84
,
3
br
i1
%op85
,
label
%label86
,
label
%label89
label86:
; preds = %label83
%op87
=
load
i32
,
i32
*
%op0
%op88
=
icmp
slt
i32
%op87
,
0
br
i1
%op88
,
label
%label90
,
label
%label91
label89:
; preds = %label83
ret
void
label90:
; preds = %label86
call
void
@neg_idx_except
()
br
label
%label91
label91:
; preds = %label86, %label90
%op92
=
getelementptr
[
3
x
float
],
[
3
x
float
]*
%op1
,
i32
0
,
i32
%op87
%op93
=
load
float
,
float
*
%op92
call
void
@outputFloat
(
float
%op93
)
%op94
=
load
i32
,
i32
*
%op0
%op95
=
add
i32
%op94
,
1
store
i32
%op95
,
i32
*
%op0
br
label
%label83
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment