It just seemed weird to have two different ways of specifying the same thing as some instructions couldn't be handled by the automatic code and required the explicit tag. It's no more error prone than the other VEX tags. But I'll go ahead and add a check in the disassembler table builder. Best to do it there since it sees all instructions.<span></span><div>
<br>On Wednesday, September 19, 2012, Jan Sjodin  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:10pt;font-family:arial,helvetica,sans-serif">
Are we just trying to save time during emission or is there another reason for making something manual that used to be automatic? It is definitely more error prone (as your commit already indicates). Would it make sense to keep the code for DEBUG, so that it can assert if there is an inconsistency.<br>
<br>- Jan<br><div><span> <br></span></div><div><br><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;margin-top:5px;padding-left:5px">  <div style="font-family:arial,helvetica,sans-serif;font-size:10pt">
 <div style="font-family:times new roman,new york,times,serif;font-size:12pt"> <div dir="ltr"> <font face="Arial"> <hr size="1">  <b><span style="font-weight:bold">From:</span></b> Craig Topper <<a href="javascript:_e({}, 'cvml', 'craig.topper@gmail.com');" target="_blank">craig.topper@gmail.com</a>><br>
 <b><span style="font-weight:bold">To:</span></b>
 <a href="javascript:_e({}, 'cvml', 'llvm-commits@cs.uiuc.edu');" target="_blank">llvm-commits@cs.uiuc.edu</a> <br> <b><span style="font-weight:bold">Sent:</span></b> Wednesday, September 19, 2012 2:37 AM<br>
 <b><span style="font-weight:bold">Subject:</span></b> [llvm-commits] [llvm] r164204 - in /llvm/trunk: lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp lib/Target/X86/X86CodeEmitter.cpp lib/Target/X86/X86InstrSSE.td utils/TableGen/X86RecognizableInstr.cpp utils/TableGen/X86RecognizableInstr.h<br>
 </font> </div> <br>
Author: ctopper<br>Date: Wed Sep 19 01:37:45 2012<br>New Revision: 164204<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=164204&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=164204&view=rev</a><br>
Log:<br>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.<br><br>Modified:<br>    llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp<br>
    llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp<br>    llvm/trunk/lib/Target/X86/X86InstrSSE.td<br>    llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp<br>    llvm/trunk/utils/TableGen/X86RecognizableInstr.h<br><br>Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp<br>
URL:
 <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp?rev=164204&r1=164203&r2=164204&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp?rev=164204&r1=164203&r2=164204&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp (original)<br>+++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp Wed Sep 19 01:37:45 2012<br>
@@ -560,15 +560,6 @@<br>   }<br> <br> <br>-  // Set the vector length to 256-bit if YMM0-YMM15 is used<br>-  for (unsigned i = 0; i != MI.getNumOperands(); ++i) {<br>-    if (!MI.getOperand(i).isReg())<br>-      continue;<br>
-    unsigned SrcReg = MI.getOperand(i).getReg();<br>-    if (SrcReg >= X86::YMM0 && SrcReg <= X86::YMM15)<br>-      VEX_L = 1;<br>-  }<br>-<br>   // Classify VEX_B, VEX_4V, VEX_R, VEX_X<br>   unsigned NumOps =
 Desc.getNumOperands();<br>   unsigned CurOp = 0;<br><br>Modified: llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp?rev=164204&r1=164203&r2=164204&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp?rev=164204&r1=164203&r2=164204&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp (original)<br>+++ llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp Wed Sep 19 01:37:45 2012<br>
@@ -921,17 +921,6 @@<br>   }<br> <br> <br>-  // Set the vector length to 256-bit if YMM0-YMM15 is used<br>-  for (unsigned i = 0; i != MI.getNumOperands(); ++i) {<br>-    if (!MI.getOperand(i).isReg())<br>-      continue;<br>
-    if (MI.getOperand(i).isImplicit())<br>-      continue;<br>-    unsigned SrcReg = MI.getOperand(i).getReg();<br>-    if (SrcReg >= X86::YMM0 && SrcReg <=
 X86::YMM15)<br>-      VEX_L = 1;<br>-  }<br>-<br>   // Classify VEX_B, VEX_4V, VEX_R, VEX_X<br>   unsigned NumOps = Desc->getNumOperands();<br>   unsigned CurOp = 0;<br><br>Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=164204&r1=164203&r2=164204&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=164204&r1=164203&r2=164204&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)<br>+++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Wed Sep 19 01:37:45 2012<br>@@ -2614,11 +2614,11 @@<br>
              OpSize, VEX;<br>   def VMOVMSKPSYr64r : PI<0x50, MRMSrcReg, (outs GR64:$dst), (ins VR256:$src),<br>              "movmskps\t{$src, $dst|$dst, $src}", [], IIC_SSE_MOVMSK,<br>-            
 SSEPackedSingle>, TB, VEX;<br>+             SSEPackedSingle>, TB, VEX, VEX_L;<br>   def VMOVMSKPDYr64r : PI<0x50, MRMSrcReg, (outs GR64:$dst), (ins VR256:$src),<br>              "movmskpd\t{$src, $dst|$dst, $src}", [], IIC_SSE_MOVMSK,<br>
              SSEPackedDouble>, TB,<br>-             OpSize, VEX;<br>+             OpSize, VEX, VEX_L;<br> }<br> <br> defm MOVMSKPS : sse12_extr_sign_mask<VR128, int_x86_sse_movmsk_ps, "movmskps",<br><br>Modified: llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp?rev=164204&r1=164203&r2=164204&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp?rev=164204&r1=164203&r2=164204&view=diff</a><br>
==============================================================================<br>---
 llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp (original)<br></div> </div> </blockquote></div>   </div></div></blockquote></div><br><br>-- <br>~Craig<br>