aab53e7785 
								
							 
						 
						
							
							
								
								Mark some more instructions as CodeGenOnly. Remove filters from the disassembler.  
							
							... 
							
							
							
							llvm-svn: 192522 
							
						 
						
							2013-10-12 04:46:18 +00:00  
				
					
						
							
							
								 
						
							
								81034928c6 
								
							 
						 
						
							
							
								
								Remove another unnecessary filter from the disassembler.  
							
							... 
							
							
							
							llvm-svn: 192425 
							
						 
						
							2013-10-11 06:59:57 +00:00  
				
					
						
							
							
								 
						
							
								e1ceeb40c1 
								
							 
						 
						
							
							
								
								Fix so CRC32r64r8 isn't accidentally filtered from the disassembler tables.  
							
							... 
							
							
							
							llvm-svn: 192339 
							
						 
						
							2013-10-10 04:26:52 +00:00  
				
					
						
							
							
								 
						
							
								2d0d180ab4 
								
							 
						 
						
							
							
								
								More x86 disassembler filtering cleanup.  
							
							... 
							
							
							
							llvm-svn: 192279 
							
						 
						
							2013-10-09 06:12:53 +00:00  
				
					
						
							
							
								 
						
							
								043d749ba3 
								
							 
						 
						
							
							
								
								Remove some old filters from the x86 disassembler table builder.  
							
							... 
							
							
							
							llvm-svn: 192275 
							
						 
						
							2013-10-09 05:02:29 +00:00  
				
					
						
							
							
								 
						
							
								a984729f8a 
								
							 
						 
						
							
							
								
								Remove unneeded MMX instruction definition by moving pattern to an equivalent instruction definition and removing the filtering from the disassembler table building.  
							
							... 
							
							
							
							llvm-svn: 192175 
							
						 
						
							2013-10-08 06:30:39 +00:00  
				
					
						
							
							
								 
						
							
								72c8cd7bc3 
								
							 
						 
						
							
							
								
								Remove some instructions that existed to provide aliases to the assembler. Can be done with InstAlias instead. Unfortunately, this was causing printer to use 'vmovq' or 'vmovd' based on what was parsed. To cleanup the inconsistencies convert all 'vmovd' with 64-bit registers to 'vmovq', but provide an alias so that 'vmovd' will still parse.  
							
							... 
							
							
							
							llvm-svn: 192171 
							
						 
						
							2013-10-08 05:53:50 +00:00  
				
					
						
							
							
								 
						
							
								07ad1b23bb 
								
							 
						 
						
							
							
								
								Remove some instructions that seem to only exist to trick the filtering checks in the disassembler table creation. Just fix up the filter to let the real instruction through instead.  
							
							... 
							
							
							
							llvm-svn: 192090 
							
						 
						
							2013-10-07 07:19:47 +00:00  
				
					
						
							
							
								 
						
							
								2658d89728 
								
							 
						 
						
							
							
								
								Add disassembler support for long encodings for INC/DEC in 32-bit mode.  
							
							... 
							
							
							
							llvm-svn: 192086 
							
						 
						
							2013-10-07 04:28:06 +00:00  
				
					
						
							
							
								 
						
							
								9e3e38ae3f 
								
							 
						 
						
							
							
								
								Add XOP disassembler support. Fixes PR13933.  
							
							... 
							
							
							
							llvm-svn: 191874 
							
						 
						
							2013-10-03 05:17:48 +00:00  
				
					
						
							
							
								 
						
							
								c35219e3ee 
								
							 
						 
						
							
							
								
								AVX-512: Added masked SHIFT commands, more encoding tests  
							
							... 
							
							
							
							llvm-svn: 189005 
							
						 
						
							2013-08-22 12:18:28 +00:00  
				
					
						
							
							
								 
						
							
								9469e906a5 
								
							 
						 
						
							
							
								
								Remove use of sprintf added to X86 disassembler tablegen code. Send message with instruction name to errs() instead and use a generic message for the llvm_unreachable. Consistent with other places in this file.  
							
							... 
							
							
							
							llvm-svn: 187333 
							
						 
						
							2013-07-28 21:28:02 +00:00  
				
					
						
							
							
								 
						
							
								baf51e3e61 
								
							 
						 
						
							
							
								
								fixed compilation issue  
							
							... 
							
							
							
							llvm-svn: 187325 
							
						 
						
							2013-07-28 08:45:12 +00:00  
				
					
						
							
							
								 
						
							
								003e7d73b9 
								
							 
						 
						
							
							
								
								Added encoding prefixes for KNL instructions (EVEX).  
							
							... 
							
							
							
							Added 512-bit operands printing.
