# pspgu.h File Reference

`#include <psptypes.h>`
`#include <pspge.h>`

Include dependency graph for pspgu.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Defines

#define | GU_FALSE (0)
#define | GU_TRUE (1)
#define | GU_POINTS (0)
#define | GU_LINES (1)
#define | GU_LINE_STRIP (2)
#define | GU_TRIANGLES (3)
#define | GU_TRIANGLE_STRIP (4)
#define | GU_TRIANGLE_FAN (5)
#define | GU_SPRITES (6)
#define | GU_ALPHA_TEST (0)
#define | GU_DEPTH_TEST (1)
#define | GU_SCISSOR_TEST (2)
#define | GU_STENCIL_TEST (3)
#define | GU_BLEND (4)
#define | GU_CULL_FACE (5)
#define | GU_DITHER (6)
#define | GU_FOG (7)
#define | GU_CLIP_PLANES (8)
#define | GU_TEXTURE_2D (9)
#define | GU_LIGHTING (10)
#define | GU_LIGHT0 (11)
#define | GU_LIGHT1 (12)
#define | GU_LIGHT2 (13)
#define | GU_LIGHT3 (14)
#define | GU_UNKNOWN_15 (15)
#define | GU_UNKNOWN_16 (16)
#define | GU_COLOR_TEST (17)
#define | GU_COLOR_LOGIC_OP (18)
#define | GU_FACE_NORMAL_REVERSE (19)
#define | GU_PATCH_FACE (20)
#define | GU_FRAGMENT_2X (21)
#define | GU_PROJECTION (0)
#define | GU_VIEW (1)
#define | GU_MODEL (2)
#define | GU_TEXTURE (3)
#define | GU_TEXTURE_SHIFT(n) ((n)<<0)
#define | GU_TEXTURE_8BIT GU_TEXTURE_SHIFT(1)
#define | GU_TEXTURE_16BIT GU_TEXTURE_SHIFT(2)
#define | GU_TEXTURE_32BITF GU_TEXTURE_SHIFT(3)
#define | GU_TEXTURE_BITS GU_TEXTURE_SHIFT(3)
#define | GU_COLOR_SHIFT(n) ((n)<<2)
#define | GU_COLOR_RES1 GU_COLOR_SHIFT(1)
#define | GU_COLOR_RES2 GU_COLOR_SHIFT(2)
#define | GU_COLOR_RES3 GU_COLOR_SHIFT(3)
#define | GU_COLOR_5650 GU_COLOR_SHIFT(4)
#define | GU_COLOR_5551 GU_COLOR_SHIFT(5)
#define | GU_COLOR_4444 GU_COLOR_SHIFT(6)
#define | GU_COLOR_8888 GU_COLOR_SHIFT(7)
#define | GU_COLOR_BITS GU_COLOR_SHIFT(7)
#define | GU_NORMAL_SHIFT(n) ((n)<<5)
#define | GU_NORMAL_8BIT GU_NORMAL_SHIFT(1)
#define | GU_NORMAL_16BIT GU_NORMAL_SHIFT(2)
#define | GU_NORMAL_32BITF GU_NORMAL_SHIFT(3)
#define | GU_NORMAL_BITS GU_NORMAL_SHIFT(3)
#define | GU_VERTEX_SHIFT(n) ((n)<<7)
#define | GU_VERTEX_8BIT GU_VERTEX_SHIFT(1)
#define | GU_VERTEX_16BIT GU_VERTEX_SHIFT(2)
#define | GU_VERTEX_32BITF GU_VERTEX_SHIFT(3)
#define | GU_VERTEX_BITS GU_VERTEX_SHIFT(3)
#define | GU_WEIGHT_SHIFT(n) ((n)<<9)
#define | GU_WEIGHT_8BIT GU_WEIGHT_SHIFT(1)
#define | GU_WEIGHT_16BIT GU_WEIGHT_SHIFT(2)
#define | GU_WEIGHT_32BITF GU_WEIGHT_SHIFT(3)
#define | GU_WEIGHT_BITS GU_WEIGHT_SHIFT(3)
#define | GU_INDEX_SHIFT(n) ((n)<<11)
#define | GU_INDEX_8BIT GU_INDEX_SHIFT(1)
#define | GU_INDEX_16BIT GU_INDEX_SHIFT(2)
#define | GU_INDEX_BITS GU_INDEX_SHIFT(3)
#define | GU_WEIGHTS(n) ((((n)-1)&7)<<14)
#define | GU_WEIGHTS_BITS GU_WEIGHTS(8)
#define | GU_VERTICES(n) ((((n)-1)&7)<<18)
#define | GU_VERTICES_BITS GU_VERTICES(8)
#define | GU_TRANSFORM_SHIFT(n) ((n)<<23)
#define | GU_TRANSFORM_3D GU_TRANSFORM_SHIFT(0)
#define | GU_TRANSFORM_2D GU_TRANSFORM_SHIFT(1)
#define | GU_TRANSFORM_BITS GU_TRANSFORM_SHIFT(1)
#define | GU_PSM_5650 (0)
#define | GU_PSM_5551 (1)
#define | GU_PSM_4444 (2)
#define | GU_PSM_8888 (3)
#define | GU_PSM_T4 (4)
#define | GU_PSM_T8 (5)
#define | GU_PSM_T16 (6)
#define | GU_PSM_T32 (7)
#define | GU_FLAT (0)
#define | GU_SMOOTH (1)
#define | GU_CLEAR (0)
#define | GU_AND (1)
#define | GU_AND_REVERSE (2)
#define | GU_COPY (3)
#define | GU_AND_INVERTED (4)
#define | GU_NOOP (5)
#define | GU_XOR (6)
#define | GU_OR (7)
#define | GU_NOR (8)
#define | GU_EQUIV (9)
#define | GU_INVERTED (10)
#define | GU_OR_REVERSE (11)
#define | GU_COPY_INVERTED (12)
#define | GU_OR_INVERTED (13)
#define | GU_NAND (14)
#define | GU_SET (15)
#define | GU_NEAREST (0)
#define | GU_LINEAR (1)
#define | GU_NEAREST_MIPMAP_NEAREST (4)
#define | GU_LINEAR_MIPMAP_NEAREST (5)
#define | GU_NEAREST_MIPMAP_LINEAR (6)
#define | GU_LINEAR_MIPMAP_LINEAR (7)
#define | GU_TEXTURE_COORDS (0)
#define | GU_TEXTURE_MATRIX (1)
#define | GU_ENVIRONMENT_MAP (2)
#define | GU_POSITION (0)
#define | GU_UV (1)
#define | GU_NORMALIZED_NORMAL (2)
#define | GU_NORMAL (3)
#define | GU_REPEAT (0)
#define | GU_CLAMP (1)
#define | GU_CW (0)
#define | GU_CCW (1)
#define | GU_NEVER (0)
#define | GU_ALWAYS (1)
#define | GU_EQUAL (2)
#define | GU_NOTEQUAL (3)
#define | GU_LESS (4)
#define | GU_LEQUAL (5)
#define | GU_GREATER (6)
#define | GU_GEQUAL (7)
#define | GU_COLOR_BUFFER_BIT (1)
#define | GU_STENCIL_BUFFER_BIT (2)
#define | GU_DEPTH_BUFFER_BIT (4)
#define | GU_TFX_MODULATE (0)
#define | GU_TFX_DECAL (1)
#define | GU_TFX_BLEND (2)
#define | GU_TFX_REPLACE (3)
#define | GU_TFX_ADD (4)
#define | GU_TCC_RGB (0)
#define | GU_TCC_RGBA (1)
#define | GU_ADD (0)
#define | GU_SUBTRACT (1)
#define | GU_REVERSE_SUBTRACT (2)
#define | GU_MIN (3)
#define | GU_MAX (4)
#define | GU_ABS (5)
#define | GU_SRC_COLOR (0)
#define | GU_ONE_MINUS_SRC_COLOR (1)
#define | GU_SRC_ALPHA (2)
#define | GU_ONE_MINUS_SRC_ALPHA (3)
#define | GU_DST_COLOR (0)
#define | GU_ONE_MINUS_DST_COLOR (1)
#define | GU_DST_ALPHA (4)
#define | GU_ONE_MINUS_DST_ALPHA (5)
#define | GU_FIX (10)
#define | GU_KEEP (0)
#define | GU_ZERO (1)
#define | GU_REPLACE (2)
#define | GU_INVERT (3)
#define | GU_INCR (4)
#define | GU_DECR (5)
#define | GU_AMBIENT (1)
#define | GU_DIFFUSE (2)
#define | GU_SPECULAR (4)
#define | GU_AMBIENT_AND_DIFFUSE (GU_AMBIENT|GU_DIFFUSE)
#define | GU_DIFFUSE_AND_SPECULAR (GU_DIFFUSE|GU_SPECULAR)
#define | GU_UNKNOWN_LIGHT_COMPONENT (8)
#define | GU_DIRECTIONAL (0)
#define | GU_POINTLIGHT (1)
#define | GU_SPOTLIGHT (2)
#define | GU_DIRECT (0)
#define | GU_CALL (1)
#define | GU_SEND (2)
#define | GU_TAIL (0)
#define | GU_HEAD (1)

