[llvm] 2c4e38f - [X86] Emit REX prefix immediately before the opcode

Amir Ayupov via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 08:30:37 PDT 2022


Author: Amir Ayupov
Date: 2022-03-16T08:30:31-07:00
New Revision: 2c4e38fa6f33d371f9169715f97046343095bba0

URL: https://github.com/llvm/llvm-project/commit/2c4e38fa6f33d371f9169715f97046343095bba0
DIFF: https://github.com/llvm/llvm-project/commit/2c4e38fa6f33d371f9169715f97046343095bba0.diff

LOG: [X86] Emit REX prefix immediately before the opcode

Fix prefix emission order to emit REX immediately before the opcode (SDM vol2,
2.1, Figure 2-1). According to SDM vol2 2.2.1, "Other placements are ignored".

This fix has a side effect of outputting segment override prefix in a different
order than previously (benign).

Follow-up to https://reviews.llvm.org/D120592

Reviewed By: skan, craig.topper

Differential Revision: https://reviews.llvm.org/D120871

Added: 
    

Modified: 
    llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
    llvm/test/MC/Disassembler/X86/moffs.txt
    llvm/test/MC/X86/I186-32.s
    llvm/test/MC/X86/I186-64.s
    llvm/test/MC/X86/I386-32.s
    llvm/test/MC/X86/I386-64.s
    llvm/test/MC/X86/I86-32.s
    llvm/test/MC/X86/I86-64.s
    llvm/test/MC/X86/code16gcc.s
    llvm/test/MC/X86/index-operations.s
    llvm/test/MC/X86/x86-16.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
index c03bbb61907f1..527df81562bd9 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
@@ -617,14 +617,6 @@ bool X86MCCodeEmitter::emitPrefixImpl(unsigned &CurOp, const MCInst &MI,
       Flags & X86::IP_HAS_AD_SIZE)
     emitByte(0x67, OS);
 
-  // Encoding type for this instruction.
-  uint64_t Encoding = TSFlags & X86II::EncodingMask;
-  bool HasREX = false;
-  if (Encoding)
-    emitVEXOpcodePrefix(MemoryOperand, MI, OS);
-  else
-    HasREX = emitOpcodePrefix(MemoryOperand, MI, STI, OS);
-
   uint64_t Form = TSFlags & X86II::FormMask;
   switch (Form) {
   default:
@@ -654,6 +646,15 @@ bool X86MCCodeEmitter::emitPrefixImpl(unsigned &CurOp, const MCInst &MI,
   }
   }
 
+  // REX prefix is optional, but if used must be immediately before the opcode
+  // Encoding type for this instruction.
+  uint64_t Encoding = TSFlags & X86II::EncodingMask;
+  bool HasREX = false;
+  if (Encoding)
+    emitVEXOpcodePrefix(MemoryOperand, MI, OS);
+  else
+    HasREX = emitOpcodePrefix(MemoryOperand, MI, STI, OS);
+
   return HasREX;
 }
 

diff  --git a/llvm/test/MC/Disassembler/X86/moffs.txt b/llvm/test/MC/Disassembler/X86/moffs.txt
index ac18859549447..cbabd450bacda 100644
--- a/llvm/test/MC/Disassembler/X86/moffs.txt
+++ b/llvm/test/MC/Disassembler/X86/moffs.txt
@@ -37,9 +37,9 @@
 # 64: movw 0x5a5a5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a]
 0x67 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a
 
-# 16: movl %es:0x5a5a5a5a, %eax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a]
-# 32: movw %es:0x5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a]
-# 64: movw %es:0x5a5a5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a]
+# 16: movl %es:0x5a5a5a5a, %eax # encoding: [0x67,0x26,0x66,0xa1,0x5a,0x5a,0x5a,0x5a]
+# 32: movw %es:0x5a5a, %ax # encoding: [0x67,0x26,0x66,0xa1,0x5a,0x5a]
+# 64: movw %es:0x5a5a5a5a, %ax # encoding: [0x67,0x26,0x66,0xa1,0x5a,0x5a,0x5a,0x5a]
 0x67 0x26 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a # encoding: [0xa0,0x5a,0x5a]
 
 
@@ -79,8 +79,8 @@
 # 64: movw %ax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a]
 0x67 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a
 
