<div dir="ltr">They're relative to VEXShift to keep the values fitting in an unsigned so it can be an enum. Perhaps with strongly typed enums in c++11 that can be fixed now.</div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Mon, Jul 14, 2014 at 4:18 PM, Adam Nemet <span dir="ltr"><<a href="mailto:anemet@apple.com" target="_blank">anemet@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: anemet<br>
Date: Mon Jul 14 18:18:39 2014<br>
New Revision: 213011<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=213011&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=213011&view=rev</a><br>
Log:<br>
[X86] Specify all TSFlags bit-offsets symbolically<br>
<br>
No functional change.<br>
<br>
The offsets for the other bitfields are specified symbolically.  I need to<br>
increase the size for one of the earlier fields which is easier after this<br>
cleanup.<br>
<br>
Why these bits are relative to VEXShift is a bit strange but that is for<br>
another cleanup.<br>
<br>
I made sure that the values for the enums are unchanged after this change.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h<br>
<br>
Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h?rev=213011&r1=213010&r2=213011&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h?rev=213011&r1=213010&r2=213011&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h (original)<br>
+++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h Mon Jul 14 18:18:39 2014<br>
@@ -534,14 +534,17 @@ namespace X86II {<br>
     /// storing a classifier in the imm8 field.  To simplify our implementation,<br>
     /// we handle this by storeing the classifier in the opcode field and using<br>
     /// this flag to indicate that the encoder should do the wacky 3DNow! thing.<br>
-    Has3DNow0F0FOpcode = 1U << 15,<br>
+    Has3DNow0F0FOpcodeShift = EVEX_CD8VShift + 3,<br>
+    Has3DNow0F0FOpcode = 1U << (Has3DNow0F0FOpcodeShift - VEXShift),<br>
<br>
     /// MemOp4 - Used to indicate swapping of operand 3 and 4 to be encoded in<br>
     /// ModRM or I8IMM. This is used for FMA4 and XOP instructions.<br>
-    MemOp4 = 1U << 16,<br>
+    MemOp4Shift = Has3DNow0F0FOpcodeShift + 1,<br>
+    MemOp4 = 1U << (MemOp4Shift - VEXShift),<br>
<br>
     /// Explicitly specified rounding control<br>
-    EVEX_RC = 1U << 17<br>
+    EVEX_RCShift = MemOp4Shift + 1,<br>
+    EVEX_RC = 1U << (EVEX_RCShift - VEXShift)<br>
   };<br>
<br>
   // getBaseOpcodeFor - This function returns the "base" X86 opcode for the<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>~Craig
</div>