[X86] AVX512: Simplify logic in isCDisp8
authorAdam Nemet <anemet@apple.com>
Fri, 11 Jul 2014 05:23:12 +0000 (05:23 +0000)
committerAdam Nemet <anemet@apple.com>
Fri, 11 Jul 2014 05:23:12 +0000 (05:23 +0000)
It was computing the VL/n case as:
  MemObjSize = VectorByteSize / ElemByteSize / Divider * ElemByteSize

ElemByteSize not only falls out but VectorByteSize/Divider now actually
matches the definition of VL/n.

Also some formatting fixes.

llvm-svn: 212794

llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp

index 2152b21..dbd357c 100644 (file)
@@ -185,7 +185,8 @@ static bool isDisp8(int Value) {
 /// isCDisp8 - Return true if this signed displacement fits in a 8-bit
 /// compressed dispacement field.
 static bool isCDisp8(uint64_t TSFlags, int Value, int& CValue) {
-  assert((TSFlags & X86II::EncodingMask) >> X86II::EncodingShift == X86II::EVEX &&
+  assert(((TSFlags & X86II::EncodingMask) >>
+          X86II::EncodingShift == X86II::EVEX) &&
          "Compressed 8-bit displacement is only valid for EVEX inst.");
 
   unsigned CD8E = (TSFlags >> X86II::EVEX_CD8EShift) & X86II::EVEX_CD8EMask;
@@ -195,7 +196,7 @@ static bool isCDisp8(uint64_t TSFlags, int Value, int& CValue) {
     CValue = Value;
     return isDisp8(Value);
   }
-  
+
   unsigned MemObjSize = 1U << CD8E;
   if (CD8V & 4) {
     // Fixed vector length
@@ -208,10 +209,9 @@ static bool isCDisp8(uint64_t TSFlags, int Value, int& CValue) {
       EVEX_LL += ((TSFlags >> X86II::VEXShift) & X86II::EVEX_L2) ? 2 : 0;
       assert(EVEX_LL < 3 && "");
 
-      unsigned NumElems = (1U << (EVEX_LL + 4)) / MemObjSize;
-      NumElems /= 1U << (CD8V & 0x3);
-
-      MemObjSize *= NumElems;
+      unsigned VectorByteSize = 1U << (EVEX_LL + 4);
+      unsigned Divider = 1U << (CD8V & 0x3);
+      MemObjSize = VectorByteSize / Divider;
     }
   }