Added instruction formats for KNL instructions.
llvm-svn: 187324 
							
						 
						
							2013-07-28 08:28:38 +00:00  
				
					
						
							
							
								 
						
							
								8811ad4f81 
								
							 
						 
						
							
							
								
								Add support for encoding the HLE XACQUIRE and XRELEASE prefixes.  
							
							... 
							
							
							
							For decoding, keep the current behavior of always decoding these as their REP
versions. In the future, this could be improved to recognize the cases where
these behave as XACQUIRE and XRELEASE and decode them as such.
llvm-svn: 184207 
							
						 
						
							2013-06-18 17:08:10 +00:00  
				
					
						
							
							
								 
						
							
								95d9440348 
								
							 
						 
						
							
							
								
								Add CLAC/STAC instruction encoding/decoding support  
							
							... 
							
							
							
							As these two instructions in AVX extension are privileged instructions for
special purpose, it's only expected to be used in inlined assembly.
llvm-svn: 179266 
							
						 
						
							2013-04-11 04:52:28 +00:00  
				
					
						
							
							
								 
						
							
								656e8515fc 
								
							 
						 
						
							
							
								
								x86 -- add the XTEST instruction  
							
							... 
							
							
							
							llvm-svn: 177888 
							
						 
						
							2013-03-25 18:59:43 +00:00  
				
					
						
							
							
								 
						
							
								f15856ebb4 
								
							 
						 
						
							
							
								
								Fixes disassembler crashes on 2013 Haswell RTM instructions.  
							
							... 
							
							
							
							rdar://13318048
llvm-svn: 176828 
							
						 
						
							2013-03-11 21:17:13 +00:00  
				
					
						
							
							
								 
						
							
								ab588efe42 
								
							 
						 
						
							
							
								
								Added 0x0D to 2-byte opcode extension table for prefetch* variants  
							
							... 
							
							
							
							Fixed decode of existing 3dNow prefetchw instruction
Intel is scheduled to add a compatible prefetchw (same encoding) to future CPUs
llvm-svn: 174920 
							
						 
						
							2013-02-12 00:19:12 +00:00  
				
					
						
							
							
								 
						
							
								91d19d8e93 
								
							 
						 
						
							
							
								
								Sort the #include lines for utils/...  
							
							... 
							
							
							
							I've tried to find main moudle headers where possible, but the TableGen
stuff may warrant someone else looking at it.
llvm-svn: 169251 
							
						 
						
							2012-12-04 10:37:14 +00:00  
				
					
						
							
							
								 
						
							
								73cffddb95 
								
							 
						 
						
							
							
								
								Add support of RTM from TSX extension  
							
							... 
							
							
							
							- Add RTM code generation support throught 3 X86 intrinsics:
  xbegin()/xend() to start/end a transaction region, and xabort() to abort a
  tranaction region
llvm-svn: 167573 
							
						 
						
							2012-11-08 07:28:54 +00:00  
				
					
						
							
							
								 
						
							
								3f23c1a8b9 
								
							 
						 
						
							
							
								
								Remove code for setting the VEX L-bit as a function of operand size from the code emitters and the disassembler table builder. Fix a couple instructions that were still missing VEX_L.  
							
							... 
							
							
							
							llvm-svn: 164204 
							
						 
						
							2012-09-19 06:37:45 +00:00  
				
					
						
							
							
								 
						
							
								c30fdbc46c 
								
							 
						 
						
							
							
								
								Add support for converting llvm.fma to fma4 instructions.  
							
							... 
							
							
							
							llvm-svn: 162999 
							
						 
						
							2012-08-31 15:40:30 +00:00  
				
					
						
							
							
								 
						
							
								c6b7ef61f4 
								
							 
						 
						
							
							
								
								Mark MOVZX32_NOREX as isCodeGenOnly and neverHasSideEffects. The isCodeGenOnly change allows special detection of _NOREX instructions to be removed from tablegen disassembler code.  
							
							... 
							
							
							
							llvm-svn: 160951 
							
						 
						
							2012-07-30 06:48:11 +00:00  
				
					
						
							
							
								 
						
							
								08ead0b14e 
								
							 
						 
						
							
							
								
								Remove some unnecessary filter checks. They were already covered by IsCodeGenOnly  
							
							... 
							
							
							
							llvm-svn: 160950 
							
						 
						
							2012-07-30 06:27:19 +00:00  
				
					
						
							
							
								 
						
							
								6f4ad80dc8 
								
							 
						 
						
							
							
								
								Remove check for sub class of X86Inst from filter function since caller guaranteed it. Replace another sub class check with ShouldBeEmitted flag since it was factored in there already.  
							
							... 
							
							
							
							llvm-svn: 160949 
							
						 
						
							2012-07-30 05:39:34 +00:00  
				
					
						
							
							
								 
						
							
								b58dc17025 
								
							 
						 
						
							
							
								
								Simplify code that filtered certain instructions in two different ways. No functional change.  
							
							... 
							
							
							
							llvm-svn: 160948 
							
						 
						
							2012-07-30 05:10:05 +00:00  
				
					
						
							
							
								 
						
							
								60a58ac3e2 
								
							 
						 
						
							
							
								
								Remove check for f256mem from has256BitOperands as nothing depended on it and it isn't the only 256-bit memory type anyway.  
							
							... 
							
							
							
							llvm-svn: 160946 
							
						 
						
							2012-07-30 04:53:00 +00:00  
				
					
						
							
							
								 
						
							
								ac172e225d 
								
							 
						 
						
							
							
								
								Remove trailing whitespace.  
							
							... 
							
							
							
							llvm-svn: 160945 
							
						 
						
							2012-07-30 04:48:12 +00:00  
				
					
						
							
							
								 
						
							
								c7690ac7ac 
								
							 
						 
						
							
							
								
								Make l/q suffixes on AVX forms of scalar convert instructions consistent with their non-AVX forms.  
							
							... 
							
							
							
							llvm-svn: 160775 
							
						 
						
							2012-07-26 07:48:28 +00:00  
				
					
						
							
							
								 
						
							
								9208abd7c3 
								
							 
						 
						
							
							
								
								Move around some enum elements so that lastMRM corrects gets assigned 56, which  
							
							... 
							
							
							
							is one more that MRM_DF which is 55.  Previously, it held value 45, the same
