public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Enable 32-bit Alignment
@ 2007-07-04  1:02 Menezes, Evandro
  2007-07-04  1:03 ` H.J. Lu
  0 siblings, 1 reply; 15+ messages in thread
From: Menezes, Evandro @ 2007-07-04  1:02 UTC (permalink / raw)
  To: binutils; +Cc: Michael Meissner, Christophe Harle, Dwarak Rajagopal

[-- Attachment #1: Type: text/plain, Size: 818 bytes --]

After iterating with HJ and Alan, here's another spin of the patch.

2007-06-29	Evandro Menezes <evandro.menezes@amd.com>

	* config/tc-i386.c (handle_align_code, i386_align_code): new
function 
	  to help alignment > 15 bytes, enable alignment up to 31 bytes,

	  always use variable-length NOP for K8 too.
	* config/tc-i386.h (MAX_MEM_FOR_RS_ALIGN_CODE): change limit to
31 bytes.
	* testsuite/gas/i386/i386.exp: replace NOP test-case, add new
one and 
	  remove K8-specific one.
	* testsuite/gas/i386/nops-3-i686.d: new NOP test-case.
	* testsuite/gas/i386/nops-4.s: idem
	* testsuite/gas/i386/nops-4-i686.d: idem
	* testsuite/gas/i386/x86-64-nops-1-k8.d: removed.

Thanks,

-- 
_______________________________________________________
Evandro Menezes               AMD            Austin, TX

[-- Attachment #2: nop.patch --]
[-- Type: application/octet-stream, Size: 15576 bytes --]

--- binutils-head/src/gas/testsuite/gas/i386/nops-3-i686.d	1969-12-31 18:00:00.000000000 -0600
+++ binutils-nop/src/gas/testsuite/gas/i386/nops-3-i686.d	2007-06-25 17:29:23.590739000 -0500
@@ -0,0 +1,20 @@
+#as: -mtune=i686
+#source: nops-3.s
+#objdump: -drw
+#name: i386 -mtune=i686 nops 3
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop>:
+[	 ]*0:[	 ]+90[	 ]+nop[ 	]*
+[	 ]*1:[	 ]+90[	 ]+nop[ 	]*
+[	 ]*2:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*9:[	 ]+0f 1f 84 00 00 00 00 00[	 ]+nop.+
+[	 ]*11:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*18:[	 ]+0f 1f 84 00 00 00 00 00[	 ]+nop.+
+[	 ]*20:[	 ]+89 c3[	 ]+mov[ 	]+%eax,%ebx[ 	]*
+[	 ]*22:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*29:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+#pass

--- binutils-head/src/gas/testsuite/gas/i386/nops-4-i686.d	1969-12-31 18:00:00.000000000 -0600
+++ binutils-nop/src/gas/testsuite/gas/i386/nops-4-i686.d	2007-07-03 18:06:34.047676000 -0500
@@ -0,0 +1,234 @@
+#as: -mtune=i686
+#source: nops-4.s
+#objdump: -drw
+#name: i386 -mtune=i686 nops 4
+
+.*:[ 	]+file format.*
+
+Disassembly of section .text:
+
+0+0 <nop31>:
+[ 	]+0:[ 	]+90[ 	]+nop.*
+[ 	]+1:[ 	]+90[ 	]+nop.*
+[ 	]+2:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+9:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+[ 	]+11:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+18:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+20 <nop28>:
+[ 	]+20:[ 	]+90[ 	]+nop.*
+[ 	]+21:[ 	]+90[ 	]+nop.*
+[ 	]+22:[ 	]+90[ 	]+nop.*
+[ 	]+23:[ 	]+90[ 	]+nop.*
+[ 	]+24:[ 	]+66 0f 1f 44 00 00[ 	]+nop.*
+[ 	]+2a:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+31:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+38:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+40 <nop25>:
+[ 	]+40:[ 	]+90[ 	]+nop.*
+[ 	]+41:[ 	]+90[ 	]+nop.*
+[ 	]+42:[ 	]+90[ 	]+nop.*
+[ 	]+43:[ 	]+90[ 	]+nop.*
+[ 	]+44:[ 	]+90[ 	]+nop.*
+[ 	]+45:[ 	]+90[ 	]+nop.*
+[ 	]+46:[ 	]+90[ 	]+nop.*
+[ 	]+47:[ 	]+66 2e 0f 1f 84 00 00 00 00 00[ 	]+nop.*
+[ 	]+51:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+58:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+60 <nop22>:
+[ 	]+60:[ 	]+90[ 	]+nop.*
+[ 	]+61:[ 	]+90[ 	]+nop.*
+[ 	]+62:[ 	]+90[ 	]+nop.*
+[ 	]+63:[ 	]+90[ 	]+nop.*
+[ 	]+64:[ 	]+90[ 	]+nop.*
+[ 	]+65:[ 	]+90[ 	]+nop.*
+[ 	]+66:[ 	]+90[ 	]+nop.*
+[ 	]+67:[ 	]+90[ 	]+nop.*
+[ 	]+68:[ 	]+90[ 	]+nop.*
+[ 	]+69:[ 	]+90[ 	]+nop.*
+[ 	]+6a:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+71:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+78:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+80 <nop19>:
+[ 	]+80:[ 	]+90[ 	]+nop.*
+[ 	]+81:[ 	]+90[ 	]+nop.*
+[ 	]+82:[ 	]+90[ 	]+nop.*
+[ 	]+83:[ 	]+90[ 	]+nop.*
+[ 	]+84:[ 	]+90[ 	]+nop.*
+[ 	]+85:[ 	]+90[ 	]+nop.*
+[ 	]+86:[ 	]+90[ 	]+nop.*
+[ 	]+87:[ 	]+90[ 	]+nop.*
+[ 	]+88:[ 	]+90[ 	]+nop.*
+[ 	]+89:[ 	]+90[ 	]+nop.*
+[ 	]+8a:[ 	]+90[ 	]+nop.*
+[ 	]+8b:[ 	]+90[ 	]+nop.*
+[ 	]+8c:[ 	]+90[ 	]+nop.*
+[ 	]+8d:[ 	]+0f 1f 40 00[ 	]+nop.*
+[ 	]+91:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+98:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+a0 <nop16>:
+[ 	]+a0:[ 	]+90[ 	]+nop.*
+[ 	]+a1:[ 	]+90[ 	]+nop.*
+[ 	]+a2:[ 	]+90[ 	]+nop.*
+[ 	]+a3:[ 	]+90[ 	]+nop.*
+[ 	]+a4:[ 	]+90[ 	]+nop.*
+[ 	]+a5:[ 	]+90[ 	]+nop.*
+[ 	]+a6:[ 	]+90[ 	]+nop.*
+[ 	]+a7:[ 	]+90[ 	]+nop.*
+[ 	]+a8:[ 	]+90[ 	]+nop.*
+[ 	]+a9:[ 	]+90[ 	]+nop.*
+[ 	]+aa:[ 	]+90[ 	]+nop.*
+[ 	]+ab:[ 	]+90[ 	]+nop.*
+[ 	]+ac:[ 	]+90[ 	]+nop.*
+[ 	]+ad:[ 	]+90[ 	]+nop.*
+[ 	]+ae:[ 	]+90[ 	]+nop.*
+[ 	]+af:[ 	]+90[ 	]+nop.*
+[ 	]+b0:[ 	]+90[ 	]+nop.*
+[ 	]+b1:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+[ 	]+b8:[ 	]+0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+c0 <nop13>:
+[ 	]+c0:[ 	]+90[ 	]+nop.*
+[ 	]+c1:[ 	]+90[ 	]+nop.*
+[ 	]+c2:[ 	]+90[ 	]+nop.*
+[ 	]+c3:[ 	]+90[ 	]+nop.*
+[ 	]+c4:[ 	]+90[ 	]+nop.*
+[ 	]+c5:[ 	]+90[ 	]+nop.*
+[ 	]+c6:[ 	]+90[ 	]+nop.*
+[ 	]+c7:[ 	]+90[ 	]+nop.*
+[ 	]+c8:[ 	]+90[ 	]+nop.*
+[ 	]+c9:[ 	]+90[ 	]+nop.*
+[ 	]+ca:[ 	]+90[ 	]+nop.*
+[ 	]+cb:[ 	]+90[ 	]+nop.*
+[ 	]+cc:[ 	]+90[ 	]+nop.*
+[ 	]+cd:[ 	]+90[ 	]+nop.*
+[ 	]+ce:[ 	]+90[ 	]+nop.*
+[ 	]+cf:[ 	]+90[ 	]+nop.*
+[ 	]+d0:[ 	]+90[ 	]+nop.*
+[ 	]+d1:[ 	]+90[ 	]+nop.*
+[ 	]+d2:[ 	]+90[ 	]+nop.*
+[ 	]+d3:[ 	]+66 0f 1f 44 00 00[ 	]+nop.*
+[ 	]+d9:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+
+0+e0 <nop10>:
+[ 	]+e0:[ 	]+90[ 	]+nop.*
+[ 	]+e1:[ 	]+90[ 	]+nop.*
+[ 	]+e2:[ 	]+90[ 	]+nop.*
+[ 	]+e3:[ 	]+90[ 	]+nop.*
+[ 	]+e4:[ 	]+90[ 	]+nop.*
+[ 	]+e5:[ 	]+90[ 	]+nop.*
+[ 	]+e6:[ 	]+90[ 	]+nop.*
+[ 	]+e7:[ 	]+90[ 	]+nop.*
+[ 	]+e8:[ 	]+90[ 	]+nop.*
+[ 	]+e9:[ 	]+90[ 	]+nop.*
+[ 	]+ea:[ 	]+90[ 	]+nop.*
+[ 	]+eb:[ 	]+90[ 	]+nop.*
+[ 	]+ec:[ 	]+90[ 	]+nop.*
+[ 	]+ed:[ 	]+90[ 	]+nop.*
+[ 	]+ee:[ 	]+90[ 	]+nop.*
+[ 	]+ef:[ 	]+90[ 	]+nop.*
+[ 	]+f0:[ 	]+90[ 	]+nop.*
+[ 	]+f1:[ 	]+90[ 	]+nop.*
+[ 	]+f2:[ 	]+90[ 	]+nop.*
+[ 	]+f3:[ 	]+90[ 	]+nop.*
+[ 	]+f4:[ 	]+90[ 	]+nop.*
+[ 	]+f5:[ 	]+90[ 	]+nop.*
+[ 	]+f6:[ 	]+66 2e 0f 1f 84 00 00 00 00 00[ 	]+nop.*
+
+0+100 <nop7>:
+[ 	]+100:[ 	]+90[ 	]+nop.*
+[ 	]+101:[ 	]+90[ 	]+nop.*
+[ 	]+102:[ 	]+90[ 	]+nop.*
+[ 	]+103:[ 	]+90[ 	]+nop.*
+[ 	]+104:[ 	]+90[ 	]+nop.*
+[ 	]+105:[ 	]+90[ 	]+nop.*
+[ 	]+106:[ 	]+90[ 	]+nop.*
+[ 	]+107:[ 	]+90[ 	]+nop.*
+[ 	]+108:[ 	]+90[ 	]+nop.*
+[ 	]+109:[ 	]+90[ 	]+nop.*
+[ 	]+10a:[ 	]+90[ 	]+nop.*
+[ 	]+10b:[ 	]+90[ 	]+nop.*
+[ 	]+10c:[ 	]+90[ 	]+nop.*
+[ 	]+10d:[ 	]+90[ 	]+nop.*
+[ 	]+10e:[ 	]+90[ 	]+nop.*
+[ 	]+10f:[ 	]+90[ 	]+nop.*
+[ 	]+110:[ 	]+90[ 	]+nop.*
+[ 	]+111:[ 	]+90[ 	]+nop.*
+[ 	]+112:[ 	]+90[ 	]+nop.*
+[ 	]+113:[ 	]+90[ 	]+nop.*
+[ 	]+114:[ 	]+90[ 	]+nop.*
+[ 	]+115:[ 	]+90[ 	]+nop.*
+[ 	]+116:[ 	]+90[ 	]+nop.*
+[ 	]+117:[ 	]+90[ 	]+nop.*
+[ 	]+118:[ 	]+90[ 	]+nop.*
+[ 	]+119:[ 	]+0f 1f 80 00 00 00 00[ 	]+nop.*
+
+0+120 <nop4>:
+[ 	]+120:[ 	]+90[ 	]+nop.*
+[ 	]+121:[ 	]+90[ 	]+nop.*
+[ 	]+122:[ 	]+90[ 	]+nop.*
+[ 	]+123:[ 	]+90[ 	]+nop.*
+[ 	]+124:[ 	]+90[ 	]+nop.*
+[ 	]+125:[ 	]+90[ 	]+nop.*
+[ 	]+126:[ 	]+90[ 	]+nop.*
+[ 	]+127:[ 	]+90[ 	]+nop.*
+[ 	]+128:[ 	]+90[ 	]+nop.*
+[ 	]+129:[ 	]+90[ 	]+nop.*
+[ 	]+12a:[ 	]+90[ 	]+nop.*
+[ 	]+12b:[ 	]+90[ 	]+nop.*
+[ 	]+12c:[ 	]+90[ 	]+nop.*
+[ 	]+12d:[ 	]+90[ 	]+nop.*
+[ 	]+12e:[ 	]+90[ 	]+nop.*
+[ 	]+12f:[ 	]+90[ 	]+nop.*
+[ 	]+130:[ 	]+90[ 	]+nop.*
+[ 	]+131:[ 	]+90[ 	]+nop.*
+[ 	]+132:[ 	]+90[ 	]+nop.*
+[ 	]+133:[ 	]+90[ 	]+nop.*
+[ 	]+134:[ 	]+90[ 	]+nop.*
+[ 	]+135:[ 	]+90[ 	]+nop.*
+[ 	]+136:[ 	]+90[ 	]+nop.*
+[ 	]+137:[ 	]+90[ 	]+nop.*
+[ 	]+138:[ 	]+90[ 	]+nop.*
+[ 	]+139:[ 	]+90[ 	]+nop.*
+[ 	]+13a:[ 	]+90[ 	]+nop.*
+[ 	]+13b:[ 	]+90[ 	]+nop.*
+[ 	]+13c:[ 	]+90[ 	]+nop.*
+[ 	]+13d:[ 	]+0f 1f 00[ 	]+nop.*
+
+0+140 <nop1>:
+[ 	]+140:[ 	]+90[ 	]+nop.*
+[ 	]+141:[ 	]+90[ 	]+nop.*
+[ 	]+142:[ 	]+90[ 	]+nop.*
+[ 	]+143:[ 	]+90[ 	]+nop.*
+[ 	]+144:[ 	]+90[ 	]+nop.*
+[ 	]+145:[ 	]+90[ 	]+nop.*
+[ 	]+146:[ 	]+90[ 	]+nop.*
+[ 	]+147:[ 	]+90[ 	]+nop.*
+[ 	]+148:[ 	]+90[ 	]+nop.*
+[ 	]+149:[ 	]+90[ 	]+nop.*
+[ 	]+14a:[ 	]+90[ 	]+nop.*
+[ 	]+14b:[ 	]+90[ 	]+nop.*
+[ 	]+14c:[ 	]+90[ 	]+nop.*
+[ 	]+14d:[ 	]+90[ 	]+nop.*
+[ 	]+14e:[ 	]+90[ 	]+nop.*
+[ 	]+14f:[ 	]+90[ 	]+nop.*
+[ 	]+150:[ 	]+90[ 	]+nop.*
+[ 	]+151:[ 	]+90[ 	]+nop.*
+[ 	]+152:[ 	]+90[ 	]+nop.*
+[ 	]+153:[ 	]+90[ 	]+nop.*
+[ 	]+154:[ 	]+90[ 	]+nop.*
+[ 	]+155:[ 	]+90[ 	]+nop.*
+[ 	]+156:[ 	]+90[ 	]+nop.*
+[ 	]+157:[ 	]+90[ 	]+nop.*
+[ 	]+158:[ 	]+90[ 	]+nop.*
+[ 	]+159:[ 	]+90[ 	]+nop.*
+[ 	]+15a:[ 	]+90[ 	]+nop.*
+[ 	]+15b:[ 	]+90[ 	]+nop.*
+[ 	]+15c:[ 	]+90[ 	]+nop.*
+[ 	]+15d:[ 	]+90[ 	]+nop.*
+[ 	]+15e:[ 	]+90[ 	]+nop.*
+[ 	]+15f:[ 	]+90[ 	]+nop.*

--- binutils-head/src/gas/testsuite/gas/i386/nops-4.s	1969-12-31 18:00:00.000000000 -0600
+++ binutils-nop/src/gas/testsuite/gas/i386/nops-4.s	2007-07-03 18:02:02.694276000 -0500
@@ -0,0 +1,212 @@
+	.text
+
+nop31:
+	nop
+	.p2align 5
+
+nop28:
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop25:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop22:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop19:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop16:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop13:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop10:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop7:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop4:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5
+
+nop1:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	.p2align 5

Index: gas/config/tc-i386.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.c,v
retrieving revision 1.266
diff -p -u -w -p -u -w -r1.266 tc-i386.c
--- gas/config/tc-i386.c	22 Jun 2007 14:15:51 -0000	1.266
+++ gas/config/tc-i386.c	3 Jul 2007 23:56:19 -0000
@@ -566,6 +566,22 @@ static struct hash_control *op_hash;
 /* Hash table for register lookup.  */
 static struct hash_control *reg_hash;
 \f
+/* Maximum number of predefined alignment filling patterns. */
+#define ALIGN_FILL_PATT_MAX 15
+
+/* Handle alignments greater than the predefined ones. */
+static inline void
+handle_align_code (fragS *fragP, const char *const *patt, int max, int count)
+{
+  while (count > max)
+    {
+      count -= max;
+      memcpy (fragP->fr_literal + fragP->fr_fix + count, patt [max - 1], max);
+    }
+
+  memcpy (fragP->fr_literal + fragP->fr_fix, patt [count - 1], count);
+}
+
 void
 i386_align_code (fragS *fragP, int count)
 {
@@ -611,6 +627,10 @@ i386_align_code (fragS *fragP, int count
   static const char f32_15[] =
     {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90,	/* jmp .+15; lotsa nops	*/
      0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90};
+  static const char *const f32_patt[] = {
+    f32_1, f32_2, f32_3, f32_4, f32_5, f32_6, f32_7, f32_8,
+    f32_9, f32_10, f32_11, f32_12, f32_13, f32_14, f32_15
+  };
   static const char f16_3[] =
     {0x8d,0x74,0x00};				/* lea 0(%esi),%esi	*/
   static const char f16_4[] =
@@ -627,10 +647,6 @@ i386_align_code (fragS *fragP, int count
   static const char f16_8[] =
     {0x8d,0xb4,0x00,0x00,			/* lea 0w(%si),%si	*/
      0x8d,0xbd,0x00,0x00};			/* lea 0w(%di),%di	*/
-  static const char *const f32_patt[] = {
-    f32_1, f32_2, f32_3, f32_4, f32_5, f32_6, f32_7, f32_8,
-    f32_9, f32_10, f32_11, f32_12, f32_13, f32_14, f32_15
-  };
   static const char *const f16_patt[] = {
     f32_1, f32_2, f16_3, f16_4, f16_5, f16_6, f16_7, f16_8,
     f32_15, f32_15, f32_15, f32_15, f32_15, f32_15, f32_15
@@ -704,6 +720,11 @@ i386_align_code (fragS *fragP, int count
      0x66,
      0x66,
      0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+  static const char *const alt_long_patt[] = {
+    f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8,
+    alt_9, alt_10, alt_long_11, alt_long_12, alt_long_13,
+    alt_long_14, alt_long_15
+  };
   /* nopl 0(%[re]ax,%[re]ax,1)
      nopw 0(%[re]ax,%[re]ax,1) */
   static const char alt_short_11[] =
@@ -734,13 +755,9 @@ i386_align_code (fragS *fragP, int count
     alt_9, alt_10, alt_short_11, alt_short_12, alt_short_13,
     alt_short_14, alt_short_15
   };
-  static const char *const alt_long_patt[] = {
-    f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8,
-    alt_9, alt_10, alt_long_11, alt_long_12, alt_long_13,
-    alt_long_14, alt_long_15
-  };
 
-  if (count <= 0 || count > 15)
+  /* Only align for at least a positive non-zero boundary. */
+  if (count <= 0 || count > MAX_MEM_FOR_RS_ALIGN_CODE)
     return;
 
   /* We need to decide which NOP sequence to use for 32bit and
@@ -748,12 +765,11 @@ i386_align_code (fragS *fragP, int count
 
      1. For PROCESSOR_I486, PROCESSOR_PENTIUM and PROCESSOR_GENERIC32,
      f32_patt will be used.
-     2. For PROCESSOR_K8 and PROCESSOR_AMDFAM10 in 64bit, NOPs with
-     0x66 prefix will be used.
-     3. For PROCESSOR_CORE2, alt_long_patt will be used.
-     4. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA,
-     PROCESSOR_CORE, PROCESSOR_CORE2, PROCESSOR_K6, PROCESSOR_ATHLON
-     and PROCESSOR_GENERIC64, alt_short_patt will be used.
+     2. For PROCESSOR_CORE2, alt_long_patt will be used.
+     3. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA,
+     PROCESSOR_CORE, PROCESSOR_CORE2, PROCESSOR_K6, PROCESSOR_ATHLON,
+     PROCESSOR_K8, PROCESSOR_AMDFAM10 and PROCESSOR_GENERIC64,
+     alt_short_patt will be used.
 
      When -mtune= isn't used, alt_short_patt will be used if
      cpu_arch_isa_flags has Cpu686. Otherwise, f32_patt will be used.
@@ -769,29 +785,6 @@ i386_align_code (fragS *fragP, int count
 	/* Adjust jump offset.  */
 	fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
     }
-  else if (flag_code == CODE_64BIT && cpu_arch_tune == PROCESSOR_K8)
-    {
-      int i;
-      int nnops = (count + 3) / 4;
-      int len = count / nnops;
-      int remains = count - nnops * len;
-      int pos = 0;
-
-      /* The recommended way to pad 64bit code is to use NOPs preceded
-	 by maximally four 0x66 prefixes.  Balance the size of nops.  */
-      for (i = 0; i < remains; i++)
-	{
-	  memset (fragP->fr_literal + fragP->fr_fix + pos, 0x66, len);
-	  fragP->fr_literal[fragP->fr_fix + pos + len] = 0x90;
-	  pos += len + 1;
-	}
-      for (; i < nnops; i++)
-	{
-	  memset (fragP->fr_literal + fragP->fr_fix + pos, 0x66, len - 1);
-	  fragP->fr_literal[fragP->fr_fix + pos + len - 1] = 0x90;
-	  pos += len;
-	}
-    }
   else
     {
       const char *const *patt = NULL;
@@ -870,8 +863,7 @@ i386_align_code (fragS *fragP, int count
 	    }
 	}
 
-      memcpy (fragP->fr_literal + fragP->fr_fix,
-	      patt[count - 1], count);
+      handle_align_code (fragP, patt, ALIGN_FILL_PATT_MAX, count);
     }
   fragP->fr_var = count;
 }
Index: gas/config/tc-i386.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.h,v
retrieving revision 1.87
diff -p -u -w -p -u -w -r1.87 tc-i386.h
--- gas/config/tc-i386.h	21 Mar 2007 15:37:21 -0000	1.87
+++ gas/config/tc-i386.h	3 Jul 2007 23:56:19 -0000
@@ -261,7 +261,7 @@ if ((n)									\
     goto around;							\
   }
 
-#define MAX_MEM_FOR_RS_ALIGN_CODE  15
+#define MAX_MEM_FOR_RS_ALIGN_CODE  31
 
 extern void i386_align_code (fragS *, int);
 
Index: gas/testsuite/gas/i386/i386.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/i386.exp,v
retrieving revision 1.70
diff -p -u -w -p -u -w -r1.70 i386.exp
--- gas/testsuite/gas/i386/i386.exp	23 Jun 2007 14:55:18 -0000	1.70
+++ gas/testsuite/gas/i386/i386.exp	3 Jul 2007 23:56:20 -0000
@@ -70,7 +70,8 @@ if [expr ([istarget "i*86-*-*"] ||  [ist
     run_dump_test "nops-2"
     run_dump_test "nops-2-i386"
     run_dump_test "nops-2-merom"
-    run_dump_test "nops-3"
+    run_dump_test "nops-3-i686"
+    run_dump_test "nops-4-i686"
     run_dump_test "addr16"
     run_dump_test "addr32"
     run_dump_test "sse4_1"
@@ -164,7 +165,6 @@ if [expr ([istarget "i*86-*-*"] || [ista
     if ![istarget "x86_64-*-mingw*"] then {
 	run_dump_test "x86-64-nops-1"
     }
-    run_dump_test "x86-64-nops-1-k8"
     run_dump_test "x86-64-nops-1-nocona"
     run_dump_test "x86-64-nops-1-merom"
     run_dump_test "x86-64-sse4_1"

^ permalink raw reply	[flat|nested] 15+ messages in thread
* Enable 32-bit Alignment
@ 2007-06-29 20:57 Menezes, Evandro
  2007-06-29 21:35 ` H. J. Lu
  2007-06-30  3:47 ` Alan Modra
  0 siblings, 2 replies; 15+ messages in thread
From: Menezes, Evandro @ 2007-06-29 20:57 UTC (permalink / raw)
  To: binutils; +Cc: Michael Meissner, Christophe Harle

[-- Attachment #1: Type: text/plain, Size: 937 bytes --]

If it's not too late in the release cycle, I'd appreciate if this patch
enabling optimal code alignment up to 32-byte boundaries, used by GCC
when tuning for AMD Barcelona, were applied.  It also does away with the
special NOP sequences for AMD Opteron in 64-bit code.

2007-06-29	Evandro Menezes <evandro.menezes@amd.com>

	* config/tc-i386.c (handle_align_code, i386_align_code): new
function 
	  to help alignment > 15 bytes, enable alignment up to 31 bytes,

	  always use variable-length NOP for K8 too.
	* config/tc-i386.h (MAX_MEM_FOR_RS_ALIGN_CODE): change limit to
31 bytes.
	* testsuite/gas/i386/i386.exp: replace NOP test-case and 
	  remove K8-specific NOP test-case.
	* testsuite/gas/i386/nops-3-i686.d: new NOP test-case.
	* testsuite/gas/i386/x86-64-nops-1-k8.d: removed.

Thanks,

-- 
_______________________________________________________
Evandro Menezes               AMD            Austin, TX

[-- Attachment #2: nop.patch --]
[-- Type: application/octet-stream, Size: 10305 bytes --]

Index: gas/config/tc-i386.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.c,v
retrieving revision 1.266
diff -p -u -w -d -p -u -w -r1.266 tc-i386.c
--- gas/config/tc-i386.c	22 Jun 2007 14:15:51 -0000	1.266
+++ gas/config/tc-i386.c	26 Jun 2007 18:56:56 -0000
@@ -566,6 +566,22 @@ static struct hash_control *op_hash;
 /* Hash table for register lookup.  */
 static struct hash_control *reg_hash;
 \f
+/* Maximum number of predefined alignment filling patterns. */
+#define ALIGN_FILL_PATT_MAX 15
+
+/* Handle alignments greater than the predefined ones. */
+static inline void
+handle_align_code (fragS *fragP, const char *const *patt, int max, int count)
+{
+  while (count > max)
+    {
+      count -= max;
+      memcpy (fragP->fr_literal + fragP->fr_fix + count, patt [max - 1], max);
+    }
+
+  memcpy (fragP->fr_literal + fragP->fr_fix, patt [count - 1], count);
+}
+
 void
 i386_align_code (fragS *fragP, int count)
 {
@@ -740,7 +756,8 @@ i386_align_code (fragS *fragP, int count
     alt_long_14, alt_long_15
   };
 
-  if (count <= 0 || count > 15)
+  /* Only align for at least a positive non-zero boundary. */
+  if (count <= 0 || count > MAX_MEM_FOR_RS_ALIGN_CODE)
     return;
 
   /* We need to decide which NOP sequence to use for 32bit and
@@ -763,35 +780,12 @@ i386_align_code (fragS *fragP, int count
 
   if (flag_code == CODE_16BIT)
     {
-      memcpy (fragP->fr_literal + fragP->fr_fix,
-	      f16_patt[count - 1], count);
+      handle_align_code (fragP, f16_patt, ALIGN_FILL_PATT_MAX, count);
+
       if (count > 8)
 	/* Adjust jump offset.  */
 	fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
     }
-  else if (flag_code == CODE_64BIT && cpu_arch_tune == PROCESSOR_K8)
-    {
-      int i;
-      int nnops = (count + 3) / 4;
-      int len = count / nnops;
-      int remains = count - nnops * len;
-      int pos = 0;
-
-      /* The recommended way to pad 64bit code is to use NOPs preceded
-	 by maximally four 0x66 prefixes.  Balance the size of nops.  */
-      for (i = 0; i < remains; i++)
-	{
-	  memset (fragP->fr_literal + fragP->fr_fix + pos, 0x66, len);
-	  fragP->fr_literal[fragP->fr_fix + pos + len] = 0x90;
-	  pos += len + 1;
-	}
-      for (; i < nnops; i++)
-	{
-	  memset (fragP->fr_literal + fragP->fr_fix + pos, 0x66, len - 1);
-	  fragP->fr_literal[fragP->fr_fix + pos + len - 1] = 0x90;
-	  pos += len;
-	}
-    }
   else
     {
       const char *const *patt = NULL;
@@ -870,8 +864,7 @@ i386_align_code (fragS *fragP, int count
 	    }
 	}
 
-      memcpy (fragP->fr_literal + fragP->fr_fix,
-	      patt[count - 1], count);
+      handle_align_code (fragP, patt, ALIGN_FILL_PATT_MAX, count);
     }
   fragP->fr_var = count;
 }
Index: gas/config/tc-i386.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.h,v
retrieving revision 1.87
diff -p -u -w -d -p -u -w -r1.87 tc-i386.h
--- gas/config/tc-i386.h	21 Mar 2007 15:37:21 -0000	1.87
+++ gas/config/tc-i386.h	26 Jun 2007 18:56:56 -0000
@@ -261,7 +261,7 @@ if ((n)									\
     goto around;							\
   }
 
-#define MAX_MEM_FOR_RS_ALIGN_CODE  15
+#define MAX_MEM_FOR_RS_ALIGN_CODE  31
 
 extern void i386_align_code (fragS *, int);
 
Index: gas/testsuite/gas/i386/i386.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/i386.exp,v
retrieving revision 1.70
diff -p -u -w -d -p -u -w -r1.70 i386.exp
--- gas/testsuite/gas/i386/i386.exp	23 Jun 2007 14:55:18 -0000	1.70
+++ gas/testsuite/gas/i386/i386.exp	26 Jun 2007 18:56:57 -0000
@@ -70,7 +70,7 @@ if [expr ([istarget "i*86-*-*"] ||  [ist
     run_dump_test "nops-2"
     run_dump_test "nops-2-i386"
     run_dump_test "nops-2-merom"
-    run_dump_test "nops-3"
+    run_dump_test "nops-3-i686"
     run_dump_test "addr16"
     run_dump_test "addr32"
     run_dump_test "sse4_1"
@@ -164,7 +164,6 @@ if [expr ([istarget "i*86-*-*"] || [ista
     if ![istarget "x86_64-*-mingw*"] then {
 	run_dump_test "x86-64-nops-1"
     }
-    run_dump_test "x86-64-nops-1-k8"
     run_dump_test "x86-64-nops-1-nocona"
     run_dump_test "x86-64-nops-1-merom"
     run_dump_test "x86-64-sse4_1"
 
--- binutils-head/src/gas/testsuite/gas/i386/nops-3-i686.d	1969-12-31 18:00:00.000000000 -0600
+++ binutils-nop/src/gas/testsuite/gas/i386/nops-3-i686.d	2007-06-25 17:29:23.590739000 -0500
@@ -1,20 +0,0 @@
+#as: -mtune=i686
+#source: nops-3.s
+#objdump: -drw
+#name: i386 -mtune=i686 nops 3
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop>:
+[	 ]*0:[	 ]+90[	 ]+nop[ 	]*
+[	 ]*1:[	 ]+90[	 ]+nop[ 	]*
+[	 ]*2:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*9:[	 ]+0f 1f 84 00 00 00 00 00[	 ]+nop.+
+[	 ]*11:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*18:[	 ]+0f 1f 84 00 00 00 00 00[	 ]+nop.+
+[	 ]*20:[	 ]+89 c3[	 ]+mov[ 	]+%eax,%ebx[ 	]*
+[	 ]*22:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+[	 ]*29:[	 ]+0f 1f 80 00 00 00 00[	 ]+nop.+
+#pass
 
--- binutils-head/src/gas/testsuite/gas/i386/x86-64-nops-1-k8.d	2006-06-23 16:47:36.000000000 -0500
+++ binutils-nop/src/gas/testsuite/gas/i386/x86-64-nops-1-k8.d	1969-12-31 18:00:00.000000000 -0600
@@ -0,0 +1,177 @@
-#as: -mtune=k8
-#source: x86-64-nops-1.s
-#objdump: -drw
-#name: x86-64 -mtune=k8 nops 1
-
-.*: +file format .*
-
-Disassembly of section .text:
-
-0+ <nop15>:
-[	 ]*0:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*1:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*5:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*9:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+10 <nop14>:
-[	 ]*10:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*11:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*12:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*16:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*1a:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*1d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+20 <nop13>:
-[	 ]*20:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*21:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*22:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*23:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*27:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*2a:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*2d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+30 <nop12>:
-[	 ]*30:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*31:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*32:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*33:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*34:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*38:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*3c:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+40 <nop11>:
-[	 ]*40:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*41:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*42:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*43:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*44:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*45:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*49:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*4d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+50 <nop10>:
-[	 ]*50:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*51:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*52:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*53:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*54:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*55:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*56:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*5a:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*5d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+60 <nop9>:
-[	 ]*60:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*61:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*62:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*63:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*64:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*65:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*66:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*67:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*6a:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*6d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+70 <nop8>:
-[	 ]*70:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*71:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*72:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*73:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*74:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*75:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*76:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*77:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*78:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*7c:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+80 <nop7>:
-[	 ]*80:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*81:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*82:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*83:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*84:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*85:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*86:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*87:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*88:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*89:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*8d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+90 <nop6>:
-[	 ]*90:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*91:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*92:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*93:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*94:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*95:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*96:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*97:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*98:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*99:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*9a:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*9d:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+a0 <nop5>:
-[	 ]*a0:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a1:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a2:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a3:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a4:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a5:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a6:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a7:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a8:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*a9:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*aa:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*ab:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-[	 ]*ae:[	 ]+66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+b0 <nop4>:
-[	 ]*b0:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b1:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b2:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b3:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b4:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b5:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b6:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b7:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b8:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*b9:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*ba:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*bb:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*bc:[	 ]+66 66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+c0 <nop3>:
-[	 ]*c0:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c1:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c2:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c3:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c4:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c5:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c6:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c7:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c8:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*c9:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*ca:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*cb:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*cc:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*cd:[	 ]+66 66 90[	 ]+xchg[ 	]+%ax,%ax
-
-0+d0 <nop2>:
-[	 ]*d0:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d1:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d2:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d3:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d4:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d5:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d6:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d7:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d8:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*d9:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*da:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*db:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*dc:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*dd:[	 ]+90[	 ]+nop[ 	]*
-[	 ]*de:[	 ]+66 90[	 ]+xchg[ 	]+%ax,%ax
-#pass

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2007-07-05 17:00 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-07-04  1:02 Enable 32-bit Alignment Menezes, Evandro
2007-07-04  1:03 ` H.J. Lu
2007-07-04 16:25   ` Menezes, Evandro
2007-07-04 17:29     ` H.J. Lu
2007-07-04 22:16       ` Menezes, Evandro
2007-07-05  0:48         ` H.J. Lu
2007-07-05 17:14           ` H.J. Lu
  -- strict thread matches above, loose matches on Subject: below --
2007-06-29 20:57 Menezes, Evandro
2007-06-29 21:35 ` H. J. Lu
2007-06-30  3:47 ` Alan Modra
2007-07-02 21:57   ` Menezes, Evandro
2007-07-02 23:11     ` Alan Modra
2007-07-04  0:13   ` Menezes, Evandro
2007-07-04  7:20     ` Alan Modra
2007-07-04 16:06       ` Menezes, Evandro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).