diff options
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 188c982..a4a7d3a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -38,6 +38,7 @@ ;; Z -- likewise, with special suffixes for x87 instructions. ;; * -- print a star (in certain assembler syntax) ;; A -- print an absolute memory reference. +;; E -- print address with DImode register names if TARGET_64BIT. ;; w -- print the operand as if it's a "word" (HImode) even if it isn't. ;; s -- print a shift double count, followed by the assemblers argument ;; delimiter. @@ -111,6 +112,7 @@ UNSPEC_MS_TO_SYSV_CALL UNSPEC_CALL_NEEDS_VZEROUPPER UNSPEC_PAUSE + UNSPEC_LEA_ADDR ;; For SSE/MMX support: UNSPEC_FIX_NOTRUNC @@ -1965,7 +1967,7 @@ return "#"; case TYPE_LEA: - return "lea{q}\t{%a1, %0|%0, %a1}"; + return "lea{q}\t{%E1, %0|%0, %E1}"; default: gcc_assert (!flag_pic || LEGITIMATE_PIC_OPERAND_P (operands[1])); @@ -1974,7 +1976,7 @@ else if (which_alternative == 2) return "movabs{q}\t{%1, %0|%0, %1}"; else if (ix86_use_lea_for_mov (insn, operands)) - return "lea{q}\t{%a1, %0|%0, %a1}"; + return "lea{q}\t{%E1, %0|%0, %E1}"; else return "mov{q}\t{%1, %0|%0, %1}"; } @@ -2206,12 +2208,12 @@ return "movd\t{%1, %0|%0, %1}"; case TYPE_LEA: - return "lea{l}\t{%a1, %0|%0, %a1}"; + return "lea{l}\t{%E1, %0|%0, %E1}"; default: gcc_assert (!flag_pic || LEGITIMATE_PIC_OPERAND_P (operands[1])); if (ix86_use_lea_for_mov (insn, operands)) - return "lea{l}\t{%a1, %0|%0, %a1}"; + return "lea{l}\t{%E1, %0|%0, %E1}"; else return "mov{l}\t{%1, %0|%0, %1}"; } @@ -5426,7 +5428,7 @@ [(set (match_operand:SI 0 "register_operand" "=r") (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0))] "TARGET_64BIT" - "lea{l}\t{%a1, %0|%0, %a1}" + "lea{l}\t{%E1, %0|%0, %E1}" "&& reload_completed && ix86_avoid_lea_for_addr (insn, operands)" [(const_int 0)] { @@ -5440,7 +5442,7 @@ [(set (match_operand:SWI48 0 "register_operand" "=r") (match_operand:SWI48 1 "lea_address_operand" "p"))] "" - "lea{<imodesuffix>}\t{%a1, %0|%0, %a1}" + "lea{<imodesuffix>}\t{%E1, %0|%0, %E1}" "reload_completed && ix86_avoid_lea_for_addr (insn, operands)" [(const_int 0)] { @@ -5455,7 +5457,7 @@ (zero_extend:DI (subreg:SI (match_operand:DI 1 "lea_address_operand" "j") 0)))] "TARGET_64BIT" - "lea{l}\t{%a1, %k0|%k0, %a1}" + "lea{l}\t{%E1, %k0|%k0, %E1}" [(set_attr "type" "lea") (set_attr "mode" "SI")]) @@ -5464,7 +5466,7 @@ (zero_extend:DI (match_operand:SI 1 "lea_address_operand" "j")))] "TARGET_64BIT" - "lea{l}\t{%a1, %k0|%k0, %a1}" + "lea{l}\t{%E1, %k0|%k0, %E1}" [(set_attr "type" "lea") (set_attr "mode" "SI")]) @@ -5474,7 +5476,7 @@ (subreg:DI (match_operand:SI 1 "lea_address_operand" "p") 0) (match_operand:DI 2 "const_32bit_mask" "n")))] "TARGET_64BIT" - "lea{l}\t{%a1, %k0|%k0, %a1}" + "lea{l}\t{%E1, %k0|%k0, %E1}" [(set_attr "type" "lea") (set_attr "mode" "SI")]) @@ -5484,7 +5486,7 @@ (match_operand:DI 1 "lea_address_operand" "p") (match_operand:DI 2 "const_32bit_mask" "n")))] "TARGET_64BIT" - "lea{l}\t{%a1, %k0|%k0, %a1}" + "lea{l}\t{%E1, %k0|%k0, %E1}" [(set_attr "type" "lea") (set_attr "mode" "SI")]) @@ -12541,7 +12543,7 @@ "!TARGET_64BIT && TARGET_GNU_TLS" { output_asm_insn - ("lea{l}\t{%a2@tlsgd(,%1,1), %0|%0, %a2@tlsgd[%1*1]}", operands); + ("lea{l}\t{%E2@tlsgd(,%1,1), %0|%0, %E2@tlsgd[%1*1]}", operands); if (TARGET_SUN_TLS) #ifdef HAVE_AS_IX86_TLSGDPLT return "call\t%a2@tlsgdplt"; @@ -12576,7 +12578,7 @@ if (!TARGET_X32) fputs (ASM_BYTE "0x66\n", asm_out_file); output_asm_insn - ("lea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}", operands); + ("lea{q}\t{%E1@tlsgd(%%rip), %%rdi|rdi, %E1@tlsgd[rip]}", operands); fputs (ASM_SHORT "0x6666\n", asm_out_file); fputs ("\trex64\n", asm_out_file); if (TARGET_SUN_TLS) @@ -12802,7 +12804,7 @@ (unspec:SI [(match_operand:SI 2 "tls_symbolic_operand" "")] UNSPEC_TLSDESC))))] "!TARGET_64BIT && TARGET_GNU2_TLS" - "lea{l}\t{%a2@TLSDESC(%1), %0|%0, %a2@TLSDESC[%1]}" + "lea{l}\t{%E2@TLSDESC(%1), %0|%0, %E2@TLSDESC[%1]}" [(set_attr "type" "lea") (set_attr "mode" "SI") (set_attr "length" "6") @@ -12864,7 +12866,7 @@ (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_TLSDESC))] "TARGET_64BIT && TARGET_GNU2_TLS" - "lea{q}\t{%a1@TLSDESC(%%rip), %0|%0, %a1@TLSDESC[rip]}" + "lea{q}\t{%E1@TLSDESC(%%rip), %0|%0, %E1@TLSDESC[rip]}" [(set_attr "type" "lea") (set_attr "mode" "DI") (set_attr "length" "7") @@ -16614,7 +16616,7 @@ default: operands[2] = SET_SRC (XVECEXP (PATTERN (insn), 0, 0)); - return "lea{<imodesuffix>}\t{%a2, %0|%0, %a2}"; + return "lea{<imodesuffix>}\t{%E2, %0|%0, %E2}"; } } [(set (attr "type") |