as MRM_D0.
llvm-svn: 160465 
							
						 
						
							2012-07-18 23:04:22 +00:00  
				
					
						
							
							
								 
						
							
								01deb5f2df 
								
							 
						 
						
							
							
								
								Make x86 asm parser to check for xmm vs ymm for index register in gather instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas.  
							
							... 
							
							
							
							llvm-svn: 160420 
							
						 
						
							2012-07-18 04:11:12 +00:00  
				
					
						
							
							
								 
						
							
								f7755df776 
								
							 
						 
						
							
							
								
								Update GATHER instructions to support 2 read-write operands. Patch from myself and Manman Ren.  
							
							... 
							
							
							
							llvm-svn: 160110 
							
						 
						
							2012-07-12 06:52:41 +00:00  
				
					
						
							
							
								 
						
							
								a09820414a 
								
							 
						 
						
							
							
								
								X86: add GATHER intrinsics (AVX2) in LLVM  
							
							... 
							
							
							
							Support the following intrinsics:
llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd
llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256
llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps
llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256
Modified Disassembler to handle VSIB addressing mode.
llvm-svn: 159221 
							
						 
						
							2012-06-26 19:47:59 +00:00  
				
					
						
							
							
								 
						
							
								ef479ea854 
								
							 
						 
						
							
							
								
								Add intrinsics, code gen, assembler and disassembler support for the SSE4a extrq and insertq instructions.  
							
							... 
							
							
							
							This required light surgery on the assembler and disassembler
because the instructions use an uncommon encoding. They are
the only two instructions in x86 that use register operands
and two immediates.
llvm-svn: 157634 
							
						 
						
							2012-05-29 19:05:25 +00:00  
				
					
						
							
							
								 
						
							
								7629d63bc4 
								
							 
						 
						
							
							
								
								Add support for AVX enhanced comparison predicates. Patch from Kay Tiong Khoo.  
							
							... 
							
							
							
							llvm-svn: 153935 
							
						 
						
							2012-04-03 05:20:24 +00:00  
				
					
						
							
							
								 
						
							
								014e1cde5f 
								
							 
						 
						
							
							
								
								Fix the x86 disassembler to at least print the lock prefix if it is the first  
							
							... 
							
							
							
							prefix.  Added a FIXME to remind us this still does not work when it is not the
