+2009-07-31 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/bsd.h (ASM_BYTE): New define.
+ * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
+ * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
+ .byte. Use fputs or putc instead of fprintf where appropriate.
+ * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte. Use
+ fputs or putc instead of fprintf where appropriate.
+ * config/i386/i386elf.h: Ditto.
+ * config/i386/sysv4.h: Ditto.
+
+ * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
+ * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
+ (*tls_global_dynamic_64): Ditto.
+
2009-07-31 Christian Bruel <christian.bruel@st.com>
* gcc/config.gcc (sh*-*-elf): test with_libgloss.
(vector_copysign<mode>3): Ditto.
* config/rs6000/predicates.md (easy_vector_constant_msb): New
- predicate for setting the high bit in each word, used for
- copysign.
+ predicate for setting the high bit in each word, used for copysign.
* config/rs6000/ppc-asm.h (f19): Whitespace.
(f32-f63): Define if VSX.
* config/rs6000/power7.md: New file, provide tuning parameters for
-mcpu=power7.
- * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX
- support.
+ * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
(rs6000_cpu_cpp_builtins): Ditto.
(altivec_overloaded_builtins): Ditto.
(altivec_resolve_overloaded_builtin): Ditto.
splitter for vectorizing copysign.
(altivec_vrfiz): Rename from altivec_fturncv4sf2. Add support for
vectorizing simple math functions.
- (altivec_vrfip): Add support for vectorizing simple math
- functions.
+ (altivec_vrfip): Add support for vectorizing simple math functions.
(altivec_vrfim): Ditto.
(altivec_copysign_v4sf3): New insn for Altivec copysign support.
(vec_nearbyint): Ditto.
(vec_rint): Ditto.
(vec_sqrt): Ditto.
- (all predicates): Use the generic builtin function, and not the
- V4SF specific function so that the predicates will work with
- VSX's V2DF.
+ (all predicates): Use the generic builtin function, and not the V4SF
+ specific function so that the predicates will work with VSX's V2DF.
(vec_all_*): Ditto.
(vec_any_*): Ditto.
/* Assembler pseudos to introduce constants of various size. */
+#define ASM_BYTE "\t.byte\t"
#define ASM_SHORT "\t.value\t"
#define ASM_LONG "\t.long\t"
#define ASM_QUAD "\t.quad\t" /* Should not be used for 32bit compilation. */
{ size_t i = 0, limit = (SIZE); \
while (i < limit) \
{ if (i%10 == 0) { if (i!=0) putc ('\n', (FILE)); \
- fputs ("\t.byte\t", (FILE)); } \
+ fputs (ASM_BYTE, (FILE)); } \
else putc (',', (FILE)); \
fprintf ((FILE), "0x%x", ((PTR)[i++] & 0377)) ;} \
putc ('\n', (FILE)); \
/* Assembler pseudos to introduce constants of various size. */
+#define ASM_BYTE "\t.byte\t"
#define ASM_SHORT "\t.word\t"
#define ASM_LONG "\t.long\t"
#define ASM_QUAD "\t.quad\t" /* Should not be used for 32bit compilation. */
/* Assembler pseudos to introduce constants of various size. */
-#define ASM_BYTE_OP "\t.byte\t"
+#define ASM_BYTE "\t.byte\t"
#define ASM_SHORT "\t.word\t"
#define ASM_LONG "\t.long\t"
#define ASM_QUAD "\t.quad\t"
else \
{ \
if (bytes_in_chunk == 0) \
- fprintf ((FILE), "\t.byte\t"); \
+ fputs (ASM_BYTE, (FILE)); \
else \
fputc (',', (FILE)); \
fprintf ((FILE), "0x%02x", *_ascii_bytes); \
} \
} \
if (bytes_in_chunk > 0) \
- fprintf ((FILE), "\n"); \
+ fputc ('\n', (FILE)); \
} \
while (0)
#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
do \
{ \
- fprintf ((FILE), "%s", SET_ASM_OP); \
+ fputs (SET_ASM_OP, (FILE)); \
assemble_name (FILE, LABEL1); \
- fprintf (FILE, ","); \
+ fputc (',', (FILE)); \
assemble_name (FILE, LABEL2); \
- fprintf (FILE, "\n"); \
+ fputc ('\n', (FILE)); \
} \
while (0)
#define SUBTARGET_RETURN_IN_MEMORY(TYPE, FNTYPE) \
(TYPE_MODE (TYPE) == BLKmode \
- || (AGGREGATE_TYPE_P (TYPE) && int_size_in_bytes (TYPE) > 8 ))
\ No newline at end of file
+ || (AGGREGATE_TYPE_P (TYPE) && int_size_in_bytes (TYPE) > 8 ))
#undef TARGET_ASM_CLOSE_PAREN
#define TARGET_ASM_CLOSE_PAREN ""
+#undef TARGET_ASM_BYTE_OP
+#define TARGET_ASM_BYTE_OP ASM_BYTE
+
#undef TARGET_ASM_ALIGNED_HI_OP
#define TARGET_ASM_ALIGNED_HI_OP ASM_SHORT
#undef TARGET_ASM_ALIGNED_SI_OP
#ifdef HAVE_AS_IX86_SAHF
return "sahf";
#else
- return ".byte\t0x9e";
+ return ASM_BYTE "0x9e";
#endif
}
[(set_attr "length" "1")
(unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)]
"TARGET_64BIT"
- { return ".byte\t0x66\n\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2"; }
+ { 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"; }
[(set_attr "type" "multi")
(set_attr "length" "16")])
const unsigned char *limit = _ascii_bytes + (LENGTH); \
unsigned bytes_in_chunk = 0; \
for (; _ascii_bytes < limit; _ascii_bytes++) \
- { \
+ { \
const unsigned char *p; \
if (bytes_in_chunk >= 64) \
{ \
else \
{ \
if (bytes_in_chunk == 0) \
- fprintf ((FILE), "\t.byte\t"); \
+ fputs (ASM_BYTE, (FILE)); \
else \
fputc (',', (FILE)); \
fprintf ((FILE), "0x%02x", *_ascii_bytes); \
} \
} \
if (bytes_in_chunk > 0) \
- fprintf ((FILE), "\n"); \
+ fputc ('\n', (FILE)); \
} \
while (0)
const unsigned char *limit = _ascii_bytes + (LENGTH); \
unsigned bytes_in_chunk = 0; \
for (; _ascii_bytes < limit; _ascii_bytes++) \
- { \
+ { \
const unsigned char *p; \
if (bytes_in_chunk >= 64) \
{ \
else \
{ \
if (bytes_in_chunk == 0) \
- fprintf ((FILE), "\t.byte\t"); \
+ fputs (ASM_BYTE, (FILE)); \
else \
fputc (',', (FILE)); \
fprintf ((FILE), "0x%02x", *_ascii_bytes); \
} \
} \
if (bytes_in_chunk > 0) \
- fprintf ((FILE), "\n"); \
+ fputc ('\n', (FILE)); \
} \
while (0)
do { \
if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel) \
{ \
- fputs (ASM_LONG, FILE); \
- assemble_name (FILE, XSTR (ADDR, 0)); \
- fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
- goto DONE; \
+ fputs (ASM_LONG, (FILE)); \
+ assemble_name (FILE, XSTR (ADDR, 0)); \
+ fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), (FILE)); \
+ goto DONE; \
} \
} while (0)