## Functions

void | sceGuDepthBuffer (void *zbp, int zbw)
| Set depth buffer parameters.
void | sceGuDispBuffer (int width, int height, void *dispbp, int dispbw)
| Set display buffer parameters.
void | sceGuDrawBuffer (int psm, void *fbp, int fbw)
| Set draw buffer parameters (and store in context for buffer-swap).
void | sceGuDrawBufferList (int psm, void *fbp, int fbw)
| Set draw buffer directly, not storing parameters in the context.
int | sceGuDisplay (int state)
| Turn display on or off.
void | sceGuDepthFunc (int function)
| Select which depth-test function to use.
void | sceGuDepthMask (int mask)
| Mask depth buffer writes.
void | sceGuDepthOffset (unsigned int offset)
void | sceGuDepthRange (int near, int far)
void | sceGuFog (float near, float far, unsigned int color)
void | sceGuInit (void)
| Initalize the GU system.
void | sceGuTerm (void)
| Shutdown the GU system.
void | sceGuBreak (int a0)
void | sceGuContinue (void)
void * | sceGuSetCallback (int index, void(*callback)(int))
void | sceGuSignal (int a0, int a1)
void | sceGuSendCommandf (int cmd, float argument)
| Send raw float-command to the GE.
void | sceGuSendCommandi (int cmd, int argument)
| Send raw command to the GE.
void * | sceGuGetMemory (int size)
| Allocate memory on the current display list for temporary storage.
void | sceGuStart (int cid, void *list)
| Start filling a new display-context.
int | sceGuFinish (void)
| Finish current display list and go back to the parent context.
void | sceGuCallList (const void *list)
| Call previously generated display-list.
void | sceGuCallMode (int mode)
int | sceGuCheckList (void)
| Check how large the current display-list is.
void | sceGuSendList (int mode, const void *list, PspGeContext *context)
| Send a list to the GE directly.
void * | sceGuSwapBuffers (void)
| Swap display and draw buffer.
int | sceGuSync (int mode, int a1)
| Wait until display list has finished executing.
void | sceGuDrawArray (int prim, int vtype, int count, const void *indices, const void *vertices)
| Draw array of vertices forming primitives.
void | sceGuBeginObject (int type, int a1, const void *indices, const void *vertices)
void | sceGuEndObject (void)
void | sceGuSetStatus (int state, int status)
| Enable or disable GE state.
int | sceGuGetStatus (int state)
| Get if state is currently enabled or disabled.
void | sceGuSetAllStatus (int status)
| Set the status on all 22 available states.
int | sceGuGetAllStatus (void)
| Query status on all 22 available states.
void | sceGuEnable (int state)
| Enable GE state.
void | sceGuDisable (int state)
| Disable GE state.
void | sceGuLight (int light, int type, int components, const ScePspFVector3 *position)
| Set light parameters.
void | sceGuLightAtt (int light, float atten0, float atten1, float atten2)
| Set light attenuation.
void | sceGuLightColor (int light, int component, unsigned int color)
| Set light color.
void | sceGuLightMode (int mode)
void | sceGuLightSpot (int index, const ScePspFVector3 *direction, float f12, float f13)
void | sceGuClear (int flags)
| Clear current drawbuffer.
void | sceGuClearColor (unsigned int color)
| Set the current clear-color.
void | sceGuClearDepth (unsigned int depth)
| Set the current clear-depth.
void | sceGuClearStencil (unsigned int stencil)
| Set the current stencil clear value.
void | sceGuPixelMask (unsigned int mask)
| Set mask for which bits of the pixels to write.
void | sceGuColor (unsigned int color)
| Set current primitive color.
void | sceGuColorFunc (int func, unsigned int color, unsigned int mask)
| Set the color test function.
void | sceGuColorMaterial (int components)
| Set which color components that the material will receive.
void | sceGuAlphaFunc (int func, int value, int mask)
| Set the alpha test parameters.
void | sceGuAmbient (unsigned int color)
void | sceGuAmbientColor (unsigned int color)
void | sceGuBlendFunc (int op, int src, int dest, unsigned int srcfix, unsigned int destfix)
| Set the blending-mode.
void | sceGuMaterial (int mode, int color)
void | sceGuModelColor (unsigned int a0, unsigned int a1, unsigned int a2, unsigned int a3)
void | sceGuStencilFunc (int func, int ref, int mask)
| Set stencil function and reference value for stencil testing.
void | sceGuStencilOp (int fail, int zfail, int zpass)
| Set the stencil test actions.
void | sceGuSpecular (float power)
| Set the specular power for the material.
void | sceGuFrontFace (int order)
| Set the current face-order (for culling).
void | sceGuLogicalOp (int op)
| Set color logical operation.
void | sceGuSetDither (const ScePspIMatrix4 *matrix)
| Set ordered pixel dither matrix.
void | sceGuShadeModel (int mode)
| Set how primitives are shaded.
void | sceGuCopyImage (int psm, int sx, int sy, int width, int height, int srcw, void *src, int dx, int dy, int destw, void *dest)
| Image transfer using the GE.
void | sceGuTexEnvColor (unsigned int color)
| Specify the texture environment color.
void | sceGuTexFilter (int min, int mag)
| Set how the texture is filtered.
void | sceGuTexFlush (void)
| Flush texture page-cache.
void | sceGuTexFunc (int tfx, int tcc)
| Set how textures are applied.
void | sceGuTexImage (int mipmap, int width, int height, int tbw, const void *tbp)
| Set current texturemap.
void | sceGuTexLevelMode (unsigned int a0, float f12)
void | sceGuTexMapMode (int mode, unsigned int a1, unsigned int a2)
| Set the texture-mapping mode.
void | sceGuTexMode (int tpsm, int maxmips, int a2, int swizzle)
| Set texture-mode parameters.
void | sceGuTexOffset (float u, float v)
void | sceGuTexProjMapMode (int mode)
| Set texture projection-map mode.
void | sceGuTexScale (float u, float v)
void | sceGuTexSlope (float slope)
void | sceGuTexSync ()
void | sceGuTexWrap (int u, int v)
| Set if the texture should repeat or clamp.
void | sceGuClutLoad (int num_blocks, const void *cbp)
| Upload CLUT (Color Lookup Table).
void | sceGuClutMode (unsigned int cpsm, unsigned int a1, unsigned int a2, unsigned int a3)
| Set current CLUT mode.
void | sceGuOffset (unsigned int x, unsigned int y)
| Set virtual coordinate offset.
void | sceGuScissor (int x, int y, int w, int h)
| Set what to scissor within the current viewport.
void | sceGuViewport (int cx, int cy, int width, int height)
| Set current viewport.
void | sceGuDrawBezier (int vertex_type, int a1, int a2, const void *indices, const void *vertices)
void | sceGuPatchDivide (unsigned int a0, unsigned int a1)
void | sceGuPatchFrontFace (unsigned int a0)
void | sceGuPatchPrim (unsigned int a0)
void | sceGuSetMatrix (int type, const ScePspFMatrix4 *matrix)
| Set transform matrices.
void | sceGuBoneMatrix (unsigned int index, const ScePspFMatrix4 *matrix)
| Specify skinning matrix entry.
void | sceGuMorphWeight (int index, float weight)
| Specify morph weight entry.
void | sceGuSpriteMode (unsigned int a0, unsigned int a1, unsigned int a2, unsigned int a3)