-# 16: movl %eax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a]
-# 32: movw %ax, %es:0x5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a]
-# 64: movw %ax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a]
+# 16: movl %eax, %es:0x5a5a5a5a # encoding: [0x67,0x26,0x66,0xa3,0x5a,0x5a,0x5a,0x5a]
+# 32: movw %ax, %es:0x5a5a # encoding: [0x67,0x26,0x66,0xa3,0x5a,0x5a]
+# 64: movw %ax, %es:0x5a5a5a5a # encoding: [0x67,0x26,0x66,0xa3,0x5a,0x5a,0x5a,0x5a]
 0x67 0x26 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a
 

diff  --git a/llvm/test/MC/X86/I186-32.s b/llvm/test/MC/X86/I186-32.s
index adb7802cfcf18..afa28a142f38d 100644
--- a/llvm/test/MC/X86/I186-32.s
+++ b/llvm/test/MC/X86/I186-32.s
@@ -57,7 +57,7 @@ outsb %es:(%esi), %dx
 outsl %es:(%esi), %dx 
 
 // CHECK: outsw %es:(%esi), %dx 
-// CHECK: encoding: [0x66,0x26,0x6f]        
+// CHECK: encoding: [0x26,0x66,0x6f]        
 outsw %es:(%esi), %dx 
 
 // CHECK: popal 
@@ -269,7 +269,7 @@ repne outsb %es:(%esi), %dx
 repne outsl %es:(%esi), %dx 
 
 // CHECK: repne outsw %es:(%esi), %dx 
-// CHECK: encoding: [0xf2,0x66,0x26,0x6f]       
+// CHECK: encoding: [0xf2,0x26,0x66,0x6f]       
 repne outsw %es:(%esi), %dx 
 
 // CHECK: rep outsb %es:(%esi), %dx 
@@ -281,7 +281,7 @@ rep outsb %es:(%esi), %dx
 rep outsl %es:(%esi), %dx 
 
 // CHECK: rep outsw %es:(%esi), %dx 
-// CHECK: encoding: [0xf3,0x66,0x26,0x6f]       
+// CHECK: encoding: [0xf3,0x26,0x66,0x6f]       
 rep outsw %es:(%esi), %dx 
 
 // CHECK: rolb $0, -485498096(%edx,%eax,4) 

diff  --git a/llvm/test/MC/X86/I186-64.s b/llvm/test/MC/X86/I186-64.s
index 18aa124127a56..0ee6fee616b00 100644
--- a/llvm/test/MC/X86/I186-64.s
+++ b/llvm/test/MC/X86/I186-64.s
@@ -33,7 +33,7 @@ outsb %gs:(%rsi), %dx
 outsl %gs:(%rsi), %dx 
 
 // CHECK: outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0x66,0x65,0x6f]        
+// CHECK: encoding: [0x65,0x66,0x6f]        
 outsw %gs:(%rsi), %dx 
 
 // CHECK: pushq $0 
@@ -289,7 +289,7 @@ repne outsb %gs:(%rsi), %dx
 repne outsl %gs:(%rsi), %dx 
 
 // CHECK: repne outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0xf2,0x66,0x65,0x6f]       
+// CHECK: encoding: [0xf2,0x65,0x66,0x6f]       
 repne outsw %gs:(%rsi), %dx 
 
 // CHECK: rep outsb %gs:(%rsi), %dx 
@@ -301,7 +301,7 @@ rep outsb %gs:(%rsi), %dx
 rep outsl %gs:(%rsi), %dx 
 
 // CHECK: rep outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0xf3,0x66,0x65,0x6f]       
+// CHECK: encoding: [0xf3,0x65,0x66,0x6f]       
 rep outsw %gs:(%rsi), %dx 
 
 // CHECK: rolb $0, 485498096 

diff  --git a/llvm/test/MC/X86/I386-32.s b/llvm/test/MC/X86/I386-32.s
index d4c73d77b756d..0915300d3f7b2 100644
--- a/llvm/test/MC/X86/I386-32.s
+++ b/llvm/test/MC/X86/I386-32.s
@@ -153,7 +153,7 @@ cmpsb %es:(%edi), %es:(%esi)
 cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0x66,0x26,0xa7]        
+// CHECK: encoding: [0x26,0x66,0xa7]        
 cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: insb %dx, %es:(%edi) 
