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
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
Hide 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,13 +20,16 @@
## 目前已布置的实验
*
[
lab1
](
./Documentations/1-parser/
)
+
DDL:2022-10-03 23:59:59 (UTC+8)
+
DDL:2022-10-03 23:59:59 (UTC+8)
*
[
lab2
](
./Documentations/2-ir-gen-warmup/
)
+
DDL:2022-10-23 23:59:59 (UTC+8)
+
DDL:2022-10-23 23:59:59 (UTC+8)
*
[
lab3
](
./Documentations/3-ir-gen/
)
+
DDL:2022-11-07 23:59:59 (UTC+8)
+
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