## Define Documentation

#define GU_ABS (5)

#define GU_ADD (0)

#define GU_ALPHA_TEST (0)

#define GU_ALWAYS (1)

#define GU_AMBIENT (1)

#define GU_AMBIENT_AND_DIFFUSE (GU_AMBIENT|GU_DIFFUSE)

#define GU_AND (1)

#define GU_AND_INVERTED (4)

#define GU_AND_REVERSE (2)

#define GU_BLEND (4)

#define GU_CALL (1)

#define GU_CCW (1)

#define GU_CLAMP (1)

#define GU_CLEAR (0)

#define GU_CLIP_PLANES (8)

#define GU_COLOR_4444 GU_COLOR_SHIFT(6)

#define GU_COLOR_5551 GU_COLOR_SHIFT(5)

#define GU_COLOR_5650 GU_COLOR_SHIFT(4)

#define GU_COLOR_8888 GU_COLOR_SHIFT(7)

#define GU_COLOR_BITS GU_COLOR_SHIFT(7)

#define GU_COLOR_BUFFER_BIT (1)

#define GU_COLOR_LOGIC_OP (18)

#define GU_COLOR_RES1 GU_COLOR_SHIFT(1)

#define GU_COLOR_RES2 GU_COLOR_SHIFT(2)

#define GU_COLOR_RES3 GU_COLOR_SHIFT(3)

