aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-06-04 13:06:34 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-06-04 13:06:34 -0700
commit9ccf96814f9910074e07fc708ca70e40d28ce4c4 (patch)
tree0f962b6901cac414657365f50cbff910670a4f6b /gcc/config
parent9dce39a4e3b4b670e60d4aacea578f3967d26b02 (diff)
downloadgcc-9ccf96814f9910074e07fc708ca70e40d28ce4c4.zip
gcc-9ccf96814f9910074e07fc708ca70e40d28ce4c4.tar.gz
gcc-9ccf96814f9910074e07fc708ca70e40d28ce4c4.tar.bz2
* config/i386/i386.md (align): Use ASM_OUTPUT_*ALIGN macros.
From-SVN: r67461
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.md12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 65b54ea..6806c7a 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -14279,16 +14279,20 @@
(set_attr "modrm" "0")
(set_attr "ppro_uops" "one")])
-;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
-;; all of memory. This blocks insns from being moved across this point.
+;; Align to 16-byte boundary, max skip in op0. Used to avoid
+;; branch prediction penalty for the third jump in a 16-byte
+;; block on K8.
(define_insn "align"
[(unspec_volatile [(match_operand 0 "" "")] UNSPECV_ALIGN)]
""
{
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
- return ".p2align\t4,,%c0";
+#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
+ ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file, 4, INTVAL (operands[0]));
+#else
+ ASM_OUTPUT_ALIGN (asm_out_file, 4);
#endif
+ return "";
}
[(set_attr "length" "16")])