+2011-01-07 Quentin Neill <quentin.neill@amd.com>
+
+ * config/tc-i386.c (cpu_arch): Add CPU_BMI_FLAGS.
+
+ * doc/c-i386.texi (i386-BMI): New section.
+
2011-01-06 Paul Koning <ni1d@arrl.net>
* config/tc-pdp11.c (parse_op_no_deferred): Allow PC-relative
CPU_SSE4A_FLAGS, 0, 0 },
{ STRING_COMMA_LEN (".abm"), PROCESSOR_UNKNOWN,
CPU_ABM_FLAGS, 0, 0 },
+ { STRING_COMMA_LEN (".bmi"), PROCESSOR_UNKNOWN,
+ CPU_BMI_FLAGS, 0, 0 },
};
#ifdef I386COFF
* i386-Float:: Floating Point
* i386-SIMD:: Intel's MMX and AMD's 3DNow! SIMD Operations
* i386-LWP:: AMD's Lightweight Profiling Instructions
+* i386-BMI:: Bit Manipulation Instruction
* i386-16bit:: Writing 16-bit Code
* i386-Arch:: Specifying an x86 CPU architecture
* i386-Bugs:: AT&T Syntax bugs
@cite{AMD Lightweight Profiling Specification} available at
@uref{http://developer.amd.com/cpu/LWP,Lightweight Profiling Specification}.
+@node i386-BMI
+@section Bit Manipulation Instructions
+
+@cindex BMI, i386
+@cindex BMI, x86-64
+
+@code{@value{AS}} supports the Bit Manipulation (BMI) instruction set.
+
+BMI instructions provide several instructions implementing individual
+bit manipulation operations such as isolation, masking, setting, or
+resetting.
+
+@c Need to add a specification citation here when available.
+
+
@node i386-16bit
@section Writing 16-bit Code
+2011-01-07 Quentin Neill <quentin.neill@amd.com>
+
+ * gas/i386/arch-10.s: Add a BMI instruction.
+ * gas/i386/x86-64-arch-2.s: Likewise.
+ * gas/i386/arch-10.d: Add bmi flag and BMI instruction pattern.
+ * gas/i386/x86-64-arch-2.d: Likewise.
+ * gas/i386/arch-10-1.l: Add BMI instruction pattern.
+ * gas/i386/arch-10-2.l: Likewise.
+ * gas/i386/arch-10-3.l: Likewise.
+ * gas/i386/arch-10-4.l: Likewise.
+
2011-01-06 Paul Koning <ni1d@arrl.net>
* gas/pdp11/pdp11.exp: Add run of absreloc.
.*:58: Error: .*
.*:60: Error: .*
.*:62: Error: .*
+.*:64: Error: .*
GAS LISTING .*
[ ]*60[ ]+xstorerng
[ ]*61[ ]+\# nop
[ ]*62[ ]+nopl \(%eax\)
+[ ]*63[ ]+\# BMI
+[ ]*64[ ]+blsr %ecx,%ebx
.*:58: Error: .*
.*:60: Error: .*
.*:62: Error: .*
+.*:64: Error: .*
GAS LISTING .*
[ ]*60[ ]+xstorerng
[ ]*61[ ]+\# nop
[ ]*62[ ]+nopl \(%eax\)
+[ ]*63[ ]+\# BMI
+[ ]*64[ ]+blsr %ecx,%ebx
.*:58: Error: .*
.*:60: Error: .*
.*:62: Error: .*
+.*:64: Error: .*
GAS LISTING .*
[ ]*60[ ]+xstorerng
[ ]*61[ ]+\# nop
[ ]*62[ ]+nopl \(%eax\)
+[ ]*63[ ]+\# BMI
+[ ]*64[ ]+blsr %ecx,%ebx
.*:58: Error: .*
.*:60: Error: .*
.*:62: Error: .*
+.*:64: Error: .*
GAS LISTING .*
[ ]*60[ ]+xstorerng
[ ]*61[ ]+\# nop
[ ]*62[ ]+nopl \(%eax\)
+[ ]*63[ ]+\# BMI
+[ ]*64[ ]+blsr %ecx,%ebx
-#as: -march=i686+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
+#as: -march=i686+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+nop+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi
#objdump: -dw
#name: i386 arch 10
[ ]*[a-f0-9]+: f3 0f bd d9 lzcnt %ecx,%ebx
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%eax\)
+[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
#pass
xstorerng
# nop
nopl (%eax)
+# BMI
+blsr %ecx,%ebx
-#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
+#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock+bmi
#objdump: -dw
#name: x86-64 arch 2
[ ]*[a-f0-9]+: 0f 01 da vmload
[ ]*[a-f0-9]+: f3 0f bd d9 lzcnt %ecx,%ebx
[ ]*[a-f0-9]+: 0f a7 c0 xstore-rng
+[ ]*[a-f0-9]+: c4 e2 60 f3 c9 blsr %ecx,%ebx
#pass
lzcnt %ecx,%ebx
# PadLock
xstorerng
+# BMI
+blsr %ecx,%ebx