i386: Handle address spaces in movabs patterns
* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx. (*movabs<mode>_2): Likewise. From-SVN: r230001
This commit is contained in:
parent
f736b911e6
commit
fe5f926316
@ -1,5 +1,8 @@
|
||||
2015-11-09 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx.
|
||||
(*movabs<mode>_2): Likewise.
|
||||
|
||||
* dwarf2out.c (modified_type_die): Pass the address space number
|
||||
through TARGET_ADDR_SPACE_DEBUG to produce the dwarf address class.
|
||||
* target.def (TARGET_ADDR_SPACE_DEBUG): New.
|
||||
|
@ -2595,9 +2595,19 @@
|
||||
[(set (mem:SWI1248x (match_operand:DI 0 "x86_64_movabs_operand" "i,r"))
|
||||
(match_operand:SWI1248x 1 "nonmemory_operand" "a,r<i>"))]
|
||||
"TARGET_LP64 && ix86_check_movabs (insn, 0)"
|
||||
"@
|
||||
movabs{<imodesuffix>}\t{%1, %P0|[%P0], %1}
|
||||
mov{<imodesuffix>}\t{%1, %a0|<iptrsize> PTR %a0, %1}"
|
||||
{
|
||||
/* Recover the full memory rtx. */
|
||||
operands[0] = SET_DEST (PATTERN (insn));
|
||||
switch (which_alternative)
|
||||
{
|
||||
case 0:
|
||||
return "movabs{<imodesuffix>}\t{%1, %0|%0, %1}";
|
||||
case 1:
|
||||
return "mov{<imodesuffix>}\t{%1, %0|%0, %1}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "imov")
|
||||
(set_attr "modrm" "0,*")
|
||||
(set_attr "length_address" "8,0")
|
||||
@ -2609,9 +2619,19 @@
|
||||
[(set (match_operand:SWI1248x 0 "register_operand" "=a,r")
|
||||
(mem:SWI1248x (match_operand:DI 1 "x86_64_movabs_operand" "i,r")))]
|
||||
"TARGET_LP64 && ix86_check_movabs (insn, 1)"
|
||||
"@
|
||||
movabs{<imodesuffix>}\t{%P1, %0|%0, [%P1]}
|
||||
mov{<imodesuffix>}\t{%a1, %0|%0, <iptrsize> PTR %a1}"
|
||||
{
|
||||
/* Recover the full memory rtx. */
|
||||
operands[1] = SET_SRC (PATTERN (insn));
|
||||
switch (which_alternative)
|
||||
{
|
||||
case 0:
|
||||
return "movabs{<imodesuffix>}\t{%1, %0|%0, %1}";
|
||||
case 1:
|
||||
return "mov{<imodesuffix>}\t{%1, %0|%0, %1}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "imov")
|
||||
(set_attr "modrm" "0,*")
|
||||
(set_attr "length_address" "8,0")
|
||||
|
Loading…
x
Reference in New Issue
Block a user