@@ -193,7 +193,7 @@ movsb %es:(%esi), %es:(%edi)
 movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0x66,0x26,0xa5]        
+// CHECK: encoding: [0x26,0x66,0xa5]        
 movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: outsb %es:(%esi), %dx 
@@ -205,7 +205,7 @@ outsb %es:(%esi), %dx
 outsl %es:(%esi), %dx 
 
 // CHECK: outsw %es:(%esi), %dx 
-// CHECK: encoding: [0x66,0x26,0x6f]        
+// CHECK: encoding: [0x26,0x66,0x6f]        
 outsw %es:(%esi), %dx 
 
 // CHECK: popal 
@@ -249,7 +249,7 @@ rep cmpsb %es:(%edi), %es:(%esi)
 rep cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: rep cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0xf3,0x66,0x26,0xa7]       
+// CHECK: encoding: [0xf3,0x26,0x66,0xa7]       
 rep cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: rep insb %dx, %es:(%edi) 
@@ -277,7 +277,7 @@ rep movsb %es:(%esi), %es:(%edi)
 rep movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: rep movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0xf3,0x66,0x26,0xa5]       
+// CHECK: encoding: [0xf3,0x26,0x66,0xa5]       
 rep movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: repne cmpsb %es:(%edi), %es:(%esi) 
@@ -289,7 +289,7 @@ repne cmpsb %es:(%edi), %es:(%esi)
 repne cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: repne cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0xf2,0x66,0x26,0xa7]       
+// CHECK: encoding: [0xf2,0x26,0x66,0xa7]       
 repne cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: repne insb %dx, %es:(%edi) 
@@ -317,7 +317,7 @@ repne movsb %es:(%esi), %es:(%edi)
 repne movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: repne movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0xf2,0x66,0x26,0xa5]       
+// CHECK: encoding: [0xf2,0x26,0x66,0xa5]       
 repne movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: repne outsb %es:(%esi), %dx 
@@ -329,7 +329,7 @@ repne outsb %es:(%esi), %dx
 repne outsl %es:(%esi), %dx 
 
 // CHECK: repne outsw %es:(%esi), %dx 
-// CHECK: encoding: [0xf2,0x66,0x26,0x6f]       
+// CHECK: encoding: [0xf2,0x26,0x66,0x6f]       
 repne outsw %es:(%esi), %dx 
 
 // CHECK: repne scasl %es:(%edi), %eax 
@@ -349,7 +349,7 @@ rep outsb %es:(%esi), %dx
 rep outsl %es:(%esi), %dx 
 
 // CHECK: rep outsw %es:(%esi), %dx 
-// CHECK: encoding: [0xf3,0x66,0x26,0x6f]       
+// CHECK: encoding: [0xf3,0x26,0x66,0x6f]       
 rep outsw %es:(%esi), %dx 
 
 // CHECK: rep scasl %es:(%edi), %eax 

diff  --git a/llvm/test/MC/X86/I386-64.s b/llvm/test/MC/X86/I386-64.s
index b626534f6ebd6..b4f2c79d499fe 100644
--- a/llvm/test/MC/X86/I386-64.s
+++ b/llvm/test/MC/X86/I386-64.s
@@ -226,11 +226,11 @@ cmpsb %es:(%rdi), %gs:(%rsi)
 cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0x48,0x65,0xa7]        
+// CHECK: encoding: [0x65,0x48,0xa7]        
 cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0x66,0x65,0xa7]        
+// CHECK: encoding: [0x65,0x66,0xa7]        
 cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: insb %dx, %es:(%rdi) 
@@ -306,11 +306,11 @@ movsbl (%rdx), %r13d
 movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0x48,0x65,0xa5]        
+// CHECK: encoding: [0x65,0x48,0xa5]        
 movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0x66,0x65,0xa5]        
+// CHECK: encoding: [0x65,0x66,0xa5]        
 movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movswl 485498096, %r13d 
@@ -418,7 +418,7 @@ outsb %gs:(%rsi), %dx
 outsl %gs:(%rsi), %dx 
 
 // CHECK: outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0x66,0x65,0x6f]        
+// CHECK: encoding: [0x65,0x66,0x6f]        
 outsw %gs:(%rsi), %dx 
 
 // CHECK: rep cmpsb %es:(%rdi), %gs:(%rsi) 
