[llvm-commits] [llvm] r153218 - in /llvm/trunk: lib/Target/ARM/Disassembler/ARMDisassembler.cpp test/MC/Disassembler/ARM/neon.txt test/MC/Disassembler/ARM/neont2.txt

Kevin Enderby enderby at apple.com
Wed Mar 21 13:54:33 PDT 2012


Author: enderby
Date: Wed Mar 21 15:54:32 2012
New Revision: 153218

URL: http://llvm.org/viewvc/llvm-project?rev=153218&view=rev
Log:
Fix ARM disassembly of VST1 and VST2 instructions with writeback.  And add test
case for all opcodes handed by DecodeVSTInstruction() in ARMDisassembler.cpp .

Modified:
    llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
    llvm/trunk/test/MC/Disassembler/ARM/neon.txt
    llvm/trunk/test/MC/Disassembler/ARM/neont2.txt

Modified: llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp?rev=153218&r1=153217&r2=153218&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp (original)
+++ llvm/trunk/lib/Target/ARM/Disassembler/ARMDisassembler.cpp Wed Mar 21 15:54:32 2012
@@ -2319,6 +2319,8 @@
     case ARM::VST2b8wb_register:
     case ARM::VST2b16wb_register:
     case ARM::VST2b32wb_register:
+      Inst.addOperand(MCOperand::CreateImm(0));
+      break;
     case ARM::VST3d8_UPD:
     case ARM::VST3d16_UPD:
     case ARM::VST3d32_UPD:
@@ -2360,6 +2362,23 @@
     case ARM::VST1q16wb_fixed:
     case ARM::VST1q32wb_fixed:
     case ARM::VST1q64wb_fixed:
+    case ARM::VST1d8Twb_fixed:
+    case ARM::VST1d16Twb_fixed:
+    case ARM::VST1d32Twb_fixed:
+    case ARM::VST1d64Twb_fixed:
+    case ARM::VST1d8Qwb_fixed:
+    case ARM::VST1d16Qwb_fixed:
+    case ARM::VST1d32Qwb_fixed:
+    case ARM::VST1d64Qwb_fixed:
+    case ARM::VST2d8wb_fixed:
+    case ARM::VST2d16wb_fixed:
+    case ARM::VST2d32wb_fixed:
+    case ARM::VST2q8wb_fixed:
+    case ARM::VST2q16wb_fixed:
+    case ARM::VST2q32wb_fixed:
+    case ARM::VST2b8wb_fixed:
+    case ARM::VST2b16wb_fixed:
+    case ARM::VST2b32wb_fixed:
       break;
   }
 

Modified: llvm/trunk/test/MC/Disassembler/ARM/neon.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/ARM/neon.txt?rev=153218&r1=153217&r2=153218&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/ARM/neon.txt (original)
+++ llvm/trunk/test/MC/Disassembler/ARM/neon.txt Wed Mar 21 15:54:32 2012
@@ -1876,3 +1876,188 @@
 # CHECK vld2.8	{d17[], d19[]}, [r7, :16]!
 0xe7 0xf9 0x3f 0x1d
 # CHECK vld2.8	{d17[], d19[]}, [r7, :16]
