Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
174ba974
Commit
174ba974
authored
Jan 09, 2016
by
yb9976
Browse files
AMD64: Support x87 floating point spills.
This fixes backend/long_double_arith.c.
parent
14ca74b1
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/amd64/bearch_amd64.c
View file @
174ba974
...
...
@@ -449,6 +449,16 @@ static void amd64_set_frame_entity(ir_node *node, ir_entity *entity,
attr
->
addr
.
immediate
.
entity
=
entity
;
}
static
ir_type
*
get_type_for_insn_mode
(
amd64_insn_mode_t
const
insn_mode
)
{
/* TODO: do not hardcode node names here */
switch
(
insn_mode
)
{
case
INSN_MODE_128
:
return
get_type_for_mode
(
amd64_mode_xmm
);
case
INSN_MODE_80
:
return
x86_type_E
;
default:
return
get_type_for_mode
(
mode_Lu
);
}
}
/**
* Collects nodes that need frame entities assigned.
*/
...
...
@@ -477,10 +487,7 @@ static void amd64_collect_frame_entity_nodes(ir_node *node, void *data)
const
amd64_addr_attr_t
*
attr
=
get_amd64_addr_attr_const
(
node
);
x86_imm32_t
const
*
imm
=
&
attr
->
addr
.
immediate
;
if
(
imm
->
kind
==
X86_IMM_FRAMEOFFSET
&&
imm
->
entity
==
NULL
)
{
/* TODO: do not hardcode node names here */
const
ir_mode
*
mode
=
is_amd64_movdqu
(
node
)
?
amd64_mode_xmm
:
mode_Lu
;
const
ir_type
*
type
=
get_type_for_mode
(
mode
);
const
ir_type
*
type
=
get_type_for_insn_mode
(
attr
->
insn_mode
);
be_load_needs_frame_entity
(
env
,
node
,
type
);
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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