@@ -430,11 +430,11 @@ rep cmpsb %es:(%rdi), %gs:(%rsi)
 rep cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf3,0x48,0x65,0xa7]       
+// CHECK: encoding: [0xf3,0x65,0x48,0xa7]       
 rep cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf3,0x66,0x65,0xa7]       
+// CHECK: encoding: [0xf3,0x65,0x66,0xa7]       
 rep cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep insb %dx, %es:(%rdi) 
@@ -462,11 +462,11 @@ rep movsb %gs:(%rsi), %es:(%rdi)
 rep movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: rep movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf3,0x48,0x65,0xa5]       
+// CHECK: encoding: [0xf3,0x65,0x48,0xa5]       
 rep movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: rep movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf3,0x66,0x65,0xa5]       
+// CHECK: encoding: [0xf3,0x65,0x66,0xa5]       
 rep movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne cmpsb %es:(%rdi), %gs:(%rsi) 
@@ -478,11 +478,11 @@ repne cmpsb %es:(%rdi), %gs:(%rsi)
 repne cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf2,0x48,0x65,0xa7]       
+// CHECK: encoding: [0xf2,0x65,0x48,0xa7]       
 repne cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf2,0x66,0x65,0xa7]       
+// CHECK: encoding: [0xf2,0x65,0x66,0xa7]       
 repne cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne insb %dx, %es:(%rdi) 
@@ -510,11 +510,11 @@ repne movsb %gs:(%rsi), %es:(%rdi)
 repne movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf2,0x48,0x65,0xa5]       
+// CHECK: encoding: [0xf2,0x65,0x48,0xa5]       
 repne movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf2,0x66,0x65,0xa5]       
+// CHECK: encoding: [0xf2,0x65,0x66,0xa5]       
 repne movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne outsb %gs:(%rsi), %dx 
@@ -526,7 +526,7 @@ repne outsb %gs:(%rsi), %dx
 repne outsl %gs:(%rsi), %dx 
 
 // CHECK: repne outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0xf2,0x66,0x65,0x6f]       
+// CHECK: encoding: [0xf2,0x65,0x66,0x6f]       
 repne outsw %gs:(%rsi), %dx 
 
 // CHECK: repne scasl %es:(%rdi), %eax 
@@ -546,7 +546,7 @@ rep outsb %gs:(%rsi), %dx
 rep outsl %gs:(%rsi), %dx 
 
 // CHECK: rep outsw %gs:(%rsi), %dx 
-// CHECK: encoding: [0xf3,0x66,0x65,0x6f]       
+// CHECK: encoding: [0xf3,0x65,0x66,0x6f]       
 rep outsw %gs:(%rsi), %dx 
 
 // CHECK: rep scasl %es:(%rdi), %eax 

diff  --git a/llvm/test/MC/X86/I86-32.s b/llvm/test/MC/X86/I86-32.s
index 59148647a3680..b422c92128368 100644
--- a/llvm/test/MC/X86/I86-32.s
+++ b/llvm/test/MC/X86/I86-32.s
@@ -565,7 +565,7 @@ cmpsb %es:(%edi), %es:(%esi)
 cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0x66,0x26,0xa7]        
+// CHECK: encoding: [0x26,0x66,0xa7]        
 cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: cmpw $0, -485498096(%edx,%eax,4) 
@@ -1197,7 +1197,7 @@ lock xchgl %eax, (%edx)
 lodsb %es:(%esi), %al 
 
 // CHECK: lodsw %es:(%esi), %ax 
-// CHECK: encoding: [0x66,0x26,0xad]        
+// CHECK: encoding: [0x26,0x66,0xad]        
 lodsw %es:(%esi), %ax 
 
 // CHECK: loop 64 
@@ -1345,7 +1345,7 @@ movsb %es:(%esi), %es:(%edi)
 movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0x66,0x26,0xa5]        
+// CHECK: encoding: [0x26,0x66,0xa5]        
 movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: movw $0, -485498096(%edx,%eax,4) 
@@ -2221,7 +2221,7 @@ rep cmpsb %es:(%edi), %es:(%esi)
 rep cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: rep cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0xf3,0x66,0x26,0xa7]       
+// CHECK: encoding: [0xf3,0x26,0x66,0xa7]       
 rep cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: rep lodsb %es:(%esi), %al 
