aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-05-18 19:32:59 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-05-18 19:32:59 +0200
commit0bda47a37afb63ee0162ea39ded62305469eed7d (patch)
tree1d97a12a1c21e045d5488ce827f2037a7443e461 /gcc
parent0515f4d2ba0a438d1a6dadb6a88b7c6e5449a129 (diff)
downloadgcc-0bda47a37afb63ee0162ea39ded62305469eed7d.zip
gcc-0bda47a37afb63ee0162ea39ded62305469eed7d.tar.gz
gcc-0bda47a37afb63ee0162ea39ded62305469eed7d.tar.bz2
i386.md (*tls_global_dynamic_32_gnu): Split asm template.
* config/i386/i386.md (*tls_global_dynamic_32_gnu): Split asm template. (*tls_global_dynamic_64): Ditto. (*tls_local_dynamic_base_32_gnu): Ditto. (*tls_local_dynamic_base_64): Ditto. (tls_initial_exec_64_sun): Ditto. From-SVN: r173870
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog23
-rw-r--r--gcc/config/i386/i386.md33
2 files changed, 42 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 36ebe0c..dc2495e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2011-05-18 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*tls_global_dynamic_32_gnu): Split asm template.
+ (*tls_global_dynamic_64): Ditto.
+ (*tls_local_dynamic_base_32_gnu): Ditto.
+ (*tls_local_dynamic_base_64): Ditto.
+ (tls_initial_exec_64_sun): Ditto.
+
2011-05-18 Stuart Henderson <shenders@gcc.gnu.org>
* doc/invoke.texi (Blackfin Options): -mcpu accepts bf592.
@@ -7,23 +15,21 @@
* config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
* config/bfin/bfin.c (bfin_cpus): Add bf592.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
- __ADSPBF592__ and __ADSPBF59x__ for BFIN_CPU_BF592.
+ __ADSPBF592__ and __ADSPBF59x__ for BFIN_CPU_BF592.
* config/bfin/bfin-opts.h (bfin_cpu_type): Add BFIN_CPU_BF592.
* config/bfin/elf.h (LIB_SPEC): Add bf592.
2011-05-18 Joseph Myers <joseph@codesourcery.com>
* config/arm/arm-opts.h (enum arm_fp16_format_type, enum
- arm_abi_type, enum float_abi_type, enum arm_tp_type): Move from
- arm.h.
+ arm_abi_type, enum float_abi_type, enum arm_tp_type): Move from arm.h.
* config/arm/arm.c (arm_float_abi, arm_fp16_format, arm_abi,
target_thread_pointer, arm_structure_size_boundary, struct
float_abi, all_float_abis, struct fp16_format, all_fp16_formats,
struct abi_name, arm_all_abis): Remove.
- (arm_option_override) Don't process most enumerated option values
- here. Don't process target_fpe_name here. Work with integer not
- string for structure size boundary; use separate diagnostics for
- each case.
+ (arm_option_override) Don't process most enumerated option values here.
+ Don't process target_fpe_name here. Work with integer not string for
+ structure size boundary; use separate diagnostics for each case.
* config/arm/arm.h (enum float_abi_type, enum
arm_fp16_format_type, enum arm_abi_type, enum arm_tp_type): Move
to arm-opts.h.
@@ -33,8 +39,7 @@
(arm_abi_type): New Enum and EnumValue entries.
(mfloat-abi=): Use Enum and Init.
(float_abi_type): New Enum and EnumValue entries.
- (mfp=, mfpe=): Replace by separate Alias entries for each
- argument.
+ (mfp=, mfpe=): Replace by separate Alias entries for each argument.
(mfp16-format=): Use Enum and Init.
(arm_fp16_format_type): New Enum and EnumValue entries.
(mstructure-size-boundary=): Use UInteger and Init.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index d2bcd6b..551e25d 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -12364,7 +12364,11 @@
(clobber (match_scratch:SI 5 "=c"))
(clobber (reg:CC FLAGS_REG))]
"!TARGET_64BIT && TARGET_GNU_TLS"
- "lea{l}\t{%a2@tlsgd(,%1,1), %0|%0, %a2@tlsgd[%1*1]}\;call\t%P3"
+{
+ output_asm_insn
+ ("lea{l}\t{%a2@tlsgd(,%1,1), %0|%0, %a2@tlsgd[%1*1]}", operands);
+ return "call\t%P3";
+}
[(set_attr "type" "multi")
(set_attr "length" "12")])
@@ -12387,7 +12391,14 @@
(unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)]
"TARGET_64BIT"
- { return ASM_BYTE "0x66\n\tlea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2"; }
+{
+ fputs (ASM_BYTE "0x66\n", asm_out_file);
+ output_asm_insn
+ ("lea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}", operands);
+ fputs (ASM_SHORT "0x6666\n", asm_out_file);
+ fputs ("\trex64\n", asm_out_file);
+ return "call\t%P2";
+}
[(set_attr "type" "multi")
(set_attr "length" "16")])
@@ -12410,7 +12421,11 @@
(clobber (match_scratch:SI 4 "=c"))
(clobber (reg:CC FLAGS_REG))]
"!TARGET_64BIT && TARGET_GNU_TLS"
- "lea{l}\t{%&@tlsldm(%1), %0|%0, %&@tlsldm[%1]}\;call\t%P2"
+{
+ output_asm_insn
+ ("lea{l}\t{%&@tlsldm(%1), %0|%0, %&@tlsldm[%1]}", operands);
+ return "call\t%P2";
+}
[(set_attr "type" "multi")
(set_attr "length" "11")])
@@ -12432,7 +12447,11 @@
(match_operand:DI 2 "" "")))
(unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)]
"TARGET_64BIT"
- "lea{q}\t{%&@tlsld(%%rip), %%rdi|rdi, %&@tlsld[rip]}\;call\t%P1"
+{
+ output_asm_insn
+ ("lea{q}\t{%&@tlsld(%%rip), %%rdi|rdi, %&@tlsld[rip]}", operands);
+ return "call\t%P1";
+}
[(set_attr "type" "multi")
(set_attr "length" "12")])
@@ -12507,7 +12526,11 @@
UNSPEC_TLS_IE_SUN))
(clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && TARGET_SUN_TLS"
- "mov{q}\t{%%fs:0, %0|%0, QWORD PTR fs:0}\n\tadd{q}\t{%a1@gottpoff(%%rip), %0|%0, %a1@gottpoff[rip]}"
+{
+ output_asm_insn
+ ("mov{q}\t{%%fs:0, %0|%0, QWORD PTR fs:0}", operands)
+ return "add{q}\t{%a1@gottpoff(%%rip), %0|%0, %a1@gottpoff[rip]}";
+}
[(set_attr "type" "multi")])
;; GNU2 TLS patterns can be split.