#define GU_COLOR_SHIFT | ( | n |  | ) | ((n)<<2)

#define GU_COLOR_TEST (17)

#define GU_COPY (3)

#define GU_COPY_INVERTED (12)

#define GU_CULL_FACE (5)

#define GU_CW (0)

#define GU_DECR (5)

#define GU_DEPTH_BUFFER_BIT (4)

#define GU_DEPTH_TEST (1)

#define GU_DIFFUSE (2)

#define GU_DIFFUSE_AND_SPECULAR (GU_DIFFUSE|GU_SPECULAR)

#define GU_DIRECT (0)

#define GU_DIRECTIONAL (0)

#define GU_DITHER (6)

#define GU_DST_ALPHA (4)

#define GU_DST_COLOR (0)

#define GU_ENVIRONMENT_MAP (2)

#define GU_EQUAL (2)

#define GU_EQUIV (9)

#define GU_FACE_NORMAL_REVERSE (19)

#define GU_FALSE (0)

#define GU_FIX (10)

#define GU_FLAT (0)

#define GU_FOG (7)

#define GU_FRAGMENT_2X (21)

#define GU_GEQUAL (7)

#define GU_GREATER (6)

#define GU_HEAD (1)

#define GU_INCR (4)

#define GU_INDEX_16BIT GU_INDEX_SHIFT(2)