+
+# rdar://11034702
+0x0d 0x87 0x04 0xf4
+# CHECK: vst1.8	{d8}, [r4]!            
+0x4d 0x87 0x04 0xf4
+# CHECK: vst1.16	{d8}, [r4]!             
+0x8d 0x87 0x04 0xf4
+# CHECK: vst1.32	{d8}, [r4]!             
+0xcd 0x87 0x04 0xf4
+# CHECK: vst1.64	{d8}, [r4]!             
+0x06 0x87 0x04 0xf4
+# CHECK: vst1.8	{d8}, [r4], r6          
+0x46 0x87 0x04 0xf4
+# CHECK: vst1.16	{d8}, [r4], r6          
+0x86 0x87 0x04 0xf4
+# CHECK: vst1.32	{d8}, [r4], r6          
+0xc6 0x87 0x04 0xf4
+# CHECK: vst1.64	{d8}, [r4], r6          
+
+0x0d 0x8a 0x04 0xf4
+# CHECK: vst1.8	{d8, d9}, [r4]!         
+0x4d 0x8a 0x04 0xf4
+# CHECK: vst1.16	{d8, d9}, [r4]!         
+0x8d 0x8a 0x04 0xf4
+# CHECK: vst1.32	{d8, d9}, [r4]!         
+0xcd 0x8a 0x04 0xf4
+# CHECK: vst1.64	{d8, d9}, [r4]!         
+0x06 0x8a 0x04 0xf4
+# CHECK: vst1.8	{d8, d9}, [r4], r6      
+0x46 0x8a 0x04 0xf4
+# CHECK: vst1.16	{d8, d9}, [r4], r6      
+0x86 0x8a 0x04 0xf4
+# CHECK: vst1.32	{d8, d9}, [r4], r6      
+0xc6 0x8a 0x04 0xf4
+# CHECK: vst1.64	{d8, d9}, [r4], r6      
+
+0x0d 0x86 0x04 0xf4
+# CHECK: vst1.8	{d8, d9, d10}, [r4]!    
+0x4d 0x86 0x04 0xf4
+# CHECK: vst1.16	{d8, d9, d10}, [r4]!    
+0x8d 0x86 0x04 0xf4
+# CHECK: vst1.32	{d8, d9, d10}, [r4]!    
+0xcd 0x86 0x04 0xf4
+# CHECK: vst1.64	{d8, d9, d10}, [r4]!    
+0x06 0x86 0x04 0xf4
+# CHECK: vst1.8	{d8, d9, d10}, [r4], r6 
+0x46 0x86 0x04 0xf4
+# CHECK: vst1.16	{d8, d9, d10}, [r4], r6 
+0x86 0x86 0x04 0xf4
+# CHECK: vst1.32	{d8, d9, d10}, [r4], r6 
+0xc6 0x86 0x04 0xf4
+# CHECK: vst1.64	{d8, d9, d10}, [r4], r6 
+
+0x0d 0x82 0x04 0xf4
+# CHECK: vst1.8	{d8, d9, d10, d11}, [r4]! 
+0x4d 0x82 0x04 0xf4
+# CHECK: vst1.16	{d8, d9, d10, d11}, [r4]! 
+0x8d 0x82 0x04 0xf4
+# CHECK: vst1.32	{d8, d9, d10, d11}, [r4]! 
+0xcd 0x82 0x04 0xf4
+# CHECK: vst1.64	{d8, d9, d10, d11}, [r4]! 
+0x06 0x82 0x04 0xf4
+# CHECK: vst1.8	{d8, d9, d10, d11}, [r4], r6 
+0x46 0x82 0x04 0xf4
+# CHECK: vst1.16	{d8, d9, d10, d11}, [r4], r6 
+0x86 0x82 0x04 0xf4
+# CHECK: vst1.32	{d8, d9, d10, d11}, [r4], r6 
+0xc6 0x82 0x04 0xf4
+# CHECK: vst1.64	{d8, d9, d10, d11}, [r4], r6 
+
+0x0d 0x88 0x04 0xf4
+# CHECK: vst2.8	{d8, d9}, [r4]!         
+0x4d 0x88 0x04 0xf4
+# CHECK: vst2.16	{d8, d9}, [r4]!         
+0x8d 0x88 0x04 0xf4
+# CHECK: vst2.32	{d8, d9}, [r4]!         
+0x06 0x88 0x04 0xf4
+# CHECK: vst2.8	{d8, d9}, [r4], r6      
+0x46 0x88 0x04 0xf4
+# CHECK: vst2.16	{d8, d9}, [r4], r6      
+0x86 0x88 0x04 0xf4
+# CHECK: vst2.32	{d8, d9}, [r4], r6      
+
+0x0d 0x89 0x04 0xf4
+# CHECK: vst2.8	{d8, d10}, [r4]!        
+0x4d 0x89 0x04 0xf4
+# CHECK: vst2.16	{d8, d10}, [r4]!        
+0x8d 0x89 0x04 0xf4
+# CHECK: vst2.32	{d8, d10}, [r4]!        
+0x06 0x89 0x04 0xf4
+# CHECK: vst2.8	{d8, d10}, [r4], r6     
+0x46 0x89 0x04 0xf4
+# CHECK: vst2.16	{d8, d10}, [r4], r6     
+0x86 0x89 0x04 0xf4
+# CHECK: vst2.32	{d8, d10}, [r4], r6     
+
+0x0d 0x84 0x04 0xf4
+# CHECK: vst3.8	{d8, d9, d10}, [r4]!    
+0x4d 0x84 0x04 0xf4
+# CHECK: vst3.16	{d8, d9, d10}, [r4]!    
+0x8d 0x84 0x04 0xf4
+# CHECK: vst3.32	{d8, d9, d10}, [r4]!    
+0x06 0x85 0x04 0xf4
+# CHECK: vst3.8	{d8, d10, d12}, [r4], r6 
+0x46 0x85 0x04 0xf4
+# CHECK: vst3.16	{d8, d10, d12}, [r4], r6 
+0x86 0x85 0x04 0xf4
+# CHECK: vst3.32	{d8, d10, d12}, [r4], r6 
+
+0x0d 0x80 0x04 0xf4
+# CHECK: vst4.8	{d8, d9, d10, d11}, [r4]! 
+0x4d 0x80 0x04 0xf4
+# CHECK: vst4.16	{d8, d9, d10, d11}, [r4]! 
+0x8d 0x80 0x04 0xf4
+# CHECK: vst4.32	{d8, d9, d10, d11}, [r4]! 
+0x06 0x81 0x04 0xf4
+# CHECK: vst4.8	{d8, d10, d12, d14}, [r4], r6 
+0x46 0x81 0x04 0xf4
+# CHECK: vst4.16	{d8, d10, d12, d14}, [r4], r6 
+0x86 0x81 0x04 0xf4
+# CHECK: vst4.32	{d8, d10, d12, d14}, [r4], r6 
+
+0x4f 0x8a 0x04 0xf4
+# CHECK: vst1.16	{d8, d9}, [r4]          
+0x8f 0x8a 0x04 0xf4
+# CHECK: vst1.32	{d8, d9}, [r4]          
+0xcf 0x8a 0x04 0xf4
+# CHECK: vst1.64	{d8, d9}, [r4]          
+0x0f 0x8a 0x04 0xf4
+# CHECK: vst1.8	{d8, d9}, [r4]          
+
+0x4f 0x88 0x04 0xf4
+# CHECK: vst2.16	{d8, d9}, [r4]          
+0x8f 0x88 0x04 0xf4
+# CHECK: vst2.32	{d8, d9}, [r4]          
+0x0f 0x88 0x04 0xf4
+# CHECK: vst2.8	{d8, d9}, [r4]          
+
+0x4d 0x88 0x04 0xf4
+# CHECK: vst2.16	{d8, d9}, [r4]!         
+0x46 0x88 0x04 0xf4
+# CHECK: vst2.16	{d8, d9}, [r4], r6      
+0x8d 0x88 0x04 0xf4
+# CHECK: vst2.32	{d8, d9}, [r4]!         
+0x86 0x88 0x04 0xf4
+# CHECK: vst2.32	{d8, d9}, [r4], r6      
+0x0d 0x88 0x04 0xf4
+# CHECK: vst2.8	{d8, d9}, [r4]!         
+0x06 0x88 0x04 0xf4
+# CHECK: vst2.8	{d8, d9}, [r4], r6      
+
+0x4f 0x89 0x04 0xf4
+# CHECK: vst2.16	{d8, d10}, [r4]         
+0x8f 0x89 0x04 0xf4
+# CHECK: vst2.32	{d8, d10}, [r4]         
+0x0f 0x89 0x04 0xf4
+# CHECK: vst2.8	{d8, d10}, [r4]         
+
+0x0f 0x84 0x04 0xf4
+# CHECK: vst3.8	{d8, d9, d10}, [r4]     
+0x4f 0x84 0x04 0xf4
+# CHECK: vst3.16	{d8, d9, d10}, [r4]     
+0x8f 0x84 0x04 0xf4
+# CHECK: vst3.32	{d8, d9, d10}, [r4]     
+
+0x0f 0x80 0x04 0xf4
+# CHECK: vst4.8	{d8, d9, d10, d11}, [r4] 
+0x4f 0x80 0x04 0xf4
+# CHECK: vst4.16	{d8, d9, d10, d11}, [r4] 
+0x8f 0x80 0x04 0xf4
+# CHECK: vst4.32	{d8, d9, d10, d11}, [r4] 
+
+0x0f 0x85 0x04 0xf4
+# CHECK: vst3.8	{d8, d10, d12}, [r4]    
+0x4f 0x85 0x04 0xf4
+# CHECK: vst3.16	{d8, d10, d12}, [r4]    
+0x8f 0x85 0x04 0xf4
+# CHECK: vst3.32	{d8, d10, d12}, [r4]    
+
+0x0f 0x81 0x04 0xf4
+# CHECK: vst4.8	{d8, d10, d12, d14}, [r4] 
+0x4f 0x81 0x04 0xf4
+# CHECK: vst4.16	{d8, d10, d12, d14}, [r4] 
+0x8f 0x81 0x04 0xf4
+# CHECK: vst4.32	{d8, d10, d12, d14}, [r4] 