first prefix.
llvm-svn: 152414 
							
						 
						
							2012-03-09 17:52:49 +00:00  
				
					
						
							
							
								 
						
							
								6491c8020e 
								
							 
						 
						
							
							
								
								X86 disassembler support for jcxz, jecxz, and jrcxz. Fixes PR11643. Patch by Kay Tiong Khoo.  
							
							... 
							
							
							
							llvm-svn: 151510 
							
						 
						
							2012-02-27 01:54:29 +00:00  
				
					
						
							
							
								 
						
							
								66a3597a4a 
								
							 
						 
						
							
							
								
								Add vmfunc instruction to X86 assembler and disassembler.  
							
							... 
							
							
							
							llvm-svn: 150899 
							
						 
						
							2012-02-19 01:39:49 +00:00  
				
					
						
							
							
								 
						
							
								ed7aa46366 
								
							 
						 
						
							
							
								
								Add X86 assembler and disassembler support for AMD SVM instructions. Original patch by Kay Tiong Khoo. Few tweaks by me for code density and to reduce replication.  
							
							... 
							
							
							
							llvm-svn: 150873 
							
						 
						
							2012-02-18 08:19:49 +00:00  
				
					
						
							
							
								 
						
							
								2ba766ae84 
								
							 
						 
						
							
							
								
								Add disassembler support for VPERMIL2PD and VPERMIL2PS.  
							
							... 
							
							
							
							llvm-svn: 147368 
							
						 
						
							2011-12-30 06:23:39 +00:00  
				
					
						
							
							
								 
						
							
								03a0beda88 
								
							 
						 
						
							
							
								
								Add FMA4 instructions to disassembler.  
							
							... 
							
							
							
							llvm-svn: 147367 
							
						 
						
							2011-12-30 05:20:36 +00:00  
				
					
						
							
							
								 
						
							
								75ffc5fbb5 
								
							 
						 
						
							
							
								
								Remove some unnecessary filtering checks from X86 disassembler table build.  
							
							... 
							
							
							
							llvm-svn: 144986 
							
						 
						
							2011-11-19 05:48:20 +00:00  
				
					
						
							
							
								 
						
							
								f01f1b5cb9 
								
							 
						 
						
							
							
								
								More AVX2 instructions and their intrinsics.  
							
							... 
							
							
							
							llvm-svn: 143895 
							
						 
						
							2011-11-06 23:04:08 +00:00  
				
					
						
							
							
								 
						
							
								980d59832a 
								
							 
						 
						
							
							
								
								Add X86 RORX instruction  
							
							... 
							
							
							
							llvm-svn: 142741 
							
						 
						
							2011-10-23 07:34:00 +00:00  
				
					
						
							
							
								 
						
							
								96fa597828 
								
							 
						 
						
							
							
								
								Add X86 PEXTR and PDEP instructions.  
							
							... 
							
							
							
							llvm-svn: 142141 
							
						 
						
							2011-10-16 16:50:08 +00:00  
				
					
						
							
							
								 
						
							
								aea148c366 
								
							 
						 
						
							
							
								
								Add X86 BZHI instruction as well as BMI2 feature detection.  
							
							... 
							
							
							
							llvm-svn: 142122 
							
						 
						
							2011-10-16 07:55:05 +00:00  
				
					
						
							
							
								 
						
							
								0ae8d4d738 
								
							 
						 
						
							
							
								
								Add X86 INVPCID instruction. Add 32/64-bit predicates to INVEPT, INVVPID, VMREAD, and VMWRITE to remove hack from X86RecognizableInstr.  
							
							... 
							
							
							
							llvm-svn: 142117 
							
						 
						
							2011-10-16 07:05:40 +00:00  
				
					
						
							
							
								 
						
							
								25ea4e5ad3 
								
							 
						 
						
							
							
								
								Add X86 BEXTR instruction. This instruction uses VEX.vvvv to encode Operand 3 instead of Operand 2 so needs special casing in the disassembler and code emitter. Ultimately, should pass this information from tablegen  
							
							... 
							
							
							
							llvm-svn: 142105 
							
						 
						
							2011-10-16 03:51:13 +00:00  
				
					
						
							
							
								 
						
							
								27ad12539d 
								
							 
						 
						
							
							
								
								Add support for X86 blsr, blsmsk, and blsi instructions. Required extra work because these are the first VEX encoded instructions to use the reg field as an opcode extension.  
							
							... 
							
							
							
							llvm-svn: 142082 
							
						 
						
							2011-10-15 20:46:47 +00:00  
				
					
						
							
							
								 
						
							
								965de2c197 
								
							 
						 
						
							
							
								
								Add X86 ANDN instruction. Including instruction selection.  
							
							... 
							
							
							
							llvm-svn: 141947 
							
						 
						
							2011-10-14 07:06:56 +00:00  
				
					
						
							
							
								 
						
							
								a697852386 
								
							 
						 
						
							
							
								
								Fix disassembling of popcntw. Also remove some code that says it accounts for 64BIT_REXW_XD not existing, but it does exist.  
							
							... 
							
							
							
							llvm-svn: 141642 
							
						 
						
							2011-10-11 04:34:23 +00:00  
				
					
						
							
							
								 
						
							
								23eb468b1f 
								
							 
						 
						
							
							
								
								Fix assembling of xchg %eax, %eax to not use the NOP encoding of 0x90. This was done by creating a new register group that excludes AX registers. Fixes PR10345. Also added aliases for flipping the order of the operands of xchg <reg>, %eax.  
							
							... 
							
							
							
							llvm-svn: 141274 
							
						 
						
							2011-10-06 06:44:41 +00:00  
				
					
						
							
							
								 
						
							
								f18c896337 
								
							 
						 
						
							
							
								
								Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676.  
							
							... 
							
							
							
							llvm-svn: 141065 
							
						 
						
							2011-10-04 06:30:42 +00:00  
				
					
						
							
							
								 
						
							
								d07a59f288 
								
							 
						 
						
							
							
								
								Fix disassembling of INVEPT and INVVPID to take operands  
							
							... 
							
							
							
							llvm-svn: 140955 
							
						 
						
							2011-10-01 21:20:14 +00:00  
				
					
						
							
							
								 
						
							
								88cb33e0d4 
								
							 
						 
						
							
							
								
								Fix disassembler handling of CRC32 which is an odd instruction that uses 0xf2 as an opcode extension and allows the opsize prefix. This necessitated adding IC_XD_OPSIZE and IC_64BIT_XD_OPSIZE contexts. Unfortunately, this increases the size of the disassembler tables. Fixes PR10702.  
							
							... 
							
							
							
							llvm-svn: 140954 
							
						 
						
							2011-10-01 19:54:56 +00:00  
				
					
						
							
							
								 
						
							
								526adabe87 
								
							 
						 
						
							
							
								
								Don't allow 32-bit only instructions to be disassembled in 64-bit mode. Fixes part of PR10700.  
							
							... 
							
							
							
							llvm-svn: 140370 
							
						 
						
							2011-09-23 06:57:25 +00:00  
				
					
						
							
							
								 
						
							
								ee8157cb41 
								
							 
						 
						
							
							
								
								Fix mem type for VEX.128 form of VROUNDP*. Remove filter preventing VROUND from being recognized by disassembler.  
							
							... 
							
							
							
							llvm-svn: 139691 
							
						 
						
							2011-09-14 06:41:26 +00:00  
				
					
						
							
							
								 
						
							
								e98d8a5c84 
								
							 
						 
						
							
							
								
								Remove filter that was preventing MOVDQU/MOVDQA and their VEX forms from being disassembled. Also added encodings for the other register/register form of these instructions. Fixes PR10848.  
							
							... 
							
							
							
							llvm-svn: 139588 
							
						 
						
							2011-09-13 06:54:58 +00:00  
				
					
						
							
							
								 
						
							
								a88e356017 
								
							 
						 
						
							
							
								
								Fix disassembling of reverse register/register forms of ADD/SUB/XOR/OR/AND/SBB/ADC/CMP/MOV.  
							
							... 
							
							
							
							llvm-svn: 139485 
							
						 
						
							2011-09-11 21:41:45 +00:00  
				
					
						
							
							
								 
						
							
								a948cb9058 
								
							 
						 
						
							
							
								
								Fix disassembling of PAUSE instruction. Fixes PR10900. Also fixed NOP disassembling to ignore OpSize and REX.W.  
							
							... 
							
							
							
							llvm-svn: 139484 
							
						 
						
							2011-09-11 20:23:20 +00:00  
				
					
						
							
							
								 
						
							
								54e09b4799 
								
							 
						 
						
							
							
								
								Fix the disassembly of the X86 "crc32w %ax, %eax" instruction. Bug 10702.  
							
							... 
							
							
							
							llvm-svn: 139014 
							
						 
						
							2011-09-02 18:03:03 +00:00  
				
					
						
							
							
								 
						
							
								4f2fba1108 
								
							 
						 
						
							
							
								
								Add vvvv support to disassembling of instructions with MRMDestMem and MRMDestReg form. Needed to support mem dest form of vmaskmovps/d. Fixes PR10807.  
							
							... 
							
							
							
							llvm-svn: 138795 
							
						 
						
							2011-08-30 07:09:35 +00:00  
				
					
						
							
							
								 
						
							
								7e2489a7c9 
								
							 
						 
						
							
							
								
								Fix the disassembly of the X86 crc32 instruction.  Bug 10702 and rdar://8795217  
							
							... 
							
							
							
							llvm-svn: 138771 
							
						 
						
							2011-08-29 22:06:28 +00:00  
				
					
						
							
							
								 
						
							
								af8ee2cdee 
								
							 
						 
						
							
							
								
								Unconstify Inits  
							
							... 
							
							
							
							Remove const qualifiers from Init references, per Chris' request.