#define GU_INDEX_8BIT GU_INDEX_SHIFT(1)

#define GU_INDEX_BITS GU_INDEX_SHIFT(3)

#define GU_INDEX_SHIFT | ( | n |  | ) | ((n)<<11)

#define GU_INVERT (3)

#define GU_INVERTED (10)

#define GU_KEEP (0)

#define GU_LEQUAL (5)

#define GU_LESS (4)

#define GU_LIGHT0 (11)

#define GU_LIGHT1 (12)

#define GU_LIGHT2 (13)

#define GU_LIGHT3 (14)

#define GU_LIGHTING (10)

#define GU_LINE_STRIP (2)

#define GU_LINEAR (1)

#define GU_LINEAR_MIPMAP_LINEAR (7)

#define GU_LINEAR_MIPMAP_NEAREST (5)

#define GU_LINES (1)

#define GU_MAX (4)

#define GU_MIN (3)

#define GU_MODEL (2)

#define GU_NAND (14)

#define GU_NEAREST (0)

#define GU_NEAREST_MIPMAP_LINEAR (6)

#define GU_NEAREST_MIPMAP_NEAREST (4)

#define GU_NEVER (0)

#define GU_NOOP (5)

#define GU_NOR (8)

#define GU_NORMAL (3)

#define GU_NORMAL_16BIT GU_NORMAL_SHIFT(2)

#define GU_NORMAL_32BITF GU_NORMAL_SHIFT(3)

#define GU_NORMAL_8BIT GU_NORMAL_SHIFT(1)

#define GU_NORMAL_BITS GU_NORMAL_SHIFT(3)

#define GU_NORMAL_SHIFT | ( | n |  | ) | ((n)<<5)

#define GU_NORMALIZED_NORMAL (2)

#define GU_NOTEQUAL (3)

#define GU_ONE_MINUS_DST_ALPHA (5)

#define GU_ONE_MINUS_DST_COLOR (1)

#define GU_ONE_MINUS_SRC_ALPHA (3)