@@ -2229,7 +2229,7 @@ rep cmpsw %es:(%edi), %es:(%esi)
 rep lodsb %es:(%esi), %al 
 
 // CHECK: rep lodsw %es:(%esi), %ax 
-// CHECK: encoding: [0xf3,0x66,0x26,0xad]       
+// CHECK: encoding: [0xf3,0x26,0x66,0xad]       
 rep lodsw %es:(%esi), %ax 
 
 // CHECK: rep movsb %es:(%esi), %es:(%edi) 
@@ -2241,7 +2241,7 @@ rep movsb %es:(%esi), %es:(%edi)
 rep movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: rep movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0xf3,0x66,0x26,0xa5]       
+// CHECK: encoding: [0xf3,0x26,0x66,0xa5]       
 rep movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: repne cmpsb %es:(%edi), %es:(%esi) 
@@ -2253,7 +2253,7 @@ repne cmpsb %es:(%edi), %es:(%esi)
 repne cmpsl %es:(%edi), %es:(%esi) 
 
 // CHECK: repne cmpsw %es:(%edi), %es:(%esi) 
-// CHECK: encoding: [0xf2,0x66,0x26,0xa7]       
+// CHECK: encoding: [0xf2,0x26,0x66,0xa7]       
 repne cmpsw %es:(%edi), %es:(%esi) 
 
 // CHECK: repne lodsb %es:(%esi), %al 
@@ -2261,7 +2261,7 @@ repne cmpsw %es:(%edi), %es:(%esi)
 repne lodsb %es:(%esi), %al 
 
 // CHECK: repne lodsw %es:(%esi), %ax 
-// CHECK: encoding: [0xf2,0x66,0x26,0xad]       
+// CHECK: encoding: [0xf2,0x26,0x66,0xad]       
 repne lodsw %es:(%esi), %ax 
 
 // CHECK: repne movsb %es:(%esi), %es:(%edi) 
@@ -2273,7 +2273,7 @@ repne movsb %es:(%esi), %es:(%edi)
 repne movsl %es:(%esi), %es:(%edi) 
 
 // CHECK: repne movsw %es:(%esi), %es:(%edi) 
-// CHECK: encoding: [0xf2,0x66,0x26,0xa5]       
+// CHECK: encoding: [0xf2,0x26,0x66,0xa5]       
 repne movsw %es:(%esi), %es:(%edi) 
 
 // CHECK: repne scasb %es:(%edi), %al 

diff  --git a/llvm/test/MC/X86/I86-64.s b/llvm/test/MC/X86/I86-64.s
index 6ea78e258dbc9..7e9544e22899c 100644
--- a/llvm/test/MC/X86/I86-64.s
+++ b/llvm/test/MC/X86/I86-64.s
@@ -873,11 +873,11 @@ cmpsb %es:(%rdi), %gs:(%rsi)
 cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0x48,0x65,0xa7]        
+// CHECK: encoding: [0x65,0x48,0xa7]        
 cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0x66,0x65,0xa7]        
+// CHECK: encoding: [0x65,0x66,0xa7]        
 cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: cmpw $0, 485498096 
@@ -1645,7 +1645,7 @@ leal (%rdx), %r13d
 lodsb %gs:(%rsi), %al 
 
 // CHECK: lodsw %gs:(%rsi), %ax 
-// CHECK: encoding: [0x66,0x65,0xad]        
+// CHECK: encoding: [0x65,0x66,0xad]        
 lodsw %gs:(%rsi), %ax 
 
 // CHECK: loop 64 
@@ -1821,11 +1821,11 @@ movsb %gs:(%rsi), %es:(%rdi)
 movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0x48,0x65,0xa5]        
+// CHECK: encoding: [0x65,0x48,0xa5]        
 movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0x66,0x65,0xa5]        
+// CHECK: encoding: [0x65,0x66,0xa5]        
 movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: movw $0, 485498096 
@@ -2985,11 +2985,11 @@ rep cmpsb %es:(%rdi), %gs:(%rsi)
 rep cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf3,0x48,0x65,0xa7]       
+// CHECK: encoding: [0xf3,0x65,0x48,0xa7]       
 rep cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf3,0x66,0x65,0xa7]       