llvm-svn: 136531 
							
						 
						
							2011-07-29 22:43:06 +00:00  
				
					
						
							
							
								 
						
							
								1aa0e3e118 
								
							 
						 
						
							
							
								
								[AVX] Constify Inits  
							
							... 
							
							
							
							Make references to Inits const everywhere.  This is the final step
before making them unique.
llvm-svn: 136485 
							
						 
						
							2011-07-29 19:07:05 +00:00  
				
					
						
							
							
								 
						
							
								5ef6c453a6 
								
							 
						 
						
							
							
								
								Fix llvm-mc handing of x86 instructions that take 8-bit unsigned immediates.  
							
							... 
							
							
							
							llvm-mc gives an "invalid operand" error for instructions that take an unsigned
immediate which have the high bit set such as:
    pblendw $0xc5, %xmm2, %xmm1
llvm-mc treats all x86 immediates as signed values and range checks them.
A small number of x86 instructions use the imm8 field as a set of bits.
This change only changes those instructions and where the high bit is not
ignored.  The others remain unchanged.
llvm-svn: 136287 
							
						 
						
							2011-07-27 23:01:50 +00:00  
				
					
						
							
							
								 
						
							
								0318036c4d 
								
							 
						 
						
							
							
								
								Make the disassembler able to disassemble a bunch of instructions with names in the TableGen files containing "64" on x86-32.  This includes a bunch of x87 instructions, like fld, and a bunch of SSSE3 instructions on MMX registers like pshufb.  Part of PR8873.  
							
							... 
							
							
							
							llvm-svn: 135337 
							
						 
						
							2011-07-16 02:41:28 +00:00  
				
					
						
							
							
								 
						
							
								71520a867d 
								
							 
						 
						
							
							
								
								Revert r134921, 134917, 134908 and 134907. They're causing failures  
							
							... 
							
							
							
							in multiple buildbots.
