i386.md (*tls_global_dynamic_32_gnu): Split asm template.
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 18 May 2011 17:32:59 +0000 (19:32 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 18 May 2011 17:32:59 +0000 (19:32 +0200)
* 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

gcc/ChangeLog
gcc/config/i386/i386.md

index 36ebe0c4b099d91e1a28ed8afd6d3e10773d8fcb..dc2495e9907d54ea6ab8ece1600b3a7e5f74b6d8 100644 (file)
@@ -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.
        * 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.
index d2bcd6b406b8fa049e78762f66185465ce87df46..551e25d623ebd837ef615db1c42dea0d01f49f0a 100644 (file)
    (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")])
 
    (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")])
 
    (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")])
 
         (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")])
 
         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.