#define GU_ONE_MINUS_SRC_COLOR (1)

#define GU_OR (7)

#define GU_OR_INVERTED (13)

#define GU_OR_REVERSE (11)

#define GU_PATCH_FACE (20)

#define GU_POINTLIGHT (1)

#define GU_POINTS (0)

#define GU_POSITION (0)

#define GU_PROJECTION (0)

#define GU_PSM_4444 (2)

#define GU_PSM_5551 (1)

#define GU_PSM_5650 (0)

#define GU_PSM_8888 (3)

#define GU_PSM_T16 (6)

#define GU_PSM_T32 (7)

#define GU_PSM_T4 (4)

#define GU_PSM_T8 (5)

#define GU_REPEAT (0)

#define GU_REPLACE (2)

#define GU_REVERSE_SUBTRACT (2)

#define GU_SCISSOR_TEST (2)

#define GU_SEND (2)

#define GU_SET (15)

#define GU_SMOOTH (1)

#define GU_SPECULAR (4)

#define GU_SPOTLIGHT (2)

#define GU_SPRITES (6)

#define GU_SRC_ALPHA (2)

#define GU_SRC_COLOR (0)

#define GU_STENCIL_BUFFER_BIT (2)

#define GU_STENCIL_TEST (3)

#define GU_SUBTRACT (1)

#define GU_TAIL (0)

#define GU_TCC_RGB (0)

#define GU_TCC_RGBA (1)

#define GU_TEXTURE (3)

#define GU_TEXTURE_16BIT GU_TEXTURE_SHIFT(2)

#define GU_TEXTURE_2D (9)

#define GU_TEXTURE_32BITF GU_TEXTURE_SHIFT(3)

#define GU_TEXTURE_8BIT GU_TEXTURE_SHIFT(1)

#define GU_TEXTURE_BITS GU_TEXTURE_SHIFT(3)

#define GU_TEXTURE_COORDS (0)

#define GU_TEXTURE_MATRIX (1)

#define GU_TEXTURE_SHIFT | ( | n |  | ) | ((n)<<0)

#define GU_TFX_ADD (4)

#define GU_TFX_BLEND (2)

#define GU_TFX_DECAL (1)

#define GU_TFX_MODULATE (0)

#define GU_TFX_REPLACE (3)

#define GU_TRANSFORM_2D GU_TRANSFORM_SHIFT(1)

#define GU_TRANSFORM_3D GU_TRANSFORM_SHIFT(0)

#define GU_TRANSFORM_BITS GU_TRANSFORM_SHIFT(1)

#define GU_TRANSFORM_SHIFT | ( | n |  | ) | ((n)<<23)

#define GU_TRIANGLE_FAN (5)

#define GU_TRIANGLE_STRIP (4)

#define GU_TRIANGLES (3)

#define GU_TRUE (1)

#define GU_UNKNOWN_15 (15)

#define GU_UNKNOWN_16 (16)

#define GU_UNKNOWN_LIGHT_COMPONENT (8)

#define GU_UV (1)

#define GU_VERTEX_16BIT GU_VERTEX_SHIFT(2)

#define GU_VERTEX_32BITF GU_VERTEX_SHIFT(3)

#define GU_VERTEX_8BIT GU_VERTEX_SHIFT(1)

#define GU_VERTEX_BITS GU_VERTEX_SHIFT(3)

#define GU_VERTEX_SHIFT | ( | n |  | ) | ((n)<<7)

#define GU_VERTICES | ( | n |  | ) | ((((n)-1)&7)<<18)

#define GU_VERTICES_BITS GU_VERTICES(8)

#define GU_VIEW (1)

#define GU_WEIGHT_16BIT GU_WEIGHT_SHIFT(2)

#define GU_WEIGHT_32BITF GU_WEIGHT_SHIFT(3)

#define GU_WEIGHT_8BIT GU_WEIGHT_SHIFT(1)

#define GU_WEIGHT_BITS GU_WEIGHT_SHIFT(3)

#define GU_WEIGHT_SHIFT | ( | n |  | ) | ((n)<<9)

#define GU_WEIGHTS | ( | n |  | ) | ((((n)-1)&7)<<14)

#define GU_WEIGHTS_BITS GU_WEIGHTS(8)

#define GU_XOR (6)

#define GU_ZERO (1)