llvm-svn: 134936 
							
						 
						
							2011-07-11 23:06:52 +00:00  
				
					
						
							
							
								 
						
							
								af973b4f36 
								
							 
						 
						
							
							
								
								[AVX] Make Inits Foldable  
							
							... 
							
							
							
							Manage Inits in a FoldingSet.  This provides several benefits:
- Memory for Inits is properly managed
- Duplicate Inits are folded into Flyweights, saving memory
- It enforces const-correctness, protecting against certain classes
  of bugs
The above benefits allow Inits to be used in more contexts, which in
turn provides more dynamism to TableGen.  This enhanced capability
will be used by the AVX code generator to a fold common patterns
together.
llvm-svn: 134907 
							
						 
						
							2011-07-11 18:25:51 +00:00  
				
					
						
							
							
								 
						
							
								fc4789da4a 
								
							 
						 
						
							
							
								
								Add support for the VIA PadLock instructions.  
							
							... 
							
							
							
							llvm-svn: 128826 
							
						 
						
							2011-04-04 16:58:13 +00:00  
				
					
						
							
							
								 
						
							
								c3fd523731 
								
							 
						 
						
							
							
								
								X86 table-generator and disassembler support for the AVX  
							
							... 
							
							
							
							instruction set.  This code adds support for the VEX prefix
and for the YMM registers accessible on AVX-enabled
architectures.  Instruction table support that enables AVX
instructions for the disassembler is in an upcoming patch.
llvm-svn: 127644 
							
						 
						
							2011-03-15 01:23:15 +00:00  
				
					
						
							
							
								 
						
							
								e39062199e 
								
							 
						 
						
							
							
								
								Implement xgetbv and xsetbv.  
							
							... 
							
							
							
							Patch by Jai Menon.
llvm-svn: 126165 
							
						 
						
							2011-02-22 00:35:18 +00:00  
				
					
						
							
							
								 
						
							
								578074b2f3 
								
							 
						 
						
							
							
								
								In Thumb2, direct branches can be encoded as either a "short" conditional branch with a null predicate, or  
							
							... 
							
							
							
							as a "long" direct branch.  While the mnemonics are the same, they encode the branch offset differently, and
the Darwin assembler appears to prefer the "long" form for direct branches.  Thus, in the name of bitwise
equivalence, provide encoding and fixup support for it.
llvm-svn: 121710 
							
						 
						
							2010-12-13 19:31:11 +00:00  
				
					
						
							
							
								 
						
							
								d8adec70f3 
								
							 
						 
						
							
							
								
								factor the operand list (and related fields/operations) out of  
							
							... 
							
							
							
							CodeGenInstruction into its own helper class.  No functionality change.
llvm-svn: 117893 
							
						 
						
							2010-11-01 04:03:32 +00:00  
				
					
						
							
							
								 
						
							
								5e7cb5fc27 
								
							 
						 
						
							
							
								
								Added the x86 instruction ud2b (2nd official undefined instruction).  
							
							... 
							
							
							
							llvm-svn: 117485 
							
						 
						
							2010-10-27 20:46:49 +00:00  
				
					
						
							
							
								 
						
							
								8d302b2e71 
								
							 
						 
						
							
							
								
								Fixed the disassembler to handle two new X86  
							
							... 
							
							
							
							instruction forms.  Now the ENTER instruction
disassembles correctly.
llvm-svn: 115573 
							
						 
						
							2010-10-04 22:45:51 +00:00  
				
					
						
							
							
								 
						
							
								dd224d2333 
								
							 
						 
						
							
							
								
								Massive rewrite of MMX:  
							
							... 
							
							
							
							The x86_mmx type is used for MMX intrinsics, parameters and
