swar-8b-builtin_swar.c 527 Bytes
//#include <stdint.h>

typedef unsigned int  uint32_t;
typedef unsigned long uint64_t;

typedef uint32_t s4x8b __attribute__((subword(8)));
typedef uint64_t s8x8b __attribute__((subword(8)));

volatile uint32_t uwa, uwb, uwz;
volatile uint64_t uda, udb, udz;
volatile s4x8b s4a, s4b, s4z;
volatile s8x8b s8a, s8b, s8z;

int main(void)
{
  uwz = __builtin_swar(uwa, uwb);
  udz = __builtin_swar(uda, udb);
  s4z = __builtin_swar(s4a, s4b);
  s8z = __builtin_swar(s8a, s8b);

  s4z = s4a + s4b;
  s8z = s8a + s8b;

  return 0;
}