* config/i386/i386.md (align): Use ASM_OUTPUT_*ALIGN macros.
authorRichard Henderson <rth@redhat.com>
Wed, 4 Jun 2003 20:06:34 +0000 (13:06 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 4 Jun 2003 20:06:34 +0000 (13:06 -0700)
From-SVN: r67461

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

index 8fab6e198f90d0e9cbd82e7740bb3a99bd32123f..68bae44f480d934d792f8ebcacf706847486ac0a 100644 (file)
@@ -1,3 +1,7 @@
+2003-06-04  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.md (align): Use ASM_OUTPUT_*ALIGN macros.
+
 2003-06-04  Andrew Pinski <pinskia@physics.uc.edu>
 
        * config/rs6000/darwin.h (RS6000_OUTPUT_BASENAME):
index 65b54ea9050e64f1d13813beb69bc32938f1ba55..6806c7aee9f64e6d7a056fcf1ea199c2e8a0748d 100644 (file)
    (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")])