cpu_mvi.h File Reference


Detailed Description

Contains code macros for the processor MVI (multimedia) instructions.

Id
cpu_mvi.h,v 1.5 2008/03/14 15:30:52 iamcamiel Exp

X-1.4 Camiel Vanderhoeven 14-MAR-2008 1. More meaningful exceptions replace throwing (int) 1. 2. U64 macro replaces X64 macro.

X-1.3 Camiel Vanderhoeven 11-APR-2007 Moved all data that should be saved to a state file to a structure "state".

X-1.2 Camiel Vanderhoeven 30-MAR-2007 Added old changelog comments.

X-1.1 Camiel Vanderhoeven 18-FEB-2007 File created. Contains code previously found in AlphaCPU.h

Author:
Camiel Vanderhoeven (camiel@camicom.com / http://www.camicom.com)

Definition in file cpu_mvi.h.

Go to the source code of this file.

Defines

#define DO_MINUB8
#define DO_MINSB8
#define DO_MINUW4
#define DO_MINSW4
#define DO_MAXUB8
#define DO_MAXSB8
#define DO_MAXUW4
#define DO_MAXSW4
#define DO_PERR
#define DO_PKLB
#define DO_PKWB
#define DO_UNPKBL
#define DO_UNPKBW


Define Documentation

#define DO_MAXSB8

Value:

temp_64 = 0;                                                  \
  temp_64_1 = state.r[REG_1];                                                   \
  temp_64_2 = V_2;                                                              \
  for(i = 0; i < 64; i += 8)                                                    \
  {                                                                             \
    if((s8) ((temp_64_1 >> i) & X64_BYTE) > (s8) ((temp_64_2 >> i) & X64_BYTE)) \
      temp_64 |= (((temp_64_1 >> i) & X64_BYTE) << i);                          \
    else                                                                        \
      temp_64 |= (((temp_64_2 >> i) & X64_BYTE) << i);                          \
  }                                                                             \
  state.r[REG_3] = temp_64;

Definition at line 108 of file cpu_mvi.h.

#define DO_MAXSW4

Value:

temp_64 = 0;                                                    \
  temp_64_1 = state.r[REG_1];                                                     \
  temp_64_2 = V_2;                                                                \
  for(i = 0; i < 64; i += 16)                                                     \
  {                                                                               \
    if((s16) ((temp_64_1 >> i) & X64_WORD) > (s16) ((temp_64_2 >> i) & X64_WORD)) \
      temp_64 |= (((temp_64_1 >> i) & X64_WORD) << i);                            \
    else                                                                          \
      temp_64 |= (((temp_64_2 >> i) & X64_WORD) << i);                            \
  }                                                                               \
  state.r[REG_3] = temp_64;

Definition at line 132 of file cpu_mvi.h.

#define DO_MAXUB8

Value:

temp_64 = 0;                                                  \
  temp_64_1 = state.r[REG_1];                                                   \
  temp_64_2 = V_2;                                                              \
  for(i = 0; i < 64; i += 8)                                                    \
  {                                                                             \
    if((u8) ((temp_64_1 >> i) & X64_BYTE) > (u8) ((temp_64_2 >> i) & X64_BYTE)) \
      temp_64 |= (((temp_64_1 >> i) & X64_BYTE) << i);                          \
    else                                                                        \
      temp_64 |= (((temp_64_2 >> i) & X64_BYTE) << i);                          \
  }                                                                             \
  state.r[REG_3] = temp_64;

Definition at line 96 of file cpu_mvi.h.

#define DO_MAXUW4

Value:

temp_64 = 0;                                                    \
  temp_64_1 = state.r[REG_1];                                                     \
  temp_64_2 = V_2;                                                                \
  for(i = 0; i < 64; i += 16)                                                     \
  {                                                                               \
    if((u16) ((temp_64_1 >> i) & X64_WORD) > (u16) ((temp_64_2 >> i) & X64_WORD)) \
      temp_64 |= (((temp_64_1 >> i) & X64_WORD) << i);                            \
    else                                                                          \
      temp_64 |= (((temp_64_2 >> i) & X64_WORD) << i);                            \
  }                                                                               \
  state.r[REG_3] = temp_64;

Definition at line 120 of file cpu_mvi.h.

#define DO_MINSB8

Value:

temp_64 = 0;                                                  \
  temp_64_1 = state.r[REG_1];                                                   \
  temp_64_2 = V_2;                                                              \
  for(i = 0; i < 64; i += 8)                                                    \
  {                                                                             \
    if((s8) ((temp_64_1 >> i) & X64_BYTE) > (s8) ((temp_64_2 >> i) & X64_BYTE)) \
      temp_64 |= (((temp_64_2 >> i) & X64_BYTE) << i);                          \
    else                                                                        \
      temp_64 |= (((temp_64_1 >> i) & X64_BYTE) << i);                          \
  }                                                                             \
  state.r[REG_3] = temp_64;

Definition at line 60 of file cpu_mvi.h.

#define DO_MINSW4

Value:

temp_64 = 0;                                                    \
  temp_64_1 = state.r[REG_1];                                                     \
  temp_64_2 = V_2;                                                                \
  for(i = 0; i < 64; i += 16)                                                     \
  {                                                                               \
    if((s16) ((temp_64_1 >> i) & X64_WORD) > (s16) ((temp_64_2 >> i) & X64_WORD)) \
      temp_64 |= (((temp_64_2 >> i) & X64_WORD) << i);                            \
    else                                                                          \
      temp_64 |= (((temp_64_1 >> i) & X64_WORD) << i);                            \
  }                                                                               \
  state.r[REG_3] = temp_64;

Definition at line 84 of file cpu_mvi.h.

#define DO_MINUB8

Value:

temp_64 = 0;                                                  \
  temp_64_1 = state.r[REG_1];                                                   \
  temp_64_2 = V_2;                                                              \
  for(i = 0; i < 64; i += 8)                                                    \
  {                                                                             \
    if((u8) ((temp_64_1 >> i) & X64_BYTE) > (u8) ((temp_64_2 >> i) & X64_BYTE)) \
      temp_64 |= (((temp_64_2 >> i) & X64_BYTE) << i);                          \
    else                                                                        \
      temp_64 |= (((temp_64_1 >> i) & X64_BYTE) << i);                          \
  }                                                                             \
  state.r[REG_3] = temp_64;

Definition at line 48 of file cpu_mvi.h.

#define DO_MINUW4

Value:

temp_64 = 0;                                                    \
  temp_64_1 = state.r[REG_1];                                                     \
  temp_64_2 = V_2;                                                                \
  for(i = 0; i < 64; i += 16)                                                     \
  {                                                                               \
    if((u16) ((temp_64_1 >> i) & X64_WORD) > (u16) ((temp_64_2 >> i) & X64_WORD)) \
      temp_64 |= (((temp_64_2 >> i) & X64_WORD) << i);                            \
    else                                                                          \
      temp_64 |= (((temp_64_1 >> i) & X64_WORD) << i);                            \
  }                                                                               \
  state.r[REG_3] = temp_64;

Definition at line 72 of file cpu_mvi.h.

#define DO_PERR

Value:

temp_64 = 0;                                                  \
  temp_64_1 = state.r[REG_1];                                                   \
  temp_64_2 = V_2;                                                              \
  for(i = 0; i < 64; i += 8)                                                    \
  {                                                                             \
    if((s8) ((temp_64_1 >> i) & X64_BYTE) > (s8) ((temp_64_2 >> i) & X64_BYTE)) \
      temp_64 |=                                                                \
        (                                                                       \
          (u64)                                                                 \
            (                                                                   \
              (s8) ((temp_64_1 >> i) & X64_BYTE) - (s8)                         \
                ((temp_64_2 >> i) & X64_BYTE)                                   \
            ) <<                                                                \
          i                                                                     \
        );                                                                      \
    else                                                                        \
      temp_64 |=                                                                \
        (                                                                       \
          (u64)                                                                 \
            (                                                                   \
              (s8) ((temp_64_2 >> i) & X64_BYTE) - (s8)                         \
                ((temp_64_1 >> i) & X64_BYTE)                                   \
            ) <<                                                                \
          i                                                                     \
        );                                                                      \
  }                                                                             \
  state.r[REG_3] = temp_64;

Definition at line 144 of file cpu_mvi.h.

#define DO_PKLB

Value:

temp_64_2 = V_2; \
  state.r[REG_3] = (temp_64_2 & U64(0x00000000000000ff)) | ((temp_64_2 & U64(0x000000ff00000000)) >> 24);

Definition at line 172 of file cpu_mvi.h.

#define DO_PKWB

Value:

temp_64_2 = V_2;                         \
  state.r[REG_3] = (temp_64_2 & U64(0x00000000000000ff)) | \
    ((temp_64_2 & U64(0x0000000000ff0000)) >> 8) |         \
      ((temp_64_2 & U64(0x000000ff00000000)) >> 16) |      \
        ((temp_64_2 & U64(0x00ff000000000000)) >> 24);

Definition at line 175 of file cpu_mvi.h.

#define DO_UNPKBL

Value:

temp_64_2 = V_2; \
  state.r[REG_3] = (temp_64_2 & U64(0x000000ff)) | ((temp_64_2 & U64(0x0000ff00)) << 24);

Definition at line 181 of file cpu_mvi.h.

#define DO_UNPKBW

Value:

temp_64_2 = V_2;                 \
  state.r[REG_3] = (temp_64_2 & U64(0x000000ff)) | \
    (                                              \
      (temp_64_2 & U64(0x0000ff00)) <<             \
      8                                            \
    ) |                                            \
        ((temp_64_2 & U64(0x00ff0000)) << 16) |    \
        ((temp_64_2 & U64(0xff000000)) << 24);

Definition at line 184 of file cpu_mvi.h.


SourceForge.net Logo
Project space on SourceForge.net