return values where these use MMX registers, and is also
supported in load, store, and bitcast.
Only the above operations generate MMX instructions, and optimizations
do not operate on or produce MMX intrinsics. 
MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into
smaller pieces.  Optimizations may occur on these forms and the
result casted back to x86_mmx, provided the result feeds into a
previous existing x86_mmx operation.
The point of all this is prevent optimizations from introducing
MMX operations, which is unsafe due to the EMMS problem.
llvm-svn: 115243 
							
						 
						
							2010-09-30 23:57:10 +00:00  
				
					
						
							
							
								 
						
							
								f60062fd55 
								
							 
						 
						
							
							
								
								add basic avx support to the disassembler, also teach it about ssmem/sdmem  
							
							... 
							
							
							
							operands.
With this done, we can remove the _Int suffixes from the round instructions
without the disassembler blowing up.  This allows the assembler to support
them, implementing rdar://8456376 - llvm-mc rejects 'roundss'
llvm-svn: 115019 
							
						 
						
							2010-09-29 02:57:56 +00:00  
				
					
						
							
							
								 
						
							
								605acfe533 
								
							 
						 
						
							
							
								
								Add patterns for MMX that use the new intrinsics.  
							
							... 
							
							
							
							Enable palignr intrinsic.
These may need adjustment for a new VT in due course.
llvm-svn: 113233 
							
						 
						
							2010-09-07 18:10:56 +00:00  
				
					
						
							
							
								 
						
							
								41b4a6b36a 
								
							 
						 
						
							
							
								
								Convert some tab stops into spaces.  
							
							... 
							
							
							
							llvm-svn: 108130 
							
						 
						
							2010-07-12 08:16:59 +00:00  
				
					
						
							
							
								 
						
							
								ac5881295c 
								
							 
						 
						
							
							
								
								Implement the major chunk of PR7195: support for 'callw'  
							
							... 
							
							
							
							in the integrated assembler.  Still some discussion to be
done.
llvm-svn: 107825 
							
						 
						
							2010-07-07 22:27:31 +00:00  
				
					
						
							
							
								 
						
							
								fd5458d4bd 
								
							 
						 
						
							
							
								
								More AVX instructions ({ADD,SUB,MUL,DIV}{SS,SD}rm)  
							
							... 
							
							
							
							Introduce the VEX_X field
llvm-svn: 105859 
							
						 
						
							2010-06-11 23:50:47 +00:00  
				
					
						
							
							
								 
						
							
								c2f87b7bb2 
								
							 
						 
						
							
							
								
								Reapply r105521, this time appending "LLU" to 64 bit  
							
							... 
							
							
							
							immediates to avoid breaking the build.
llvm-svn: 105652 
							
						 
						
							2010-06-08 22:51:23 +00:00  
				
					
						
							
							
								 
						
							
								fdd2614330 
								
							 
						 
						
							
							
								
								revert r105521, which is breaking the buildbots with stuff like this:  
							
							... 
							
							
							
							In file included from X86InstrInfo.cpp:16:
X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type
llvm-svn: 105524 
							
						 
						
							2010-06-05 04:17:30 +00:00  
				
					
						
							
							
								 
						
							
								594fa26317 
								
							 
						 
						
							
							
								
								Initial AVX support for some instructions. No patterns matched  
							
							... 
							
							
							
							yet, only assembly encoding support.
llvm-svn: 105521 
							
						 
						
							2010-06-05 03:53:24 +00:00  
				
					
						
							
							
								 
						
							
								5661c0c755 
								
							 
						 
						
							
							
								
								tblgen/Target: Add a isAsmParserOnly bit, and teach the disassembler to honor  
							
							... 
							
							
							
							it.
llvm-svn: 104270 
							
						 
						
							2010-05-20 20:20:32 +00:00  
				
					
						
							
							
								 
						
							
								e7e1cf9fbd 
								
							 
						 
						
							
							
								
								Eliminated the classification of control registers into %ecr_  
							
							... 
							
							
							
							and %rcr_, leaving just %cr_ which is what people expect.
Updated the disassembler to support this unified register set.
Added a testcase to verify that the registers continue to be
decoded correctly.
llvm-svn: 103196 
							
						 
						
							2010-05-06 20:59:00 +00:00  
				
					
						
							
							
								 
						
							
								1efe661b46 
								
							 
						 
						
							
							
								
								Fixed a bug where the disassembler would allow an immediate  
							
							... 
							
							
							
							argument that had to be between 0 and 7 to have any value,