+// CHECK: encoding: [0xf3,0x65,0x66,0xa7]       
 rep cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: rep lodsb %gs:(%rsi), %al 
@@ -2997,7 +2997,7 @@ rep cmpsw %es:(%rdi), %gs:(%rsi)
 rep lodsb %gs:(%rsi), %al 
 
 // CHECK: rep lodsw %gs:(%rsi), %ax 
-// CHECK: encoding: [0xf3,0x66,0x65,0xad]       
+// CHECK: encoding: [0xf3,0x65,0x66,0xad]       
 rep lodsw %gs:(%rsi), %ax 
 
 // CHECK: rep movsb %gs:(%rsi), %es:(%rdi) 
@@ -3009,11 +3009,11 @@ rep movsb %gs:(%rsi), %es:(%rdi)
 rep movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: rep movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf3,0x48,0x65,0xa5]       
+// CHECK: encoding: [0xf3,0x65,0x48,0xa5]       
 rep movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: rep movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf3,0x66,0x65,0xa5]       
+// CHECK: encoding: [0xf3,0x65,0x66,0xa5]       
 rep movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne cmpsb %es:(%rdi), %gs:(%rsi) 
@@ -3025,11 +3025,11 @@ repne cmpsb %es:(%rdi), %gs:(%rsi)
 repne cmpsl %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne cmpsq %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf2,0x48,0x65,0xa7]       
+// CHECK: encoding: [0xf2,0x65,0x48,0xa7]       
 repne cmpsq %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne cmpsw %es:(%rdi), %gs:(%rsi) 
-// CHECK: encoding: [0xf2,0x66,0x65,0xa7]       
+// CHECK: encoding: [0xf2,0x65,0x66,0xa7]       
 repne cmpsw %es:(%rdi), %gs:(%rsi) 
 
 // CHECK: repne lodsb %gs:(%rsi), %al 
@@ -3037,7 +3037,7 @@ repne cmpsw %es:(%rdi), %gs:(%rsi)
 repne lodsb %gs:(%rsi), %al 
 
 // CHECK: repne lodsw %gs:(%rsi), %ax 
-// CHECK: encoding: [0xf2,0x66,0x65,0xad]       
+// CHECK: encoding: [0xf2,0x65,0x66,0xad]       
 repne lodsw %gs:(%rsi), %ax 
 
 // CHECK: repne movsb %gs:(%rsi), %es:(%rdi) 
@@ -3049,11 +3049,11 @@ repne movsb %gs:(%rsi), %es:(%rdi)
 repne movsl %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne movsq %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf2,0x48,0x65,0xa5]       
+// CHECK: encoding: [0xf2,0x65,0x48,0xa5]       
 repne movsq %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne movsw %gs:(%rsi), %es:(%rdi) 
-// CHECK: encoding: [0xf2,0x66,0x65,0xa5]       
+// CHECK: encoding: [0xf2,0x65,0x66,0xa5]       
 repne movsw %gs:(%rsi), %es:(%rdi) 
 
 // CHECK: repne scasb %es:(%rdi), %al 

diff  --git a/llvm/test/MC/X86/code16gcc.s b/llvm/test/MC/X86/code16gcc.s
index bb7940cffed5b..4b669bf99ba22 100644
--- a/llvm/test/MC/X86/code16gcc.s
+++ b/llvm/test/MC/X86/code16gcc.s
@@ -11,7 +11,7 @@
 	lodsb (%esi), %al
 	//CHECK:	lodsb	(%esi), %al             # encoding: [0x67,0xac]
 	lodsl %gs:(%esi)
-	//CHECK:	lodsl	%gs:(%esi), %eax        # encoding: [0x67,0x66,0x65,0xad]
+	//CHECK:	lodsl	%gs:(%esi), %eax        # encoding: [0x67,0x65,0x66,0xad]
 	lods (%esi), %ax
 	//CHECK:	lodsw	(%esi), %ax             # encoding: [0x67,0xad]
 	stosw
@@ -29,11 +29,11 @@
 	cmpsw (%edi), (%esi)
 	//CHECK:	cmpsw	%es:(%edi), (%esi)      # encoding: [0x67,0xa7]
 	cmpsl %es:(%edi), %ss:(%esi)