Modified: llvm/trunk/test/MC/Disassembler/ARM/neont2.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/ARM/neont2.txt?rev=153218&r1=153217&r2=153218&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/ARM/neont2.txt (original)
+++ llvm/trunk/test/MC/Disassembler/ARM/neont2.txt Wed Mar 21 15:54:32 2012
@@ -1595,3 +1595,186 @@
 # CHECK vld2.8	{d17[], d19[]}, [r7, :16]!
 0xe7 0xf9 0x3f 0x1d
 # CHECK vld2.8	{d17[], d19[]}, [r7, :16]
+
+# rdar://11034702
+0x04 0xf9 0x0d 0x87
+# CHECK: vst1.8	{d8}, [r4]!             
+0x04 0xf9 0x4d 0x87
+# CHECK: vst1.16	{d8}, [r4]!             
+0x04 0xf9 0x8d 0x87
+# CHECK: vst1.32	{d8}, [r4]!             
+0x04 0xf9 0xcd 0x87
+# CHECK: vst1.64	{d8}, [r4]!             
+0x04 0xf9 0x06 0x87
+# CHECK: vst1.8	{d8}, [r4], r6          
+0x04 0xf9 0x46 0x87
+# CHECK: vst1.16	{d8}, [r4], r6          
+0x04 0xf9 0x86 0x87
+# CHECK: vst1.32	{d8}, [r4], r6          
+0x04 0xf9 0xc6 0x87
+# CHECK: vst1.64	{d8}, [r4], r6          
+
+0x04 0xf9 0x0d 0x8a
+# CHECK: vst1.8	{d8, d9}, [r4]!         
+0x04 0xf9 0x4d 0x8a
+# CHECK: vst1.16	{d8, d9}, [r4]!         
+0x04 0xf9 0x8d 0x8a
+# CHECK: vst1.32	{d8, d9}, [r4]!         
+0x04 0xf9 0xcd 0x8a
+# CHECK: vst1.64	{d8, d9}, [r4]!         
+0x04 0xf9 0x06 0x8a
+# CHECK: vst1.8	{d8, d9}, [r4], r6      
+0x04 0xf9 0x46 0x8a
+# CHECK: vst1.16	{d8, d9}, [r4], r6      
+0x04 0xf9 0x86 0x8a
+# CHECK: vst1.32	{d8, d9}, [r4], r6      
+0x04 0xf9 0xc6 0x8a
+# CHECK: vst1.64	{d8, d9}, [r4], r6      
+
+0x04 0xf9 0x0d 0x86
+# CHECK: vst1.8	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x4d 0x86
+# CHECK: vst1.16	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x8d 0x86
+# CHECK: vst1.32	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0xcd 0x86
+# CHECK: vst1.64	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x06 0x86
+# CHECK: vst1.8	{d8, d9, d10}, [r4], r6 
+0x04 0xf9 0x46 0x86
+# CHECK: vst1.16	{d8, d9, d10}, [r4], r6 
+0x04 0xf9 0x86 0x86
+# CHECK: vst1.32	{d8, d9, d10}, [r4], r6 
+0x04 0xf9 0xc6 0x86
+# CHECK: vst1.64	{d8, d9, d10}, [r4], r6 
+
+0x04 0xf9 0x0d 0x82
+# CHECK: vst1.8	{d8, d9, d10, d11}, [r4]! 
+0x04 0xf9 0x4d 0x82
+# CHECK: vst1.16	{d8, d9, d10, d11}, [r4]! 
+0x04 0xf9 0x8d 0x82
+# CHECK: vst1.32	{d8, d9, d10, d11}, [r4]! 
+0x04 0xf9 0xcd 0x82
+# CHECK: vst1.64	{d8, d9, d10, d11}, [r4]! 
+0x04 0xf9 0x06 0x82
+# CHECK: vst1.8	{d8, d9, d10, d11}, [r4], r6 
+0x04 0xf9 0x46 0x82
+# CHECK: vst1.16	{d8, d9, d10, d11}, [r4], r6 
+0x04 0xf9 0x86 0x82
+# CHECK: vst1.32	{d8, d9, d10, d11}, [r4], r6 
+0x04 0xf9 0xc6 0x82
+# CHECK: vst1.64	{d8, d9, d10, d11}, [r4], r6 
+
+0x04 0xf9 0x0d 0x88
+# CHECK: vst2.8	{d8, d9}, [r4]!         
+0x04 0xf9 0x4d 0x88
+# CHECK: vst2.16	{d8, d9}, [r4]!         
+0x04 0xf9 0x8d 0x88
+# CHECK: vst2.32	{d8, d9}, [r4]!         
+0x04 0xf9 0x06 0x88
+# CHECK: vst2.8	{d8, d9}, [r4], r6      
+0x04 0xf9 0x46 0x88
+# CHECK: vst2.16	{d8, d9}, [r4], r6      
+0x04 0xf9 0x86 0x88
+# CHECK: vst2.32	{d8, d9}, [r4], r6      
+
+0x04 0xf9 0x0d 0x89
+# CHECK: vst2.8	{d8, d10}, [r4]!        
+0x04 0xf9 0x4d 0x89
+# CHECK: vst2.16	{d8, d10}, [r4]!        
+0x04 0xf9 0x8d 0x89
+# CHECK: vst2.32	{d8, d10}, [r4]!        
+0x04 0xf9 0x06 0x89
+# CHECK: vst2.8	{d8, d10}, [r4], r6     
+0x04 0xf9 0x46 0x89
+# CHECK: vst2.16	{d8, d10}, [r4], r6     
+0x04 0xf9 0x86 0x89
+# CHECK: vst2.32	{d8, d10}, [r4], r6     
+
+0x04 0xf9 0x0d 0x84
+# CHECK: vst3.8	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x4d 0x84
+# CHECK: vst3.16	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x8d 0x84
+# CHECK: vst3.32	{d8, d9, d10}, [r4]!    
+0x04 0xf9 0x06 0x85
+# CHECK: vst3.8	{d8, d10, d12}, [r4], r6 
+0x04 0xf9 0x46 0x85
+# CHECK: vst3.16	{d8, d10, d12}, [r4], r6 
+0x04 0xf9 0x86 0x85
+# CHECK: vst3.32	{d8, d10, d12}, [r4], r6 
+
+0x04 0xf9 0x0d 0x80
+# CHECK: vst4.8	{d8, d9, d10, d11}, [r4]!
+0x04 0xf9 0x4d 0x80
+# CHECK: vst4.16	{d8, d9, d10, d11}, [r4]!
+0x04 0xf9 0x8d 0x80
+# CHECK: vst4.32	{d8, d9, d10, d11}, [r4]!
+0x04 0xf9 0x06 0x81
+# CHECK: vst4.8	{d8, d10, d12, d14}, [r4], r6
+0x04 0xf9 0x46 0x81
+# CHECK: vst4.16	{d8, d10, d12, d14}, [r4], r6
+0x04 0xf9 0x86 0x81
+# CHECK: vst4.32	{d8, d10, d12, d14}, [r4], r6
+
+0x04 0xf9 0x4f 0x8a
+# CHECK: vst1.16	{d8, d9}, [r4]          
+0x04 0xf9 0x8f 0x8a
+# CHECK: vst1.32	{d8, d9}, [r4]          
+0x04 0xf9 0xcf 0x8a
+# CHECK: vst1.64	{d8, d9}, [r4]          
+0x04 0xf9 0x0f 0x8a
+# CHECK: vst1.8	{d8, d9}, [r4]          
+0x04 0xf9 0x4f 0x88
+# CHECK: vst2.16	{d8, d9}, [r4]          
+0x04 0xf9 0x8f 0x88
+# CHECK: vst2.32	{d8, d9}, [r4]          
+0x04 0xf9 0x0f 0x88
+# CHECK: vst2.8	{d8, d9}, [r4]          
+0x04 0xf9 0x4d 0x88
+# CHECK: vst2.16	{d8, d9}, [r4]!         
+0x04 0xf9 0x46 0x88
+# CHECK: vst2.16	{d8, d9}, [r4], r6      
+0x04 0xf9 0x8d 0x88
+# CHECK: vst2.32	{d8, d9}, [r4]!         
+0x04 0xf9 0x86 0x88
+# CHECK: vst2.32	{d8, d9}, [r4], r6      
+0x04 0xf9 0x0d 0x88
+# CHECK: vst2.8	{d8, d9}, [r4]!         
+0x04 0xf9 0x06 0x88
+# CHECK: vst2.8	{d8, d9}, [r4], r6      
+
+0x04 0xf9 0x4f 0x89
+# CHECK: vst2.16	{d8, d10}, [r4]        
+0x04 0xf9 0x8f 0x89
+# CHECK: vst2.32	{d8, d10}, [r4]        
+0x04 0xf9 0x0f 0x89
+# CHECK: vst2.8	{d8, d10}, [r4]        
+
+0x04 0xf9 0x0f 0x84
+# CHECK: vst3.8	{d8, d9, d10}, [r4]    
+0x04 0xf9 0x4f 0x84
+# CHECK: vst3.16	{d8, d9, d10}, [r4]    
+0x04 0xf9 0x8f 0x84
+# CHECK: vst3.32	{d8, d9, d10}, [r4]    
+
+0x04 0xf9 0x0f 0x80
+# CHECK: vst4.8	{d8, d9, d10, d11}, [r4]
+0x04 0xf9 0x4f 0x80
+# CHECK: vst4.16	{d8, d9, d10, d11}, [r4]
+0x04 0xf9 0x8f 0x80
+# CHECK: vst4.32	{d8, d9, d10, d11}, [r4]
+
+0x04 0xf9 0x0f 0x85
+# CHECK: vst3.8	{d8, d10, d12}, [r4]   
+0x04 0xf9 0x4f 0x85
+# CHECK: vst3.16	{d8, d10, d12}, [r4]   
+0x04 0xf9 0x8f 0x85
+# CHECK: vst3.32	{d8, d10, d12}, [r4]   
+
+0x04 0xf9 0x0f 0x81
+# CHECK: vst4.8	{d8, d10, d12, d14}, [r4]
+0x04 0xf9 0x4f 0x81
+# CHECK: vst4.16	{d8, d10, d12, d14}, [r4]
+0x04 0xf9 0x8f 0x81
+# CHECK: vst4.32	{d8, d10, d12, d14}, [r4]





More information about the llvm-commits mailing list