Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
6e70214f
Commit
6e70214f
authored
Oct 17, 2007
by
Michael Beck
Browse files
float->unsigned 64bit does not work yet: panic
[r16249]
parent
6437e6f6
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_intrinsics.c
View file @
6e70214f
...
...
@@ -700,27 +700,34 @@ static int map_Conv(ir_node *call, void *ctx) {
set_ia32_use_frame
(
a_f
);
set_ia32_ls_mode
(
a_f
,
mode_D
);
/* store from FPU as Int */
a_f
=
new_rd_ia32_l_vfist
(
dbg
,
irg
,
block
,
frame
,
a_f
,
get_irg_no_mem
(
irg
));
set_ia32_frame_ent
(
a_f
,
ent
);
set_ia32_use_frame
(
a_f
);
set_ia32_ls_mode
(
a_f
,
mode_Ls
);
mem
=
a_f
;
/* load low part of the result */
l_res
=
new_rd_ia32_l_Load
(
dbg
,
irg
,
block
,
frame
,
mem
);
set_ia32_frame_ent
(
l_res
,
ent
);
set_ia32_use_frame
(
l_res
);
set_ia32_ls_mode
(
l_res
,
l_res_mode
);
l_res
=
new_r_Proj
(
irg
,
block
,
l_res
,
l_res_mode
,
pn_ia32_l_Load_res
);
/* load hight part of the result */
h_res
=
new_rd_ia32_l_Load
(
dbg
,
irg
,
block
,
frame
,
mem
);
set_ia32_frame_ent
(
h_res
,
ent
);
add_ia32_am_offs_int
(
h_res
,
gp_bytes
);
set_ia32_use_frame
(
h_res
);
set_ia32_ls_mode
(
h_res
,
h_res_mode
);
h_res
=
new_r_Proj
(
irg
,
block
,
h_res
,
h_res_mode
,
pn_ia32_l_Load_res
);
if
(
mode_is_signed
(
h_res_mode
))
{
/* a float to signed conv, the simple case */
/* store from FPU as Int */
a_f
=
new_rd_ia32_l_vfist
(
dbg
,
irg
,
block
,
frame
,
a_f
,
get_irg_no_mem
(
irg
));
set_ia32_frame_ent
(
a_f
,
ent
);
set_ia32_use_frame
(
a_f
);
set_ia32_ls_mode
(
a_f
,
mode_Ls
);
mem
=
a_f
;
/* load low part of the result */
l_res
=
new_rd_ia32_l_Load
(
dbg
,
irg
,
block
,
frame
,
mem
);
set_ia32_frame_ent
(
l_res
,
ent
);
set_ia32_use_frame
(
l_res
);
set_ia32_ls_mode
(
l_res
,
l_res_mode
);
l_res
=
new_r_Proj
(
irg
,
block
,
l_res
,
l_res_mode
,
pn_ia32_l_Load_res
);
/* load hight part of the result */
h_res
=
new_rd_ia32_l_Load
(
dbg
,
irg
,
block
,
frame
,
mem
);
set_ia32_frame_ent
(
h_res
,
ent
);
add_ia32_am_offs_int
(
h_res
,
gp_bytes
);
set_ia32_use_frame
(
h_res
);
set_ia32_ls_mode
(
h_res
,
h_res_mode
);
h_res
=
new_r_Proj
(
irg
,
block
,
h_res
,
h_res_mode
,
pn_ia32_l_Load_res
);
}
else
{
/* a float to unsigned conv, more complicated */
panic
(
"Float->unsigned64 NYI
\n
"
);
}
/* lower the call */
resolve_call
(
call
,
l_res
,
h_res
,
irg
,
block
);
...
...
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