-	//CHECK:	cmpsl	%es:(%edi), %ss:(%esi)  # encoding: [0x67,0x66,0x36,0xa7]
+	//CHECK:	cmpsl	%es:(%edi), %ss:(%esi)  # encoding: [0x67,0x36,0x66,0xa7]
 	movsb (%esi), (%edi)
 	//CHECK:	movsb	(%esi), %es:(%edi)      # encoding: [0x67,0xa4]
 	movsl %gs:(%esi), (%edi)
-	//CHECK:	movsl	%gs:(%esi), %es:(%edi)  # encoding: [0x67,0x66,0x65,0xa5]
+	//CHECK:	movsl	%gs:(%esi), %es:(%edi)  # encoding: [0x67,0x65,0x66,0xa5]
 	outsb
 	//CHECK:	outsb	(%esi), %dx             # encoding: [0x67,0x6e]
 	outsw %fs:(%esi), %dx

diff  --git a/llvm/test/MC/X86/index-operations.s b/llvm/test/MC/X86/index-operations.s
index 425b194065a6b..0c39fe8a90da0 100644
--- a/llvm/test/MC/X86/index-operations.s
+++ b/llvm/test/MC/X86/index-operations.s
@@ -28,7 +28,7 @@ lodsb (%si), %al
 lodsl %gs:(%esi)
 // 64: lodsl %gs:(%esi), %eax # encoding: [0x67,0x65,0xad]
 // 32: lodsl %gs:(%esi), %eax # encoding: [0x65,0xad]
-// 16: lodsl %gs:(%esi), %eax # encoding: [0x67,0x66,0x65,0xad]
+// 16: lodsl %gs:(%esi), %eax # encoding: [0x67,0x65,0x66,0xad]
 
 lodsl (%edi), %eax
 // ERR64: invalid operand
@@ -113,7 +113,7 @@ cmpsb (%di), (%esi)
 cmpsl %es:(%edi), %ss:(%esi)
 // 64: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x67,0x36,0xa7]
 // 32: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x36,0xa7]
-// 16: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x67,0x66,0x36,0xa7]
+// 16: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x67,0x36,0x66,0xa7]
 
 cmpsq (%rdi), (%rsi)
 // 64: cmpsq %es:(%rdi), (%rsi) # encoding: [0x48,0xa7]
@@ -128,7 +128,7 @@ movsb (%esi), (%edi)
 movsl %gs:(%esi), (%edi)
 // 64: movsl %gs:(%esi), %es:(%edi) # encoding: [0x67,0x65,0xa5]
 // 32: movsl %gs:(%esi), %es:(%edi) # encoding: [0x65,0xa5]
-// 16: movsl %gs:(%esi), %es:(%edi) # encoding: [0x67,0x66,0x65,0xa5]
+// 16: movsl %gs:(%esi), %es:(%edi) # encoding: [0x67,0x65,0x66,0xa5]
 
 outsb
 // 64: outsb (%rsi), %dx # encoding: [0x6e]
@@ -136,8 +136,8 @@ outsb
 // 16: outsb (%si), %dx # encoding: [0x6e]
 
 outsw %fs:(%esi), %dx
-// 64: outsw %fs:(%esi), %dx # encoding: [0x67,0x66,0x64,0x6f]
-// 32: outsw %fs:(%esi), %dx # encoding: [0x66,0x64,0x6f]
+// 64: outsw %fs:(%esi), %dx # encoding: [0x67,0x64,0x66,0x6f]
+// 32: outsw %fs:(%esi), %dx # encoding: [0x64,0x66,0x6f]
 // 16: outsw %fs:(%esi), %dx # encoding: [0x67,0x64,0x6f]
 
 insw %dx, (%edi)

diff  --git a/llvm/test/MC/X86/x86-16.s b/llvm/test/MC/X86/x86-16.s
index 9f8c639726f9a..6670e736a6fe5 100644
--- a/llvm/test/MC/X86/x86-16.s
+++ b/llvm/test/MC/X86/x86-16.s
@@ -340,7 +340,7 @@ cmovnae	%bx,%bx
 // CHECK:  encoding: [0x9b]
 	fwait
 
-// CHECK: [0x66,0x65,0xa1,0x7c,0x00]
+// CHECK: [0x65,0x66,0xa1,0x7c,0x00]
         movl	%gs:124, %eax
 
 // CHECK: pusha


        


More information about the llvm-commits mailing list