swar-c99-6.5.3-sizeof.c 1.65 KB
/* -----------------------------------------------------------------------------
 *  Copyright (C) 2018-2020 daiteq s.r.o.                http://www.daiteq.com
 *
 *  This program is distributed WITHOUT ANY WARRANTY; without even
 *  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 *  PURPOSE.
 *
 * -----------------------------------------------------------------------------
 *  Filename    : swar-c99-6.5.3-sizeof.c
 *  Authors     : Roman Bartosinski
 *  Description : simple test of clang/LLVM compiler with SWAR extension
 *  Release     :
 *  Version     :
 *  Date        :
 * -----------------------------------------------------------------------------
 */

//A: --has-swar
//C: -daiteq-swar-enable

#define SWAR_USE_UNSIGNED_TYPES
#define SWAR_USE_SIGNED_TYPES
#include "swar-c99.h"

su10x3b pole[17];

int main(void)
{
  int sz = sizeof(su32x1b);
  sz += sizeof(su16x2b);
  sz += sizeof(su10x3b);
  sz += sizeof(su8x4b);
  sz += sizeof(su4x8b);
  sz += sizeof(su2x16b);

  sz += sizeof(ss32x1b);
  sz += sizeof(ss16x2b);
  sz += sizeof(ss10x3b);
  sz += sizeof(ss8x4b);
  sz += sizeof(ss4x8b);
  sz += sizeof(ss2x16b);


  int sesz = sizeofswar(su32x1b);
  sesz += sizeofswar(su16x2b);
  sesz += sizeofswar(su10x3b);
  sesz += sizeofswar(su8x4b);
  sesz += sizeofswar(su4x8b);
  sesz += sizeofswar(su2x16b);

  sesz += sizeofswar(ss32x1b);
  sesz += sizeofswar(ss16x2b);
  sesz += sizeofswar(ss10x3b);
  sesz += sizeofswar(ss8x4b);
  sesz += sizeofswar(ss4x8b);
  sesz += sizeofswar(ss2x16b);

  int tsz = sizeof(pole);
  tsz += sizeofswar(pole);
  
  tsz += sizeofswar(int);
  tsz += sizeofswar(short);
  tsz += sizeofswar(char);
  
  return sz+sesz+tsz;
}