firing an assert later in the AsmPrinter.  Now, the
disassembler rejects instructions with out-of-range values
for that immediate.
llvm-svn: 100694 
							
						 
						
							2010-04-07 21:42:19 +00:00  
				
					
						
							
							
								 
						
							
								44be5362d6 
								
							 
						 
						
							
							
								
								Check in tablegen changes to fix disassembler related failures caused by r98465.  
							
							... 
							
							
							
							llvm-svn: 98468 
							
						 
						
							2010-03-14 05:15:39 +00:00  
				
					
						
							
							
								 
						
							
								69c0226ba8 
								
							 
						 
						
							
							
								
								Changed the table generator so that the X86  
							
							... 
							
							
							
							disassembler never recognizes InitReg instructions.
llvm-svn: 97017 
							
						 
						
							2010-02-24 02:56:25 +00:00  
				
					
						
							
							
								 
						
							
								4d804d794f 
								
							 
						 
						
							
							
								
								Added the rdtscp instruction to the x86 instruction  
							
							... 
							
							
							
							tables.
llvm-svn: 96073 
							
						 
						
							2010-02-13 02:06:11 +00:00  
				
					
						
							
							
								 
						
							
								44232af55a 
								
							 
						 
						
							
							
								
								Fixed encodings for invlpg, invept, and invvpid.  
							
							... 
							
							
							
							llvm-svn: 96065 
							
						 
						
							2010-02-13 01:48:34 +00:00  
				
					
						
							
							
								 
						
							
								140caa7240 
								
							 
						 
						
							
							
								
								remove special cases for vmlaunch, vmresume, vmxoff, and swapgs  
							
							... 
							
							
							
							fix swapgs to be spelled right.
llvm-svn: 96058 
							
						 
						
							2010-02-13 00:41:14 +00:00  
				
					
						
							
							
								 
						
							
								064e926362 
								
							 
						 
						
							
							
								
								Remove special cases for [LM]FENCE, MONITOR and MWAIT from  
							
							... 
							
							
							
							encoder and decoder by using new MRM_ forms.
llvm-svn: 96048 
							
						 
						
							2010-02-12 23:54:57 +00:00  
				
					
						
							
							
								 
						
							
								dde9c12307 
								
							 
						 
						
							
							
								
								Reworked the Intel disassembler to support instructions  
							
							... 
							
							
							
							whose opcodes extend into the ModR/M field using the
Form field of the instruction rather than by special
casing each instruction.  Commented out the special
casing of VMCALL, which is the first instruction to use
this special form.  While I was in the neighborhood,
added a few comments for people modifying the Intel
disassembler. 
llvm-svn: 96043 
							
						 
						
							2010-02-12 23:39:46 +00:00  
				
					
						
							
							
								 
						
							
								f7477e599f 
								
							 
						 
						
							
							
								
								add a bunch of mod/rm encoding types for fixed mod/rm bytes.  
							
							... 
							
							
							
							This will work better for the disassembler for modeling things
like lfence/monitor/vmcall etc.
llvm-svn: 95960 
							
						 
						
							2010-02-12 02:06:33 +00:00  
				
					
						
							
							
								 
						
							
								a9dfb1bc07 
								
							 
						 
						
							
							
								
								Introduce a new CodeGenInstruction::ConstraintInfo class  
							
							... 
							
							
							
							for representing constraint info semantically instead of
as a c expression that will be blatted out to the .inc
file.  Fix X86RecognizableInstr to use this instead of
parsing C code :).
llvm-svn: 95753 
							
						 
						
							2010-02-10 01:45:28 +00:00  
				
					
						
							
							
								 
						
							
								36eab80875 
								
							 
						 
						
							
							
								
								Fixes to the X86 disassembler:  
							
							... 
							
							
							
							Made LEA memory operands emit only 4 MCInst operands.
Made the scale operand equal 1 for instructions that have no
SIB byte.
llvm-svn: 91919 
							
						 
						
							2009-12-22 21:12:55 +00:00  
				
					
						
							
							
								 
						
							
								f008ea5fa0 
								
							 
						 
						
							
							
								
								Add missing newlines at EOF (for clang++).  
							
							... 
							
							
							
							llvm-svn: 91756 
							
						 
						
							2009-12-19 04:16:48 +00:00  
				
					
						
							
							
								 
						
							
								04cc307edd 
								
							 
						 
						
							
							
								
								Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit  
							
							... 
							
							
							
							incarnations), integrated into the MC framework.  
The disassembler is table-driven, using a custom TableGen backend to 
generate hierarchical tables optimized for fast decode.  The disassembler 
consumes MemoryObjects and produces arrays of MCInsts, adhering to the 
abstract base class MCDisassembler (llvm/MC/MCDisassembler.h).
The disassembler is documented in detail in
- lib/Target/X86/Disassembler/X86Disassembler.cpp (disassembler runtime)
- utils/TableGen/DisassemblerEmitter.cpp (table emitter)
You can test the disassembler by running llvm-mc -disassemble for i386
or x86_64 targets.  Please let me know if you encounter any problems
with it.
llvm-svn: 91749 
							
						 
						
							2009-12-19 02:59:52 +00:00