Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3768 → Rev 3769

/drivers/video/Intel-2D/gen3_render.c
1834,7 → 1834,7
 
static bool
gen3_blit_tex(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
1890,18 → 1890,20
tmp->mask.width = mask->drawable.width;
tmp->mask.height = mask->drawable.height;
 
tmp->src.scale[0] = 1.f/width; //src->width;
tmp->src.scale[1] = 1.f/height; //src->height;
// tmp->src.offset[0] = -dst_x;
// tmp->src.offset[1] = -dst_y;
if( scale )
{
tmp->src.scale[0] = 1.f/width;
tmp->src.scale[1] = 1.f/height;
}
else
{
tmp->src.scale[0] = 1.f/src->drawable.width;
tmp->src.scale[1] = 1.f/src->drawable.height;
}
 
 
tmp->mask.scale[0] = 1.f/mask->drawable.width;
tmp->mask.scale[1] = 1.f/mask->drawable.height;
// tmp->mask.offset[0] = -dst_x;
// tmp->mask.offset[1] = -dst_y;
 
 
tmp->prim_emit = gen3_emit_composite_primitive_identity_source_mask;
 
 
1952,7 → 1954,7
 
// render->video = gen3_render_video;
 
sna->render.blit_tex = gen3_blit_tex;
render->blit_tex = gen3_blit_tex;
 
render->reset = gen3_render_reset;
render->flush = gen3_render_flush;
1961,6 → 1963,8
render->max_3d_size = MAX_3D_SIZE;
render->max_3d_pitch = MAX_3D_PITCH;
 
render->caps = HW_BIT_BLIT | HW_TEX_BLIT;
 
sna->kgem.retire = gen3_render_retire;
sna->kgem.expire = gen3_render_expire;
return true;
/drivers/video/Intel-2D/gen4_render.c
1056,7 → 1056,7
 
static bool
gen4_blit_tex(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
1103,9 → 1103,16
tmp->mask.width = mask->drawable.width;
tmp->mask.height = mask->drawable.height;
 
 
tmp->src.scale[0] = 1.f/width; //src->width;
tmp->src.scale[1] = 1.f/height; //src->height;
if( scale )
{
tmp->src.scale[0] = 1.f/width;
tmp->src.scale[1] = 1.f/height;
}
else
{
tmp->src.scale[0] = 1.f/src->drawable.width;
tmp->src.scale[1] = 1.f/src->drawable.height;
}
// tmp->src.offset[0] = -dst_x;
// tmp->src.offset[1] = -dst_y;
 
/drivers/video/Intel-2D/gen5_render.c
989,7 → 989,7
 
static bool
gen5_blit_tex(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
1035,8 → 1035,16
tmp->mask.width = mask->drawable.width;
tmp->mask.height = mask->drawable.height;
 
tmp->src.scale[0] = 1.f/width; //src->width;
tmp->src.scale[1] = 1.f/height; //src->height;
if( scale )
{
tmp->src.scale[0] = 1.f/width;
tmp->src.scale[1] = 1.f/height;
}
else
{
tmp->src.scale[0] = 1.f/src->drawable.width;
tmp->src.scale[1] = 1.f/src->drawable.height;
}
 
tmp->mask.scale[0] = 1.f/mask->drawable.width;
tmp->mask.scale[1] = 1.f/mask->drawable.height;
/drivers/video/Intel-2D/gen6_render.c
2271,7 → 2271,6
}
#endif
 
#endif
 
static void
gen6_emit_copy_state(struct sna *sna,
2305,7 → 2304,6
gen6_emit_state(sna, op, offset | dirty);
}
 
#if 0
 
static inline bool prefer_blt_copy(struct sna *sna,
struct kgem_bo *src_bo,
2590,8 → 2588,6
box, n);
}
 
#endif
 
static void
gen6_render_copy_blt(struct sna *sna,
const struct sna_copy_op *op,
2677,11 → 2673,12
op->done = gen6_render_copy_done;
return true;
}
#endif
 
 
static bool
gen6_blit_tex(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
2734,8 → 2731,16
tmp->mask.height = mask->drawable.height;
 
 
tmp->src.scale[0] = 1.f/width; //src->width;
tmp->src.scale[1] = 1.f/height; //src->height;
if( scale )
{
tmp->src.scale[0] = 1.f/width;
tmp->src.scale[1] = 1.f/height;
}
else
{
tmp->src.scale[0] = 1.f/src->drawable.width;
tmp->src.scale[1] = 1.f/src->drawable.height;
}
// tmp->src.offset[0] = -dst_x;
// tmp->src.offset[1] = -dst_y;
 
/drivers/video/Intel-2D/gen7_render.c
1412,7 → 1412,7
 
static bool
gen7_blit_tex(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
1458,10 → 1458,17
tmp->mask.width = mask->drawable.width;
tmp->mask.height = mask->drawable.height;
 
if( scale )
{
tmp->src.scale[0] = 1.f/width;
tmp->src.scale[1] = 1.f/height;
}
else
{
tmp->src.scale[0] = 1.f/src->drawable.width;
tmp->src.scale[1] = 1.f/src->drawable.height;
}
 
tmp->src.scale[0] = 1.f/width; //src->width;
tmp->src.scale[1] = 1.f/height; //src->height;
 
tmp->mask.scale[0] = 1.f/mask->drawable.width;
tmp->mask.scale[1] = 1.f/mask->drawable.height;
 
/drivers/video/Intel-2D/kgem-sna.c
285,22 → 285,13
}
 
retry_mmap:
// ptr = mmap(0, bytes(bo), PROT_READ | PROT_WRITE, MAP_SHARED,
// kgem->fd, mmap_arg.offset);
// if (ptr == 0) {
ptr = (void*)(int)mmap_arg.offset;
if (ptr == NULL) {
printf("%s: failed to mmap %d, %d bytes, into GTT domain: %d\n",
__FUNCTION__, bo->handle, bytes(bo), 0);
// if (__kgem_throttle_retire(kgem, 0))
// goto retry_mmap;
 
// if (kgem->need_expire) {
// kgem_cleanup_cache(kgem);
// goto retry_mmap;
// }
}
 
ptr = NULL;
// }
 
return ptr;
}
 
650,7 → 641,6
 
static bool test_has_semaphores_enabled(struct kgem *kgem)
{
FILE *file;
bool detected = false;
int ret;
 
1128,7 → 1118,8
width = ALIGN(width, 2) * bpp >> 3;
return ALIGN(width, kgem_pitch_alignment(kgem, flags));
}
static uint32_t kgem_surface_size(struct kgem *kgem,
 
uint32_t kgem_surface_size(struct kgem *kgem,
bool relaxed_fencing,
unsigned flags,
uint32_t width,
4210,6 → 4201,45
return 1;
};
 
 
int kgem_update_fb(struct kgem *kgem, struct sna_fb *fb)
{
struct kgem_bo *bo;
size_t size;
int ret;
bo = fb->fb_bo;
ret = drmIoctl(kgem->fd, SRV_FBINFO, fb);
if( ret != 0 )
return 0;
 
fb->fb_bo = bo;
size = fb->pitch * fb->height / PAGE_SIZE;
 
if((size != bo->size.pages.count) ||
(fb->pitch != bo->pitch))
{
bo->size.pages.count = size;
bo->pitch = fb->pitch;
 
printf("fb width %d height %d pitch %d bo %p\n",
fb->width, fb->height, fb->pitch, fb->fb_bo);
return 1;
}
return 0;
};
 
void sna_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
{
kgem_bo_destroy(kgem, bo);
kgem_bo_free(kgem, bo);
}
 
 
void kgem_close_batches(struct kgem *kgem)
{
int n;
/drivers/video/Intel-2D/kgem.h
35,7 → 35,7
#include <stdarg.h>
#include <stdio.h>
 
#include "i915_drm.h"
#include <i915_drm.h>
 
#include "compiler.h"
#include "intel_list.h"
48,6 → 48,7
:"memory");
};
 
#undef DBG
 
#if HAS_DEBUG_FULL
#define DBG(x) printf x
/drivers/video/Intel-2D/sna.c
1,48 → 1,55
//#include "../bitmap.h"
 
 
#include <memory.h>
#include <malloc.h>
#include <kos32sys.h>
#include <pixlib2.h>
 
#include "sna.h"
 
#include <pixlib2.h>
#define to_surface(x) (surface_t*)((x)->handle)
 
static struct sna_fb sna_fb;
static struct kgem_bo *mask_bo;
static int tls_mask;
 
static int mask_width, mask_height;
int tls_alloc(void);
 
typedef struct __attribute__((packed))
static inline void *tls_get(int key)
{
unsigned handle;
unsigned io_code;
void *input;
int inp_size;
void *output;
int out_size;
}ioctl_t;
void *val;
__asm__ __volatile__(
"movl %%fs:(%1), %0"
:"=r"(val)
:"r"(key));
 
 
static int call_service(ioctl_t *io)
{
int retval;
 
asm volatile("int $0x40"
:"=a"(retval)
:"a"(68),"b"(17),"c"(io)
:"memory","cc");
 
return retval;
return val;
};
 
static inline void get_proc_info(char *info)
static inline int
tls_set(int key, const void *ptr)
{
if(!(key & 3))
{
__asm__ __volatile__(
"int $0x40"
:
:"a"(9), "b"(info), "c"(-1));
"movl %0, %%fs:(%1)"
::"r"(ptr),"r"(key));
return 0;
}
else return -1;
}
 
 
 
 
int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb);
int kgem_update_fb(struct kgem *kgem, struct sna_fb *fb);
uint32_t kgem_surface_size(struct kgem *kgem,bool relaxed_fencing,
unsigned flags, uint32_t width, uint32_t height,
uint32_t bpp, uint32_t tiling, uint32_t *pitch);
 
void kgem_close_batches(struct kgem *kgem);
void sna_bo_destroy(struct kgem *kgem, struct kgem_bo *bo);
 
const struct intel_device_info *
intel_detect_chipset(struct pci_device *pci);
 
52,6 → 59,8
 
struct sna *sna_device;
 
__LOCK_INIT_RECURSIVE(, __sna_lock);
 
static void no_render_reset(struct sna *sna)
{
(void)sna;
149,6 → 158,7
int sna_init(uint32_t service)
{
ioctl_t io;
int caps = 0;
 
static struct pci_device device;
struct sna *sna;
155,11 → 165,10
 
DBG(("%s\n", __FUNCTION__));
 
sna = malloc(sizeof(*sna));
if (sna == NULL)
return 0;
__lock_acquire_recursive(__sna_lock);
 
memset(sna, 0, sizeof(*sna));
if(sna_device)
goto done;
io.handle = service;
io.io_code = SRV_GET_PCI_INFO;
169,11 → 178,14
io.out_size = 0;
 
if (call_service(&io)!=0)
{
free(sna);
return 0;
};
goto err1;
sna = malloc(sizeof(*sna));
if (sna == NULL)
goto err1;
 
memset(sna, 0, sizeof(*sna));
sna->PciInfo = &device;
 
sna->info = intel_detect_chipset(sna->PciInfo);
209,9 → 221,17
 
sna_accel_init(sna);
 
delay(10);
tls_mask = tls_alloc();
return sna->render.caps;
// printf("tls mask %x\n", tls_mask);
done:
caps = sna_device->render.caps;
 
err1:
__lock_release_recursive(__sna_lock);
return caps;
}
 
void sna_fini()
218,10 → 238,20
{
if( sna_device )
{
struct kgem_bo *mask;
__lock_acquire_recursive(__sna_lock);
mask = tls_get(tls_mask);
sna_device->render.fini(sna_device);
kgem_bo_destroy(&sna_device->kgem, mask_bo);
if(mask)
kgem_bo_destroy(&sna_device->kgem, mask);
kgem_close_batches(&sna_device->kgem);
kgem_cleanup_cache(&sna_device->kgem);
sna_device = NULL;
__lock_release_recursive(__sna_lock);
};
}
 
354,6 → 384,7
return kgem_bo_reference(cache->bo[i]);
}
 
#endif
 
 
int sna_blit_copy(bitmap_t *src_bitmap, int dst_x, int dst_y,
397,72 → 428,181
 
kgem_submit(&sna_device->kgem);
return 0;
// __asm__ __volatile__("int3");
};
#endif
 
typedef struct
{
uint32_t width;
uint32_t height;
void *data;
uint32_t pitch;
struct kgem_bo *bo;
uint32_t bo_size;
uint32_t flags;
}surface_t;
 
 
 
int sna_create_bitmap(bitmap_t *bitmap)
{
surface_t *sf;
struct kgem_bo *bo;
sf = malloc(sizeof(*sf));
if(sf == NULL)
goto err_1;
__lock_acquire_recursive(__sna_lock);
 
bo = kgem_create_2d(&sna_device->kgem, bitmap->width, bitmap->height,
32,I915_TILING_NONE, CREATE_CPU_MAP);
if(bo == NULL)
goto err_1;
goto err_2;
void *map = kgem_bo_map(&sna_device->kgem, bo);
if(map == NULL)
goto err_2;
goto err_3;
bitmap->handle = (uint32_t)bo;
bitmap->pitch = bo->pitch;
bitmap->data = map;
sf->width = bitmap->width;
sf->height = bitmap->height;
sf->data = map;
sf->pitch = bo->pitch;
sf->bo = bo;
sf->bo_size = PAGE_SIZE * bo->size.pages.count;
sf->flags = bitmap->flags;
bitmap->handle = (uint32_t)sf;
__lock_release_recursive(__sna_lock);
return 0;
err_3:
kgem_bo_destroy(&sna_device->kgem, bo);
err_2:
kgem_bo_destroy(&sna_device->kgem, bo);
__lock_release_recursive(__sna_lock);
free(sf);
err_1:
return -1;
};
int sna_destroy_bitmap(bitmap_t *bitmap)
{
surface_t *sf = to_surface(bitmap);
__lock_acquire_recursive(__sna_lock);
kgem_bo_destroy(&sna_device->kgem, sf->bo);
__lock_release_recursive(__sna_lock);
 
free(sf);
bitmap->handle = -1;
bitmap->data = (void*)-1;
bitmap->pitch = -1;
 
return 0;
};
 
void sna_destroy_bitmap(bitmap_t *bitmap)
int sna_lock_bitmap(bitmap_t *bitmap)
{
struct kgem_bo *bo;
surface_t *sf = to_surface(bitmap);
bo = (struct kgem_bo *)bitmap->handle;
// printf("%s\n", __FUNCTION__);
__lock_acquire_recursive(__sna_lock);
kgem_bo_destroy(&sna_device->kgem, bo);
kgem_bo_sync__cpu(&sna_device->kgem, sf->bo);
 
__lock_release_recursive(__sna_lock);
bitmap->data = sf->data;
bitmap->pitch = sf->pitch;
 
return 0;
};
 
void sna_lock_bitmap(bitmap_t *bitmap)
int sna_resize_bitmap(bitmap_t *bitmap)
{
struct kgem_bo *bo;
surface_t *sf = to_surface(bitmap);
struct kgem *kgem = &sna_device->kgem;
struct kgem_bo *bo = sf->bo;
bo = (struct kgem_bo *)bitmap->handle;
uint32_t size;
uint32_t pitch;
kgem_bo_sync__cpu(&sna_device->kgem, bo);
bitmap->pitch = -1;
bitmap->data = (void *) -1;
 
size = kgem_surface_size(kgem,kgem->has_relaxed_fencing, CREATE_CPU_MAP,
bitmap->width, bitmap->height, 32, I915_TILING_NONE, &pitch);
assert(size && size <= kgem->max_object_size);
if(sf->bo_size >= size)
{
sf->width = bitmap->width;
sf->height = bitmap->height;
sf->pitch = pitch;
bo->pitch = pitch;
return 0;
}
else
{
__lock_acquire_recursive(__sna_lock);
sna_bo_destroy(kgem, bo);
sf->bo = NULL;
bo = kgem_create_2d(kgem, bitmap->width, bitmap->height,
32, I915_TILING_NONE, CREATE_CPU_MAP);
 
if(bo == NULL)
{
__lock_release_recursive(__sna_lock);
return -1;
};
 
void *map = kgem_bo_map(kgem, bo);
if(map == NULL)
{
sna_bo_destroy(kgem, bo);
__lock_release_recursive(__sna_lock);
return -1;
};
__lock_release_recursive(__sna_lock);
sf->width = bitmap->width;
sf->height = bitmap->height;
sf->data = map;
sf->pitch = bo->pitch;
sf->bo = bo;
sf->bo_size = PAGE_SIZE * bo->size.pages.count;
}
 
return 0;
};
 
 
 
int sna_create_mask()
{
struct kgem_bo *bo;
int width, height;
int i;
 
// printf("%s width %d height %d\n", __FUNCTION__, sna_fb.width, sna_fb.height);
__lock_acquire_recursive(__sna_lock);
bo = kgem_create_2d(&sna_device->kgem, sna_fb.width, sna_fb.height,
8,I915_TILING_NONE, CREATE_CPU_MAP);
if(bo == NULL)
if(unlikely(bo == NULL))
goto err_1;
int *map = kgem_bo_map(&sna_device->kgem, bo);
469,20 → 609,19
if(map == NULL)
goto err_2;
memset(map, 0, bo->pitch * height);
__lock_release_recursive(__sna_lock);
mask_bo = bo;
mask_width = width;
mask_height = height;
memset(map, 0, bo->pitch * sna_fb.height);
tls_set(tls_mask, bo);
return 0;
err_2:
kgem_bo_destroy(&sna_device->kgem, bo);
err_1:
__lock_release_recursive(__sna_lock);
return -1;
};
 
 
501,39 → 640,52
 
#define MAP(ptr) ((void*)((uintptr_t)(ptr) & ~3))
 
int sna_blit_tex(bitmap_t *src_bitmap, int dst_x, int dst_y,
int sna_blit_tex(bitmap_t *bitmap, bool scale, int dst_x, int dst_y,
int w, int h, int src_x, int src_y)
 
{
surface_t *sf = to_surface(bitmap);
 
// box.x1 = dst_x;
// box.y1 = dst_y;
// box.x2 = dst_x+w;
// box.y2 = dst_y+h;
 
 
// cop.box(sna_device, &cop, &box);
 
struct drm_i915_mask_update update;
struct sna_composite_op composite;
struct _Pixmap src, dst, mask;
struct kgem_bo *src_bo;
struct kgem_bo *src_bo, *mask_bo;
int winx, winy;
 
char proc_info[1024];
int winx, winy, winw, winh;
 
get_proc_info(proc_info);
 
winx = *(uint32_t*)(proc_info+34);
winy = *(uint32_t*)(proc_info+38);
winw = *(uint32_t*)(proc_info+42)+1;
winh = *(uint32_t*)(proc_info+46)+1;
// winw = *(uint32_t*)(proc_info+42)+1;
// winh = *(uint32_t*)(proc_info+46)+1;
mask_bo = tls_get(tls_mask);
if(unlikely(mask_bo == NULL))
{
sna_create_mask();
mask_bo = tls_get(tls_mask);
if( mask_bo == NULL)
return -1;
};
if(kgem_update_fb(&sna_device->kgem, &sna_fb))
{
__lock_acquire_recursive(__sna_lock);
kgem_bo_destroy(&sna_device->kgem, mask_bo);
__lock_release_recursive(__sna_lock);
sna_create_mask();
mask_bo = tls_get(tls_mask);
if( mask_bo == NULL)
return -1;
}
VG_CLEAR(update);
update.handle = mask_bo->handle;
// update.bo_size = __kgem_bo_size(mask_bo);
// update.bo_pitch = mask_bo->pitch;
update.bo_map = (__u32)MAP(mask_bo->map);
drmIoctl(sna_device->kgem.fd, SRV_MASK_UPDATE, &update);
mask_bo->pitch = update.bo_pitch;
543,9 → 695,10
memset(&mask, 0, sizeof(dst));
 
src.drawable.bitsPerPixel = 32;
src.drawable.width = src_bitmap->width;
src.drawable.height = src_bitmap->height;
 
src.drawable.width = sf->width;
src.drawable.height = sf->height;
 
dst.drawable.bitsPerPixel = 32;
dst.drawable.width = sna_fb.width;
dst.drawable.height = sna_fb.height;
556,10 → 709,12
 
memset(&composite, 0, sizeof(composite));
 
src_bo = (struct kgem_bo*)src_bitmap->handle;
src_bo = sf->bo;
__lock_acquire_recursive(__sna_lock);
if( sna_device->render.blit_tex(sna_device, PictOpSrc,
if( sna_device->render.blit_tex(sna_device, PictOpSrc,scale,
&src, src_bo,
&mask, mask_bo,
&dst, sna_fb.fb_bo,
582,10 → 737,16
composite.blt(sna_device, &composite, &r);
composite.done(sna_device, &composite);
};
kgem_submit(&sna_device->kgem);
__lock_release_recursive(__sna_lock);
 
bitmap->data = (void*)-1;
bitmap->pitch = -1;
return 0;
}
 
758,8 → 919,6
intel_detect_chipset(struct pci_device *pci)
{
const struct pci_id_match *ent = NULL;
const char *name = NULL;
int i;
 
ent = PciDevMatch(pci->device_id, intel_device_match);
/drivers/video/Intel-2D/sna.h
60,27 → 60,6
int drmIoctl(int fd, unsigned long request, void *arg);
 
 
#define SRV_GET_PCI_INFO 20
#define SRV_GET_PARAM 21
#define SRV_I915_GEM_CREATE 22
#define SRV_DRM_GEM_CLOSE 23
#define SRV_I915_GEM_PIN 24
#define SRV_I915_GEM_SET_CACHEING 25
#define SRV_I915_GEM_GET_APERTURE 26
#define SRV_I915_GEM_PWRITE 27
#define SRV_I915_GEM_BUSY 28
#define SRV_I915_GEM_SET_DOMAIN 29
#define SRV_I915_GEM_MMAP 30
#define SRV_I915_GEM_THROTTLE 32
#define SRV_FBINFO 33
#define SRV_I915_GEM_EXECBUFFER2 34
#define SRV_MASK_UPDATE 35
 
#define SRV_I915_GEM_MMAP_GTT 31
 
 
#define DRM_IOCTL_GEM_CLOSE SRV_DRM_GEM_CLOSE
 
#define PIXMAN_FORMAT(bpp,type,a,r,g,b) (((bpp) << 24) | \
((type) << 16) | \
((a) << 12) | \
/drivers/video/Intel-2D/sna_render.h
223,7 → 223,7
#endif
 
bool (*blit_tex)(struct sna *sna,
uint8_t op,
uint8_t op, bool scale,
PixmapPtr src, struct kgem_bo *src_bo,
PixmapPtr mask,struct kgem_bo *mask_bo,
PixmapPtr dst, struct kgem_bo *dst_bo,
/drivers/video/i965/gen6_mfc.c
0,0 → 1,1027
/*
* Copyright © 2010-2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhou Chang <chang.zhou@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "assert.h"
#include "intel_batchbuffer.h"
#include "i965_defines.h"
#include "i965_structs.h"
#include "i965_drv_video.h"
#include "i965_encoder.h"
 
static void
gen6_mfc_pipe_mode_select(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 4);
 
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (4 - 2));
OUT_BCS_BATCH(batch,
(0 << 10) | /* disable Stream-Out */
(1 << 9) | /* Post Deblocking Output */
(0 << 8) | /* Pre Deblocking Output */
(0 << 7) | /* disable TLB prefectch */
(0 << 5) | /* not in stitch mode */
(1 << 4) | /* encoding mode */
(2 << 0)); /* Standard Select: AVC */
OUT_BCS_BATCH(batch,
(0 << 20) | /* round flag in PB slice */
(0 << 19) | /* round flag in Intra8x8 */
(0 << 7) | /* expand NOA bus flag */
(1 << 6) | /* must be 1 */
(0 << 5) | /* disable clock gating for NOA */
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) | /* AVC long field motion vector */
(0 << 0)); /* always calculate AVC ILDB boundary strength */
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfc_pipe_mode_select(VADriverContextP ctx,
int standard_select,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(standard_select == MFX_FORMAT_MPEG2 ||
standard_select == MFX_FORMAT_AVC);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Must be long format for encoder */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(1 << 9) | /* Post Deblocking Output */
(0 << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(1 << 4) | /* encoding mode */
(standard_select << 0)); /* standard select: avc or mpeg2 */
OUT_BCS_BATCH(batch,
(0 << 7) | /* expand NOA bus flag */
(0 << 6) | /* disable slice-level clock gating */
(0 << 5) | /* disable clock gating for NOA */
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfc_surface_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
 
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((mfc_context->surface_state.height - 1) << 19) |
((mfc_context->surface_state.width - 1) << 6));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
(0 << 22) | /* surface object control state, FIXME??? */
((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 for interleave U/V */
(1 << 1) | /* must be y-tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
OUT_BCS_BATCH(batch,
(0 << 16) | /* must be 0 for interleave U/V */
(mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfc_surface_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
 
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((mfc_context->surface_state.height - 1) << 18) |
((mfc_context->surface_state.width - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
(0 << 22) | /* surface object control state, FIXME??? */
((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 for interleave U/V */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
OUT_BCS_BATCH(batch,
(0 << 16) | /* must be 0 for interleave U/V */
(mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfc_pipe_buf_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 24);
 
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
 
OUT_BCS_BATCH(batch, 0); /* pre output addr */
 
OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* post output addr */
 
OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* uncompressed data */
 
OUT_BCS_BATCH(batch, 0); /* StreamOut data*/
OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
/* 7..22 Reference pictures*/
for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
if ( mfc_context->reference_surfaces[i].bo != NULL) {
OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
}
OUT_BCS_BATCH(batch, 0); /* no block status */
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfc_ind_obj_base_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);
 
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* MFX Indirect MV Object Base Address */
OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/*MFC Indirect PAK-BSE Object Base Address for Encoder*/
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfc_ind_obj_base_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);
 
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* MFX Indirect MV Object Base Address */
OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/*MFC Indirect PAK-BSE Object Base Address for Encoder*/
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfc_bsp_buf_base_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 4);
 
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfc_avc_img_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 13);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (13 - 2));
OUT_BCS_BATCH(batch,
((width_in_mbs * height_in_mbs) & 0xFFFF));
OUT_BCS_BATCH(batch,
(height_in_mbs << 16) |
(width_in_mbs << 0));
OUT_BCS_BATCH(batch,
(0 << 24) | /*Second Chroma QP Offset*/
(0 << 16) | /*Chroma QP Offset*/
(0 << 14) | /*Max-bit conformance Intra flag*/
(0 << 13) | /*Max Macroblock size conformance Inter flag*/
(1 << 12) | /*Should always be written as "1" */
(0 << 10) | /*QM Preset FLag */
(0 << 8) | /*Image Structure*/
(0 << 0) ); /*Current Decoed Image Frame Store ID, reserved in Encode mode*/
OUT_BCS_BATCH(batch,
(0 << 16) | /*Mininum Frame size*/
(0 << 15) | /*Disable reading of Macroblock Status Buffer*/
(0 << 14) | /*Load BitStream Pointer only once, 1 slic 1 frame*/
(0 << 13) | /*CABAC 0 word insertion test enable*/
(1 << 12) | /*MVUnpackedEnable,compliant to DXVA*/
(1 << 10) | /*Chroma Format IDC, 4:2:0*/
(1 << 7) | /*0:CAVLC encoding mode,1:CABAC*/
(0 << 6) | /*Only valid for VLD decoding mode*/
(0 << 5) | /*Constrained Intra Predition Flag, from PPS*/
(0 << 4) | /*Direct 8x8 inference flag*/
(0 << 3) | /*Only 8x8 IDCT Transform Mode Flag*/
(1 << 2) | /*Frame MB only flag*/
(0 << 1) | /*MBAFF mode is in active*/
(0 << 0) ); /*Field picture flag*/
OUT_BCS_BATCH(batch, 0); /*Mainly about MB rate control and debug, just ignoring*/
OUT_BCS_BATCH(batch, /*Inter and Intra Conformance Max size limit*/
(0xBB8 << 16) | /*InterMbMaxSz*/
(0xEE8) ); /*IntraMbMaxSz*/
OUT_BCS_BATCH(batch, 0); /*Reserved*/
OUT_BCS_BATCH(batch, 0); /*Slice QP Delta for bitrate control*/
OUT_BCS_BATCH(batch, 0); /*Slice QP Delta for bitrate control*/
OUT_BCS_BATCH(batch, 0x8C000000);
OUT_BCS_BATCH(batch, 0x00010000);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfc_avc_img_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
((width_in_mbs * height_in_mbs) & 0xFFFF));
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
(0 << 24) | /* Second Chroma QP Offset */
(0 << 16) | /* Chroma QP Offset */
(0 << 14) | /* Max-bit conformance Intra flag */
(0 << 13) | /* Max Macroblock size conformance Inter flag */
(0 << 12) | /* FIXME: Weighted_Pred_Flag */
(0 << 10) | /* FIXME: Weighted_BiPred_Idc */
(0 << 8) | /* FIXME: Image Structure */
(0 << 0) ); /* Current Decoed Image Frame Store ID, reserved in Encode mode */
OUT_BCS_BATCH(batch,
(0 << 16) | /* Mininum Frame size */
(0 << 15) | /* Disable reading of Macroblock Status Buffer */
(0 << 14) | /* Load BitStream Pointer only once, 1 slic 1 frame */
(0 << 13) | /* CABAC 0 word insertion test enable */
(1 << 12) | /* MVUnpackedEnable,compliant to DXVA */
(1 << 10) | /* Chroma Format IDC, 4:2:0 */
(0 << 9) | /* FIXME: MbMvFormatFlag */
(1 << 7) | /* 0:CAVLC encoding mode,1:CABAC */
(0 << 6) | /* Only valid for VLD decoding mode */
(0 << 5) | /* Constrained Intra Predition Flag, from PPS */
(0 << 4) | /* Direct 8x8 inference flag */
(0 << 3) | /* Only 8x8 IDCT Transform Mode Flag */
(1 << 2) | /* Frame MB only flag */
(0 << 1) | /* MBAFF mode is in active */
(0 << 0)); /* Field picture flag */
OUT_BCS_BATCH(batch, 0); /* Mainly about MB rate control and debug, just ignoring */
OUT_BCS_BATCH(batch, /* Inter and Intra Conformance Max size limit */
(0xBB8 << 16) | /* InterMbMaxSz */
(0xEE8) ); /* IntraMbMaxSz */
OUT_BCS_BATCH(batch, 0); /* Reserved */
OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
OUT_BCS_BATCH(batch, 0x8C000000);
OUT_BCS_BATCH(batch, 0x00010000);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void gen6_mfc_avc_slice_state(VADriverContextP ctx,
int intra_slice,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);;
 
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
 
if ( intra_slice )
OUT_BCS_BATCH(batch, 2); /*Slice Type: I Slice*/
else
OUT_BCS_BATCH(batch, 0); /*Slice Type: P Slice*/
 
if ( intra_slice )
OUT_BCS_BATCH(batch, 0); /*no reference frames and pred_weight_table*/
else
OUT_BCS_BATCH(batch, 0x00010000); /*1 reference frame*/
 
OUT_BCS_BATCH(batch, (0<<24) | /*Enable deblocking operation*/
(26<<16) | /*Slice Quantization Parameter*/
0x0202 );
OUT_BCS_BATCH(batch, 0); /*First MB X&Y , the postion of current slice*/
OUT_BCS_BATCH(batch, ( ((mfc_context->surface_state.height+15)/16) << 16) );
 
OUT_BCS_BATCH(batch,
(0<<31) | /*RateControlCounterEnable = disable*/
(1<<30) | /*ResetRateControlCounter*/
(2<<28) | /*RC Triggle Mode = Loose Rate Control*/
(1<<19) | /*IsLastSlice*/
(0<<18) | /*BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable*/
(0<<17) | /*HeaderPresentFlag*/
(1<<16) | /*SliceData PresentFlag*/
(0<<15) | /*TailPresentFlag*/
(1<<13) | /*RBSP NAL TYPE*/
(0<<12) ); /*CabacZeroWordInsertionEnable*/
OUT_BCS_RELOC(batch, mfc_context->mfc_indirect_pak_bse_object.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
mfc_context->mfc_indirect_pak_bse_object.offset);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
static void gen6_mfc_avc_qm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 58);
 
OUT_BCS_BATCH(batch, MFX_AVC_QM_STATE | 56);
OUT_BCS_BATCH(batch, 0xFF ) ;
for( i = 0; i < 56; i++) {
OUT_BCS_BATCH(batch, 0x10101010);
}
 
ADVANCE_BCS_BATCH(batch);
}
 
static void gen6_mfc_avc_fqm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 113);
OUT_BCS_BATCH(batch, MFC_AVC_FQM_STATE | (113 - 2));
 
for(i = 0; i < 112;i++) {
OUT_BCS_BATCH(batch, 0x10001000);
}
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfc_qm_state(VADriverContextP ctx,
int qm_type,
unsigned int *qm,
int qm_length,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm_buffer[16];
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(qm_length <= 16);
assert(sizeof(*qm) == 4);
memcpy(qm_buffer, qm, qm_length * 4);
 
BEGIN_BCS_BATCH(batch, 18);
OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
OUT_BCS_BATCH(batch, qm_type << 0);
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void gen7_mfc_avc_qm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm[16] = {
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010
};
 
gen7_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, gen6_encoder_context, batch);
gen7_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, gen6_encoder_context, batch);
gen7_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, gen6_encoder_context, batch);
gen7_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, gen6_encoder_context, batch);
}
 
static void
gen7_mfc_fqm_state(VADriverContextP ctx,
int fqm_type,
unsigned int *fqm,
int fqm_length,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int fqm_buffer[32];
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(fqm_length <= 32);
assert(sizeof(*fqm) == 4);
memcpy(fqm_buffer, fqm, fqm_length * 4);
 
BEGIN_BCS_BATCH(batch, 34);
OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
OUT_BCS_BATCH(batch, fqm_type << 0);
intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void gen7_mfc_avc_fqm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm[32] = {
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000
};
 
gen7_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, gen6_encoder_context, batch);
gen7_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, gen6_encoder_context, batch);
gen7_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, gen6_encoder_context, batch);
gen7_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, gen6_encoder_context, batch);
}
 
static void gen6_mfc_avc_ref_idx_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 10);
 
OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8);
OUT_BCS_BATCH(batch, 0); //Select L0
 
OUT_BCS_BATCH(batch, 0x80808000); //Only 1 reference
for(i = 0; i < 7; i++) {
OUT_BCS_BATCH(batch, 0x80808080);
}
 
ADVANCE_BCS_BATCH(batch);
}
static int
gen6_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb, int qp,unsigned int *msg,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int len_in_dwords = 11;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, len_in_dwords);
 
OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
(0 << 24) | /* PackedMvNum, Debug*/
(0 << 20) | /* No motion vector */
(1 << 19) | /* CbpDcY */
(1 << 18) | /* CbpDcU */
(1 << 17) | /* CbpDcV */
(msg[0] & 0xFFFF) );
 
OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
 
/*Stuff for Intra MB*/
OUT_BCS_BATCH(batch, msg[1]); /* We using Intra16x16 no 4x4 predmode*/
OUT_BCS_BATCH(batch, msg[2]);
OUT_BCS_BATCH(batch, msg[3]&0xFC);
 
OUT_BCS_BATCH(batch, 0x8040000); /*MaxSizeInWord and TargetSzieInWord*/
 
ADVANCE_BCS_BATCH(batch);
 
return len_in_dwords;
}
 
static int gen6_mfc_avc_pak_object_inter(VADriverContextP ctx, int x, int y, int end_mb, int qp, unsigned int offset,
struct gen6_encoder_context *gen6_encoder_context, struct intel_batchbuffer *batch)
{
int len_in_dwords = 11;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, len_in_dwords);
 
OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
 
OUT_BCS_BATCH(batch, 32); /* 32 MV*/
OUT_BCS_BATCH(batch, offset);
 
OUT_BCS_BATCH(batch,
(1 << 24) | /* PackedMvNum, Debug*/
(4 << 20) | /* 8 MV, SNB don't use it*/
(1 << 19) | /* CbpDcY */
(1 << 18) | /* CbpDcU */
(1 << 17) | /* CbpDcV */
(0 << 15) | /* Transform8x8Flag = 0*/
(0 << 14) | /* Frame based*/
(0 << 13) | /* Inter MB */
(1 << 8) | /* MbType = P_L0_16x16 */
(0 << 7) | /* MBZ for frame */
(0 << 6) | /* MBZ */
(2 << 4) | /* MBZ for inter*/
(0 << 3) | /* MBZ */
(0 << 2) | /* SkipMbFlag */
(0 << 0)); /* InterMbMode */
 
OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
 
/*Stuff for Inter MB*/
OUT_BCS_BATCH(batch, 0x0);
OUT_BCS_BATCH(batch, 0x0);
OUT_BCS_BATCH(batch, 0x0);
 
OUT_BCS_BATCH(batch, 0xF0020000); /*MaxSizeInWord and TargetSzieInWord*/
 
ADVANCE_BCS_BATCH(batch);
 
return len_in_dwords;
}
 
static void gen6_mfc_init(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
dri_bo *bo;
int i;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
 
/*Encode common setup for MFC*/
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
mfc_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
mfc_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
mfc_context->uncompressed_picture_source.bo = NULL;
 
dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
 
for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
mfc_context->direct_mv_buffers[i].bo = NULL;
}
 
for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
if (mfc_context->reference_surfaces[i].bo != NULL)
dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
mfc_context->reference_surfaces[i].bo = NULL;
}
 
dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
width_in_mbs * 64,
64);
assert(bo);
mfc_context->intra_row_store_scratch_buffer.bo = bo;
 
dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
4 * width_in_mbs * 64, /* 4 * width_in_mbs * 64 */
64);
assert(bo);
mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
 
dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
128 * width_in_mbs, /* 2 * widht_in_mbs * 64 */
0x1000);
assert(bo);
mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
}
 
void gen6_mfc_avc_pipeline_programing(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *main_batch = gen6_encoder_context->base.batch;
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer; /* FIXME: multi slices */
unsigned int *msg = NULL, offset = 0;
int emit_new_state = 1, object_len_in_bytes;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
int x,y;
struct intel_batchbuffer *batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD, width_in_mbs * height_in_mbs * 12 * 4 + 0x800);
 
intel_batchbuffer_start_atomic_bcs(batch, width_in_mbs * height_in_mbs * 12 * 4 + 0x700);
 
if (is_intra) {
dri_bo_map(vme_context->vme_output.bo , 1);
msg = (unsigned int *)vme_context->vme_output.bo->virtual;
}
 
for (y = 0; y < height_in_mbs; y++) {
for (x = 0; x < width_in_mbs; x++) {
int last_mb = (y == (height_in_mbs-1)) && ( x == (width_in_mbs-1) );
int qp = pSequenceParameter->initial_qp;
 
if (emit_new_state) {
intel_batchbuffer_emit_mi_flush(batch);
if (IS_GEN7(i965->intel.device_id)) {
gen7_mfc_pipe_mode_select(ctx, MFX_FORMAT_AVC, gen6_encoder_context, batch);
gen7_mfc_surface_state(ctx, gen6_encoder_context, batch);
gen7_mfc_ind_obj_base_addr_state(ctx, gen6_encoder_context, batch);
} else {
gen6_mfc_pipe_mode_select(ctx, gen6_encoder_context, batch);
gen6_mfc_surface_state(ctx, gen6_encoder_context, batch);
gen6_mfc_ind_obj_base_addr_state(ctx, gen6_encoder_context, batch);
}
 
gen6_mfc_pipe_buf_addr_state(ctx, gen6_encoder_context, batch);
gen6_mfc_bsp_buf_base_addr_state(ctx, gen6_encoder_context, batch);
 
if (IS_GEN7(i965->intel.device_id)) {
gen7_mfc_avc_img_state(ctx, gen6_encoder_context, batch);
gen7_mfc_avc_qm_state(ctx, gen6_encoder_context, batch);
gen7_mfc_avc_fqm_state(ctx, gen6_encoder_context, batch);
} else {
gen6_mfc_avc_img_state(ctx, gen6_encoder_context, batch);
gen6_mfc_avc_qm_state(ctx, gen6_encoder_context, batch);
gen6_mfc_avc_fqm_state(ctx, gen6_encoder_context, batch);
}
 
gen6_mfc_avc_ref_idx_state(ctx, gen6_encoder_context, batch);
gen6_mfc_avc_slice_state(ctx, is_intra, gen6_encoder_context, batch);
emit_new_state = 0;
}
 
if (is_intra) {
assert(msg);
object_len_in_bytes = gen6_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp, msg, gen6_encoder_context, batch);
msg += 4;
} else {
object_len_in_bytes = gen6_mfc_avc_pak_object_inter(ctx, x, y, last_mb, qp, offset, gen6_encoder_context, batch);
offset += 64;
}
 
if (intel_batchbuffer_check_free_space(batch, object_len_in_bytes) == 0) {
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
emit_new_state = 1;
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
}
}
}
 
if (is_intra)
dri_bo_unmap(vme_context->vme_output.bo);
 
intel_batchbuffer_align(batch, 8);
 
BEGIN_BCS_BATCH(batch, 2);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
ADVANCE_BCS_BATCH(batch);
 
intel_batchbuffer_end_atomic(batch);
 
/* chain to the main batch buffer */
intel_batchbuffer_start_atomic_bcs(main_batch, 0x100);
intel_batchbuffer_emit_mi_flush(main_batch);
BEGIN_BCS_BATCH(main_batch, 2);
OUT_BCS_BATCH(main_batch, MI_BATCH_BUFFER_START | (1 << 8));
OUT_BCS_RELOC(main_batch,
batch->buffer,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BCS_BATCH(main_batch);
intel_batchbuffer_end_atomic(main_batch);
 
// end programing
intel_batchbuffer_free(batch);
}
 
static VAStatus gen6_mfc_avc_prepare(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct object_surface *obj_surface;
struct object_buffer *obj_buffer;
dri_bo *bo;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
VAStatus vaStatus = VA_STATUS_SUCCESS;
 
/*Setup all the input&output object*/
obj_surface = SURFACE(pPicParameter->reconstructed_picture);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
mfc_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(mfc_context->post_deblocking_output.bo);
 
mfc_context->surface_state.width = obj_surface->orig_width;
mfc_context->surface_state.height = obj_surface->orig_height;
mfc_context->surface_state.w_pitch = obj_surface->width;
mfc_context->surface_state.h_pitch = obj_surface->height;
 
obj_surface = SURFACE(pPicParameter->reference_picture);
assert(obj_surface);
if (obj_surface->bo != NULL) {
mfc_context->reference_surfaces[0].bo = obj_surface->bo;
dri_bo_reference(obj_surface->bo);
}
obj_surface = SURFACE(encode_state->current_render_target);
assert(obj_surface && obj_surface->bo);
mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
 
obj_buffer = BUFFER (pPicParameter->coded_buf); /* FIXME: fix this later */
bo = obj_buffer->buffer_store->bo;
assert(bo);
mfc_context->mfc_indirect_pak_bse_object.bo = bo;
mfc_context->mfc_indirect_pak_bse_object.offset = ALIGN(sizeof(VACodedBufferSegment), 64);
dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
 
/*Programing bcs pipeline*/
gen6_mfc_avc_pipeline_programing(ctx, encode_state, gen6_encoder_context); //filling the pipeline
return vaStatus;
}
 
static VAStatus gen6_mfc_run(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct intel_batchbuffer *batch = gen6_encoder_context->base.batch;
 
intel_batchbuffer_flush(batch); //run the pipeline
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_mfc_stop(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
#if 0
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
struct object_surface *obj_surface = SURFACE(pPicParameter->reconstructed_picture);
//struct object_surface *obj_surface = SURFACE(pPicParameter->reference_picture[0]);
//struct object_surface *obj_surface = SURFACE(encode_state->current_render_target);
my_debug(obj_surface);
 
#endif
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
gen6_mfc_avc_encode_picture(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
gen6_mfc_init(ctx, encode_state, gen6_encoder_context);
gen6_mfc_avc_prepare(ctx, encode_state, gen6_encoder_context);
gen6_mfc_run(ctx, encode_state, gen6_encoder_context);
gen6_mfc_stop(ctx, encode_state, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
gen6_mfc_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
VAStatus vaStatus;
 
switch (profile) {
case VAProfileH264Baseline:
vaStatus = gen6_mfc_avc_encode_picture(ctx, encode_state, gen6_encoder_context);
break;
 
/* FIXME: add for other profile */
default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
break;
}
 
return vaStatus;
}
 
Bool gen6_mfc_context_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context)
{
return True;
}
 
Bool gen6_mfc_context_destroy(struct gen6_mfc_context *mfc_context)
{
int i;
 
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
mfc_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
mfc_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
mfc_context->uncompressed_picture_source.bo = NULL;
 
dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
 
for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
mfc_context->direct_mv_buffers[i].bo = NULL;
}
 
dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
mfc_context->intra_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
mfc_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
mfc_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
 
return True;
}
/drivers/video/i965/gen6_mfc.h
0,0 → 1,114
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhou Chang <chang.zhou@intel.com>
*
*/
 
#ifndef _GEN6_MFC_H_
#define _GEN6_MFC_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
struct encode_state;
 
#define MAX_MFC_REFERENCE_SURFACES 16
#define NUM_MFC_DMV_BUFFERS 34
 
struct gen6_mfc_context
{
struct {
unsigned int width;
unsigned int height;
unsigned int w_pitch;
unsigned int h_pitch;
} surface_state;
 
 
//MFX_PIPE_BUF_ADDR_STATE
struct {
dri_bo *bo;
} post_deblocking_output; //OUTPUT: reconstructed picture
struct {
dri_bo *bo;
} pre_deblocking_output; //OUTPUT: reconstructed picture with deblocked
 
struct {
dri_bo *bo;
} uncompressed_picture_source; //INPUT: original compressed image
 
struct {
dri_bo *bo;
} intra_row_store_scratch_buffer; //INTERNAL:
 
struct {
dri_bo *bo;
} deblocking_filter_row_store_scratch_buffer; //INTERNAL:
 
struct {
dri_bo *bo;
} reference_surfaces[MAX_MFC_REFERENCE_SURFACES]; //INTERNAL: refrence surfaces
 
//MFX_IND_OBJ_BASE_ADDR_STATE
struct{
dri_bo *bo;
} mfc_indirect_mv_object; //INPUT: the blocks' mv info
 
struct {
dri_bo *bo;
int offset;
} mfc_indirect_pak_bse_object; //OUTPUT: the compressed bitstream
 
//MFX_BSP_BUF_BASE_ADDR_STATE
struct {
dri_bo *bo;
}bsd_mpc_row_store_scratch_buffer; //INTERNAL:
//MFX_AVC_DIRECTMODE_STATE
struct {
dri_bo *bo;
}direct_mv_buffers[NUM_MFC_DMV_BUFFERS]; //INTERNAL: 0-31 as input,32 and 33 as output
};
 
VAStatus
gen6_mfc_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context);
Bool gen6_mfc_context_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context);
Bool gen6_mfc_context_destroy(struct gen6_mfc_context *mfc_context);
 
VAStatus
gen75_mfc_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context);
Bool gen75_mfc_context_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context);
Bool gen75_mfc_context_destroy(struct gen6_mfc_context *mfc_context);
 
#endif /* _GEN6_MFC_BCS_H_ */
/drivers/video/i965/gen6_mfd.c
0,0 → 1,2051
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef HAVE_GEN_AVC_SURFACE
#define HAVE_GEN_AVC_SURFACE 1
#endif
 
#include "sysdeps.h"
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_decoder_utils.h"
 
#include "gen6_mfd.h"
 
static const uint32_t zigzag_direct[64] = {
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
 
static void
gen6_mfd_avc_frame_store_index(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i, j;
 
assert(ARRAY_ELEMS(gen6_mfd_context->reference_surface) == ARRAY_ELEMS(pic_param->ReferenceFrames));
 
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
int found = 0;
 
if (gen6_mfd_context->reference_surface[i].surface_id == VA_INVALID_ID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[j];
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (gen6_mfd_context->reference_surface[i].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
struct object_surface *obj_surface = SURFACE(gen6_mfd_context->reference_surface[i].surface_id);
obj_surface->flags &= ~SURFACE_REFERENCED;
 
if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) {
dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
}
 
if (obj_surface->free_private_data)
obj_surface->free_private_data(&obj_surface->private_data);
 
gen6_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen6_mfd_context->reference_surface[i].frame_store_id = -1;
}
}
 
for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[i];
int found = 0;
 
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(gen6_mfd_context->reference_surface); j++) {
if (gen6_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
if (gen6_mfd_context->reference_surface[j].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
int frame_idx;
struct object_surface *obj_surface = SURFACE(ref_pic->picture_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
 
for (frame_idx = 0; frame_idx < ARRAY_ELEMS(gen6_mfd_context->reference_surface); frame_idx++) {
for (j = 0; j < ARRAY_ELEMS(gen6_mfd_context->reference_surface); j++) {
if (gen6_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
 
if (gen6_mfd_context->reference_surface[j].frame_store_id == frame_idx)
break;
}
 
if (j == ARRAY_ELEMS(gen6_mfd_context->reference_surface))
break;
}
 
assert(frame_idx < ARRAY_ELEMS(gen6_mfd_context->reference_surface));
 
for (j = 0; j < ARRAY_ELEMS(gen6_mfd_context->reference_surface); j++) {
if (gen6_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID) {
gen6_mfd_context->reference_surface[j].surface_id = ref_pic->picture_id;
gen6_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
/* sort */
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface) - 1; i++) {
if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
gen6_mfd_context->reference_surface[i].frame_store_id == i)
continue;
 
for (j = i + 1; j < ARRAY_ELEMS(gen6_mfd_context->reference_surface); j++) {
if (gen6_mfd_context->reference_surface[j].surface_id != VA_INVALID_ID &&
gen6_mfd_context->reference_surface[j].frame_store_id == i) {
VASurfaceID id = gen6_mfd_context->reference_surface[i].surface_id;
int frame_idx = gen6_mfd_context->reference_surface[i].frame_store_id;
 
gen6_mfd_context->reference_surface[i].surface_id = gen6_mfd_context->reference_surface[j].surface_id;
gen6_mfd_context->reference_surface[i].frame_store_id = gen6_mfd_context->reference_surface[j].frame_store_id;
gen6_mfd_context->reference_surface[j].surface_id = id;
gen6_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
static void
gen6_mfd_init_avc_surface(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
GenAvcSurface *gen6_avc_surface = obj_surface->private_data;
int height_in_mbs;
 
obj_surface->free_private_data = gen_free_avc_surface;
height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
 
if (!gen6_avc_surface) {
gen6_avc_surface = calloc(sizeof(GenAvcSurface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen6_avc_surface;
}
 
gen6_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
!pic_param->seq_fields.bits.direct_8x8_inference_flag);
 
if (gen6_avc_surface->dmv_top == NULL) {
gen6_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
128 * height_in_mbs * 64, /* scalable with frame height */
0x1000);
}
 
if (gen6_avc_surface->dmv_bottom_flag &&
gen6_avc_surface->dmv_bottom == NULL) {
gen6_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
128 * height_in_mbs * 64, /* scalable with frame height */
0x1000);
}
}
 
static void
gen6_mfd_pipe_mode_select(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
 
assert(standard_select == MFX_FORMAT_MPEG2 ||
standard_select == MFX_FORMAT_AVC ||
standard_select == MFX_FORMAT_VC1);
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (4 - 2));
OUT_BCS_BATCH(batch,
(MFD_MODE_VLD << 16) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(gen6_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
(gen6_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
(0 << 7) | /* disable TLB prefectch */
(0 << 5) | /* not in stitch mode */
(MFX_CODEC_DECODE << 4) | /* decoding mode */
(standard_select << 0));
OUT_BCS_BATCH(batch,
(0 << 20) | /* round flag in PB slice */
(0 << 19) | /* round flag in Intra8x8 */
(0 << 7) | /* expand NOA bus flag */
(1 << 6) | /* must be 1 */
(0 << 5) | /* disable clock gating for NOA */
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) | /* AVC long field motion vector */
(1 << 0)); /* always calculate AVC ILDB boundary strength */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_surface_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((obj_surface->orig_height - 1) << 19) |
((obj_surface->orig_width - 1) << 6));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
(0 << 22) | /* surface object control state, FIXME??? */
((obj_surface->width - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 for interleave U/V */
(1 << 1) | /* must be y-tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, FIXME: must be 1 ??? */
OUT_BCS_BATCH(batch,
(0 << 16) | /* must be 0 for interleave U/V */
(obj_surface->height)); /* y offset for U(cb) */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_pipe_buf_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
BEGIN_BCS_BATCH(batch, 24);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
if (gen6_mfd_context->pre_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->pre_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen6_mfd_context->post_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
 
if (gen6_mfd_context->intra_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
/* DW 7..22 */
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
struct object_surface *obj_surface;
 
if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen6_mfd_context->reference_surface[i].surface_id);
assert(obj_surface && obj_surface->bo);
 
OUT_BCS_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
}
 
OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
dri_bo *slice_data_bo,
int standard_select,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
 
if (gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen6_mfd_context->mpr_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->mpr_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen6_mfd_context->bitplane_read_buffer.valid)
OUT_BCS_RELOC(batch, gen6_mfd_context->bitplane_read_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int qm_present_flag;
int img_struct;
int mbaff_frame_flag;
unsigned int width_in_mbs, height_in_mbs;
VAPictureParameterBufferH264 *pic_param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
 
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
qm_present_flag = 1;
else
qm_present_flag = 0; /* built-in QM matrices */
 
if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
img_struct = 1;
else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
img_struct = 3;
else
img_struct = 0;
 
if ((img_struct & 0x1) == 0x1) {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
} else {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
}
 
if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
assert(pic_param->pic_fields.bits.field_pic_flag == 0);
} else {
assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
}
 
mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
 
width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
assert(!((width_in_mbs * height_in_mbs) & 0x8000)); /* hardware requirement */
 
/* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
 
BEGIN_BCS_BATCH(batch, 13);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (13 - 2));
OUT_BCS_BATCH(batch,
((width_in_mbs * height_in_mbs) & 0x7fff));
OUT_BCS_BATCH(batch,
(height_in_mbs << 16) |
(width_in_mbs << 0));
OUT_BCS_BATCH(batch,
((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
(0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
(0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
(1 << 12) | /* always 1, hardware requirement */
(qm_present_flag << 10) |
(img_struct << 8) |
(16 << 0));
OUT_BCS_BATCH(batch,
(pic_param->seq_fields.bits.chroma_format_idc << 10) |
(pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
(pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
(pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
(pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
(pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
(mbaff_frame_flag << 1) |
(pic_param->pic_fields.bits.field_pic_flag << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int cmd_len;
VAIQMatrixBufferH264 *iq_matrix;
VAPictureParameterBufferH264 *pic_param;
 
if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
return;
 
iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
cmd_len = 2 + 6 * 4; /* always load six 4x4 scaling matrices */
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
cmd_len += 2 * 16; /* load two 8x8 scaling matrices */
 
BEGIN_BCS_BATCH(batch, cmd_len);
OUT_BCS_BATCH(batch, MFX_AVC_QM_STATE | (cmd_len - 2));
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
OUT_BCS_BATCH(batch,
(0x0 << 8) | /* don't use default built-in matrices */
(0xff << 0)); /* six 4x4 and two 8x8 scaling matrices */
else
OUT_BCS_BATCH(batch,
(0x0 << 8) | /* don't use default built-in matrices */
(0x3f << 0)); /* six 4x4 scaling matrices */
 
intel_batchbuffer_data(batch, &iq_matrix->ScalingList4x4[0][0], 6 * 4 * 4);
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
intel_batchbuffer_data(batch, &iq_matrix->ScalingList8x8[0][0], 2 * 16 * 4);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_directmode_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
struct object_surface *obj_surface;
GenAvcSurface *gen6_avc_surface;
VAPictureH264 *va_pic;
int i, j;
 
BEGIN_BCS_BATCH(batch, 69);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen6_mfd_context->reference_surface[i].surface_id);
assert(obj_surface);
gen6_avc_surface = obj_surface->private_data;
 
if (gen6_avc_surface == NULL) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
 
if (gen6_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
/* the current decoding frame/field */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface && obj_surface->bo && obj_surface->private_data);
gen6_avc_surface = obj_surface->private_data;
 
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
if (gen6_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
/* POC List */
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == gen6_mfd_context->reference_surface[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_slice_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
VASliceParameterBufferH264 *next_slice_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
int num_ref_idx_l0, num_ref_idx_l1;
int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
int weighted_pred_idc = 0;
int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
unsigned int chroma_log2_weight_denom, luma_log2_weight_denom;
int slice_type;
 
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI) {
slice_type = SLICE_TYPE_I;
} else if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) {
slice_type = SLICE_TYPE_P;
} else {
assert(slice_param->slice_type == SLICE_TYPE_B);
slice_type = SLICE_TYPE_B;
}
 
luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
 
if (slice_type == SLICE_TYPE_I) {
assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = 0;
num_ref_idx_l1 = 0;
} else if (slice_type == SLICE_TYPE_P) {
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = 0;
weighted_pred_idc = (pic_param->pic_fields.bits.weighted_pred_flag == 1);
} else {
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
 
if (weighted_pred_idc == 2) {
/* 8.4.3 - Derivation process for prediction weights (8-279) */
luma_log2_weight_denom = 5;
chroma_log2_weight_denom = 5;
}
}
 
first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
slice_hor_pos = first_mb_in_slice % width_in_mbs;
slice_ver_pos = first_mb_in_slice / width_in_mbs;
 
if (next_slice_param) {
first_mb_in_next_slice = next_slice_param->first_mb_in_slice << mbaff_picture;
next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
} else {
next_slice_hor_pos = 0;
next_slice_ver_pos = height_in_mbs;
}
 
BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, slice_type);
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(chroma_log2_weight_denom << 8) |
(luma_log2_weight_denom << 0));
OUT_BCS_BATCH(batch,
(weighted_pred_idc << 30) |
(slice_param->direct_spatial_mv_pred_flag << 29) |
(slice_param->disable_deblocking_filter_idc << 27) |
(slice_param->cabac_init_idc << 24) |
((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(next_slice_ver_pos << 16) |
(next_slice_hor_pos << 0));
OUT_BCS_BATCH(batch,
(next_slice_param == NULL) << 19); /* last slice flag */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_phantom_slice_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
height_in_mbs << 24 |
width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static inline void
gen6_mfd_avc_ref_idx_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen6_mfd_context *gen6_mfd_context)
{
gen6_send_avc_ref_idx_state(
gen6_mfd_context->base.batch,
slice_param,
gen6_mfd_context->reference_surface
);
}
 
static void
gen6_mfd_avc_weightoffset_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int i, j, num_weight_offset_table = 0;
short weightoffsets[32 * 6];
 
if ((slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) &&
(pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
num_weight_offset_table = 1;
}
if ((slice_param->slice_type == SLICE_TYPE_B) &&
(pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
num_weight_offset_table = 2;
}
 
for (i = 0; i < num_weight_offset_table; i++) {
BEGIN_BCS_BATCH(batch, 98);
OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
OUT_BCS_BATCH(batch, i);
 
if (i == 0) {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
}
} else {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
}
}
 
intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
gen6_mfd_avc_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
dri_bo *slice_data_bo,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
unsigned int slice_data_bit_offset;
 
slice_data_bit_offset = avc_get_first_mb_bit_offset(
slice_data_bo,
slice_param,
pic_param->pic_fields.bits.entropy_coding_mode_flag
);
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch,
(slice_param->slice_data_size - slice_param->slice_data_offset));
OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
OUT_BCS_BATCH(batch,
(0 << 31) |
(0 << 14) |
(0 << 12) |
(0 << 10) |
(0 << 8));
OUT_BCS_BATCH(batch,
((slice_data_bit_offset >> 3) << 16) |
(1 << 7) |
(1 << 6) |
((0x7 - (slice_data_bit_offset & 0x7)) << 0));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_phantom_slice_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_avc_phantom_slice(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen6_mfd_context *gen6_mfd_context)
{
gen6_mfd_avc_phantom_slice_state(ctx, pic_param, gen6_mfd_context);
gen6_mfd_avc_phantom_slice_bsd_object(ctx, pic_param, gen6_mfd_context);
}
 
static void
gen6_mfd_avc_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param;
VAPictureH264 *va_pic;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
int i, j, enable_avc_ildb = 0;
int width_in_mbs;
 
for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (slice_param->disable_deblocking_filter_idc != 1) {
enable_avc_ildb = 1;
break;
}
 
slice_param++;
}
}
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen6_mfd_avc_frame_store_index(ctx, pic_param, gen6_mfd_context);
width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
 
/* Current decoded picture */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
obj_surface->flags |= (pic_param->pic_fields.bits.reference_pic_flag ? SURFACE_REFERENCED : 0);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
/* initial uv component for YUV400 case */
if (pic_param->seq_fields.bits.chroma_format_idc == 0) {
unsigned int uv_offset = obj_surface->width * obj_surface->height;
unsigned int uv_size = obj_surface->width * obj_surface->height / 2;
 
drm_intel_gem_bo_map_gtt(obj_surface->bo);
memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size);
drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
}
 
gen6_mfd_init_avc_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
gen6_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen6_mfd_context->post_deblocking_output.bo);
gen6_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
 
dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
 
dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen6_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 64 * 4,
0x1000);
assert(bo);
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen6_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
 
gen6_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen6_mfd_avc_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen6_mfd_avc_decode_init(ctx, decode_state, gen6_mfd_context);
 
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
gen6_mfd_avc_img_state(ctx, decode_state, gen6_mfd_context);
gen6_mfd_avc_qm_state(ctx, decode_state, gen6_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen6_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen6_mfd_avc_directmode_state(ctx, pic_param, slice_param, gen6_mfd_context);
gen6_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen6_mfd_context);
gen6_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen6_mfd_context);
gen6_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen6_mfd_context);
gen6_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, gen6_mfd_context);
slice_param++;
}
}
gen6_mfd_avc_phantom_slice(ctx, pic_param, gen6_mfd_context);
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen6_mfd_mpeg2_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
VAPictureParameterBufferMPEG2 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
unsigned int width_in_mbs;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
 
mpeg2_set_reference_surfaces(
ctx,
gen6_mfd_context->reference_surface,
decode_state,
pic_param
);
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen6_mfd_context->post_deblocking_output.valid = 0;
gen6_mfd_context->intra_row_store_scratch_buffer.valid = 0;
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
gen6_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen6_mfd_mpeg2_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
unsigned int tff, pic_structure;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
pic_structure = pic_param->picture_coding_extension.bits.picture_structure;
if (pic_structure == MPEG_FRAME)
tff = pic_param->picture_coding_extension.bits.top_field_first;
else
tff = !(pic_param->picture_coding_extension.bits.is_first_field ^
(pic_structure & MPEG_TOP_FIELD));
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (4 - 2));
OUT_BCS_BATCH(batch,
(pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
pic_param->picture_coding_extension.bits.picture_structure << 12 |
tff << 11 |
pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
pic_param->picture_coding_extension.bits.q_scale_type << 8 |
pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
pic_param->picture_coding_extension.bits.alternate_scan << 6);
OUT_BCS_BATCH(batch,
pic_param->picture_coding_type << 9);
OUT_BCS_BATCH(batch,
(ALIGN(pic_param->vertical_size, 16) / 16) << 16 |
(ALIGN(pic_param->horizontal_size, 16) / 16));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_mpeg2_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen6_mfd_context->iq_matrix.mpeg2;
int i, j;
 
/* Update internal QM state */
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
VAIQMatrixBufferMPEG2 * const iq_matrix =
(VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
 
gen_iq_matrix->load_intra_quantiser_matrix =
iq_matrix->load_intra_quantiser_matrix;
if (iq_matrix->load_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->intra_quantiser_matrix[j];
}
 
gen_iq_matrix->load_non_intra_quantiser_matrix =
iq_matrix->load_non_intra_quantiser_matrix;
if (iq_matrix->load_non_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->non_intra_quantiser_matrix[j];
}
}
 
/* Commit QM state to HW */
for (i = 0; i < 2; i++) {
unsigned char *qm = NULL;
 
if (i == 0) {
if (gen_iq_matrix->load_intra_quantiser_matrix)
qm = gen_iq_matrix->intra_quantiser_matrix;
} else {
if (gen_iq_matrix->load_non_intra_quantiser_matrix)
qm = gen_iq_matrix->non_intra_quantiser_matrix;
}
 
if (!qm)
continue;
 
BEGIN_BCS_BATCH(batch, 18);
OUT_BCS_BATCH(batch, MFX_MPEG2_QM_STATE | (18 - 2));
OUT_BCS_BATCH(batch, i);
intel_batchbuffer_data(batch, qm, 64);
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
gen6_mfd_mpeg2_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferMPEG2 *pic_param,
VASliceParameterBufferMPEG2 *slice_param,
VASliceParameterBufferMPEG2 *next_slice_param,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
 
if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
is_field_pic = 1;
is_field_pic_wa = is_field_pic &&
gen6_mfd_context->wa_mpeg2_slice_vertical_position > 0;
 
vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos0 = slice_param->slice_horizontal_position;
 
if (next_slice_param == NULL) {
vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
hpos1 = 0;
} else {
vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos1 = next_slice_param->slice_horizontal_position;
}
 
mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
hpos0 << 24 |
vpos0 << 16 |
mb_count << 8 |
(next_slice_param == NULL) << 5 |
(next_slice_param == NULL) << 3 |
(slice_param->macroblock_offset & 0x7));
OUT_BCS_BATCH(batch,
slice_param->quantiser_scale_code << 24);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_mpeg2_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
gen6_mfd_mpeg2_decode_init(ctx, decode_state, gen6_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
gen6_mfd_mpeg2_pic_state(ctx, decode_state, gen6_mfd_context);
gen6_mfd_mpeg2_qm_state(ctx, decode_state, gen6_mfd_context);
 
if (gen6_mfd_context->wa_mpeg2_slice_vertical_position < 0)
gen6_mfd_context->wa_mpeg2_slice_vertical_position =
mpeg2_wa_slice_vertical_position(decode_state, pic_param);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen6_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen6_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen6_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static const int va_to_gen6_vc1_pic_type[5] = {
GEN6_VC1_I_PICTURE,
GEN6_VC1_P_PICTURE,
GEN6_VC1_B_PICTURE,
GEN6_VC1_BI_PICTURE,
GEN6_VC1_P_PICTURE,
};
 
static const int va_to_gen6_vc1_mv[4] = {
1, /* 1-MV */
2, /* 1-MV half-pel */
3, /* 1-MV half-pef bilinear */
0, /* Mixed MV */
};
 
static const int b_picture_scale_factor[21] = {
128, 85, 170, 64, 192,
51, 102, 153, 204, 43,
215, 37, 74, 111, 148,
185, 222, 32, 96, 160,
224,
};
 
static const int va_to_gen6_vc1_condover[3] = {
0,
2,
3
};
 
static const int va_to_gen6_vc1_profile[4] = {
GEN6_VC1_SIMPLE_PROFILE,
GEN6_VC1_MAIN_PROFILE,
GEN6_VC1_RESERVED_PROFILE,
GEN6_VC1_ADVANCED_PROFILE
};
 
static void
gen6_mfd_free_vc1_surface(void **data)
{
struct gen6_vc1_surface *gen6_vc1_surface = *data;
 
if (!gen6_vc1_surface)
return;
 
dri_bo_unreference(gen6_vc1_surface->dmv);
free(gen6_vc1_surface);
*data = NULL;
}
 
static void
gen6_mfd_init_vc1_surface(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vc1_surface *gen6_vc1_surface = obj_surface->private_data;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
 
obj_surface->free_private_data = gen6_mfd_free_vc1_surface;
 
if (!gen6_vc1_surface) {
gen6_vc1_surface = calloc(sizeof(struct gen6_vc1_surface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen6_vc1_surface;
}
 
gen6_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
 
if (gen6_vc1_surface->dmv == NULL) {
gen6_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
128 * height_in_mbs * 64, /* scalable with frame height */
0x1000);
}
}
 
static void
gen6_mfd_vc1_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int i;
dri_bo *bo;
int width_in_mbs;
int picture_type;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
picture_type = pic_param->picture_fields.bits.picture_type;
 
/* reference picture */
obj_surface = SURFACE(pic_param->forward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen6_mfd_context->reference_surface[0].surface_id = pic_param->forward_reference_picture;
else
gen6_mfd_context->reference_surface[0].surface_id = VA_INVALID_ID;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen6_mfd_context->reference_surface[1].surface_id = pic_param->backward_reference_picture;
else
gen6_mfd_context->reference_surface[1].surface_id = pic_param->forward_reference_picture;
 
/* must do so !!! */
for (i = 2; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++)
gen6_mfd_context->reference_surface[i].surface_id = gen6_mfd_context->reference_surface[i % 2].surface_id;
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
gen6_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
gen6_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen6_mfd_context->post_deblocking_output.bo);
gen6_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen6_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 7 * 64,
0x1000);
assert(bo);
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
 
gen6_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
if (gen6_mfd_context->bitplane_read_buffer.valid) {
int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
int src_w, src_h;
uint8_t *src = NULL, *dst = NULL;
 
assert(decode_state->bit_plane->buffer);
src = decode_state->bit_plane->buffer;
 
bo = dri_bo_alloc(i965->intel.bufmgr,
"VC-1 Bitplane",
bitplane_width * height_in_mbs,
0x1000);
assert(bo);
gen6_mfd_context->bitplane_read_buffer.bo = bo;
 
dri_bo_map(bo, True);
assert(bo->virtual);
dst = bo->virtual;
 
for (src_h = 0; src_h < height_in_mbs; src_h++) {
for(src_w = 0; src_w < width_in_mbs; src_w++) {
int src_index, dst_index;
int src_shift;
uint8_t src_value;
 
src_index = (src_h * width_in_mbs + src_w) / 2;
src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
src_value = ((src[src_index] >> src_shift) & 0xf);
 
if (picture_type == GEN6_VC1_SKIPPED_PICTURE){
src_value |= 0x2;
}
 
dst_index = src_w / 2;
dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
}
 
if (src_w & 1)
dst[src_w / 2] >>= 4;
 
dst += bitplane_width;
}
 
dri_bo_unmap(bo);
} else
gen6_mfd_context->bitplane_read_buffer.bo = NULL;
}
 
static void
gen6_mfd_vc1_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
int unified_mv_mode;
int ref_field_pic_polarity = 0;
int scale_factor = 0;
int trans_ac_y = 0;
int dmv_surface_valid = 0;
int brfd = 0;
int fcm = 0;
int picture_type;
int profile;
int overlap;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
profile = va_to_gen6_vc1_profile[pic_param->sequence_fields.bits.profile];
dquant = pic_param->pic_quantizer_fields.bits.dquant;
dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
 
if (dquant == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
} else if (dquant == 2) {
alt_pquant_config = 1;
alt_pquant_edge_mask = 0xf;
} else {
assert(dquant == 1);
if (dquantfrm == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
alt_pq = 0;
} else {
assert(dquantfrm == 1);
alt_pquant_config = 1;
 
switch (dqprofile) {
case 3:
if (dqbilevel == 0) {
alt_pquant_config = 2;
alt_pquant_edge_mask = 0;
} else {
assert(dqbilevel == 1);
alt_pquant_config = 3;
alt_pquant_edge_mask = 0;
}
break;
case 0:
alt_pquant_edge_mask = 0xf;
break;
 
case 1:
if (dqdbedge == 3)
alt_pquant_edge_mask = 0x9;
else
alt_pquant_edge_mask = (0x3 << dqdbedge);
 
break;
 
case 2:
alt_pquant_edge_mask = (0x1 << dqsbedge);
break;
 
default:
assert(0);
}
}
}
 
if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
assert(pic_param->mv_fields.bits.mv_mode2 < 4);
unified_mv_mode = va_to_gen6_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
} else {
assert(pic_param->mv_fields.bits.mv_mode < 4);
unified_mv_mode = va_to_gen6_vc1_mv[pic_param->mv_fields.bits.mv_mode];
}
 
if (pic_param->sequence_fields.bits.interlace == 1 &&
pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
/* FIXME: calculate reference field picture polarity */
assert(0);
ref_field_pic_polarity = 0;
}
 
if (pic_param->b_picture_fraction < 21)
scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
 
picture_type = va_to_gen6_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
if (profile == GEN6_VC1_ADVANCED_PROFILE &&
picture_type == GEN6_VC1_I_PICTURE)
picture_type = GEN6_VC1_BI_PICTURE;
 
if (picture_type == GEN6_VC1_I_PICTURE || picture_type == GEN6_VC1_BI_PICTURE) /* I picture */
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
else {
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
/*
* 8.3.6.2.1 Transform Type Selection
* If variable-sized transform coding is not enabled,
* then the 8x8 transform shall be used for all blocks.
* it is also MFX_VC1_PIC_STATE requirement.
*/
if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
pic_param->transform_fields.bits.frame_level_transform_type = 0;
}
}
 
if (picture_type == GEN6_VC1_B_PICTURE) {
struct gen6_vc1_surface *gen6_vc1_surface = NULL;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
assert(obj_surface);
gen6_vc1_surface = obj_surface->private_data;
 
if (!gen6_vc1_surface ||
(va_to_gen6_vc1_pic_type[gen6_vc1_surface->picture_type] == GEN6_VC1_I_PICTURE ||
va_to_gen6_vc1_pic_type[gen6_vc1_surface->picture_type] == GEN6_VC1_BI_PICTURE))
dmv_surface_valid = 0;
else
dmv_surface_valid = 1;
}
 
assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
 
if (pic_param->picture_fields.bits.frame_coding_mode < 2)
fcm = pic_param->picture_fields.bits.frame_coding_mode;
else {
if (pic_param->picture_fields.bits.top_field_first)
fcm = 2;
else
fcm = 3;
}
 
if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_B_PICTURE) { /* B picture */
brfd = pic_param->reference_fields.bits.reference_distance;
brfd = (scale_factor * brfd) >> 8;
brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
 
if (brfd < 0)
brfd = 0;
}
 
overlap = 0;
if (profile != GEN6_VC1_ADVANCED_PROFILE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
pic_param->picture_fields.bits.picture_type != GEN6_VC1_B_PICTURE) {
overlap = 1;
}
}else {
if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_P_PICTURE &&
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
}
if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_I_PICTURE ||
pic_param->picture_fields.bits.picture_type == GEN6_VC1_BI_PICTURE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
} else if (va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
overlap = 1;
}
}
}
 
assert(pic_param->conditional_overlap_flag < 3);
assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_VC1_PIC_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
(ALIGN(pic_param->coded_height, 16) / 16) << 16 |
(ALIGN(pic_param->coded_width, 16) / 16));
OUT_BCS_BATCH(batch,
pic_param->sequence_fields.bits.syncmarker << 31 |
1 << 29 | /* concealment */
alt_pq << 24 |
pic_param->entrypoint_fields.bits.loopfilter << 23 |
overlap << 22 |
(pic_param->pic_quantizer_fields.bits.quantizer == 0) << 21 | /* implicit quantizer */
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 16 |
alt_pquant_edge_mask << 12 |
alt_pquant_config << 10 |
pic_param->pic_quantizer_fields.bits.half_qp << 9 |
pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 8 |
va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] << 6 |
!pic_param->picture_fields.bits.is_first_field << 5 |
picture_type << 2 |
fcm << 0);
OUT_BCS_BATCH(batch,
!!pic_param->bitplane_present.value << 23 |
!pic_param->bitplane_present.flags.bp_forward_mb << 22 |
!pic_param->bitplane_present.flags.bp_mv_type_mb << 21 |
!pic_param->bitplane_present.flags.bp_skip_mb << 20 |
!pic_param->bitplane_present.flags.bp_direct_mb << 19 |
!pic_param->bitplane_present.flags.bp_overflags << 18 |
!pic_param->bitplane_present.flags.bp_ac_pred << 17 |
!pic_param->bitplane_present.flags.bp_field_tx << 16 |
pic_param->mv_fields.bits.extended_dmv_range << 14 |
pic_param->mv_fields.bits.extended_mv_range << 12 |
pic_param->mv_fields.bits.four_mv_switch << 11 |
pic_param->fast_uvmc_flag << 10 |
unified_mv_mode << 8 |
ref_field_pic_polarity << 6 |
pic_param->reference_fields.bits.num_reference_pictures << 5 |
pic_param->reference_fields.bits.reference_distance << 0);
OUT_BCS_BATCH(batch,
scale_factor << 24 |
pic_param->mv_fields.bits.mv_table << 20 |
pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
pic_param->transform_fields.bits.frame_level_transform_type << 12 |
pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
pic_param->mb_mode_table << 8 |
trans_ac_y << 6 |
pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
pic_param->cbp_table << 0);
OUT_BCS_BATCH(batch,
dmv_surface_valid << 13 |
brfd << 8 |
((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
int interpolation_mode = 0;
int intensitycomp_single;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
interpolation_mode = 2; /* Half-pel bilinear */
else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
interpolation_mode = 0; /* Half-pel bicubic */
else
interpolation_mode = 1; /* Quarter-pel bicubic */
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
 
BEGIN_BCS_BATCH(batch, 7);
OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (7 - 2));
OUT_BCS_BATCH(batch,
0 << 8 | /* FIXME: interlace mode */
pic_param->rounding_control << 4 |
va_to_gen6_vc1_profile[pic_param->sequence_fields.bits.profile] << 2);
OUT_BCS_BATCH(batch,
pic_param->luma_shift << 16 |
pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
interpolation_mode << 19 |
pic_param->fast_uvmc_flag << 18 |
0 << 17 | /* FIXME: scale up or down ??? */
pic_param->range_reduction_frame << 16 |
0 << 6 | /* FIXME: double ??? */
0 << 4 |
intensitycomp_single << 2 |
intensitycomp_single << 0);
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen6_mfd_vc1_directmode_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
obj_surface = SURFACE(decode_state->current_render_target);
 
if (obj_surface && obj_surface->private_data) {
dmv_write_buffer = ((struct gen6_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->private_data) {
dmv_read_buffer = ((struct gen6_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
 
if (dmv_write_buffer)
OUT_BCS_RELOC(batch, dmv_write_buffer,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (dmv_read_buffer)
OUT_BCS_RELOC(batch, dmv_read_buffer,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static int
gen6_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
{
int out_slice_data_bit_offset;
int slice_header_size = in_slice_data_bit_offset / 8;
int i, j;
 
if (profile != 3)
out_slice_data_bit_offset = in_slice_data_bit_offset;
else {
for (i = 0, j = 0; i < slice_header_size; i++, j++) {
if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
i++, j += 2;
}
}
 
out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
}
 
return out_slice_data_bit_offset;
}
 
static void
gen6_mfd_vc1_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
VASliceParameterBufferVC1 *slice_param,
VASliceParameterBufferVC1 *next_slice_param,
dri_bo *slice_data_bo,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
int next_slice_start_vert_pos;
int macroblock_offset;
uint8_t *slice_data = NULL;
 
dri_bo_map(slice_data_bo, 0);
slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
macroblock_offset = gen6_mfd_vc1_get_macroblock_bit_offset(slice_data,
slice_param->macroblock_offset,
pic_param->sequence_fields.bits.profile);
dri_bo_unmap(slice_data_bo);
 
if (next_slice_param)
next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
else
next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (4 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_vertical_position << 24 |
next_slice_start_vert_pos << 16 |
(macroblock_offset & 0x7));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen6_mfd_vc1_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
{
struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
gen6_mfd_vc1_decode_init(ctx, decode_state, gen6_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
gen6_mfd_vc1_pic_state(ctx, decode_state, gen6_mfd_context);
gen6_mfd_vc1_pred_pipe_state(ctx, decode_state, gen6_mfd_context);
gen6_mfd_vc1_directmode_state(ctx, decode_state, gen6_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen6_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen6_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen6_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen6_mfd_decode_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
 
{
struct gen6_mfd_context *gen6_mfd_context = (struct gen6_mfd_context *)hw_context;
struct decode_state *decode_state = &codec_state->decode;
 
assert(gen6_mfd_context);
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
gen6_mfd_mpeg2_decode_picture(ctx, decode_state, gen6_mfd_context);
break;
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
gen6_mfd_avc_decode_picture(ctx, decode_state, gen6_mfd_context);
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
gen6_mfd_vc1_decode_picture(ctx, decode_state, gen6_mfd_context);
break;
 
default:
assert(0);
break;
}
}
 
static void
gen6_mfd_context_destroy(void *hw_context)
{
struct gen6_mfd_context *gen6_mfd_context = (struct gen6_mfd_context *)hw_context;
 
dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
gen6_mfd_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
gen6_mfd_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
gen6_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
gen6_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
gen6_mfd_context->bitplane_read_buffer.bo = NULL;
 
intel_batchbuffer_free(gen6_mfd_context->base.batch);
free(gen6_mfd_context);
}
 
struct hw_context *
gen6_dec_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct gen6_mfd_context *gen6_mfd_context = calloc(1, sizeof(struct gen6_mfd_context));
int i;
 
gen6_mfd_context->base.destroy = gen6_mfd_context_destroy;
gen6_mfd_context->base.run = gen6_mfd_decode_picture;
gen6_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
gen6_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen6_mfd_context->reference_surface[i].frame_store_id = -1;
}
 
gen6_mfd_context->wa_mpeg2_slice_vertical_position = -1;
return (struct hw_context *)gen6_mfd_context;
}
/drivers/video/i965/gen6_mfd.h
0,0 → 1,77
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef _GEN6_MFD_H_
#define _GEN6_MFD_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
#include "i965_decoder.h"
 
#define GEN6_VC1_I_PICTURE 0
#define GEN6_VC1_P_PICTURE 1
#define GEN6_VC1_B_PICTURE 2
#define GEN6_VC1_BI_PICTURE 3
#define GEN6_VC1_SKIPPED_PICTURE 4
 
#define GEN6_VC1_SIMPLE_PROFILE 0
#define GEN6_VC1_MAIN_PROFILE 1
#define GEN6_VC1_ADVANCED_PROFILE 2
#define GEN6_VC1_RESERVED_PROFILE 3
 
struct gen6_vc1_surface
{
dri_bo *dmv;
int picture_type;
};
 
struct hw_context;
 
struct gen6_mfd_context
{
struct hw_context base;
 
union {
VAIQMatrixBufferMPEG2 mpeg2;
} iq_matrix;
 
GenFrameStore reference_surface[MAX_GEN_REFERENCE_FRAMES];
GenBuffer post_deblocking_output;
GenBuffer pre_deblocking_output;
GenBuffer intra_row_store_scratch_buffer;
GenBuffer deblocking_filter_row_store_scratch_buffer;
GenBuffer bsd_mpc_row_store_scratch_buffer;
GenBuffer mpr_row_store_scratch_buffer;
GenBuffer bitplane_read_buffer;
 
int wa_mpeg2_slice_vertical_position;
};
 
#endif /* _GEN6_MFD_H_ */
/drivers/video/i965/gen6_vme.c
0,0 → 1,1046
/*
* Copyright © 2010-2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhou Chang <chang.zhou@intel.com>
*
*/
 
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "gen6_vme.h"
#include "i965_encoder.h"
 
#define SURFACE_STATE_PADDED_SIZE_0_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_GEN7 ALIGN(sizeof(struct gen7_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN7 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN7, SURFACE_STATE_PADDED_SIZE_1_GEN7)
 
#define SURFACE_STATE_PADDED_SIZE_0_GEN6 ALIGN(sizeof(struct i965_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_GEN6 ALIGN(sizeof(struct i965_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN6 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN6, SURFACE_STATE_PADDED_SIZE_1_GEN7)
 
#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6)
 
#define VME_INTRA_SHADER 0
#define VME_INTER_SHADER 1
 
#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
static const uint32_t gen6_vme_intra_frame[][4] = {
#include "shaders/vme/intra_frame.g6b"
};
 
static const uint32_t gen6_vme_inter_frame[][4] = {
#include "shaders/vme/inter_frame.g6b"
};
 
static struct i965_kernel gen6_vme_kernels[] = {
{
"VME Intra Frame",
VME_INTRA_SHADER, /*index*/
gen6_vme_intra_frame,
sizeof(gen6_vme_intra_frame),
NULL
},
{
"VME inter Frame",
VME_INTER_SHADER,
gen6_vme_inter_frame,
sizeof(gen6_vme_inter_frame),
NULL
}
};
 
static const uint32_t gen7_vme_intra_frame[][4] = {
#include "shaders/vme/intra_frame.g7b"
};
 
static const uint32_t gen7_vme_inter_frame[][4] = {
#include "shaders/vme/inter_frame.g7b"
};
 
static struct i965_kernel gen7_vme_kernels[] = {
{
"VME Intra Frame",
VME_INTRA_SHADER, /*index*/
gen7_vme_intra_frame,
sizeof(gen7_vme_intra_frame),
NULL
},
{
"VME inter Frame",
VME_INTER_SHADER,
gen7_vme_inter_frame,
sizeof(gen7_vme_inter_frame),
NULL
}
};
 
static void
gen6_vme_set_common_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss3.tiled_surface = 0;
ss->ss3.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
gen6_vme_set_source_surface_tiling(struct i965_surface_state2 *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss2.tiled_surface = 0;
ss->ss2.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
/* only used for VME source surface state */
static void gen6_vme_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct i965_surface_state2 *ss;
dri_bo *bo;
int w, h, w_pitch, h_pitch;
unsigned int tiling, swizzle;
 
assert(obj_surface->bo);
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
 
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
h_pitch = obj_surface->height;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct i965_surface_state2 *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
ss->ss0.surface_base_address = obj_surface->bo->offset;
 
ss->ss1.cbcr_pixel_offset_v_direction = 2;
ss->ss1.width = w - 1;
ss->ss1.height = h - 1;
 
ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
ss->ss2.interleave_chroma = 1;
ss->ss2.pitch = w_pitch - 1;
ss->ss2.half_pitch_for_chroma = 0;
 
gen6_vme_set_source_surface_tiling(ss, tiling);
 
/* UV offset for interleave mode */
ss->ss3.x_offset_for_cb = 0;
ss->ss3.y_offset_for_cb = h_pitch;
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, 0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state2, ss0),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static void
gen6_vme_media_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct i965_surface_state *ss;
dri_bo *bo;
int w, h, w_pitch;
unsigned int tiling, swizzle;
 
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
 
/* Y plane */
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, True);
assert(bo->virtual);
 
ss = (struct i965_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
ss->ss1.base_addr = obj_surface->bo->offset;
ss->ss2.width = w / 4 - 1;
ss->ss2.height = h - 1;
ss->ss3.pitch = w_pitch - 1;
gen6_vme_set_common_surface_tiling(ss, tiling);
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static VAStatus
gen6_vme_output_buffer_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int index,
struct gen6_encoder_context *gen6_encoder_context)
 
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct i965_surface_state *ss;
dri_bo *bo;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
int num_entries;
 
if ( is_intra ) {
vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
} else {
vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs * 4;
}
vme_context->vme_output.size_block = 16; /* an OWORD */
vme_context->vme_output.pitch = ALIGN(vme_context->vme_output.size_block, 16);
bo = dri_bo_alloc(i965->intel.bufmgr,
"VME output buffer",
vme_context->vme_output.num_blocks * vme_context->vme_output.pitch,
0x1000);
assert(bo);
vme_context->vme_output.bo = bo;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct i965_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
/* always use 16 bytes as pitch on Sandy Bridge */
num_entries = vme_context->vme_output.num_blocks * vme_context->vme_output.pitch / 16;
ss->ss0.render_cache_read_mode = 1;
ss->ss0.surface_type = I965_SURFACE_BUFFER;
ss->ss1.base_addr = vme_context->vme_output.bo->offset;
ss->ss2.width = ((num_entries - 1) & 0x7f);
ss->ss2.height = (((num_entries - 1) >> 7) & 0x1fff);
ss->ss3.depth = (((num_entries - 1) >> 20) & 0x7f);
ss->ss3.pitch = vme_context->vme_output.pitch - 1;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
vme_context->vme_output.bo);
 
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_vme_surface_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int is_intra,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
 
/*Setup surfaces state*/
/* current picture for encoding */
obj_surface = SURFACE(encode_state->current_render_target);
assert(obj_surface);
gen6_vme_source_surface_state(ctx, 0, obj_surface, gen6_encoder_context);
gen6_vme_media_source_surface_state(ctx, 4, obj_surface, gen6_encoder_context);
 
if ( ! is_intra ) {
/* reference 0 */
obj_surface = SURFACE(pPicParameter->reference_picture);
assert(obj_surface);
gen6_vme_source_surface_state(ctx, 1, obj_surface, gen6_encoder_context);
/* reference 1, FIXME: */
// obj_surface = SURFACE(pPicParameter->reference_picture);
// assert(obj_surface);
//gen6_vme_source_surface_state(ctx, 2, obj_surface);
}
 
/* VME output */
gen6_vme_output_buffer_setup(ctx, encode_state, 3, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
/*
* Surface state for IvyBridge
*/
static void
gen7_vme_set_common_surface_tiling(struct gen7_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss0.tiled_surface = 0;
ss->ss0.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
gen7_vme_set_source_surface_tiling(struct gen7_surface_state2 *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss2.tiled_surface = 0;
ss->ss2.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
/* only used for VME source surface state */
static void gen7_vme_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state2 *ss;
dri_bo *bo;
int w, h, w_pitch, h_pitch;
unsigned int tiling, swizzle;
 
assert(obj_surface->bo);
 
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
h_pitch = obj_surface->height;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct gen7_surface_state2 *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
ss->ss0.surface_base_address = obj_surface->bo->offset;
 
ss->ss1.cbcr_pixel_offset_v_direction = 2;
ss->ss1.width = w - 1;
ss->ss1.height = h - 1;
 
ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
ss->ss2.interleave_chroma = 1;
ss->ss2.pitch = w_pitch - 1;
ss->ss2.half_pitch_for_chroma = 0;
 
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
gen7_vme_set_source_surface_tiling(ss, tiling);
 
/* UV offset for interleave mode */
ss->ss3.x_offset_for_cb = 0;
ss->ss3.y_offset_for_cb = h_pitch;
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, 0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state2, ss0),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static void
gen7_vme_media_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state *ss;
dri_bo *bo;
int w, h, w_pitch;
unsigned int tiling, swizzle;
 
/* Y plane */
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, True);
assert(bo->virtual);
 
ss = (struct gen7_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
 
ss->ss1.base_addr = obj_surface->bo->offset;
 
ss->ss2.width = w / 4 - 1;
ss->ss2.height = h - 1;
 
ss->ss3.pitch = w_pitch - 1;
 
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
gen7_vme_set_common_surface_tiling(ss, tiling);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, 0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static VAStatus
gen7_vme_output_buffer_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int index,
struct gen6_encoder_context *gen6_encoder_context)
 
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state *ss;
dri_bo *bo;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
int num_entries;
 
if ( is_intra ) {
vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
} else {
vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs * 4;
}
vme_context->vme_output.size_block = 16; /* an OWORD */
vme_context->vme_output.pitch = ALIGN(vme_context->vme_output.size_block, 16);
bo = dri_bo_alloc(i965->intel.bufmgr,
"VME output buffer",
vme_context->vme_output.num_blocks * vme_context->vme_output.pitch,
0x1000);
assert(bo);
vme_context->vme_output.bo = bo;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct gen7_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
ss = bo->virtual;
memset(ss, 0, sizeof(*ss));
 
/* always use 16 bytes as pitch on Sandy Bridge */
num_entries = vme_context->vme_output.num_blocks * vme_context->vme_output.pitch / 16;
 
ss->ss0.surface_type = I965_SURFACE_BUFFER;
 
ss->ss1.base_addr = vme_context->vme_output.bo->offset;
 
ss->ss2.width = ((num_entries - 1) & 0x7f);
ss->ss2.height = (((num_entries - 1) >> 7) & 0x3fff);
ss->ss3.depth = (((num_entries - 1) >> 21) & 0x3f);
 
ss->ss3.pitch = vme_context->vme_output.pitch - 1;
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
vme_context->vme_output.bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen7_vme_surface_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int is_intra,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
 
/*Setup surfaces state*/
/* current picture for encoding */
obj_surface = SURFACE(encode_state->current_render_target);
assert(obj_surface);
gen7_vme_source_surface_state(ctx, 1, obj_surface, gen6_encoder_context);
gen7_vme_media_source_surface_state(ctx, 4, obj_surface, gen6_encoder_context);
 
if ( ! is_intra ) {
/* reference 0 */
obj_surface = SURFACE(pPicParameter->reference_picture);
assert(obj_surface);
gen7_vme_source_surface_state(ctx, 2, obj_surface, gen6_encoder_context);
/* reference 1, FIXME: */
// obj_surface = SURFACE(pPicParameter->reference_picture);
// assert(obj_surface);
//gen7_vme_source_surface_state(ctx, 3, obj_surface);
}
 
/* VME output */
gen7_vme_output_buffer_setup(ctx, encode_state, 0, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_vme_interface_setup(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen6_interface_descriptor_data *desc;
int i;
dri_bo *bo;
 
bo = vme_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
struct i965_kernel *kernel;
kernel = &vme_context->vme_kernels[i];
assert(sizeof(*desc) == 32);
/*Setup the descritor table*/
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
desc->desc2.sampler_count = 1; /* FIXME: */
desc->desc2.sampler_state_pointer = (vme_context->vme_state.bo->offset >> 5);
desc->desc3.binding_table_entry_count = 1; /* FIXME: */
desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
desc->desc4.constant_urb_entry_read_offset = 0;
desc->desc4.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
/*kernel start*/
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
kernel->bo);
/*Sampler State(VME state pointer)*/
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
(1 << 2), //
i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc2),
vme_context->vme_state.bo);
desc++;
}
dri_bo_unmap(bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_vme_constant_setup(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
dri_bo_map(vme_context->curbe.bo, 1);
assert(vme_context->curbe.bo->virtual);
/*TODO copy buffer into CURB*/
 
dri_bo_unmap( vme_context->curbe.bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_vme_vme_state_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int is_intra,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
unsigned int *vme_state_message;
int i;
//building VME state message
dri_bo_map(vme_context->vme_state.bo, 1);
assert(vme_context->vme_state.bo->virtual);
vme_state_message = (unsigned int *)vme_context->vme_state.bo->virtual;
vme_state_message[0] = 0x10010101;
vme_state_message[1] = 0x100F0F0F;
vme_state_message[2] = 0x10010101;
vme_state_message[3] = 0x000F0F0F;
for(i = 4; i < 14; i++) {
vme_state_message[i] = 0x00000000;
}
 
for(i = 14; i < 32; i++) {
vme_state_message[i] = 0x00000000;
}
 
//vme_state_message[16] = 0x42424242; //cost function LUT set 0 for Intra
 
dri_bo_unmap( vme_context->vme_state.bo);
return VA_STATUS_SUCCESS;
}
 
static void gen6_vme_pipeline_select(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void gen6_vme_state_base_address(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 10);
 
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 8);
 
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //General State Base Address
OUT_RELOC(batch, vme_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Dynamic State Base Address
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Indirect Object Base Address
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Instruction Base Address
 
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Dynamic State Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Indirect Object Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Instruction Access Upper Bound
 
/*
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //LLC Coherent Base Address
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY ); //LLC Coherent Upper Bound
*/
 
ADVANCE_BATCH(batch);
}
 
static void gen6_vme_vfe_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 8);
 
OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | 6); /*Gen6 CMD_MEDIA_STATE_POINTERS = CMD_MEDIA_STATE */
OUT_BATCH(batch, 0); /*Scratch Space Base Pointer and Space*/
OUT_BATCH(batch, (vme_context->vfe_state.max_num_threads << 16)
| (vme_context->vfe_state.num_urb_entries << 8)
| (vme_context->vfe_state.gpgpu_mode << 2) ); /*Maximum Number of Threads , Number of URB Entries, MEDIA Mode*/
OUT_BATCH(batch, 0); /*Debug: Object ID*/
OUT_BATCH(batch, (vme_context->vfe_state.urb_entry_size << 16)
| vme_context->vfe_state.curbe_allocation_size); /*URB Entry Allocation Size , CURBE Allocation Size*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
ADVANCE_BATCH(batch);
 
}
 
static void gen6_vme_curbe_load(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 4);
 
OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | 2);
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch, CURBE_TOTAL_DATA_LENGTH);
OUT_RELOC(batch, vme_context->curbe.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
ADVANCE_BATCH(batch);
}
 
static void gen6_vme_idrt(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 4);
 
OUT_BATCH(batch, CMD_MEDIA_INTERFACE_LOAD | 2);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_VME_KERNEL_NUMBER * sizeof(struct gen6_interface_descriptor_data));
OUT_RELOC(batch, vme_context->idrt.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
ADVANCE_BATCH(batch);
}
 
static int gen6_vme_media_object(VADriverContextP ctx,
struct encode_state *encode_state,
int mb_x, int mb_y,
int kernel,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(encode_state->current_render_target);
int mb_width = ALIGN(obj_surface->orig_width, 16) / 16;
int len_in_dowrds = 6 + 1;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, len_in_dowrds);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | (len_in_dowrds - 2));
OUT_BATCH(batch, kernel); /*Interface Descriptor Offset*/
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
/*inline data */
OUT_BATCH(batch, mb_width << 16 | mb_y << 8 | mb_x); /*M0.0 Refrence0 X,Y, not used in Intra*/
ADVANCE_BATCH(batch);
 
return len_in_dowrds * 4;
}
 
static void gen6_vme_media_init(VADriverContextP ctx, struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
dri_bo *bo;
 
/* constant buffer */
dri_bo_unreference(vme_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
CURBE_TOTAL_DATA_LENGTH, 64);
assert(bo);
vme_context->curbe.bo = bo;
 
dri_bo_unreference(vme_context->surface_state_binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6,
4096);
assert(bo);
vme_context->surface_state_binding_table.bo = bo;
 
/* interface descriptor remapping table */
dri_bo_unreference(vme_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
MAX_INTERFACE_DESC_GEN6 * sizeof(struct gen6_interface_descriptor_data), 16);
assert(bo);
vme_context->idrt.bo = bo;
 
/* VME output buffer */
dri_bo_unreference(vme_context->vme_output.bo);
vme_context->vme_output.bo = NULL;
 
/* VME state */
dri_bo_unreference(vme_context->vme_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
1024*16, 64);
assert(bo);
vme_context->vme_state.bo = bo;
 
vme_context->vfe_state.max_num_threads = 60 - 1;
vme_context->vfe_state.num_urb_entries = 16;
vme_context->vfe_state.gpgpu_mode = 0;
vme_context->vfe_state.urb_entry_size = 59 - 1;
vme_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
}
 
static void gen6_vme_pipeline_programing(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *main_batch = gen6_encoder_context->base.batch;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
int emit_new_state = 1, object_len_in_bytes;
int x, y;
struct intel_batchbuffer *batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, width_in_mbs * height_in_mbs * 8 * 4 + 0x200);
 
intel_batchbuffer_start_atomic(batch, width_in_mbs * height_in_mbs * 8 * 4 + 0x100);
 
for(y = 0; y < height_in_mbs; y++){
for(x = 0; x < width_in_mbs; x++){
 
if (emit_new_state) {
/*Step1: MI_FLUSH/PIPE_CONTROL*/
intel_batchbuffer_emit_mi_flush(batch);
 
/*Step2: State command PIPELINE_SELECT*/
gen6_vme_pipeline_select(ctx, gen6_encoder_context, batch);
 
/*Step3: State commands configuring pipeline states*/
gen6_vme_state_base_address(ctx, gen6_encoder_context, batch);
gen6_vme_vfe_state(ctx, gen6_encoder_context, batch);
gen6_vme_curbe_load(ctx, gen6_encoder_context, batch);
gen6_vme_idrt(ctx, gen6_encoder_context, batch);
 
emit_new_state = 0;
}
 
/*Step4: Primitive commands*/
object_len_in_bytes = gen6_vme_media_object(ctx, encode_state, x, y, is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER, gen6_encoder_context, batch);
 
if (intel_batchbuffer_check_free_space(batch, object_len_in_bytes) == 0) {
assert(0);
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
emit_new_state = 1;
intel_batchbuffer_start_atomic(batch, 0x1000);
}
}
}
 
intel_batchbuffer_align(batch, 8);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, MI_BATCH_BUFFER_END);
ADVANCE_BATCH(batch);
 
intel_batchbuffer_end_atomic(batch);
 
/* chain to the main batch buffer */
intel_batchbuffer_start_atomic(main_batch, 0x100);
intel_batchbuffer_emit_mi_flush(main_batch);
BEGIN_BATCH(main_batch, 2);
OUT_BATCH(main_batch, MI_BATCH_BUFFER_START | (2 << 6));
OUT_RELOC(main_batch,
batch->buffer,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BATCH(main_batch);
intel_batchbuffer_end_atomic(main_batch);
 
// end programing
intel_batchbuffer_free(batch);
}
 
static VAStatus gen6_vme_prepare(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VAStatus vaStatus = VA_STATUS_SUCCESS;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
/*Setup all the memory object*/
if (IS_GEN7(i965->intel.device_id))
gen7_vme_surface_setup(ctx, encode_state, is_intra, gen6_encoder_context);
else
gen6_vme_surface_setup(ctx, encode_state, is_intra, gen6_encoder_context);
 
gen6_vme_interface_setup(ctx, encode_state, gen6_encoder_context);
gen6_vme_constant_setup(ctx, encode_state, gen6_encoder_context);
gen6_vme_vme_state_setup(ctx, encode_state, is_intra, gen6_encoder_context);
 
/*Programing media pipeline*/
gen6_vme_pipeline_programing(ctx, encode_state, gen6_encoder_context);
 
return vaStatus;
}
 
static VAStatus gen6_vme_run(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct intel_batchbuffer *batch = gen6_encoder_context->base.batch;
 
intel_batchbuffer_flush(batch);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen6_vme_stop(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
return VA_STATUS_SUCCESS;
}
 
VAStatus gen6_vme_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
gen6_vme_media_init(ctx, gen6_encoder_context);
gen6_vme_prepare(ctx, encode_state, gen6_encoder_context);
gen6_vme_run(ctx, encode_state, gen6_encoder_context);
gen6_vme_stop(ctx, encode_state, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
Bool gen6_vme_context_init(VADriverContextP ctx, struct gen6_vme_context *vme_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
if (IS_GEN7(i965->intel.device_id))
memcpy(vme_context->vme_kernels, gen7_vme_kernels, sizeof(vme_context->vme_kernels));
else
memcpy(vme_context->vme_kernels, gen6_vme_kernels, sizeof(vme_context->vme_kernels));
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
/*Load kernel into GPU memory*/
struct i965_kernel *kernel = &vme_context->vme_kernels[i];
 
kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
kernel->name,
kernel->size,
0x1000);
assert(kernel->bo);
dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
}
return True;
}
 
Bool gen6_vme_context_destroy(struct gen6_vme_context *vme_context)
{
int i;
 
dri_bo_unreference(vme_context->idrt.bo);
vme_context->idrt.bo = NULL;
 
dri_bo_unreference(vme_context->surface_state_binding_table.bo);
vme_context->surface_state_binding_table.bo = NULL;
 
dri_bo_unreference(vme_context->curbe.bo);
vme_context->curbe.bo = NULL;
 
dri_bo_unreference(vme_context->vme_output.bo);
vme_context->vme_output.bo = NULL;
 
dri_bo_unreference(vme_context->vme_state.bo);
vme_context->vme_state.bo = NULL;
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
/*Load kernel into GPU memory*/
struct i965_kernel *kernel = &vme_context->vme_kernels[i];
 
dri_bo_unreference(kernel->bo);
kernel->bo = NULL;
}
 
return True;
}
/drivers/video/i965/gen6_vme.h
0,0 → 1,98
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWAR
*
* Authors:
* Zhou Chang <chang.zhou@intel.com>
*
*/
 
#ifndef _GEN6_VME_H_
#define _GEN6_VME_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
 
#define INTRA_VME_OUTPUT_IN_BYTES 16 /* in bytes */
#define MAX_INTERFACE_DESC_GEN6 32
#define MAX_MEDIA_SURFACES_GEN6 34
 
#define GEN6_VME_KERNEL_NUMBER 2
 
struct encode_state;
struct gen6_encoder_context;
 
struct gen6_vme_context
{
struct {
dri_bo *bo;
} surface_state_binding_table;
 
struct {
dri_bo *bo;
} idrt; /* interface descriptor remap table */
 
struct {
dri_bo *bo;
} curbe;
 
struct {
unsigned int gpgpu_mode:1;
unsigned int max_num_threads:16;
unsigned int num_urb_entries:8;
unsigned int urb_entry_size:16;
unsigned int curbe_allocation_size:16;
} vfe_state;
 
struct {
dri_bo *bo;
} vme_state;
 
struct {
dri_bo *bo;
unsigned int num_blocks;
unsigned int size_block; /* in bytes */
unsigned int pitch;
} vme_output;
 
struct i965_kernel vme_kernels[GEN6_VME_KERNEL_NUMBER];
void *vme_state_message;
};
 
VAStatus gen6_vme_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context);
Bool gen6_vme_context_init(VADriverContextP ctx, struct gen6_vme_context *vme_context);
Bool gen6_vme_context_destroy(struct gen6_vme_context *vme_context);
 
VAStatus gen75_vme_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context);
 
Bool gen75_vme_context_init(VADriverContextP ctx, struct gen6_vme_context *vme_context);
Bool gen75_vme_context_destroy(struct gen6_vme_context *vme_context);
#endif /* _GEN6_VME_H_ */
/drivers/video/i965/gen75_mfc.c
0,0 → 1,1183
/*
* Copyright © 2010-2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhao Yakui <yakui.zhao@intel.com>
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "assert.h"
#include "intel_batchbuffer.h"
#include "i965_defines.h"
#include "i965_structs.h"
#include "i965_drv_video.h"
#include "i965_encoder.h"
 
#define B0_STEP_REV 2
#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
 
static void
gen75_mfc_pipe_mode_select(VADriverContextP ctx,
int standard_select,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(standard_select == MFX_FORMAT_MPEG2 ||
standard_select == MFX_FORMAT_AVC);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Must be long format for encoder */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(1 << 9) | /* Post Deblocking Output */
(0 << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(1 << 4) | /* encoding mode */
(standard_select << 0)); /* standard select: avc or mpeg2 */
OUT_BCS_BATCH(batch,
(0 << 7) | /* expand NOA bus flag */
(0 << 6) | /* disable slice-level clock gating */
(0 << 5) | /* disable clock gating for NOA */
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
#define INTER_MODE_MASK 0x03
#define INTER_8X8 0x03
#define SUBMB_SHAPE_MASK 0x00FF00
 
#define INTER_MV8 (4 << 20)
#define INTER_MV32 (6 << 20)
 
 
static void
gen75_mfc_surface_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
 
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((mfc_context->surface_state.height - 1) << 18) |
((mfc_context->surface_state.width - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
(0 << 22) | /* surface object control state, FIXME??? */
((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 for interleave U/V */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
OUT_BCS_BATCH(batch,
(0 << 16) | /* must be 0 for interleave U/V */
(mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_pipe_buf_addr_state_bplus(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 61);
 
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
 
/* the DW1-3 is for pre_deblocking */
OUT_BCS_BATCH(batch, 0); /* pre output addr */
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* the DW4-6 is for the post_deblocking */
 
if (mfc_context->post_deblocking_output.bo)
OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* post output addr */
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW7-9 is for the uncompressed_picture */
OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* uncompressed data */
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW10-12 is for the mb status */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW13-15 is for the intra_row_store_scratch */
OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW16-18 is for the deblocking filter */
OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW 19-50 is for Reference pictures*/
for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
if ( mfc_context->reference_surfaces[i].bo != NULL) {
OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
OUT_BCS_BATCH(batch, 0);
}
OUT_BCS_BATCH(batch, 0);
 
/* The DW 52-54 is for the MB status buffer */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW 55-57 is the ILDB buffer */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW 58-60 is the second ILDB buffer */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_pipe_buf_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int i;
struct i965_driver_data *i965 = i965_driver_data(ctx);
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfc_pipe_buf_addr_state_bplus(ctx, gen6_encoder_context, batch);
return;
}
 
BEGIN_BCS_BATCH(batch, 25);
 
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
 
OUT_BCS_BATCH(batch, 0); /* pre output addr */
 
OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* post output addr */
 
OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0); /* uncompressed data */
 
OUT_BCS_BATCH(batch, 0); /* StreamOut data*/
OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
/* 7..22 Reference pictures*/
for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
if ( mfc_context->reference_surfaces[i].bo != NULL) {
OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
}
OUT_BCS_BATCH(batch, 0); /* no block status */
 
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_mfc_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 26);
 
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
/* the DW1-3 is for the MFX indirect bistream offset */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* the DW4-5 is the MFX upper bound */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW6-10 is for MFX Indirect MV Object Base Address */
OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0);
 
/* the DW11-15 is for MFX IT-COFF. Not used on encoder */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW16-20 is for MFX indirect DBLK. Not used on encoder */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW21-25 is for MFC Indirect PAK-BSE Object Base Address for Encoder*/
OUT_BCS_RELOC(batch,
mfc_context->mfc_indirect_pak_bse_object.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0x00000000);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_ind_obj_base_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfc_ind_obj_base_addr_state_bplus(ctx, gen6_encoder_context, batch);
return;
}
 
BEGIN_BCS_BATCH(batch, 11);
 
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* MFX Indirect MV Object Base Address */
OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/*MFC Indirect PAK-BSE Object Base Address for Encoder*/
OUT_BCS_RELOC(batch,
mfc_context->mfc_indirect_pak_bse_object.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0x00000000); /* must set, up to 2G */
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 10);
 
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* the DW4-6 is for MPR Row Store Scratch Buffer Base Address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW7-9 is for Bitplane Read Buffer Base Address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_bsp_buf_base_addr_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfc_bsp_buf_base_addr_state_bplus(ctx, gen6_encoder_context, batch);
return;
}
 
BEGIN_BCS_BATCH(batch, 4);
 
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_avc_img_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
((width_in_mbs * height_in_mbs) & 0xFFFF));
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
(0 << 24) | /* Second Chroma QP Offset */
(0 << 16) | /* Chroma QP Offset */
(0 << 14) | /* Max-bit conformance Intra flag */
(0 << 13) | /* Max Macroblock size conformance Inter flag */
(0 << 12) | /* FIXME: Weighted_Pred_Flag */
(0 << 10) | /* FIXME: Weighted_BiPred_Idc */
(0 << 8) | /* FIXME: Image Structure */
(0 << 0) ); /* Current Decoed Image Frame Store ID, reserved in Encode mode */
OUT_BCS_BATCH(batch,
(0 << 16) | /* Mininum Frame size */
(0 << 15) | /* Disable reading of Macroblock Status Buffer */
(0 << 14) | /* Load BitStream Pointer only once, 1 slic 1 frame */
(0 << 13) | /* CABAC 0 word insertion test enable */
(1 << 12) | /* MVUnpackedEnable,compliant to DXVA */
(1 << 10) | /* Chroma Format IDC, 4:2:0 */
(0 << 8) | /* FIXME: MbMvFormatFlag */
(1 << 7) | /* 0:CAVLC encoding mode,1:CABAC */
(0 << 6) | /* Only valid for VLD decoding mode */
(0 << 5) | /* Constrained Intra Predition Flag, from PPS */
(0 << 4) | /* Direct 8x8 inference flag */
(0 << 3) | /* Only 8x8 IDCT Transform Mode Flag */
(1 << 2) | /* Frame MB only flag */
(0 << 1) | /* MBAFF mode is in active */
(0 << 0)); /* Field picture flag */
OUT_BCS_BATCH(batch, 0); /* Mainly about MB rate control and debug, just ignoring */
OUT_BCS_BATCH(batch, /* Inter and Intra Conformance Max size limit */
(0xBB8 << 16) | /* InterMbMaxSz */
(0xEE8) ); /* IntraMbMaxSz */
OUT_BCS_BATCH(batch, 0); /* Reserved */
OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
OUT_BCS_BATCH(batch, 0x8C000000);
OUT_BCS_BATCH(batch, 0x00010000);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_mfc_avc_directmode_state_bplus(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 71);
 
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
 
/* Reference frames and Current frames */
/* the DW1-32 is for the direct MV for reference */
for(i = 0; i < NUM_MFC_DMV_BUFFERS - 2; i += 2) {
if ( mfc_context->direct_mv_buffers[i].bo != NULL) {
OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[i].bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
OUT_BCS_BATCH(batch, 0);
 
/* the DW34-36 is the MV for the current reference */
OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* POL list */
for(i = 0; i < 32; i++) {
OUT_BCS_BATCH(batch, i/2);
}
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void gen75_mfc_avc_directmode_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
int i;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfc_avc_directmode_state_bplus(ctx, gen6_encoder_context, batch);
return;
}
 
BEGIN_BCS_BATCH(batch, 69);
 
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
//TODO: reference DMV
for (i = 0; i < NUM_MFC_DMV_BUFFERS - 2; i++){
if (mfc_context->direct_mv_buffers[i].bo)
OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[i].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
}
 
//TODO: current DMV just for test
#if 0
OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[0].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
#else
//drm_intel_bo_pin(mfc_context->direct_mv_buffers[0].bo, 0x1000);
//OUT_BCS_BATCH(batch, mfc_context->direct_mv_buffers[0].bo->offset);
OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
#endif
 
 
OUT_BCS_BATCH(batch, 0);
 
//TODO: POL list
for(i = 0; i < 34; i++) {
OUT_BCS_BATCH(batch, 0);
}
 
ADVANCE_BCS_BATCH(batch);
}
 
static void gen75_mfc_avc_slice_state(VADriverContextP ctx,
int intra_slice,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);;
 
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
 
if ( intra_slice )
OUT_BCS_BATCH(batch, 2); /*Slice Type: I Slice*/
else
OUT_BCS_BATCH(batch, 0); /*Slice Type: P Slice*/
 
if ( intra_slice )
OUT_BCS_BATCH(batch, 0); /*no reference frames and pred_weight_table*/
else
OUT_BCS_BATCH(batch, 0x00010000); /*1 reference frame*/
 
OUT_BCS_BATCH(batch, (0<<24) | /*Enable deblocking operation*/
(26<<16) | /*Slice Quantization Parameter*/
0x0202 );
OUT_BCS_BATCH(batch, 0); /*First MB X&Y , the postion of current slice*/
OUT_BCS_BATCH(batch, ( ((mfc_context->surface_state.height+15)/16) << 16) );
 
OUT_BCS_BATCH(batch,
(0<<31) | /*RateControlCounterEnable = disable*/
(1<<30) | /*ResetRateControlCounter*/
(2<<28) | /*RC Triggle Mode = Loose Rate Control*/
(1<<19) | /*IsLastSlice*/
(0<<18) | /*BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable*/
(0<<17) | /*HeaderPresentFlag*/
(1<<16) | /*SliceData PresentFlag*/
(0<<15) | /*TailPresentFlag*/
(1<<13) | /*RBSP NAL TYPE*/
(0<<12) ); /*CabacZeroWordInsertionEnable*/
 
OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfc_qm_state(VADriverContextP ctx,
int qm_type,
unsigned int *qm,
int qm_length,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm_buffer[16];
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(qm_length <= 16);
assert(sizeof(*qm) == 4);
memcpy(qm_buffer, qm, qm_length * 4);
 
BEGIN_BCS_BATCH(batch, 18);
OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
OUT_BCS_BATCH(batch, qm_type << 0);
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void gen75_mfc_avc_qm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm[16] = {
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010,
0x10101010, 0x10101010, 0x10101010, 0x10101010
};
 
gen75_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, gen6_encoder_context, batch);
gen75_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, gen6_encoder_context, batch);
gen75_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, gen6_encoder_context, batch);
gen75_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, gen6_encoder_context, batch);
}
 
static void
gen75_mfc_fqm_state(VADriverContextP ctx,
int fqm_type,
unsigned int *fqm,
int fqm_length,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int fqm_buffer[32];
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
assert(fqm_length <= 32);
assert(sizeof(*fqm) == 4);
memcpy(fqm_buffer, fqm, fqm_length * 4);
 
BEGIN_BCS_BATCH(batch, 34);
OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
OUT_BCS_BATCH(batch, fqm_type << 0);
intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void gen75_mfc_avc_fqm_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
unsigned int qm[32] = {
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000,
0x10001000, 0x10001000, 0x10001000, 0x10001000
};
 
gen75_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, gen6_encoder_context, batch);
gen75_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, gen6_encoder_context, batch);
gen75_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, gen6_encoder_context, batch);
gen75_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, gen6_encoder_context, batch);
}
 
static void gen75_mfc_avc_ref_idx_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int i;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 10);
 
OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8);
OUT_BCS_BATCH(batch, 0); //Select L0
 
OUT_BCS_BATCH(batch, 0x80808000); //Only 1 reference
for(i = 0; i < 7; i++) {
OUT_BCS_BATCH(batch, 0x80808080);
}
 
ADVANCE_BCS_BATCH(batch);
}
static int
gen75_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb, int qp,unsigned int *msg,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int len_in_dwords = 12;
 
unsigned int intra_msg;
#define INTRA_MSG_FLAG (1 << 13)
#define INTRA_MBTYPE_MASK (0x1F0000)
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, len_in_dwords);
 
intra_msg = msg[0] & 0xC0FF;
intra_msg |= INTRA_MSG_FLAG;
intra_msg |= ((msg[0] & INTRA_MBTYPE_MASK) >> 8);
OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
(0 << 24) | /* PackedMvNum, Debug*/
(0 << 20) | /* No motion vector */
(1 << 19) | /* CbpDcY */
(1 << 18) | /* CbpDcU */
(1 << 17) | /* CbpDcV */
intra_msg);
 
OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
 
/*Stuff for Intra MB*/
OUT_BCS_BATCH(batch, msg[1]); /* We using Intra16x16 no 4x4 predmode*/
OUT_BCS_BATCH(batch, msg[2]);
OUT_BCS_BATCH(batch, msg[3]&0xFC);
 
OUT_BCS_BATCH(batch, 0x00000); /*MaxSizeInWord and TargetSzieInWord*/
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
 
return len_in_dwords;
}
 
static int gen75_mfc_avc_pak_object_inter(VADriverContextP ctx, int x, int y, int end_mb, int qp,
unsigned int offset, unsigned int *msg, struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
int len_in_dwords = 12;
unsigned int inter_msg;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BCS_BATCH(batch, len_in_dwords);
 
OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
 
inter_msg = 32;
/* MV quantity */
if ((msg[0] & INTER_MODE_MASK) == INTER_8X8) {
if (msg[1] & SUBMB_SHAPE_MASK)
inter_msg = 128;
}
OUT_BCS_BATCH(batch, inter_msg); /* 32 MV*/
 
OUT_BCS_BATCH(batch, offset);
inter_msg = msg[0] & (0x1F00FFFF);
inter_msg |= INTER_MV8;
if (((msg[0] & INTER_MODE_MASK) == INTER_8X8) &&
(msg[1] & SUBMB_SHAPE_MASK)) {
inter_msg |= INTER_MV32;
}
 
OUT_BCS_BATCH(batch, inter_msg);
 
OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
 
/*Stuff for Inter MB*/
inter_msg = msg[1] >> 8;
OUT_BCS_BATCH(batch, inter_msg);
OUT_BCS_BATCH(batch, 0x0);
OUT_BCS_BATCH(batch, 0x0);
 
OUT_BCS_BATCH(batch, 0x00000000); /*MaxSizeInWord and TargetSzieInWord*/
 
OUT_BCS_BATCH(batch, 0x0);
 
ADVANCE_BCS_BATCH(batch);
 
return len_in_dwords;
}
 
static void gen75_mfc_init(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
dri_bo *bo;
int i;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
 
/*Encode common setup for MFC*/
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
mfc_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
mfc_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
mfc_context->uncompressed_picture_source.bo = NULL;
 
dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
 
for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
if (mfc_context->reference_surfaces[i].bo != NULL)
dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
mfc_context->reference_surfaces[i].bo = NULL;
}
 
dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
width_in_mbs * 64,
64);
assert(bo);
mfc_context->intra_row_store_scratch_buffer.bo = bo;
 
dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
4 * width_in_mbs * 64, /* 4 * width_in_mbs * 64 */
64);
assert(bo);
mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
 
dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
2 * width_in_mbs * 64, /* 2 * width_in_mbs * 64 */
0x1000);
assert(bo);
mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
}
 
#define INTRA_RDO_OFFSET 4
#define INTER_RDO_OFFSET 54
#define INTER_MSG_OFFSET 52
#define INTER_MV_OFFSET 224
#define RDO_MASK 0xFFFF
 
static void gen75_mfc_avc_pipeline_programing(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *main_batch = gen6_encoder_context->base.batch;
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer; /* FIXME: multi slices */
unsigned int *msg = NULL, offset = 0;
unsigned char *msg_ptr = NULL;
int emit_new_state = 1, object_len_in_bytes;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
int x,y, mb_index;
int inter_rdo, intra_rdo;
struct intel_batchbuffer *batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD, width_in_mbs * height_in_mbs * 12 * 4 + 0x800);
 
intel_batchbuffer_start_atomic_bcs(batch, width_in_mbs * height_in_mbs * 12 * 4 + 0x700);
 
dri_bo_map(vme_context->vme_output.bo , 1);
msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
if (is_intra) {
msg = (unsigned int *) (msg_ptr + 0 * vme_context->vme_output.size_block);
} else {
msg = (unsigned int *) (msg_ptr + 0 * vme_context->vme_output.size_block);
offset = 0;
}
 
for (y = 0; y < height_in_mbs; y++) {
for (x = 0; x < width_in_mbs; x++) {
int last_mb = (y == (height_in_mbs-1)) && ( x == (width_in_mbs-1) );
int qp = pSequenceParameter->initial_qp;
mb_index = (y * width_in_mbs) + x;
if (emit_new_state) {
intel_batchbuffer_emit_mi_flush(batch);
gen75_mfc_pipe_mode_select(ctx, MFX_FORMAT_AVC, gen6_encoder_context, batch);
gen75_mfc_surface_state(ctx, gen6_encoder_context, batch);
gen75_mfc_ind_obj_base_addr_state(ctx, gen6_encoder_context, batch);
 
gen75_mfc_pipe_buf_addr_state(ctx, gen6_encoder_context, batch);
gen75_mfc_bsp_buf_base_addr_state(ctx, gen6_encoder_context, batch);
 
gen75_mfc_avc_img_state(ctx, gen6_encoder_context, batch);
gen75_mfc_avc_qm_state(ctx, gen6_encoder_context, batch);
gen75_mfc_avc_fqm_state(ctx, gen6_encoder_context, batch);
gen75_mfc_avc_directmode_state(ctx, gen6_encoder_context, batch);
 
gen75_mfc_avc_ref_idx_state(ctx, gen6_encoder_context, batch);
gen75_mfc_avc_slice_state(ctx, is_intra, gen6_encoder_context, batch);
emit_new_state = 0;
}
 
msg = (unsigned int *) (msg_ptr + mb_index * vme_context->vme_output.size_block);
if (is_intra) {
object_len_in_bytes = gen75_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp, msg, gen6_encoder_context, batch);
} else {
inter_rdo = msg[INTER_RDO_OFFSET] & RDO_MASK;
intra_rdo = msg[INTRA_RDO_OFFSET] & RDO_MASK;
if (intra_rdo < inter_rdo) {
object_len_in_bytes = gen75_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp, msg, gen6_encoder_context, batch);
} else {
msg += INTER_MSG_OFFSET;
offset = mb_index * vme_context->vme_output.size_block + INTER_MV_OFFSET;
object_len_in_bytes = gen75_mfc_avc_pak_object_inter(ctx, x, y, last_mb, qp, offset, msg, gen6_encoder_context, batch);
}
}
if (intel_batchbuffer_check_free_space(batch, object_len_in_bytes) == 0) {
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
emit_new_state = 1;
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
}
}
}
 
dri_bo_unmap(vme_context->vme_output.bo);
intel_batchbuffer_align(batch, 8);
 
BEGIN_BCS_BATCH(batch, 2);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
ADVANCE_BCS_BATCH(batch);
 
intel_batchbuffer_end_atomic(batch);
 
/* chain to the main batch buffer */
intel_batchbuffer_start_atomic_bcs(main_batch, 0x100);
intel_batchbuffer_emit_mi_flush(main_batch);
BEGIN_BCS_BATCH(main_batch, 2);
OUT_BCS_BATCH(main_batch, MI_BATCH_BUFFER_START | (1 << 8));
OUT_BCS_RELOC(main_batch,
batch->buffer,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BCS_BATCH(main_batch);
intel_batchbuffer_end_atomic(main_batch);
 
// end programing
intel_batchbuffer_free(batch);
}
 
static VAStatus gen75_mfc_avc_prepare(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
struct object_surface *obj_surface;
struct object_buffer *obj_buffer;
dri_bo *bo;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
VAStatus vaStatus = VA_STATUS_SUCCESS;
 
/*Setup all the input&output object*/
obj_surface = SURFACE(pPicParameter->reconstructed_picture);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
mfc_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(mfc_context->post_deblocking_output.bo);
 
mfc_context->surface_state.width = obj_surface->orig_width;
mfc_context->surface_state.height = obj_surface->orig_height;
mfc_context->surface_state.w_pitch = obj_surface->width;
mfc_context->surface_state.h_pitch = obj_surface->height;
 
obj_surface = SURFACE(pPicParameter->reference_picture);
assert(obj_surface);
if (obj_surface->bo != NULL) {
mfc_context->reference_surfaces[0].bo = obj_surface->bo;
dri_bo_reference(obj_surface->bo);
}
obj_surface = SURFACE(encode_state->current_render_target);
assert(obj_surface && obj_surface->bo);
mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
 
obj_buffer = BUFFER (pPicParameter->coded_buf); /* FIXME: fix this later */
bo = obj_buffer->buffer_store->bo;
assert(bo);
mfc_context->mfc_indirect_pak_bse_object.bo = bo;
mfc_context->mfc_indirect_pak_bse_object.offset = ALIGN(sizeof(VACodedBufferSegment), 64);
dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
 
/*Programing bcs pipeline*/
gen75_mfc_avc_pipeline_programing(ctx, encode_state, gen6_encoder_context); //filling the pipeline
return vaStatus;
}
 
static VAStatus gen75_mfc_run(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct intel_batchbuffer *batch = gen6_encoder_context->base.batch;
 
intel_batchbuffer_flush(batch); //run the pipeline
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_mfc_stop(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
#if 0
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_mfc_context *mfc_context = &gen6_encoder_context->mfc_context;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
struct object_surface *obj_surface = SURFACE(pPicParameter->reconstructed_picture);
//struct object_surface *obj_surface = SURFACE(pPicParameter->reference_picture[0]);
//struct object_surface *obj_surface = SURFACE(encode_state->current_render_target);
my_debug(obj_surface);
 
#endif
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
gen75_mfc_avc_encode_picture(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
gen75_mfc_init(ctx, encode_state, gen6_encoder_context);
gen75_mfc_avc_prepare(ctx, encode_state, gen6_encoder_context);
gen75_mfc_run(ctx, encode_state, gen6_encoder_context);
gen75_mfc_stop(ctx, encode_state, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
gen75_mfc_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
VAStatus vaStatus;
 
switch (profile) {
case VAProfileH264Baseline:
vaStatus = gen75_mfc_avc_encode_picture(ctx, encode_state, gen6_encoder_context);
break;
 
/* FIXME: add for other profile */
default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
break;
}
 
return vaStatus;
}
 
Bool gen75_mfc_context_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context)
{
int i;
struct i965_driver_data *i965 = i965_driver_data(ctx);
dri_bo *bo;
for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
mfc_context->direct_mv_buffers[i].bo = NULL;
}
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
68*8192,
64);
mfc_context->direct_mv_buffers[0].bo = bo;
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
68*8192,
64);
mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo = bo;
return True;
}
 
Bool gen75_mfc_context_destroy(struct gen6_mfc_context *mfc_context)
{
int i;
 
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
mfc_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
mfc_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
mfc_context->uncompressed_picture_source.bo = NULL;
 
dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
 
for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
mfc_context->direct_mv_buffers[i].bo = NULL;
}
 
dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
mfc_context->intra_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
mfc_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
mfc_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
 
return True;
}
/drivers/video/i965/gen75_mfd.c
0,0 → 1,3449
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zhao Yakui <yakui.zhao@intel.com>
*
*/
 
#ifndef HAVE_GEN_AVC_SURFACE
#define HAVE_GEN_AVC_SURFACE 1
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
//#include "config.h"
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_decoder_utils.h"
 
#include "gen7_mfd.h"
 
#define B0_STEP_REV 2
#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
 
static const uint32_t zigzag_direct[64] = {
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
 
static void
gen75_mfd_avc_frame_store_index(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i, j;
 
assert(ARRAY_ELEMS(gen7_mfd_context->reference_surface) == ARRAY_ELEMS(pic_param->ReferenceFrames));
 
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
int found = 0;
 
if (gen7_mfd_context->reference_surface[i].surface_id == VA_INVALID_ID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[j];
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (gen7_mfd_context->reference_surface[i].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
obj_surface->flags &= ~SURFACE_REFERENCED;
 
if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) {
dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
}
 
if (obj_surface->free_private_data)
obj_surface->free_private_data(&obj_surface->private_data);
 
gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen7_mfd_context->reference_surface[i].frame_store_id = -1;
}
}
 
for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[i];
int found = 0;
 
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
if (gen7_mfd_context->reference_surface[j].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
int frame_idx;
struct object_surface *obj_surface = SURFACE(ref_pic->picture_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
for (frame_idx = 0; frame_idx < ARRAY_ELEMS(gen7_mfd_context->reference_surface); frame_idx++) {
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
 
if (gen7_mfd_context->reference_surface[j].frame_store_id == frame_idx)
break;
}
 
if (j == ARRAY_ELEMS(gen7_mfd_context->reference_surface))
break;
}
 
assert(frame_idx < ARRAY_ELEMS(gen7_mfd_context->reference_surface));
 
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID) {
gen7_mfd_context->reference_surface[j].surface_id = ref_pic->picture_id;
gen7_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
/* sort */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface) - 1; i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
gen7_mfd_context->reference_surface[i].frame_store_id == i)
continue;
 
for (j = i + 1; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id != VA_INVALID_ID &&
gen7_mfd_context->reference_surface[j].frame_store_id == i) {
VASurfaceID id = gen7_mfd_context->reference_surface[i].surface_id;
int frame_idx = gen7_mfd_context->reference_surface[i].frame_store_id;
 
gen7_mfd_context->reference_surface[i].surface_id = gen7_mfd_context->reference_surface[j].surface_id;
gen7_mfd_context->reference_surface[i].frame_store_id = gen7_mfd_context->reference_surface[j].frame_store_id;
gen7_mfd_context->reference_surface[j].surface_id = id;
gen7_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
static void
gen75_mfd_init_avc_surface(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
GenAvcSurface *gen7_avc_surface = obj_surface->private_data;
int width_in_mbs, height_in_mbs;
 
obj_surface->free_private_data = gen_free_avc_surface;
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
if (!gen7_avc_surface) {
gen7_avc_surface = calloc(sizeof(GenAvcSurface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen7_avc_surface;
}
 
gen7_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
!pic_param->seq_fields.bits.direct_8x8_inference_flag);
 
if (gen7_avc_surface->dmv_top == NULL) {
gen7_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * height_in_mbs * 128,
0x1000);
assert(gen7_avc_surface->dmv_top);
}
 
if (gen7_avc_surface->dmv_bottom_flag &&
gen7_avc_surface->dmv_bottom == NULL) {
gen7_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * height_in_mbs * 128,
0x1000);
assert(gen7_avc_surface->dmv_bottom);
}
}
 
static void
gen75_mfd_pipe_mode_select(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
assert(standard_select == MFX_FORMAT_MPEG2 ||
standard_select == MFX_FORMAT_AVC ||
standard_select == MFX_FORMAT_VC1 ||
standard_select == MFX_FORMAT_JPEG);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Currently only support long format */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(gen7_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
(gen7_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(MFX_CODEC_DECODE << 4) | /* decoding mode */
(standard_select << 0));
OUT_BCS_BATCH(batch,
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
OUT_BCS_BATCH(batch, 0); /* reserved */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_surface_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(decode_state->current_render_target);
unsigned int y_cb_offset;
unsigned int y_cr_offset;
 
assert(obj_surface);
 
y_cb_offset = obj_surface->y_cb_offset;
y_cr_offset = obj_surface->y_cr_offset;
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((obj_surface->orig_height - 1) << 18) |
((obj_surface->orig_width - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
((standard_select != MFX_FORMAT_JPEG) << 27) | /* interleave chroma, set to 0 for JPEG */
(0 << 22) | /* surface object control state, ignored */
((obj_surface->width - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for U(Cb), must be 0 */
(y_cb_offset << 0)); /* Y offset for U(Cb) */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for V(Cr), must be 0 */
(y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_mfd_pipe_buf_addr_state_bplus(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
BEGIN_BCS_BATCH(batch, 61);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
/* Pre-deblock 1-3 */
if (gen7_mfd_context->pre_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* Post-debloing 4-6 */
if (gen7_mfd_context->post_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* uncompressed-video & stream out 7-12 */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* intra row-store scratch 13-15 */
if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* deblocking-filter-row-store 16-18 */
if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* DW 19..50 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
struct object_surface *obj_surface;
 
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface && obj_surface->bo);
 
OUT_BCS_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
OUT_BCS_BATCH(batch, 0);
}
/* reference property 51 */
OUT_BCS_BATCH(batch, 0);
/* Macroblock status & ILDB 52-57 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the second Macroblock status 58-60 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_pipe_buf_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfd_pipe_buf_addr_state_bplus(ctx, decode_state,
standard_select, gen7_mfd_context);
return;
}
 
BEGIN_BCS_BATCH(batch, 25);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
if (gen7_mfd_context->pre_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->post_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
 
if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
/* DW 7..22 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
struct object_surface *obj_surface;
 
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface && obj_surface->bo);
 
OUT_BCS_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
}
 
OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore DW24 for decoding */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
dri_bo *slice_data_bo,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 26);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
/* MFX In BS 1-5 */
OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* Upper bound 4-5 */
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0);
 
/* MFX indirect MV 6-10 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* MFX IT_COFF 11-15 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* MFX IT_DBLK 16-20 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* MFX PAK_BSE object for encoder 21-25 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
static void
gen75_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
dri_bo *slice_data_bo,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfd_ind_obj_base_addr_state_bplus(ctx, slice_data_bo,
standard_select, gen7_mfd_context);
return;
}
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_mfd_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 10);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
 
if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* MPR Row Store Scratch buffer 4-6 */
if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* Bitplane 7-9 */
if (gen7_mfd_context->bitplane_read_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfd_bsp_buf_base_addr_state_bplus(ctx, decode_state,
standard_select, gen7_mfd_context);
return;
}
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
 
if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->bitplane_read_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_qm_state(VADriverContextP ctx,
int qm_type,
unsigned char *qm,
int qm_length,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int qm_buffer[16];
 
assert(qm_length <= 16 * 4);
memcpy(qm_buffer, qm, qm_length);
 
BEGIN_BCS_BATCH(batch, 18);
OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
OUT_BCS_BATCH(batch, qm_type << 0);
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_avc_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int img_struct;
int mbaff_frame_flag;
unsigned int width_in_mbs, height_in_mbs;
VAPictureParameterBufferH264 *pic_param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
 
if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
img_struct = 1;
else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
img_struct = 3;
else
img_struct = 0;
 
if ((img_struct & 0x1) == 0x1) {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
} else {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
}
 
if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
assert(pic_param->pic_fields.bits.field_pic_flag == 0);
} else {
assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
}
 
mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
 
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
/* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
width_in_mbs * height_in_mbs);
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
(0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
(0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
(pic_param->pic_fields.bits.weighted_pred_flag << 12) | /* differ from GEN6 */
(pic_param->pic_fields.bits.weighted_bipred_idc << 10) |
(img_struct << 8));
OUT_BCS_BATCH(batch,
(pic_param->seq_fields.bits.chroma_format_idc << 10) |
(pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
(pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
(pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
(pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
(pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
(mbaff_frame_flag << 1) |
(pic_param->pic_fields.bits.field_pic_flag << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_avc_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAIQMatrixBufferH264 *iq_matrix;
VAPictureParameterBufferH264 *pic_param;
 
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
else
iq_matrix = &gen7_mfd_context->iq_matrix.h264;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
gen75_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, &iq_matrix->ScalingList4x4[0][0], 3 * 16, gen7_mfd_context);
gen75_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, &iq_matrix->ScalingList4x4[3][0], 3 * 16, gen7_mfd_context);
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag) {
gen75_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, &iq_matrix->ScalingList8x8[0][0], 64, gen7_mfd_context);
gen75_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, &iq_matrix->ScalingList8x8[1][0], 64, gen7_mfd_context);
}
}
 
static void
gen75_mfd_avc_picid_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 10);
OUT_BCS_BATCH(batch, MFD_AVC_PICID_STATE | (10 - 2));
OUT_BCS_BATCH(batch, 1); // disable Picture ID Remapping
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_mfd_avc_directmode_state_bplus(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct object_surface *obj_surface;
GenAvcSurface *gen7_avc_surface;
VAPictureH264 *va_pic;
int i, j;
 
BEGIN_BCS_BATCH(batch, 71);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface);
gen7_avc_surface = obj_surface->private_data;
 
if (gen7_avc_surface == NULL) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0);
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
OUT_BCS_BATCH(batch, 0);
 
/* the current decoding frame/field */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface && obj_surface->bo && obj_surface->private_data);
gen7_avc_surface = obj_surface->private_data;
 
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* POC List */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == gen7_mfd_context->reference_surface[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_avc_directmode_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct object_surface *obj_surface;
GenAvcSurface *gen7_avc_surface;
VAPictureH264 *va_pic;
int i, j;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfd_avc_directmode_state_bplus(ctx, pic_param, slice_param,
gen7_mfd_context);
return;
}
 
BEGIN_BCS_BATCH(batch, 69);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface);
gen7_avc_surface = obj_surface->private_data;
 
if (gen7_avc_surface == NULL) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
 
if (gen7_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
/* the current decoding frame/field */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface && obj_surface->bo && obj_surface->private_data);
gen7_avc_surface = obj_surface->private_data;
 
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
if (gen7_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
/* POC List */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == gen7_mfd_context->reference_surface[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_avc_slice_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
VASliceParameterBufferH264 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
int num_ref_idx_l0, num_ref_idx_l1;
int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
int slice_type;
 
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI) {
slice_type = SLICE_TYPE_I;
} else if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) {
slice_type = SLICE_TYPE_P;
} else {
assert(slice_param->slice_type == SLICE_TYPE_B);
slice_type = SLICE_TYPE_B;
}
 
if (slice_type == SLICE_TYPE_I) {
assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = 0;
num_ref_idx_l1 = 0;
} else if (slice_type == SLICE_TYPE_P) {
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = 0;
} else {
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
}
 
first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
slice_hor_pos = first_mb_in_slice % width_in_mbs;
slice_ver_pos = first_mb_in_slice / width_in_mbs;
 
if (next_slice_param) {
first_mb_in_next_slice = next_slice_param->first_mb_in_slice << mbaff_picture;
next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
} else {
next_slice_hor_pos = 0;
next_slice_ver_pos = height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
}
 
BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, slice_type);
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(slice_param->chroma_log2_weight_denom << 8) |
(slice_param->luma_log2_weight_denom << 0));
OUT_BCS_BATCH(batch,
(slice_param->direct_spatial_mv_pred_flag << 29) |
(slice_param->disable_deblocking_filter_idc << 27) |
(slice_param->cabac_init_idc << 24) |
((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(next_slice_ver_pos << 16) |
(next_slice_hor_pos << 0));
OUT_BCS_BATCH(batch,
(next_slice_param == NULL) << 19); /* last slice flag */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static inline void
gen75_mfd_avc_ref_idx_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
gen6_send_avc_ref_idx_state(
gen7_mfd_context->base.batch,
slice_param,
gen7_mfd_context->reference_surface
);
}
 
static void
gen75_mfd_avc_weightoffset_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int i, j, num_weight_offset_table = 0;
short weightoffsets[32 * 6];
 
if ((slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) &&
(pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
num_weight_offset_table = 1;
}
if ((slice_param->slice_type == SLICE_TYPE_B) &&
(pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
num_weight_offset_table = 2;
}
 
for (i = 0; i < num_weight_offset_table; i++) {
BEGIN_BCS_BATCH(batch, 98);
OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
OUT_BCS_BATCH(batch, i);
 
if (i == 0) {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
}
} else {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
}
}
 
intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
gen75_mfd_avc_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int slice_data_bit_offset;
 
slice_data_bit_offset = avc_get_first_mb_bit_offset(
slice_data_bo,
slice_param,
pic_param->pic_fields.bits.entropy_coding_mode_flag
);
 
/* the input bitsteam format on GEN7 differs from GEN6 */
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch,
(slice_param->slice_data_size - slice_param->slice_data_offset));
OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
OUT_BCS_BATCH(batch,
(0 << 31) |
(0 << 14) |
(0 << 12) |
(0 << 10) |
(0 << 8));
OUT_BCS_BATCH(batch,
((slice_data_bit_offset >> 3) << 16) |
(1 << 7) |
(0 << 5) |
(0 << 4) |
((next_slice_param == NULL) << 3) | /* LastSlice Flag */
(slice_data_bit_offset & 0x7));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static inline void
gen75_mfd_avc_context_init(
VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context
)
{
/* Initialize flat scaling lists */
avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
}
 
static void
gen75_mfd_avc_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param;
VAPictureH264 *va_pic;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
int i, j, enable_avc_ildb = 0;
unsigned int width_in_mbs, height_in_mbs;
 
for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (slice_param->disable_deblocking_filter_idc != 1) {
enable_avc_ildb = 1;
break;
}
 
slice_param++;
}
}
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen75_mfd_avc_frame_store_index(ctx, pic_param, gen7_mfd_context);
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
assert(height_in_mbs > 0 && height_in_mbs <= 256);
 
/* Current decoded picture */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
obj_surface->flags |= (pic_param->pic_fields.bits.reference_pic_flag ? SURFACE_REFERENCED : 0);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
/* initial uv component for YUV400 case */
if (pic_param->seq_fields.bits.chroma_format_idc == 0) {
unsigned int uv_offset = obj_surface->width * obj_surface->height;
unsigned int uv_size = obj_surface->width * obj_surface->height / 2;
 
drm_intel_gem_bo_map_gtt(obj_surface->bo);
memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size);
drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
}
 
gen75_mfd_init_avc_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 64 * 4,
0x1000);
assert(bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 64 * 2,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
width_in_mbs * 64 * 2,
0x1000);
assert(bo);
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen75_mfd_avc_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen75_mfd_avc_decode_init(ctx, decode_state, gen7_mfd_context);
 
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen75_mfd_avc_qm_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_avc_img_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_avc_picid_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen75_mfd_avc_directmode_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen75_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen75_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen75_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
gen75_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen75_mfd_mpeg2_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferMPEG2 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
unsigned int width_in_mbs;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
 
mpeg2_set_reference_surfaces(
ctx,
gen7_mfd_context->reference_surface,
decode_state,
pic_param
);
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->post_deblocking_output.valid = 0;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen75_mfd_mpeg2_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
unsigned int slice_concealment_disable_bit = 0;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
/* XXX: disable concealment for now */
slice_concealment_disable_bit = 1;
 
BEGIN_BCS_BATCH(batch, 13);
OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
OUT_BCS_BATCH(batch,
(pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
pic_param->picture_coding_extension.bits.picture_structure << 12 |
pic_param->picture_coding_extension.bits.top_field_first << 11 |
pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
pic_param->picture_coding_extension.bits.q_scale_type << 8 |
pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
pic_param->picture_coding_extension.bits.alternate_scan << 6);
OUT_BCS_BATCH(batch,
pic_param->picture_coding_type << 9);
OUT_BCS_BATCH(batch,
(slice_concealment_disable_bit << 31) |
((ALIGN(pic_param->vertical_size, 16) / 16) - 1) << 16 |
((ALIGN(pic_param->horizontal_size, 16) / 16) - 1));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_mpeg2_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen7_mfd_context->iq_matrix.mpeg2;
int i, j;
 
/* Update internal QM state */
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
VAIQMatrixBufferMPEG2 * const iq_matrix =
(VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
 
if (gen_iq_matrix->load_intra_quantiser_matrix == -1 ||
iq_matrix->load_intra_quantiser_matrix) {
gen_iq_matrix->load_intra_quantiser_matrix =
iq_matrix->load_intra_quantiser_matrix;
if (iq_matrix->load_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->intra_quantiser_matrix[j];
}
}
 
if (gen_iq_matrix->load_non_intra_quantiser_matrix == -1 ||
iq_matrix->load_non_intra_quantiser_matrix) {
gen_iq_matrix->load_non_intra_quantiser_matrix =
iq_matrix->load_non_intra_quantiser_matrix;
if (iq_matrix->load_non_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->non_intra_quantiser_matrix[j];
}
}
}
 
/* Commit QM state to HW */
for (i = 0; i < 2; i++) {
unsigned char *qm = NULL;
int qm_type;
 
if (i == 0) {
if (gen_iq_matrix->load_intra_quantiser_matrix) {
qm = gen_iq_matrix->intra_quantiser_matrix;
qm_type = MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX;
}
} else {
if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
qm = gen_iq_matrix->non_intra_quantiser_matrix;
qm_type = MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX;
}
}
 
if (!qm)
continue;
 
gen75_mfd_qm_state(ctx, qm_type, qm, 64, gen7_mfd_context);
}
}
 
static void
gen75_mfd_mpeg2_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferMPEG2 *pic_param,
VASliceParameterBufferMPEG2 *slice_param,
VASliceParameterBufferMPEG2 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
 
if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
is_field_pic = 1;
is_field_pic_wa = is_field_pic &&
gen7_mfd_context->wa_mpeg2_slice_vertical_position > 0;
 
vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos0 = slice_param->slice_horizontal_position;
 
if (next_slice_param == NULL) {
vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
hpos1 = 0;
} else {
vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos1 = next_slice_param->slice_horizontal_position;
}
 
mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
hpos0 << 24 |
vpos0 << 16 |
mb_count << 8 |
(next_slice_param == NULL) << 5 |
(next_slice_param == NULL) << 3 |
(slice_param->macroblock_offset & 0x7));
OUT_BCS_BATCH(batch,
(slice_param->quantiser_scale_code << 24) |
(vpos1 << 8 | hpos1));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_mpeg2_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
gen75_mfd_mpeg2_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen75_mfd_mpeg2_pic_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_mpeg2_qm_state(ctx, decode_state, gen7_mfd_context);
 
if (gen7_mfd_context->wa_mpeg2_slice_vertical_position < 0)
gen7_mfd_context->wa_mpeg2_slice_vertical_position =
mpeg2_wa_slice_vertical_position(decode_state, pic_param);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen75_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static const int va_to_gen7_vc1_pic_type[5] = {
GEN7_VC1_I_PICTURE,
GEN7_VC1_P_PICTURE,
GEN7_VC1_B_PICTURE,
GEN7_VC1_BI_PICTURE,
GEN7_VC1_P_PICTURE,
};
 
static const int va_to_gen7_vc1_mv[4] = {
1, /* 1-MV */
2, /* 1-MV half-pel */
3, /* 1-MV half-pef bilinear */
0, /* Mixed MV */
};
 
static const int b_picture_scale_factor[21] = {
128, 85, 170, 64, 192,
51, 102, 153, 204, 43,
215, 37, 74, 111, 148,
185, 222, 32, 96, 160,
224,
};
 
static const int va_to_gen7_vc1_condover[3] = {
0,
2,
3
};
 
static const int va_to_gen7_vc1_profile[4] = {
GEN7_VC1_SIMPLE_PROFILE,
GEN7_VC1_MAIN_PROFILE,
GEN7_VC1_RESERVED_PROFILE,
GEN7_VC1_ADVANCED_PROFILE
};
 
static void
gen75_mfd_free_vc1_surface(void **data)
{
struct gen7_vc1_surface *gen7_vc1_surface = *data;
 
if (!gen7_vc1_surface)
return;
 
dri_bo_unreference(gen7_vc1_surface->dmv);
free(gen7_vc1_surface);
*data = NULL;
}
 
static void
gen75_mfd_init_vc1_surface(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen7_vc1_surface *gen7_vc1_surface = obj_surface->private_data;
int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
 
obj_surface->free_private_data = gen75_mfd_free_vc1_surface;
 
if (!gen7_vc1_surface) {
gen7_vc1_surface = calloc(sizeof(struct gen7_vc1_surface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen7_vc1_surface;
}
 
gen7_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
 
if (gen7_vc1_surface->dmv == NULL) {
gen7_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * height_in_mbs * 64,
0x1000);
}
}
 
static void
gen75_mfd_vc1_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int i;
dri_bo *bo;
int width_in_mbs;
int picture_type;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
picture_type = pic_param->picture_fields.bits.picture_type;
/* reference picture */
obj_surface = SURFACE(pic_param->forward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen7_mfd_context->reference_surface[0].surface_id = pic_param->forward_reference_picture;
else
gen7_mfd_context->reference_surface[0].surface_id = VA_INVALID_ID;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen7_mfd_context->reference_surface[1].surface_id = pic_param->backward_reference_picture;
else
gen7_mfd_context->reference_surface[1].surface_id = pic_param->forward_reference_picture;
 
/* must do so !!! */
for (i = 2; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++)
gen7_mfd_context->reference_surface[i].surface_id = gen7_mfd_context->reference_surface[i % 2].surface_id;
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
gen75_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 7 * 64,
0x1000);
assert(bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
if (gen7_mfd_context->bitplane_read_buffer.valid) {
int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
int src_w, src_h;
uint8_t *src = NULL, *dst = NULL;
 
assert(decode_state->bit_plane->buffer);
src = decode_state->bit_plane->buffer;
 
bo = dri_bo_alloc(i965->intel.bufmgr,
"VC-1 Bitplane",
bitplane_width * height_in_mbs,
0x1000);
assert(bo);
gen7_mfd_context->bitplane_read_buffer.bo = bo;
 
dri_bo_map(bo, True);
assert(bo->virtual);
dst = bo->virtual;
 
for (src_h = 0; src_h < height_in_mbs; src_h++) {
for(src_w = 0; src_w < width_in_mbs; src_w++) {
int src_index, dst_index;
int src_shift;
uint8_t src_value;
 
src_index = (src_h * width_in_mbs + src_w) / 2;
src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
src_value = ((src[src_index] >> src_shift) & 0xf);
 
if (picture_type == GEN7_VC1_SKIPPED_PICTURE){
src_value |= 0x2;
}
 
dst_index = src_w / 2;
dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
}
 
if (src_w & 1)
dst[src_w / 2] >>= 4;
 
dst += bitplane_width;
}
 
dri_bo_unmap(bo);
} else
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
}
 
static void
gen75_mfd_vc1_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
int unified_mv_mode;
int ref_field_pic_polarity = 0;
int scale_factor = 0;
int trans_ac_y = 0;
int dmv_surface_valid = 0;
int brfd = 0;
int fcm = 0;
int picture_type;
int profile;
int overlap;
int interpolation_mode = 0;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
profile = va_to_gen7_vc1_profile[pic_param->sequence_fields.bits.profile];
dquant = pic_param->pic_quantizer_fields.bits.dquant;
dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
 
if (dquant == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
} else if (dquant == 2) {
alt_pquant_config = 1;
alt_pquant_edge_mask = 0xf;
} else {
assert(dquant == 1);
if (dquantfrm == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
alt_pq = 0;
} else {
assert(dquantfrm == 1);
alt_pquant_config = 1;
 
switch (dqprofile) {
case 3:
if (dqbilevel == 0) {
alt_pquant_config = 2;
alt_pquant_edge_mask = 0;
} else {
assert(dqbilevel == 1);
alt_pquant_config = 3;
alt_pquant_edge_mask = 0;
}
break;
case 0:
alt_pquant_edge_mask = 0xf;
break;
 
case 1:
if (dqdbedge == 3)
alt_pquant_edge_mask = 0x9;
else
alt_pquant_edge_mask = (0x3 << dqdbedge);
 
break;
 
case 2:
alt_pquant_edge_mask = (0x1 << dqsbedge);
break;
 
default:
assert(0);
}
}
}
 
if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
assert(pic_param->mv_fields.bits.mv_mode2 < 4);
unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
} else {
assert(pic_param->mv_fields.bits.mv_mode < 4);
unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode];
}
 
if (pic_param->sequence_fields.bits.interlace == 1 &&
pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
/* FIXME: calculate reference field picture polarity */
assert(0);
ref_field_pic_polarity = 0;
}
 
if (pic_param->b_picture_fraction < 21)
scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
 
picture_type = va_to_gen7_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
if (profile == GEN7_VC1_ADVANCED_PROFILE &&
picture_type == GEN7_VC1_I_PICTURE)
picture_type = GEN7_VC1_BI_PICTURE;
 
if (picture_type == GEN7_VC1_I_PICTURE || picture_type == GEN7_VC1_BI_PICTURE) /* I picture */
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
else {
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
 
/*
* 8.3.6.2.1 Transform Type Selection
* If variable-sized transform coding is not enabled,
* then the 8x8 transform shall be used for all blocks.
* it is also MFX_VC1_PIC_STATE requirement.
*/
if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
pic_param->transform_fields.bits.frame_level_transform_type = 0;
}
}
 
if (picture_type == GEN7_VC1_B_PICTURE) {
struct gen7_vc1_surface *gen7_vc1_surface = NULL;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
assert(obj_surface);
gen7_vc1_surface = obj_surface->private_data;
 
if (!gen7_vc1_surface ||
(va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_I_PICTURE ||
va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_BI_PICTURE))
dmv_surface_valid = 0;
else
dmv_surface_valid = 1;
}
 
assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
 
if (pic_param->picture_fields.bits.frame_coding_mode < 2)
fcm = pic_param->picture_fields.bits.frame_coding_mode;
else {
if (pic_param->picture_fields.bits.top_field_first)
fcm = 2;
else
fcm = 3;
}
 
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_B_PICTURE) { /* B picture */
brfd = pic_param->reference_fields.bits.reference_distance;
brfd = (scale_factor * brfd) >> 8;
brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
 
if (brfd < 0)
brfd = 0;
}
 
overlap = 0;
if (profile != GEN7_VC1_ADVANCED_PROFILE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
overlap = 1;
}
}else {
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
}
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
} else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
overlap = 1;
}
}
}
 
assert(pic_param->conditional_overlap_flag < 3);
assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
 
if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
interpolation_mode = 9; /* Half-pel bilinear */
else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
interpolation_mode = 1; /* Half-pel bicubic */
else
interpolation_mode = 0; /* Quarter-pel bicubic */
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
(((ALIGN(pic_param->coded_height, 16) / 16) - 1) << 16) |
((ALIGN(pic_param->coded_width, 16) / 16) - 1));
OUT_BCS_BATCH(batch,
((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1) << 24 |
dmv_surface_valid << 15 |
(pic_param->pic_quantizer_fields.bits.quantizer == 0) << 14 | /* implicit quantizer */
pic_param->rounding_control << 13 |
pic_param->sequence_fields.bits.syncmarker << 12 |
interpolation_mode << 8 |
0 << 7 | /* FIXME: scale up or down ??? */
pic_param->range_reduction_frame << 6 |
pic_param->entrypoint_fields.bits.loopfilter << 5 |
overlap << 4 |
!pic_param->picture_fields.bits.is_first_field << 3 |
(pic_param->sequence_fields.bits.profile == 3) << 0);
OUT_BCS_BATCH(batch,
va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] << 29 |
picture_type << 26 |
fcm << 24 |
alt_pq << 16 |
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 8 |
scale_factor << 0);
OUT_BCS_BATCH(batch,
unified_mv_mode << 28 |
pic_param->mv_fields.bits.four_mv_switch << 27 |
pic_param->fast_uvmc_flag << 26 |
ref_field_pic_polarity << 25 |
pic_param->reference_fields.bits.num_reference_pictures << 24 |
pic_param->reference_fields.bits.reference_distance << 20 |
pic_param->reference_fields.bits.reference_distance << 16 | /* FIXME: ??? */
pic_param->mv_fields.bits.extended_dmv_range << 10 |
pic_param->mv_fields.bits.extended_mv_range << 8 |
alt_pquant_edge_mask << 4 |
alt_pquant_config << 2 |
pic_param->pic_quantizer_fields.bits.half_qp << 1 |
pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 0);
OUT_BCS_BATCH(batch,
!!pic_param->bitplane_present.value << 31 |
!pic_param->bitplane_present.flags.bp_forward_mb << 30 |
!pic_param->bitplane_present.flags.bp_mv_type_mb << 29 |
!pic_param->bitplane_present.flags.bp_skip_mb << 28 |
!pic_param->bitplane_present.flags.bp_direct_mb << 27 |
!pic_param->bitplane_present.flags.bp_overflags << 26 |
!pic_param->bitplane_present.flags.bp_ac_pred << 25 |
!pic_param->bitplane_present.flags.bp_field_tx << 24 |
pic_param->mv_fields.bits.mv_table << 20 |
pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
pic_param->transform_fields.bits.frame_level_transform_type << 12 |
pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
pic_param->mb_mode_table << 8 |
trans_ac_y << 6 |
pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
pic_param->cbp_table << 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
int intensitycomp_single;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
0 << 14 | /* FIXME: double ??? */
0 << 12 |
intensitycomp_single << 10 |
intensitycomp_single << 8 |
0 << 4 | /* FIXME: interlace mode */
0);
OUT_BCS_BATCH(batch,
pic_param->luma_shift << 16 |
pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_vc1_directmode_state_bplus(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
obj_surface = SURFACE(decode_state->current_render_target);
 
if (obj_surface && obj_surface->private_data) {
dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->private_data) {
dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
BEGIN_BCS_BATCH(batch, 7);
OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (7 - 2));
 
if (dmv_write_buffer)
OUT_BCS_RELOC(batch, dmv_write_buffer,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
if (dmv_read_buffer)
OUT_BCS_RELOC(batch, dmv_read_buffer,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_vc1_directmode_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_mfd_vc1_directmode_state_bplus(ctx, decode_state, gen7_mfd_context);
return;
}
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
obj_surface = SURFACE(decode_state->current_render_target);
 
if (obj_surface && obj_surface->private_data) {
dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->private_data) {
dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
 
if (dmv_write_buffer)
OUT_BCS_RELOC(batch, dmv_write_buffer,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (dmv_read_buffer)
OUT_BCS_RELOC(batch, dmv_read_buffer,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static int
gen75_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
{
int out_slice_data_bit_offset;
int slice_header_size = in_slice_data_bit_offset / 8;
int i, j;
 
if (profile != 3)
out_slice_data_bit_offset = in_slice_data_bit_offset;
else {
for (i = 0, j = 0; i < slice_header_size; i++, j++) {
if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
i++, j += 2;
}
}
 
out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
}
 
return out_slice_data_bit_offset;
}
 
static void
gen75_mfd_vc1_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
VASliceParameterBufferVC1 *slice_param,
VASliceParameterBufferVC1 *next_slice_param,
dri_bo *slice_data_bo,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int next_slice_start_vert_pos;
int macroblock_offset;
uint8_t *slice_data = NULL;
 
dri_bo_map(slice_data_bo, 0);
slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
macroblock_offset = gen75_mfd_vc1_get_macroblock_bit_offset(slice_data,
slice_param->macroblock_offset,
pic_param->sequence_fields.bits.profile);
dri_bo_unmap(slice_data_bo);
 
if (next_slice_param)
next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
else
next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (5 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_vertical_position << 16 |
next_slice_start_vert_pos << 0);
OUT_BCS_BATCH(batch,
(macroblock_offset & 0x7));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_vc1_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
gen75_mfd_vc1_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen75_mfd_vc1_pic_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_vc1_pred_pipe_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_vc1_directmode_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen75_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen75_mfd_jpeg_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAPictureParameterBufferJPEGBaseline *pic_param;
int subsampling = SUBSAMPLE_YUV420;
 
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
if (pic_param->num_components == 1)
subsampling = SUBSAMPLE_YUV400;
else if (pic_param->num_components == 3) {
int h1 = pic_param->components[0].h_sampling_factor;
int h2 = pic_param->components[1].h_sampling_factor;
int h3 = pic_param->components[2].h_sampling_factor;
int v1 = pic_param->components[0].v_sampling_factor;
int v2 = pic_param->components[1].v_sampling_factor;
int v3 = pic_param->components[2].v_sampling_factor;
 
if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV420;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422H;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV444;
else if (h1 == 4 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV411;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422V;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 2 && v3 == 2)
subsampling = SUBSAMPLE_YUV422H;
else if (h2 == 2 && h2 == 2 && h3 == 2 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422V;
else
assert(0);
} else {
assert(0);
}
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('I','M','C','1'), subsampling);
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = 1;
 
gen7_mfd_context->post_deblocking_output.bo = NULL;
gen7_mfd_context->post_deblocking_output.valid = 0;
 
gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static const int va_to_gen7_jpeg_rotation[4] = {
GEN7_JPEG_ROTATION_0,
GEN7_JPEG_ROTATION_90,
GEN7_JPEG_ROTATION_180,
GEN7_JPEG_ROTATION_270
};
 
static void
gen75_mfd_jpeg_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferJPEGBaseline *pic_param;
int chroma_type = GEN7_YUV420;
int frame_width_in_blks;
int frame_height_in_blks;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
if (pic_param->num_components == 1)
chroma_type = GEN7_YUV400;
else if (pic_param->num_components == 3) {
int h1 = pic_param->components[0].h_sampling_factor;
int h2 = pic_param->components[1].h_sampling_factor;
int h3 = pic_param->components[2].h_sampling_factor;
int v1 = pic_param->components[0].v_sampling_factor;
int v2 = pic_param->components[1].v_sampling_factor;
int v3 = pic_param->components[2].v_sampling_factor;
 
if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV420;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422H_2Y;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV444;
else if (h1 == 4 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV411;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422V_2Y;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 2 && v3 == 2)
chroma_type = GEN7_YUV422H_4Y;
else if (h2 == 2 && h2 == 2 && h3 == 2 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422V_4Y;
else
assert(0);
}
 
if (chroma_type == GEN7_YUV400 ||
chroma_type == GEN7_YUV444 ||
chroma_type == GEN7_YUV422V_2Y) {
frame_width_in_blks = ((pic_param->picture_width + 7) / 8);
frame_height_in_blks = ((pic_param->picture_height + 7) / 8);
} else if (chroma_type == GEN7_YUV411) {
frame_width_in_blks = ((pic_param->picture_width + 31) / 32) * 4;
frame_height_in_blks = ((pic_param->picture_height + 31) / 32) * 4;
} else {
frame_width_in_blks = ((pic_param->picture_width + 15) / 16) * 2;
frame_height_in_blks = ((pic_param->picture_height + 15) / 16) * 2;
}
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
OUT_BCS_BATCH(batch,
(va_to_gen7_jpeg_rotation[0] << 4) | /* without rotation */
(chroma_type << 0));
OUT_BCS_BATCH(batch,
((frame_height_in_blks - 1) << 16) | /* FrameHeightInBlks */
((frame_width_in_blks - 1) << 0)); /* FrameWidthInBlks */
ADVANCE_BCS_BATCH(batch);
}
 
static const int va_to_gen7_jpeg_hufftable[2] = {
MFX_HUFFTABLE_ID_Y,
MFX_HUFFTABLE_ID_UV
};
 
static void
gen75_mfd_jpeg_huff_table_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context,
int num_tables)
{
VAHuffmanTableBufferJPEGBaseline *huffman_table;
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int index;
 
if (!decode_state->huffman_table || !decode_state->huffman_table->buffer)
return;
 
huffman_table = (VAHuffmanTableBufferJPEGBaseline *)decode_state->huffman_table->buffer;
 
for (index = 0; index < num_tables; index++) {
int id = va_to_gen7_jpeg_hufftable[index];
BEGIN_BCS_BATCH(batch, 53);
OUT_BCS_BATCH(batch, MFX_JPEG_HUFF_TABLE_STATE | (53 - 2));
OUT_BCS_BATCH(batch, id);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_dc_codes, 12);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].dc_values, 12);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_ac_codes, 16);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].ac_values, 164);
ADVANCE_BCS_BATCH(batch);
}
}
 
static const int va_to_gen7_jpeg_qm[5] = {
-1,
MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX,
MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX,
MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX,
MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX
};
 
static void
gen75_mfd_jpeg_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferJPEGBaseline *pic_param;
VAIQMatrixBufferJPEGBaseline *iq_matrix;
int index;
 
if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
return;
 
iq_matrix = (VAIQMatrixBufferJPEGBaseline *)decode_state->iq_matrix->buffer;
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
assert(pic_param->num_components <= 3);
 
for (index = 0; index < pic_param->num_components; index++) {
int qm_type = va_to_gen7_jpeg_qm[pic_param->components[index].component_id - pic_param->components[0].component_id + 1];
unsigned char *qm = iq_matrix->quantiser_table[pic_param->components[index].quantiser_table_selector];
unsigned char raster_qm[64];
int j;
 
if (!iq_matrix->load_quantiser_table[pic_param->components[index].quantiser_table_selector])
continue;
 
for (j = 0; j < 64; j++)
raster_qm[zigzag_direct[j]] = qm[j];
 
gen75_mfd_qm_state(ctx, qm_type, raster_qm, 64, gen7_mfd_context);
}
}
 
static void
gen75_mfd_jpeg_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferJPEGBaseline *pic_param,
VASliceParameterBufferJPEGBaseline *slice_param,
VASliceParameterBufferJPEGBaseline *next_slice_param,
dri_bo *slice_data_bo,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int scan_component_mask = 0;
int i;
 
assert(slice_param->num_components > 0);
assert(slice_param->num_components < 4);
assert(slice_param->num_components <= pic_param->num_components);
 
for (i = 0; i < slice_param->num_components; i++) {
switch (slice_param->components[i].component_selector - pic_param->components[0].component_id + 1) {
case 1:
scan_component_mask |= (1 << 0);
break;
case 2:
scan_component_mask |= (1 << 1);
break;
case 3:
scan_component_mask |= (1 << 2);
break;
default:
assert(0);
break;
}
}
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_JPEG_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size);
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset);
OUT_BCS_BATCH(batch,
slice_param->slice_horizontal_position << 16 |
slice_param->slice_vertical_position << 0);
OUT_BCS_BATCH(batch,
((slice_param->num_components != 1) << 30) | /* interleaved */
(scan_component_mask << 27) | /* scan components */
(0 << 26) | /* disable interrupt allowed */
(slice_param->num_mcus << 0)); /* MCU count */
OUT_BCS_BATCH(batch,
(slice_param->restart_interval << 0)); /* RestartInterval */
ADVANCE_BCS_BATCH(batch);
}
 
/* Workaround for JPEG decoding on Ivybridge */
 
VAStatus
i965_DestroySurfaces(VADriverContextP ctx,
VASurfaceID *surface_list,
int num_surfaces);
VAStatus
i965_CreateSurfaces(VADriverContextP ctx,
int width,
int height,
int format,
int num_surfaces,
VASurfaceID *surfaces);
 
static struct {
int width;
int height;
unsigned char data[32];
int data_size;
int data_bit_offset;
int qp;
} gen7_jpeg_wa_clip = {
16,
16,
{
0x65, 0xb8, 0x40, 0x32, 0x13, 0xfd, 0x06, 0x6c,
0xfc, 0x0a, 0x50, 0x71, 0x5c, 0x00
},
14,
40,
28,
};
 
static void
gen75_jpeg_wa_init(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VAStatus status;
struct object_surface *obj_surface;
 
if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE)
i965_DestroySurfaces(ctx,
&gen7_mfd_context->jpeg_wa_surface_id,
1);
 
status = i965_CreateSurfaces(ctx,
gen7_jpeg_wa_clip.width,
gen7_jpeg_wa_clip.height,
VA_RT_FORMAT_YUV420,
1,
&gen7_mfd_context->jpeg_wa_surface_id);
assert(status == VA_STATUS_SUCCESS);
 
obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
 
if (!gen7_mfd_context->jpeg_wa_slice_data_bo) {
gen7_mfd_context->jpeg_wa_slice_data_bo = dri_bo_alloc(i965->intel.bufmgr,
"JPEG WA data",
0x1000,
0x1000);
dri_bo_subdata(gen7_mfd_context->jpeg_wa_slice_data_bo,
0,
gen7_jpeg_wa_clip.data_size,
gen7_jpeg_wa_clip.data);
}
}
 
static void
gen75_jpeg_wa_pipe_mode_select(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Currently only support long format */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(0 << 9) | /* Post Deblocking Output */
(1 << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(MFX_CODEC_DECODE << 4) | /* decoding mode */
(MFX_FORMAT_AVC << 0));
OUT_BCS_BATCH(batch,
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
OUT_BCS_BATCH(batch, 0); /* reserved */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_surface_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((obj_surface->orig_width - 1) << 18) |
((obj_surface->orig_height - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* interleave chroma, set to 0 for JPEG */
(0 << 22) | /* surface object control state, ignored */
((obj_surface->width - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for U(Cb), must be 0 */
(obj_surface->y_cb_offset << 0)); /* Y offset for U(Cb) */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for V(Cr), must be 0 */
(0 << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen75_jpeg_wa_pipe_buf_addr_state_bplus(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *intra_bo;
int i;
 
intra_bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
128 * 64,
0x1000);
 
BEGIN_BCS_BATCH(batch, 61);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
OUT_BCS_RELOC(batch,
obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0); /* post deblocking */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* uncompressed-video & stream out 7-12 */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW 13-15 is for intra row store scratch */
OUT_BCS_RELOC(batch,
intra_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* the DW 16-18 is for deblocking filter */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* DW 19..50 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
OUT_BCS_BATCH(batch, 0);
 
/* the DW52-54 is for mb status address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
/* the DW56-60 is for ILDB & second ILDB address */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(intra_bo);
}
 
static void
gen75_jpeg_wa_pipe_buf_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *intra_bo;
int i;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_jpeg_wa_pipe_buf_addr_state_bplus(ctx, gen7_mfd_context);
return;
}
intra_bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
128 * 64,
0x1000);
 
BEGIN_BCS_BATCH(batch, 25);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
OUT_BCS_RELOC(batch,
obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0); /* post deblocking */
 
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
 
OUT_BCS_RELOC(batch,
intra_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_BATCH(batch, 0);
 
/* DW 7..22 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
}
 
OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore DW24 for decoding */
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(intra_bo);
}
 
static void
gen75_jpeg_wa_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *bsd_mpc_bo, *mpr_bo;
 
bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
11520, /* 1.5 * 120 * 64 */
0x1000);
 
mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
7680, /* 1. 0 * 120 * 64 */
0x1000);
 
BEGIN_BCS_BATCH(batch, 10);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
 
OUT_BCS_RELOC(batch,
bsd_mpc_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_RELOC(batch,
mpr_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(bsd_mpc_bo);
dri_bo_unreference(mpr_bo);
}
 
static void
gen75_jpeg_wa_bsp_buf_base_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *bsd_mpc_bo, *mpr_bo;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_jpeg_wa_bsp_buf_base_addr_state_bplus(ctx, gen7_mfd_context);
return;
}
bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
11520, /* 1.5 * 120 * 64 */
0x1000);
 
mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
7680, /* 1. 0 * 120 * 64 */
0x1000);
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
 
OUT_BCS_RELOC(batch,
bsd_mpc_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_RELOC(batch,
mpr_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(bsd_mpc_bo);
dri_bo_unreference(mpr_bo);
}
 
static void
gen75_jpeg_wa_avc_qm_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
 
}
 
static void
gen75_jpeg_wa_avc_img_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int img_struct = 0;
int mbaff_frame_flag = 0;
unsigned int width_in_mbs = 1, height_in_mbs = 1;
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
width_in_mbs * height_in_mbs);
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
(0 << 24) |
(0 << 16) |
(0 << 14) |
(0 << 13) |
(0 << 12) | /* differ from GEN6 */
(0 << 10) |
(img_struct << 8));
OUT_BCS_BATCH(batch,
(1 << 10) | /* 4:2:0 */
(1 << 7) | /* CABAC */
(0 << 6) |
(0 << 5) |
(0 << 4) |
(0 << 3) |
(1 << 2) |
(mbaff_frame_flag << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_avc_directmode_state_bplus(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int i;
 
BEGIN_BCS_BATCH(batch, 71);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0); /* bottom */
}
OUT_BCS_BATCH(batch, 0);
 
/* the current decoding frame/field */
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* POC List */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_avc_directmode_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int i;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_jpeg_wa_avc_directmode_state_bplus(ctx, gen7_mfd_context);
return;
}
 
BEGIN_BCS_BATCH(batch, 69);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0); /* bottom */
}
 
/* the current decoding frame/field */
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0); /* bottom */
 
/* POC List */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 26);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
OUT_BCS_RELOC(batch,
gen7_mfd_context->jpeg_wa_slice_data_bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0);
 
/* MFX indirect MV 6-10 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* MFX IT_COFF 11-15 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* MFX IT_DBLK 16-20 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
/* MFX PAK_BSE object for encoder 21-25 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_ind_obj_base_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
if (IS_STEPPING_BPLUS(i965)) {
gen75_jpeg_wa_ind_obj_base_addr_state_bplus(ctx, gen7_mfd_context);
return;
}
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_RELOC(batch,
gen7_mfd_context->jpeg_wa_slice_data_bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_avc_bsd_object(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
/* the input bitsteam format on GEN7 differs from GEN6 */
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch, gen7_jpeg_wa_clip.data_size);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
(0 << 31) |
(0 << 14) |
(0 << 12) |
(0 << 10) |
(0 << 8));
OUT_BCS_BATCH(batch,
((gen7_jpeg_wa_clip.data_bit_offset >> 3) << 16) |
(0 << 5) |
(0 << 4) |
(1 << 3) | /* LastSlice Flag */
(gen7_jpeg_wa_clip.data_bit_offset & 0x7));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_jpeg_wa_avc_slice_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int slice_hor_pos = 0, slice_ver_pos = 0, next_slice_hor_pos = 0, next_slice_ver_pos = 1;
int num_ref_idx_l0 = 0, num_ref_idx_l1 = 0;
int first_mb_in_slice = 0;
int slice_type = SLICE_TYPE_I;
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, slice_type);
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(0 << 8) |
(0 << 0));
OUT_BCS_BATCH(batch,
(0 << 29) |
(1 << 27) | /* disable Deblocking */
(0 << 24) |
(gen7_jpeg_wa_clip.qp << 16) |
(0 << 8) |
(0 << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(next_slice_ver_pos << 16) |
(next_slice_hor_pos << 0));
OUT_BCS_BATCH(batch, (1 << 19)); /* last slice flag */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen75_mfd_jpeg_wa(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
gen75_jpeg_wa_init(ctx, gen7_mfd_context);
intel_batchbuffer_emit_mi_flush(batch);
gen75_jpeg_wa_pipe_mode_select(ctx, gen7_mfd_context);
gen75_jpeg_wa_surface_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_pipe_buf_addr_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_bsp_buf_base_addr_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_avc_qm_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_avc_img_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_ind_obj_base_addr_state(ctx, gen7_mfd_context);
 
gen75_jpeg_wa_avc_directmode_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_avc_slice_state(ctx, gen7_mfd_context);
gen75_jpeg_wa_avc_bsd_object(ctx, gen7_mfd_context);
}
 
void
gen75_mfd_jpeg_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferJPEGBaseline *pic_param;
VASliceParameterBufferJPEGBaseline *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j, max_selector = 0;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
/* Currently only support Baseline DCT */
gen75_mfd_jpeg_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
gen75_mfd_jpeg_wa(ctx, gen7_mfd_context);
intel_batchbuffer_emit_mi_flush(batch);
gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen75_mfd_jpeg_pic_state(ctx, decode_state, gen7_mfd_context);
gen75_mfd_jpeg_qm_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
int component;
 
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
for (component = 0; component < slice_param->num_components; component++) {
if (max_selector < slice_param->components[component].dc_table_selector)
max_selector = slice_param->components[component].dc_table_selector;
 
if (max_selector < slice_param->components[component].ac_table_selector)
max_selector = slice_param->components[component].ac_table_selector;
}
 
slice_param++;
}
}
 
assert(max_selector < 2);
gen75_mfd_jpeg_huff_table_state(ctx, decode_state, gen7_mfd_context, max_selector + 1);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen75_mfd_jpeg_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen75_mfd_decode_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
 
{
struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
struct decode_state *decode_state = &codec_state->decode;
 
assert(gen7_mfd_context);
 
gen7_mfd_context->wa_mpeg2_slice_vertical_position = -1;
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
gen75_mfd_mpeg2_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
gen75_mfd_avc_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
gen75_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
 
case VAProfileJPEGBaseline:
gen75_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
 
default:
assert(0);
break;
}
}
 
static void
gen75_mfd_context_destroy(void *hw_context)
{
struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
 
intel_batchbuffer_free(gen7_mfd_context->base.batch);
free(gen7_mfd_context);
}
 
static void gen75_mfd_mpeg2_context_init(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
gen7_mfd_context->iq_matrix.mpeg2.load_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_non_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_chroma_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_chroma_non_intra_quantiser_matrix = -1;
}
 
struct hw_context *
gen75_dec_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct gen7_mfd_context *gen7_mfd_context = calloc(1, sizeof(struct gen7_mfd_context));
int i;
 
gen7_mfd_context->base.destroy = gen75_mfd_context_destroy;
gen7_mfd_context->base.run = gen75_mfd_decode_picture;
gen7_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen7_mfd_context->reference_surface[i].frame_store_id = -1;
}
 
gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
gen75_mfd_mpeg2_context_init(ctx, gen7_mfd_context);
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
gen75_mfd_avc_context_init(ctx, gen7_mfd_context);
break;
default:
break;
}
return (struct hw_context *)gen7_mfd_context;
}
/drivers/video/i965/gen75_vme.c
0,0 → 1,811
/*
* Copyright © 2010-2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhao Yakui <yakui.zhao@intel.com>
* Xiang HaiHao <haihao.xiang@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "gen6_vme.h"
#include "i965_encoder.h"
 
#define SURFACE_STATE_PADDED_SIZE_0_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_GEN7 ALIGN(sizeof(struct gen7_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN7 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN7, SURFACE_STATE_PADDED_SIZE_1_GEN7)
 
#define SURFACE_STATE_PADDED_SIZE_0_GEN6 ALIGN(sizeof(struct i965_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_GEN6 ALIGN(sizeof(struct i965_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN6 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN6, SURFACE_STATE_PADDED_SIZE_1_GEN7)
 
#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6)
 
#define VME_INTRA_SHADER 0
#define VME_INTER_SHADER 1
 
#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
 
#define VME_MSG_LENGTH 32
static const uint32_t gen75_vme_intra_frame[][4] = {
#include "shaders/vme/intra_frame_haswell.g75b"
};
 
static const uint32_t gen75_vme_inter_frame[][4] = {
#include "shaders/vme/inter_frame_haswell.g75b"
};
 
static struct i965_kernel gen75_vme_kernels[] = {
{
"VME Intra Frame",
VME_INTRA_SHADER, /*index*/
gen75_vme_intra_frame,
sizeof(gen75_vme_intra_frame),
NULL
},
{
"VME inter Frame",
VME_INTER_SHADER,
gen75_vme_inter_frame,
sizeof(gen75_vme_inter_frame),
NULL
}
};
 
/*
* Surface state for IvyBridge
*/
static
void gen75_vme_set_common_surface_tiling(struct gen7_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss0.tiled_surface = 0;
ss->ss0.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
gen75_vme_set_source_surface_tiling(struct gen7_surface_state2 *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss2.tiled_surface = 0;
ss->ss2.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
 
/* only used for VME source surface state */
static void gen75_vme_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state2 *ss;
dri_bo *bo;
int w, h, w_pitch, h_pitch;
unsigned int tiling, swizzle;
 
assert(obj_surface->bo);
 
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
h_pitch = obj_surface->height;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct gen7_surface_state2 *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
ss->ss0.surface_base_address = obj_surface->bo->offset;
 
ss->ss1.cbcr_pixel_offset_v_direction = 2;
ss->ss1.width = w - 1;
ss->ss1.height = h - 1;
 
ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
ss->ss2.interleave_chroma = 1;
ss->ss2.pitch = w_pitch - 1;
ss->ss2.half_pitch_for_chroma = 0;
 
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
gen75_vme_set_source_surface_tiling(ss, tiling);
 
/* UV offset for interleave mode */
ss->ss3.x_offset_for_cb = 0;
ss->ss3.y_offset_for_cb = h_pitch;
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, 0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state2, ss0),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static void
gen75_vme_media_source_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state *ss;
dri_bo *bo;
int w, h, w_pitch;
unsigned int tiling, swizzle;
 
/* Y plane */
w = obj_surface->orig_width;
h = obj_surface->orig_height;
w_pitch = obj_surface->width;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, True);
assert(bo->virtual);
 
ss = (struct gen7_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
 
ss->ss1.base_addr = obj_surface->bo->offset;
 
ss->ss2.width = w / 4 - 1;
ss->ss2.height = h - 1;
 
ss->ss3.pitch = w_pitch - 1;
 
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
gen75_vme_set_common_surface_tiling(ss, tiling);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, 0,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
obj_surface->bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
}
 
static VAStatus
gen75_vme_output_buffer_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int index,
struct gen6_encoder_context *gen6_encoder_context)
 
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen7_surface_state *ss;
dri_bo *bo;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
int num_entries;
 
if ( is_intra ) {
vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
} else {
vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
/*
* Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
* + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
* 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
*/
}
vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
vme_context->vme_output.pitch = 16;
bo = dri_bo_alloc(i965->intel.bufmgr,
"VME output buffer",
vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
0x1000);
assert(bo);
vme_context->vme_output.bo = bo;
 
bo = vme_context->surface_state_binding_table.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
 
ss = (struct gen7_surface_state *)((char *)bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
 
/* always use 16 bytes as pitch on Sandy Bridge */
num_entries = vme_context->vme_output.num_blocks * vme_context->vme_output.size_block / 16;
 
ss->ss0.surface_type = I965_SURFACE_BUFFER;
 
ss->ss1.base_addr = vme_context->vme_output.bo->offset;
 
ss->ss2.width = ((num_entries - 1) & 0x7f);
ss->ss2.height = (((num_entries - 1) >> 7) & 0x3fff);
ss->ss3.depth = (((num_entries - 1) >> 21) & 0x3f);
 
ss->ss3.pitch = vme_context->vme_output.pitch - 1;
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
vme_context->vme_output.bo);
 
((unsigned int *)((char *)bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_vme_surface_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int is_intra,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param->buffer;
 
/*Setup surfaces state*/
/* current picture for encoding */
obj_surface = SURFACE(encode_state->current_render_target);
assert(obj_surface);
gen75_vme_source_surface_state(ctx, 0, obj_surface, gen6_encoder_context);
gen75_vme_media_source_surface_state(ctx, 4, obj_surface, gen6_encoder_context);
 
if ( ! is_intra ) {
/* reference 0 */
obj_surface = SURFACE(pPicParameter->reference_picture);
assert(obj_surface);
gen75_vme_source_surface_state(ctx, 1, obj_surface, gen6_encoder_context);
/* reference 1, FIXME: */
// obj_surface = SURFACE(pPicParameter->reference_picture);
// assert(obj_surface);
//gen7_vme_source_surface_state(ctx, 2, obj_surface);
}
 
/* VME output */
gen75_vme_output_buffer_setup(ctx, encode_state, 3, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_vme_interface_setup(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
struct gen6_interface_descriptor_data *desc;
int i;
dri_bo *bo;
 
bo = vme_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
struct i965_kernel *kernel;
kernel = &vme_context->vme_kernels[i];
assert(sizeof(*desc) == 32);
/*Setup the descritor table*/
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
desc->desc2.sampler_count = 0; /* FIXME: */
desc->desc2.sampler_state_pointer = 0;
desc->desc3.binding_table_entry_count = 1; /* FIXME: */
desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
desc->desc4.constant_urb_entry_read_offset = 0;
desc->desc4.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
/*kernel start*/
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
kernel->bo);
desc++;
}
dri_bo_unmap(bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_vme_constant_setup(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
unsigned char *constant_buffer;
 
dri_bo_map(vme_context->curbe.bo, 1);
assert(vme_context->curbe.bo->virtual);
constant_buffer = vme_context->curbe.bo->virtual;
/* VME MV/Mb cost table is passed by using const buffer */
/* Now it uses the fixed search path. So it is constructed directly
* in the GPU shader.
*/
memcpy(constant_buffer, (char *)vme_context->vme_state_message, 32);
 
dri_bo_unmap( vme_context->curbe.bo);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_vme_vme_state_setup(VADriverContextP ctx,
struct encode_state *encode_state,
int is_intra,
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
unsigned int *vme_state_message;
int i;
//building VME state message
//pass the MV/Mb cost into VME message on HASWell
assert(vme_context->vme_state_message);
vme_state_message = (unsigned int *)vme_context->vme_state_message;
 
vme_state_message[0] = 0x4a4a4a4a;
vme_state_message[1] = 0x4a4a4a4a;
vme_state_message[2] = 0x4a4a4a4a;
vme_state_message[3] = 0x22120200;
vme_state_message[4] = 0x62524232;
 
for (i=5; i < 8; i++) {
vme_state_message[i] = 0;
}
 
return VA_STATUS_SUCCESS;
}
 
static void gen75_vme_pipeline_select(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void gen75_vme_state_base_address(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 10);
 
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 8);
 
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //General State Base Address
OUT_RELOC(batch, vme_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Dynamic State Base Address
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Indirect Object Base Address
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //Instruction Base Address
 
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Dynamic State Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Indirect Object Access Upper Bound
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Instruction Access Upper Bound
 
/*
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //LLC Coherent Base Address
OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY ); //LLC Coherent Upper Bound
*/
 
ADVANCE_BATCH(batch);
}
 
static void gen75_vme_vfe_state(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 8);
 
OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | 6); /*Gen6 CMD_MEDIA_STATE_POINTERS = CMD_MEDIA_STATE */
OUT_BATCH(batch, 0); /*Scratch Space Base Pointer and Space*/
OUT_BATCH(batch, (vme_context->vfe_state.max_num_threads << 16)
| (vme_context->vfe_state.num_urb_entries << 8)
| (vme_context->vfe_state.gpgpu_mode << 2) ); /*Maximum Number of Threads , Number of URB Entries, MEDIA Mode*/
OUT_BATCH(batch, 0); /*Debug: Object ID*/
OUT_BATCH(batch, (vme_context->vfe_state.urb_entry_size << 16)
| vme_context->vfe_state.curbe_allocation_size); /*URB Entry Allocation Size , CURBE Allocation Size*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
OUT_BATCH(batch, 0); /*Disable Scoreboard*/
ADVANCE_BATCH(batch);
 
}
 
static void gen75_vme_curbe_load(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 4);
 
OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | 2);
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch, CURBE_TOTAL_DATA_LENGTH);
OUT_RELOC(batch, vme_context->curbe.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
ADVANCE_BATCH(batch);
}
 
static void gen75_vme_idrt(VADriverContextP ctx,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, 4);
 
OUT_BATCH(batch, CMD_MEDIA_INTERFACE_LOAD | 2);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_VME_KERNEL_NUMBER * sizeof(struct gen6_interface_descriptor_data));
OUT_RELOC(batch, vme_context->idrt.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
ADVANCE_BATCH(batch);
}
 
static int gen75_vme_media_object(VADriverContextP ctx,
struct encode_state *encode_state,
int mb_x, int mb_y,
int kernel, unsigned int mb_intra_ub,
struct gen6_encoder_context *gen6_encoder_context,
struct intel_batchbuffer *batch)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(encode_state->current_render_target);
int mb_width = ALIGN(obj_surface->orig_width, 16) / 16;
int len_in_dowrds = 8;
 
if (batch == NULL)
batch = gen6_encoder_context->base.batch;
 
BEGIN_BATCH(batch, len_in_dowrds);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | (len_in_dowrds - 2));
OUT_BATCH(batch, kernel); /*Interface Descriptor Offset*/
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
/*inline data */
OUT_BATCH(batch, mb_width << 16 | mb_y << 8 | mb_x); /*M0.0 Refrence0 X,Y, not used in Intra*/
 
OUT_BATCH(batch, ((mb_intra_ub << 8) | 0));
ADVANCE_BATCH(batch);
 
return len_in_dowrds * 4;
}
 
static void gen75_vme_media_init(VADriverContextP ctx, struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
dri_bo *bo;
 
/* constant buffer */
dri_bo_unreference(vme_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
CURBE_TOTAL_DATA_LENGTH, 64);
assert(bo);
vme_context->curbe.bo = bo;
 
dri_bo_unreference(vme_context->surface_state_binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6,
4096);
assert(bo);
vme_context->surface_state_binding_table.bo = bo;
 
/* interface descriptor remapping table */
dri_bo_unreference(vme_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
MAX_INTERFACE_DESC_GEN6 * sizeof(struct gen6_interface_descriptor_data), 16);
assert(bo);
vme_context->idrt.bo = bo;
 
/* VME output buffer */
dri_bo_unreference(vme_context->vme_output.bo);
vme_context->vme_output.bo = NULL;
 
/* VME state */
dri_bo_unreference(vme_context->vme_state.bo);
vme_context->vme_state.bo = NULL;
 
vme_context->vfe_state.max_num_threads = 60 - 1;
vme_context->vfe_state.num_urb_entries = 16;
vme_context->vfe_state.gpgpu_mode = 0;
vme_context->vfe_state.urb_entry_size = 59 - 1;
vme_context->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
}
 
#define INTRA_PRED_AVAIL_FLAG_AE 0x60
#define INTRA_PRED_AVAIL_FLAG_B 0x10
#define INTRA_PRED_AVAIL_FLAG_C 0x8
#define INTRA_PRED_AVAIL_FLAG_D 0x4
#define INTRA_PRED_AVAIL_FLAG_BCD_MASK 0x1C
 
static void gen75_vme_pipeline_programing(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *main_batch = gen6_encoder_context->base.batch;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
int emit_new_state = 1, object_len_in_bytes;
int x, y;
unsigned int mb_intra_ub;
struct intel_batchbuffer *batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, width_in_mbs * height_in_mbs * 8 * 4 + 0x200);
 
intel_batchbuffer_start_atomic(batch, width_in_mbs * height_in_mbs * 8 * 4 + 0x100);
 
for(y = 0; y < height_in_mbs; y++){
for(x = 0; x < width_in_mbs; x++){
mb_intra_ub = 0;
if (x != 0) {
mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
}
if (y != 0) {
mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
if (x != 0)
mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
if (x != (width_in_mbs -1))
mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
}
 
if (emit_new_state) {
/*Step1: MI_FLUSH/PIPE_CONTROL*/
intel_batchbuffer_emit_mi_flush(batch);
 
/*Step2: State command PIPELINE_SELECT*/
gen75_vme_pipeline_select(ctx, gen6_encoder_context, batch);
 
/*Step3: State commands configuring pipeline states*/
gen75_vme_state_base_address(ctx, gen6_encoder_context, batch);
gen75_vme_vfe_state(ctx, gen6_encoder_context, batch);
gen75_vme_curbe_load(ctx, gen6_encoder_context, batch);
gen75_vme_idrt(ctx, gen6_encoder_context, batch);
 
emit_new_state = 0;
}
 
/*Step4: Primitive commands*/
object_len_in_bytes = gen75_vme_media_object(ctx, encode_state, x, y, is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER, mb_intra_ub, gen6_encoder_context, batch);
 
if (intel_batchbuffer_check_free_space(batch, object_len_in_bytes) == 0) {
assert(0);
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
emit_new_state = 1;
intel_batchbuffer_start_atomic(batch, 0x1000);
}
}
}
 
intel_batchbuffer_align(batch, 8);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, MI_BATCH_BUFFER_END);
ADVANCE_BATCH(batch);
 
intel_batchbuffer_end_atomic(batch);
 
/* chain to the main batch buffer */
intel_batchbuffer_start_atomic(main_batch, 0x100);
intel_batchbuffer_emit_mi_flush(main_batch);
BEGIN_BATCH(main_batch, 2);
OUT_BATCH(main_batch, MI_BATCH_BUFFER_START | (2 << 6));
OUT_RELOC(main_batch,
batch->buffer,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BATCH(main_batch);
intel_batchbuffer_end_atomic(main_batch);
 
// end programing
intel_batchbuffer_free(batch);
}
 
static VAStatus gen75_vme_prepare(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
VAStatus vaStatus = VA_STATUS_SUCCESS;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
gen75_vme_surface_setup(ctx, encode_state, is_intra, gen6_encoder_context);
 
gen75_vme_interface_setup(ctx, encode_state, gen6_encoder_context);
gen75_vme_vme_state_setup(ctx, encode_state, is_intra, gen6_encoder_context);
gen75_vme_constant_setup(ctx, encode_state, gen6_encoder_context);
 
/*Programing media pipeline*/
gen75_vme_pipeline_programing(ctx, encode_state, gen6_encoder_context);
 
return vaStatus;
}
 
static VAStatus gen75_vme_run(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
struct intel_batchbuffer *batch = gen6_encoder_context->base.batch;
 
intel_batchbuffer_flush(batch);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus gen75_vme_stop(VADriverContextP ctx,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
return VA_STATUS_SUCCESS;
}
 
VAStatus gen75_vme_pipeline(VADriverContextP ctx,
VAProfile profile,
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
gen75_vme_media_init(ctx, gen6_encoder_context);
gen75_vme_prepare(ctx, encode_state, gen6_encoder_context);
gen75_vme_run(ctx, encode_state, gen6_encoder_context);
gen75_vme_stop(ctx, encode_state, gen6_encoder_context);
 
return VA_STATUS_SUCCESS;
}
 
Bool gen75_vme_context_init(VADriverContextP ctx, struct gen6_vme_context *vme_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
memcpy(vme_context->vme_kernels, gen75_vme_kernels, sizeof(vme_context->vme_kernels));
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
/*Load kernel into GPU memory*/
struct i965_kernel *kernel = &vme_context->vme_kernels[i];
 
kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
kernel->name,
kernel->size,
0x1000);
assert(kernel->bo);
dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
}
vme_context->vme_state_message = malloc(VME_MSG_LENGTH * sizeof(int));
return True;
}
 
Bool gen75_vme_context_destroy(struct gen6_vme_context *vme_context)
{
int i;
 
dri_bo_unreference(vme_context->idrt.bo);
vme_context->idrt.bo = NULL;
 
dri_bo_unreference(vme_context->surface_state_binding_table.bo);
vme_context->surface_state_binding_table.bo = NULL;
 
dri_bo_unreference(vme_context->curbe.bo);
vme_context->curbe.bo = NULL;
 
dri_bo_unreference(vme_context->vme_output.bo);
vme_context->vme_output.bo = NULL;
 
dri_bo_unreference(vme_context->vme_state.bo);
vme_context->vme_state.bo = NULL;
 
for (i = 0; i < GEN6_VME_KERNEL_NUMBER; i++) {
/*Load kernel into GPU memory*/
struct i965_kernel *kernel = &vme_context->vme_kernels[i];
 
dri_bo_unreference(kernel->bo);
kernel->bo = NULL;
}
 
if (vme_context->vme_state_message) {
free(vme_context->vme_state_message);
vme_context->vme_state_message = NULL;
}
 
return True;
}
/drivers/video/i965/gen75_vpp_vebox.c
0,0 → 1,861
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Li Xiaowei <xiaowei.a.li@intel.com>
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_structs.h"
#include "gen75_vpp_vebox.h"
 
#define PI 3.1415926
 
extern VAStatus
i965_CreateSurfaces(VADriverContextP ctx,
int width,
int height,
int format,
int num_surfaces,
VASurfaceID *surfaces);
 
int format_convert(float src, int out_int_bits, int out_frac_bits,int out_sign_flag)
{
unsigned char negative_flag = (src < 0.0) ? 1 : 0;
float src_1 = (!negative_flag)? src: -src ;
unsigned int factor = 1 << out_frac_bits;
int output_value = 0;
unsigned int integer_part = 0;//floor(src_1);
unsigned int fraction_part = ((int)((src_1 - integer_part) * factor)) & (factor - 1) ;
 
output_value = (integer_part << out_frac_bits) | fraction_part;
 
if(negative_flag)
output_value = (~output_value + 1) & ((1 <<(out_int_bits + out_frac_bits)) -1);
 
if(out_sign_flag == 1 && negative_flag)
{
output_value |= negative_flag <<(out_int_bits + out_frac_bits);
}
return output_value;
}
 
void hsw_veb_dndi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int* p_table ;
/*
VAProcFilterParameterBufferDeinterlacing *di_param =
(VAProcFilterParameterBufferDeinterlacing *) proc_ctx->filter_di;
 
VAProcFilterParameterBuffer * dn_param =
(VAProcFilterParameterBuffer *) proc_ctx->filter_dn;
*/
p_table = (unsigned int *)proc_ctx->dndi_state_table.ptr;
 
*p_table ++ = 0; // reserved . w0
*p_table ++ = ( 0 << 24 | // denoise STAD threshold . w1
128 << 16 | // dnmh_history_max
0 << 12 | // reserved
8 << 8 | // dnmh_delta[3:0]
0 ); // denoise ASD threshold
 
*p_table ++ = ( 0 << 30 | // reserved . w2
16 << 24 | // temporal diff th
0 << 22 | // reserved.
8 << 16 | // low temporal diff th
0 << 13 | // STMM C2
0 << 8 | // denoise moving pixel th
64 ); // denoise th for sum of complexity measure
 
*p_table ++ = ( 0 << 30 | // reserved . w3
4 << 24 | // good neighbor th[5:0]
9 << 20 | // CAT slope minus 1
5 << 16 | // SAD Tight in
0 << 14 | // smooth mv th
0 << 12 | // reserved
1 << 8 | // bne_edge_th[3:0]
15 ); // block noise estimate noise th
 
*p_table ++ = ( 0 << 31 | // STMM blending constant select. w4
64 << 24 | // STMM trc1
0 << 16 | // STMM trc2
0 << 14 | // reserved
2 << 8 | // VECM_mul
128 ); // maximum STMM
 
*p_table ++ = ( 0 << 24 | // minumum STMM . W5
0 << 22 | // STMM shift down
0 << 20 | // STMM shift up
7 << 16 | // STMM output shift
128 << 8 | // SDI threshold
8 ); // SDI delta
 
*p_table ++ = ( 0 << 24 | // SDI fallback mode 1 T1 constant . W6
0 << 16 | // SDI fallback mode 1 T2 constant
0 << 8 | // SDI fallback mode 2 constant(angle2x1)
0 ); // FMD temporal difference threshold
 
*p_table ++ = ( 32 << 24 | // FMD #1 vertical difference th . w7
32 << 16 | // FMD #2 vertical difference th
1 << 14 | // CAT th1
32 << 8 | // FMD tear threshold
0 << 7 | // MCDI Enable, use motion compensated deinterlace algorithm
0 << 6 | // progressive DN
0 << 4 | // reserved
0 << 3 | // DN/DI Top First
0 ); // reserved
 
*p_table ++ = ( 0 << 29 | // reserved . W8
0 << 23 | // dnmh_history_init[5:0]
10 << 19 | // neighborPixel th
0 << 18 | // reserved
0 << 16 | // FMD for 2nd field of previous frame
25 << 10 | // MC pixel consistency th
0 << 8 | // FMD for 1st field for current frame
10 << 4 | // SAD THB
5 ); // SAD THA
 
*p_table ++ = ( 0 << 24 | // reserved
0 << 16 | // chr_dnmh_stad_th
0 << 13 | // reserved
0 << 12 | // chrome denoise enable
0 << 6 | // chr temp diff th
0 ); // chr temp diff low
 
}
 
void hsw_veb_iecp_std_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int *p_table = proc_ctx->iecp_state_table.ptr + 0 ;
/*
VAProcFilterParameterBuffer * std_param =
(VAProcFilterParameterBuffer *) proc_ctx->filter_std;
*/
if(!(proc_ctx->filters_mask & VPP_IECP_STD_STE)){
memset(p_table, 0, 29 * 4);
}else{
*p_table ++ = 0x9a6e39f0;
*p_table ++ = 0x400c0000;
*p_table ++ = 0x00001180;
*p_table ++ = 0xfe2f2e00;
*p_table ++ = 0x000000ff;
 
*p_table ++ = 0x00140000;
*p_table ++ = 0xd82e0000;
*p_table ++ = 0x8285ecec;
*p_table ++ = 0x00008282;
*p_table ++ = 0x00000000;
 
*p_table ++ = 0x02117000;
*p_table ++ = 0xa38fec96;
*p_table ++ = 0x0000c8c8;
*p_table ++ = 0x00000000;
*p_table ++ = 0x01478000;
*p_table ++ = 0x0007c306;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x1c1bd000;
*p_table ++ = 0x00000000;
 
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x0007cf80;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
 
*p_table ++ = 0x1c080000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
}
}
 
void hsw_veb_iecp_ace_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 116);
 
if(!(proc_ctx->filters_mask & VPP_IECP_ACE)){
memset(p_table, 0, 13 * 4);
}else{
*p_table ++ = 0x00000068;
*p_table ++ = 0x4c382410;
*p_table ++ = 0x9c887460;
*p_table ++ = 0xebd8c4b0;
*p_table ++ = 0x604c3824;
 
*p_table ++ = 0xb09c8874;
*p_table ++ = 0x0000d8c4;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
 
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
}
}
 
void hsw_veb_iecp_tcc_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 168);
/*
VAProcFilterParameterBuffer * tcc_param =
(VAProcFilterParameterBuffer *) proc_ctx->filter_iecp_tcc;
*/
if(!(proc_ctx->filters_mask & VPP_IECP_TCC)){
memset(p_table, 0, 11 * 4);
}else{
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x1e34cc91;
*p_table ++ = 0x3e3cce91;
*p_table ++ = 0x02e80195;
 
*p_table ++ = 0x0197046b;
*p_table ++ = 0x01790174;
*p_table ++ = 0x00000000;
*p_table ++ = 0x00000000;
*p_table ++ = 0x03030000;
 
*p_table ++ = 0x009201c0;
}
}
 
void hsw_veb_iecp_pro_amp_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int contrast = 0x80; //default
int brightness = 0x00; //default
int cos_c_s = 256 ; //default
int sin_c_s = 0; //default
unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 212);
 
if(!(proc_ctx->filters_mask & VPP_IECP_PRO_AMP)){
memset(p_table, 0, 2 * 4);
}else {
float tmp_value = 0.0;
float src_saturation = 1.0;
float src_hue = 0.0;
float src_contrast = 1.0;
/*
float src_brightness = 0.0;
 
VAProcFilterParameterBufferColorBalance * amp_param =
(VAProcFilterParameterBufferColorBalance *) proc_ctx->filter_iecp_amp;
VAProcColorBalanceType attrib = amp_param->attrib;
 
if(attrib == VAProcColorBalanceHue) {
src_hue = amp_param->value; //(-180.0, 180.0)
}else if(attrib == VAProcColorBalanceSaturation) {
src_saturation = amp_param->value; //(0.0, 10.0)
}else if(attrib == VAProcColorBalanceBrightness) {
src_brightness = amp_param->value; // (-100.0, 100.0)
brightness = format_convert(src_brightness, 7, 4, 1);
}else if(attrib == VAProcColorBalanceContrast) {
src_contrast = amp_param->value; // (0.0, 10.0)
contrast = format_convert(src_contrast, 4, 7, 0);
}
*/
tmp_value = cos(src_hue/180*PI) * src_contrast * src_saturation;
cos_c_s = format_convert(tmp_value, 7, 8, 1);
tmp_value = sin(src_hue/180*PI) * src_contrast * src_saturation;
sin_c_s = format_convert(tmp_value, 7, 8, 1);
*p_table ++ = ( 0 << 28 | //reserved
contrast << 17 | //contrast value (U4.7 format)
0 << 13 | //reserved
brightness << 1| // S7.4 format
1);
 
*p_table ++ = ( cos_c_s << 16 | // cos(h) * contrast * saturation
sin_c_s); // sin(h) * contrast * saturation
}
}
 
 
void hsw_veb_iecp_csc_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 220);
float tran_coef[9] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0};
float v_coef[3] = {0.0, 0.0, 0.0};
float u_coef[3] = {0.0, 0.0, 0.0};
int is_transform_enabled = 0;
 
if(!(proc_ctx->filters_mask & VPP_IECP_CSC)){
memset(p_table, 0, 8 * 4);
return;
}
/*
VAProcColorStandardType in_color_std = proc_ctx->pipeline_param->surface_color_standard;
VAProcColorStandardType out_color_std = proc_ctx->pipeline_param->output_color_standard;
assert(in_color_std == out_color_std);
*/
if(proc_ctx->fourcc_input == VA_FOURCC('R','G','B','A') &&
(proc_ctx->fourcc_output == VA_FOURCC('N','V','1','2') ||
proc_ctx->fourcc_output == VA_FOURCC('Y','V','1','2') ||
proc_ctx->fourcc_output == VA_FOURCC('Y','V','Y','2') ||
proc_ctx->fourcc_output == VA_FOURCC('A','Y','U','V'))) {
 
tran_coef[0] = 0.257;
tran_coef[1] = 0.504;
tran_coef[2] = 0.098;
tran_coef[3] = -0.148;
tran_coef[4] = -0.291;
tran_coef[5] = 0.439;
tran_coef[6] = 0.439;
tran_coef[7] = -0.368;
tran_coef[8] = -0.071;
 
u_coef[0] = 16 * 4;
u_coef[1] = 128 * 4;
u_coef[2] = 128 * 4;
is_transform_enabled = 1;
}else if((proc_ctx->fourcc_input == VA_FOURCC('N','V','1','2') ||
proc_ctx->fourcc_input == VA_FOURCC('Y','V','1','2') ||
proc_ctx->fourcc_input == VA_FOURCC('Y','U','Y','2') ||
proc_ctx->fourcc_input == VA_FOURCC('A','Y','U','V'))&&
proc_ctx->fourcc_output == VA_FOURCC('R','G','B','A')) {
 
tran_coef[0] = 1.164;
tran_coef[1] = 0.000;
tran_coef[2] = 1.569;
tran_coef[3] = 1.164;
tran_coef[4] = -0.813;
tran_coef[5] = -0.392;
tran_coef[6] = 1.164;
tran_coef[7] = 2.017;
tran_coef[8] = 0.000;
 
v_coef[0] = -16 * 4;
v_coef[1] = -128 * 4;
v_coef[2] = -128 * 4;
 
is_transform_enabled = 1;
}else if(proc_ctx->fourcc_input != proc_ctx->fourcc_output){
//enable when input and output format are different.
is_transform_enabled = 1;
}
 
if(is_transform_enabled == 0){
memset(p_table, 0, 8 * 4);
}else{
*p_table ++ = ( 0 << 29 | //reserved
format_convert(tran_coef[1], 2, 10, 1) << 16 | //c1, s2.10 format
format_convert(tran_coef[0], 2, 10, 1) << 3 | //c0, s2.10 format
0 << 2 | //reserved
0 << 1 | // yuv_channel swap
is_transform_enabled);
 
*p_table ++ = ( 0 << 26 | //reserved
format_convert(tran_coef[3], 2, 10, 1) << 13 |
format_convert(tran_coef[2], 2, 10, 1));
*p_table ++ = ( 0 << 26 | //reserved
format_convert(tran_coef[5], 2, 10, 1) << 13 |
format_convert(tran_coef[4], 2, 10, 1));
 
*p_table ++ = ( 0 << 26 | //reserved
format_convert(tran_coef[7], 2, 10, 1) << 13 |
format_convert(tran_coef[6], 2, 10, 1));
 
*p_table ++ = ( 0 << 13 | //reserved
format_convert(tran_coef[8], 2, 10, 1));
 
*p_table ++ = ( 0 << 22 | //reserved
format_convert(u_coef[0], 10, 0, 1) << 11 |
format_convert(v_coef[0], 10, 0, 1));
 
*p_table ++ = ( 0 << 22 | //reserved
format_convert(u_coef[1], 10, 0, 1) << 11 |
format_convert(v_coef[1], 10, 0, 1));
 
*p_table ++ = ( 0 << 22 | //reserved
format_convert(u_coef[2], 10, 0, 1) << 11 |
format_convert(v_coef[2], 10, 0, 1));
}
}
 
void hsw_veb_iecp_aoi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 252);
/*
VAProcFilterParameterBuffer * tcc_param =
(VAProcFilterParameterBuffer *) proc_ctx->filter_iecp_tcc;
*/
if(!(proc_ctx->filters_mask & VPP_IECP_AOI)){
memset(p_table, 0, 3 * 4);
}else{
*p_table ++ = 0x00000000;
*p_table ++ = 0x00030000;
*p_table ++ = 0x00030000;
}
}
 
void hsw_veb_state_table_setup(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
if(proc_ctx->filters_mask & 0x000000ff) {
dri_bo *dndi_bo = proc_ctx->dndi_state_table.bo;
dri_bo_map(dndi_bo, 1);
proc_ctx->dndi_state_table.ptr = dndi_bo->virtual;
 
hsw_veb_dndi_table(ctx, proc_ctx);
 
dri_bo_unmap(dndi_bo);
}
 
if(proc_ctx->filters_mask & 0x0000ff00 ||
proc_ctx->fourcc_input != proc_ctx->fourcc_output) {
dri_bo *iecp_bo = proc_ctx->iecp_state_table.bo;
dri_bo_map(iecp_bo, 1);
proc_ctx->iecp_state_table.ptr = iecp_bo->virtual;
 
hsw_veb_iecp_std_table(ctx, proc_ctx);
hsw_veb_iecp_ace_table(ctx, proc_ctx);
hsw_veb_iecp_tcc_table(ctx, proc_ctx);
hsw_veb_iecp_pro_amp_table(ctx, proc_ctx);
hsw_veb_iecp_csc_table(ctx, proc_ctx);
hsw_veb_iecp_aoi_table(ctx, proc_ctx);
dri_bo_unmap(iecp_bo);
}
}
 
void hsw_veb_state_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
struct intel_batchbuffer *batch = proc_ctx->batch;
unsigned int is_dn_enabled = (proc_ctx->filters_mask & 0x01)? 1: 0;
unsigned int is_di_enabled = (proc_ctx->filters_mask & 0x02)? 1: 0;
unsigned int is_iecp_enabled = (proc_ctx->filters_mask & 0xff00)?1:0;
 
BEGIN_VEB_BATCH(batch, 6);
OUT_VEB_BATCH(batch, VEB_STATE | (6 - 2));
OUT_VEB_BATCH(batch,
0 << 26 | // state surface control bits
0 << 11 | // reserved.
0 << 10 | // pipe sync disable
2 << 8 | // DI output frame
0 << 7 | // 444->422 downsample method
0 << 6 | // 422->420 downsample method
!!(proc_ctx->is_first_frame && (is_di_enabled || is_dn_enabled)) << 5 | // DN/DI first frame
is_di_enabled << 4 | // DI enable
is_dn_enabled << 3 | // DN enable
is_iecp_enabled << 2 | // global IECP enabled
0 << 1 | // ColorGamutCompressionEnable
0 ) ; // ColorGamutExpansionEnable.
 
OUT_RELOC(batch,
proc_ctx->dndi_state_table.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
OUT_RELOC(batch,
proc_ctx->iecp_state_table.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
OUT_RELOC(batch,
proc_ctx->gamut_state_table.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
OUT_RELOC(batch,
proc_ctx->vertex_state_table.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
 
ADVANCE_VEB_BATCH(batch);
}
 
void hsw_veb_surface_state(VADriverContextP ctx, struct intel_vebox_context *proc_ctx, unsigned int is_output)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = proc_ctx->batch;
unsigned int u_offset_y = 0, v_offset_y = 0;
unsigned int is_uv_interleaved = 0, tiling = 0, swizzle = 0;
unsigned int surface_format = PLANAR_420_8;
struct object_surface* obj_surf = NULL;
unsigned int surface_pitch = 0;
unsigned int half_pitch_chroma = 0;
 
if(is_output){
obj_surf = SURFACE(proc_ctx->frame_store[FRAME_OUT_CURRENT].surface_id);
}else {
obj_surf = SURFACE(proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id);
}
 
if (obj_surf->fourcc == VA_FOURCC_NV12) {
surface_format = PLANAR_420_8;
surface_pitch = obj_surf->width;
printf("NV12, is_output=%d, width = %d, pitch is = %d\n",is_output, obj_surf->orig_width, obj_surf->width);
is_uv_interleaved = 1;
half_pitch_chroma = 0;
} else if (obj_surf->fourcc == VA_FOURCC_YUY2) {
surface_format = YCRCB_NORMAL;
surface_pitch = obj_surf->width * 2;
is_uv_interleaved = 0;
half_pitch_chroma = 0;
} else if (obj_surf->fourcc == VA_FOURCC_AYUV) {
surface_format = PACKED_444A_8;
surface_pitch = obj_surf->width * 4;
is_uv_interleaved = 0;
half_pitch_chroma = 0;
} else if (obj_surf->fourcc == VA_FOURCC_RGBA) {
surface_format = R8G8B8A8_UNORM_SRGB;
surface_pitch = obj_surf->width * 4;
is_uv_interleaved = 0;
half_pitch_chroma = 0;
}
 
u_offset_y = obj_surf->y_cb_offset;
v_offset_y = obj_surf->y_cr_offset;
dri_bo_get_tiling(obj_surf->bo, &tiling, &swizzle);
 
BEGIN_VEB_BATCH(batch, 6);
OUT_VEB_BATCH(batch, VEB_SURFACE_STATE | (6 - 2));
OUT_VEB_BATCH(batch,
0 << 1 | // reserved
is_output); // surface indentification.
 
OUT_VEB_BATCH(batch,
(proc_ctx->pic_height - 1) << 18 | // height . w3
(proc_ctx->pic_width ) << 4 | // width
0); // reserve
 
OUT_VEB_BATCH(batch,
surface_format << 28 | // surface format, YCbCr420. w4
is_uv_interleaved << 27 | // interleave chrome , two seperate palar
0 << 20 | // reserved
(surface_pitch - 1) << 3 | // surface pitch, 64 align
half_pitch_chroma << 2 | // half pitch for chrome
!!tiling << 1 | // tiled surface, linear surface used
(tiling == I915_TILING_Y)); // tiled walk, ignored when liner surface
 
OUT_VEB_BATCH(batch,
0 << 29 | // reserved . w5
0 << 16 | // X offset for V(Cb)
0 << 15 | // reserved
u_offset_y); // Y offset for V(Cb)
 
OUT_VEB_BATCH(batch,
0 << 29 | // reserved . w6
0 << 16 | // X offset for V(Cr)
0 << 15 | // reserved
v_offset_y ); // Y offset for V(Cr)
 
ADVANCE_VEB_BATCH(batch);
}
 
void hsw_veb_dndi_iecp_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
{
struct intel_batchbuffer *batch = proc_ctx->batch;
unsigned char frame_ctrl_bits = 0;
unsigned int startingX = 0;
unsigned int endingX = proc_ctx->pic_width;
 
BEGIN_VEB_BATCH(batch, 10);
OUT_VEB_BATCH(batch, VEB_DNDI_IECP_STATE | (10 - 2));
OUT_VEB_BATCH(batch,
startingX << 16 |
endingX);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_IN_CURRENT].bo,
I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_IN_PREVIOUS].bo,
I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_IN_STMM].bo,
I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_OUT_STMM].bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_OUT_CURRENT].bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_OUT_PREVIOUS].bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
OUT_RELOC(batch,
proc_ctx->frame_store[FRAME_OUT_STATISTIC].bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
 
ADVANCE_VEB_BATCH(batch);
}
 
 
void hsw_veb_surface_reference(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx)
{
struct object_surface * obj_surf;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
/* update the input surface */
obj_surf = SURFACE(proc_ctx->surface_input);
proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id = proc_ctx->surface_input;
proc_ctx->frame_store[FRAME_IN_CURRENT].bo = obj_surf->bo;
proc_ctx->frame_store[FRAME_IN_CURRENT].is_internal_surface = 0;
dri_bo_reference(proc_ctx->frame_store[FRAME_IN_CURRENT].bo);
 
/* update the output surface */
if(proc_ctx->filters_mask == VPP_DNDI_DN){
obj_surf = SURFACE(proc_ctx->surface_output);
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].surface_id = proc_ctx->surface_output;
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].bo = obj_surf->bo;
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].is_internal_surface = 0;
dri_bo_reference(proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].bo);
}else {
obj_surf = SURFACE(proc_ctx->surface_output);
proc_ctx->frame_store[FRAME_OUT_CURRENT].surface_id = proc_ctx->surface_output;
proc_ctx->frame_store[FRAME_OUT_CURRENT].bo = obj_surf->bo;
proc_ctx->frame_store[FRAME_OUT_CURRENT].is_internal_surface = 0;
dri_bo_reference(proc_ctx->frame_store[FRAME_OUT_CURRENT].bo);
}
}
 
void hsw_veb_surface_unreference(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx)
{
/* unreference the input surface */
dri_bo_unreference(proc_ctx->frame_store[FRAME_IN_CURRENT].bo);
proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id = -1;
proc_ctx->frame_store[FRAME_IN_CURRENT].bo = NULL;
proc_ctx->frame_store[FRAME_IN_CURRENT].is_internal_surface = 0;
dri_bo_unreference(proc_ctx->frame_store[FRAME_IN_CURRENT].bo);
 
/* unreference the shared output surface */
if(proc_ctx->filters_mask == VPP_DNDI_DN){
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].surface_id = -1;
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].bo = NULL;
proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].is_internal_surface = 0;
dri_bo_unreference(proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].bo);
}else{
proc_ctx->frame_store[FRAME_OUT_CURRENT].surface_id = -1;
proc_ctx->frame_store[FRAME_OUT_CURRENT].bo = NULL;
proc_ctx->frame_store[FRAME_OUT_CURRENT].is_internal_surface = 0;
dri_bo_unreference(proc_ctx->frame_store[FRAME_OUT_CURRENT].bo);
}
}
 
void hsw_veb_resource_prepare(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx)
{
VAStatus va_status;
dri_bo *bo;
struct i965_driver_data *i965 = i965_driver_data(ctx);
unsigned int input_fourcc, output_fourcc;
unsigned int input_sampling, output_sampling;
unsigned int input_tiling, output_tiling;
unsigned int i, swizzle;
 
struct object_surface* obj_surf_in = SURFACE(proc_ctx->surface_input);
struct object_surface* obj_surf_out = SURFACE(proc_ctx->surface_output);
assert(obj_surf_in->orig_width == obj_surf_out->orig_width &&
obj_surf_in->orig_height == obj_surf_out->orig_height);
 
proc_ctx->pic_width = obj_surf_in->orig_width;
proc_ctx->pic_height = obj_surf_in->orig_height;
/* record vebox pipeline input surface format information*/
if(obj_surf_in->bo == NULL){
input_fourcc = VA_FOURCC('N','V','1','2');
input_sampling = SUBSAMPLE_YUV420;
input_tiling = 1;
i965_check_alloc_surface_bo(ctx, obj_surf_in, input_tiling, input_fourcc, input_sampling);
} else {
input_fourcc = obj_surf_in->fourcc;
input_sampling = obj_surf_in->subsampling;
dri_bo_get_tiling(obj_surf_in->bo, &input_tiling, &swizzle);
input_tiling = !!input_tiling;
}
 
/* record vebox pipeline output surface format information */
if(obj_surf_out->bo == NULL){
output_fourcc = VA_FOURCC('N','V','1','2');
output_sampling = SUBSAMPLE_YUV420;
output_tiling = 1;
i965_check_alloc_surface_bo(ctx, obj_surf_out, output_tiling, output_fourcc, output_sampling);
}else {
output_fourcc = obj_surf_out->fourcc;
output_sampling = obj_surf_out->subsampling;
dri_bo_get_tiling(obj_surf_out->bo, &output_tiling, &swizzle);
output_tiling = !!output_tiling;
}
assert(input_fourcc == VA_FOURCC_NV12 ||
input_fourcc == VA_FOURCC_YUY2 ||
input_fourcc == VA_FOURCC_AYUV ||
input_fourcc == VA_FOURCC_RGBA);
assert(output_fourcc == VA_FOURCC_NV12 ||
output_fourcc == VA_FOURCC_YUY2 ||
output_fourcc == VA_FOURCC_AYUV ||
output_fourcc == VA_FOURCC_RGBA);
 
proc_ctx->fourcc_input = input_fourcc;
proc_ctx->fourcc_output = output_fourcc;
 
/* allocate vebox pipeline surfaces */
VASurfaceID surfaces[FRAME_STORE_SUM];
va_status = i965_CreateSurfaces(ctx,
proc_ctx ->pic_width,
proc_ctx ->pic_height,
VA_RT_FORMAT_YUV420,
FRAME_STORE_SUM,
surfaces);
assert(va_status == VA_STATUS_SUCCESS);
 
for(i = FRAME_IN_CURRENT; i < FRAME_STORE_SUM; i ++) {
proc_ctx->frame_store[i].surface_id = surfaces[i];
struct object_surface* obj_surf = SURFACE(surfaces[i]);
if( i == FRAME_IN_CURRENT) {
proc_ctx->frame_store[i].surface_id = proc_ctx->surface_input;
proc_ctx->frame_store[i].bo = (SURFACE(proc_ctx->surface_input))->bo;
proc_ctx->frame_store[i].is_internal_surface = 0;
continue;
}else if( i == FRAME_IN_PREVIOUS || i == FRAME_OUT_CURRENT_DN) {
i965_check_alloc_surface_bo(ctx, obj_surf, input_tiling, input_fourcc, input_sampling);
} else if( i == FRAME_IN_STMM || i == FRAME_OUT_STMM){
i965_check_alloc_surface_bo(ctx, obj_surf, 1, input_fourcc, input_sampling);
} else if( i >= FRAME_OUT_CURRENT){
i965_check_alloc_surface_bo(ctx, obj_surf, output_tiling, output_fourcc, output_sampling);
}
proc_ctx->frame_store[i].bo = obj_surf->bo;
dri_bo_reference(proc_ctx->frame_store[i].bo);
proc_ctx->frame_store[i].is_internal_surface = 1;
}
 
/* alloc dndi state table */
dri_bo_unreference(proc_ctx->dndi_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vebox: dndi state Buffer",
0x1000, 0x1000);
proc_ctx->dndi_state_table.bo = bo;
dri_bo_reference(proc_ctx->dndi_state_table.bo);
/* alloc iecp state table */
dri_bo_unreference(proc_ctx->iecp_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vebox: iecp state Buffer",
0x1000, 0x1000);
proc_ctx->iecp_state_table.bo = bo;
dri_bo_reference(proc_ctx->iecp_state_table.bo);
 
/* alloc gamut state table */
dri_bo_unreference(proc_ctx->gamut_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vebox: gamut state Buffer",
0x1000, 0x1000);
proc_ctx->gamut_state_table.bo = bo;
dri_bo_reference(proc_ctx->gamut_state_table.bo);
 
/* alloc vertex state table */
dri_bo_unreference(proc_ctx->vertex_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vertex: iecp state Buffer",
0x1000, 0x1000);
proc_ctx->vertex_state_table.bo = bo;
dri_bo_reference(proc_ctx->vertex_state_table.bo);
 
}
 
VAStatus gen75_vebox_process_picture(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx)
{
VAStatus va_status = VA_STATUS_SUCCESS;
if(proc_ctx->is_first_frame)
hsw_veb_resource_prepare(ctx, proc_ctx);
hsw_veb_surface_reference(ctx, proc_ctx);
 
intel_batchbuffer_start_atomic_veb(proc_ctx->batch, 0x1000);
intel_batchbuffer_emit_mi_flush(proc_ctx->batch);
hsw_veb_surface_state(ctx, proc_ctx, INPUT_SURFACE);
hsw_veb_surface_state(ctx, proc_ctx, OUTPUT_SURFACE);
hsw_veb_state_table_setup(ctx, proc_ctx);
 
hsw_veb_state_command(ctx, proc_ctx);
hsw_veb_dndi_iecp_command(ctx, proc_ctx);
intel_batchbuffer_end_atomic(proc_ctx->batch);
intel_batchbuffer_flush(proc_ctx->batch);
 
hsw_veb_surface_unreference(ctx, proc_ctx);
 
if(proc_ctx->is_first_frame)
proc_ctx->is_first_frame = 0;
return va_status;
}
 
void gen75_vebox_context_destroy(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx)
{
int i;
/* release vebox pipeline surface */
for(i = 0; i < FRAME_STORE_SUM; i ++) {
if(proc_ctx->frame_store[i].is_internal_surface){
dri_bo_unreference(proc_ctx->frame_store[i].bo);
}
proc_ctx->frame_store[i].surface_id = -1;
proc_ctx->frame_store[i].bo = NULL;
}
/* release dndi state table */
dri_bo_unreference(proc_ctx->dndi_state_table.bo);
proc_ctx->dndi_state_table.bo = NULL;
 
/* release iecp state table */
dri_bo_unreference(proc_ctx->iecp_state_table.bo);
proc_ctx->dndi_state_table.bo = NULL;
 
intel_batchbuffer_free(proc_ctx->batch);
 
free(proc_ctx);
}
 
struct intel_vebox_context * gen75_vebox_context_init(VADriverContextP ctx)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct intel_vebox_context *proc_context = calloc(1, sizeof(struct intel_vebox_context));
 
proc_context->batch = intel_batchbuffer_new(intel, I915_EXEC_VEBOX, 0);
memset(proc_context->frame_store, 0, sizeof(VEBFrameStore)*FRAME_STORE_SUM);
proc_context->filters_mask = 0;
proc_context->is_first_frame = 1;
proc_context->filters_mask = 0;
 
return proc_context;
}
 
/drivers/video/i965/gen75_vpp_vebox.h
0,0 → 1,134
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Li Xiaowei <xiaowei.a.li@intel.com>
*
*/
 
#ifndef _GEN75_VPP_VEBOX_H
#define _GEN75_VPP_VEBOX_H
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
#include "i965_drv_video.h"
 
#define INPUT_SURFACE 0
#define OUTPUT_SURFACE 1
 
#define VPP_DNDI_DN 0x00000001
#define VPP_DNDI_DI 0x00000002
#define VPP_IECP_STD_STE 0x00000100
#define VPP_IECP_ACE 0x00000200
#define VPP_IECP_TCC 0x00000400
#define VPP_IECP_PRO_AMP 0x00000800
#define VPP_IECP_CSC 0x00001000
#define VPP_IECP_AOI 0x00002000
#define MAX_FILTER_SUM 8
 
enum {
FRAME_IN_CURRENT = 0,
FRAME_IN_PREVIOUS,
FRAME_IN_STMM,
FRAME_OUT_STMM,
FRAME_OUT_CURRENT_DN,
FRAME_OUT_CURRENT,
FRAME_OUT_PREVIOUS,
FRAME_OUT_STATISTIC,
FRAME_STORE_SUM,
};
 
enum SURFACE_FORMAT{
YCRCB_NORMAL = 0,
YCRCB_SWAPUVY,
YCRCB_SWAPUV,
YCRCB_SWAPY,
PLANAR_420_8, //NV12
PACKED_444A_8,
PACKED_422_16,
R10G10B10A2_UNORM_SRGB,
R8G8B8A8_UNORM_SRGB,
PACKED_444_16,
PLANAR_422_16,
Y8_UNORM,
PLANAR_420_16,
R16G16B16A16,
SURFACE_FORMAT_SUM
};
 
typedef struct veb_frame_store {
VASurfaceID surface_id;
dri_bo *bo;
unsigned char is_internal_surface;
} VEBFrameStore;
 
typedef struct veb_buffer {
dri_bo *bo;
void * ptr;
unsigned char valid;
} VEBBuffer;
 
struct intel_vebox_context
{
struct intel_batchbuffer *batch;
 
VASurfaceID surface_input;
VASurfaceID surface_output;
unsigned int fourcc_input;
unsigned int fourcc_output;
unsigned int pic_width;
unsigned int pic_height;
VEBFrameStore frame_store[FRAME_STORE_SUM];
 
VEBBuffer dndi_state_table;
VEBBuffer iecp_state_table;
VEBBuffer gamut_state_table;
VEBBuffer vertex_state_table;
 
unsigned int filters_mask;
unsigned char is_first_frame;
 
/*
VAProcPipelineParameterBuffer * pipeline_param;
void * filter_dn;
void * filter_di;
void * filter_iecp_std;
void * filter_iecp_ace;
void * filter_iecp_tcc;
void * filter_iecp_amp;
void * filter_iecp_csc;
*/
};
 
VAStatus gen75_vebox_process_picture(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx);
 
void gen75_vebox_context_destroy(VADriverContextP ctx,
struct intel_vebox_context *proc_ctx);
 
struct intel_vebox_context * gen75_vebox_context_init(VADriverContextP ctx);
 
#endif
/drivers/video/i965/gen7_mfd.c
0,0 → 1,2821
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef HAVE_GEN_AVC_SURFACE
#define HAVE_GEN_AVC_SURFACE 1
#endif
 
#include "sysdeps.h"
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_decoder_utils.h"
 
#include "gen7_mfd.h"
 
static const uint32_t zigzag_direct[64] = {
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
 
static void
gen7_mfd_avc_frame_store_index(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i, j;
 
assert(ARRAY_ELEMS(gen7_mfd_context->reference_surface) == ARRAY_ELEMS(pic_param->ReferenceFrames));
 
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
int found = 0;
 
if (gen7_mfd_context->reference_surface[i].surface_id == VA_INVALID_ID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[j];
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (gen7_mfd_context->reference_surface[i].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
obj_surface->flags &= ~SURFACE_REFERENCED;
 
if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) {
dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
}
 
if (obj_surface->free_private_data)
obj_surface->free_private_data(&obj_surface->private_data);
 
gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen7_mfd_context->reference_surface[i].frame_store_id = -1;
}
}
 
for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[i];
int found = 0;
 
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
if (gen7_mfd_context->reference_surface[j].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
int frame_idx;
struct object_surface *obj_surface = SURFACE(ref_pic->picture_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
for (frame_idx = 0; frame_idx < ARRAY_ELEMS(gen7_mfd_context->reference_surface); frame_idx++) {
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID)
continue;
 
if (gen7_mfd_context->reference_surface[j].frame_store_id == frame_idx)
break;
}
 
if (j == ARRAY_ELEMS(gen7_mfd_context->reference_surface))
break;
}
 
assert(frame_idx < ARRAY_ELEMS(gen7_mfd_context->reference_surface));
 
for (j = 0; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id == VA_INVALID_ID) {
gen7_mfd_context->reference_surface[j].surface_id = ref_pic->picture_id;
gen7_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
/* sort */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface) - 1; i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
gen7_mfd_context->reference_surface[i].frame_store_id == i)
continue;
 
for (j = i + 1; j < ARRAY_ELEMS(gen7_mfd_context->reference_surface); j++) {
if (gen7_mfd_context->reference_surface[j].surface_id != VA_INVALID_ID &&
gen7_mfd_context->reference_surface[j].frame_store_id == i) {
VASurfaceID id = gen7_mfd_context->reference_surface[i].surface_id;
int frame_idx = gen7_mfd_context->reference_surface[i].frame_store_id;
 
gen7_mfd_context->reference_surface[i].surface_id = gen7_mfd_context->reference_surface[j].surface_id;
gen7_mfd_context->reference_surface[i].frame_store_id = gen7_mfd_context->reference_surface[j].frame_store_id;
gen7_mfd_context->reference_surface[j].surface_id = id;
gen7_mfd_context->reference_surface[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
static void
gen7_mfd_init_avc_surface(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
GenAvcSurface *gen7_avc_surface = obj_surface->private_data;
int width_in_mbs, height_in_mbs;
 
obj_surface->free_private_data = gen_free_avc_surface;
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
if (!gen7_avc_surface) {
gen7_avc_surface = calloc(sizeof(GenAvcSurface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen7_avc_surface;
}
 
gen7_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
!pic_param->seq_fields.bits.direct_8x8_inference_flag);
 
if (gen7_avc_surface->dmv_top == NULL) {
gen7_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * (height_in_mbs + 1) * 64,
0x1000);
assert(gen7_avc_surface->dmv_top);
}
 
if (gen7_avc_surface->dmv_bottom_flag &&
gen7_avc_surface->dmv_bottom == NULL) {
gen7_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * (height_in_mbs + 1) * 64,
0x1000);
assert(gen7_avc_surface->dmv_bottom);
}
}
 
static void
gen7_mfd_pipe_mode_select(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
assert(standard_select == MFX_FORMAT_MPEG2 ||
standard_select == MFX_FORMAT_AVC ||
standard_select == MFX_FORMAT_VC1 ||
standard_select == MFX_FORMAT_JPEG);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Currently only support long format */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(gen7_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
(gen7_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(MFX_CODEC_DECODE << 4) | /* decoding mode */
(standard_select << 0));
OUT_BCS_BATCH(batch,
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
OUT_BCS_BATCH(batch, 0); /* reserved */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_surface_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(decode_state->current_render_target);
unsigned int y_cb_offset;
unsigned int y_cr_offset;
 
assert(obj_surface);
 
y_cb_offset = obj_surface->y_cb_offset;
y_cr_offset = obj_surface->y_cr_offset;
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((obj_surface->orig_height - 1) << 18) |
((obj_surface->orig_width - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
((standard_select != MFX_FORMAT_JPEG) << 27) | /* interleave chroma, set to 0 for JPEG */
(0 << 22) | /* surface object control state, ignored */
((obj_surface->width - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for U(Cb), must be 0 */
(y_cb_offset << 0)); /* Y offset for U(Cb) */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for V(Cr), must be 0 */
(y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_pipe_buf_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
BEGIN_BCS_BATCH(batch, 24);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
if (gen7_mfd_context->pre_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->post_deblocking_output.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
 
if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
/* DW 7..22 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
struct object_surface *obj_surface;
 
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface && obj_surface->bo);
 
OUT_BCS_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
} else {
OUT_BCS_BATCH(batch, 0);
}
}
 
OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
dri_bo *slice_data_bo,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
struct decode_state *decode_state,
int standard_select,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
 
if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (gen7_mfd_context->bitplane_read_buffer.valid)
OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_qm_state(VADriverContextP ctx,
int qm_type,
unsigned char *qm,
int qm_length,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int qm_buffer[16];
 
assert(qm_length <= 16 * 4);
memcpy(qm_buffer, qm, qm_length);
 
BEGIN_BCS_BATCH(batch, 18);
OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
OUT_BCS_BATCH(batch, qm_type << 0);
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_avc_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int img_struct;
int mbaff_frame_flag;
unsigned int width_in_mbs, height_in_mbs;
VAPictureParameterBufferH264 *pic_param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
 
if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
img_struct = 1;
else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
img_struct = 3;
else
img_struct = 0;
 
if ((img_struct & 0x1) == 0x1) {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
} else {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
}
 
if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
assert(pic_param->pic_fields.bits.field_pic_flag == 0);
} else {
assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
}
 
mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
 
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
/* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
width_in_mbs * height_in_mbs);
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
(0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
(0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
(pic_param->pic_fields.bits.weighted_pred_flag << 12) | /* differ from GEN6 */
(pic_param->pic_fields.bits.weighted_bipred_idc << 10) |
(img_struct << 8));
OUT_BCS_BATCH(batch,
(pic_param->seq_fields.bits.chroma_format_idc << 10) |
(pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
(pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
(pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
(pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
(pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
(mbaff_frame_flag << 1) |
(pic_param->pic_fields.bits.field_pic_flag << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_avc_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAIQMatrixBufferH264 *iq_matrix;
VAPictureParameterBufferH264 *pic_param;
 
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
else
iq_matrix = &gen7_mfd_context->iq_matrix.h264;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
gen7_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, &iq_matrix->ScalingList4x4[0][0], 3 * 16, gen7_mfd_context);
gen7_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, &iq_matrix->ScalingList4x4[3][0], 3 * 16, gen7_mfd_context);
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag) {
gen7_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, &iq_matrix->ScalingList8x8[0][0], 64, gen7_mfd_context);
gen7_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, &iq_matrix->ScalingList8x8[1][0], 64, gen7_mfd_context);
}
}
 
static void
gen7_mfd_avc_directmode_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
struct object_surface *obj_surface;
GenAvcSurface *gen7_avc_surface;
VAPictureH264 *va_pic;
int i, j;
 
BEGIN_BCS_BATCH(batch, 69);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
obj_surface = SURFACE(gen7_mfd_context->reference_surface[i].surface_id);
assert(obj_surface);
gen7_avc_surface = obj_surface->private_data;
 
if (gen7_avc_surface == NULL) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
 
if (gen7_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
/* the current decoding frame/field */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface && obj_surface->bo && obj_surface->private_data);
gen7_avc_surface = obj_surface->private_data;
 
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
if (gen7_avc_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
/* POC List */
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == gen7_mfd_context->reference_surface[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_avc_slice_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
VASliceParameterBufferH264 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
int num_ref_idx_l0, num_ref_idx_l1;
int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
int slice_type;
 
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI) {
slice_type = SLICE_TYPE_I;
} else if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) {
slice_type = SLICE_TYPE_P;
} else {
assert(slice_param->slice_type == SLICE_TYPE_B);
slice_type = SLICE_TYPE_B;
}
 
if (slice_type == SLICE_TYPE_I) {
assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = 0;
num_ref_idx_l1 = 0;
} else if (slice_type == SLICE_TYPE_P) {
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = 0;
} else {
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
}
 
first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
slice_hor_pos = first_mb_in_slice % width_in_mbs;
slice_ver_pos = first_mb_in_slice / width_in_mbs;
 
if (next_slice_param) {
first_mb_in_next_slice = next_slice_param->first_mb_in_slice << mbaff_picture;
next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
} else {
next_slice_hor_pos = 0;
next_slice_ver_pos = height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
}
 
BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, slice_type);
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(slice_param->chroma_log2_weight_denom << 8) |
(slice_param->luma_log2_weight_denom << 0));
OUT_BCS_BATCH(batch,
(slice_param->direct_spatial_mv_pred_flag << 29) |
(slice_param->disable_deblocking_filter_idc << 27) |
(slice_param->cabac_init_idc << 24) |
((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(next_slice_ver_pos << 16) |
(next_slice_hor_pos << 0));
OUT_BCS_BATCH(batch,
(next_slice_param == NULL) << 19); /* last slice flag */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static inline void
gen7_mfd_avc_ref_idx_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
gen6_send_avc_ref_idx_state(
gen7_mfd_context->base.batch,
slice_param,
gen7_mfd_context->reference_surface
);
}
 
static void
gen7_mfd_avc_weightoffset_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int i, j, num_weight_offset_table = 0;
short weightoffsets[32 * 6];
 
if ((slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) &&
(pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
num_weight_offset_table = 1;
}
if ((slice_param->slice_type == SLICE_TYPE_B) &&
(pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
num_weight_offset_table = 2;
}
 
for (i = 0; i < num_weight_offset_table; i++) {
BEGIN_BCS_BATCH(batch, 98);
OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
OUT_BCS_BATCH(batch, i);
 
if (i == 0) {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
}
} else {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
}
}
 
intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
gen7_mfd_avc_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int slice_data_bit_offset;
 
slice_data_bit_offset = avc_get_first_mb_bit_offset(
slice_data_bo,
slice_param,
pic_param->pic_fields.bits.entropy_coding_mode_flag
);
 
/* the input bitsteam format on GEN7 differs from GEN6 */
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch,
(slice_param->slice_data_size - slice_param->slice_data_offset));
OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
OUT_BCS_BATCH(batch,
(0 << 31) |
(0 << 14) |
(0 << 12) |
(0 << 10) |
(0 << 8));
OUT_BCS_BATCH(batch,
((slice_data_bit_offset >> 3) << 16) |
(1 << 7) |
(0 << 5) |
(0 << 4) |
((next_slice_param == NULL) << 3) | /* LastSlice Flag */
(slice_data_bit_offset & 0x7));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static inline void
gen7_mfd_avc_context_init(
VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context
)
{
/* Initialize flat scaling lists */
avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
}
 
static void
gen7_mfd_avc_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param;
VAPictureH264 *va_pic;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
int i, j, enable_avc_ildb = 0;
unsigned int width_in_mbs, height_in_mbs;
 
for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (slice_param->disable_deblocking_filter_idc != 1) {
enable_avc_ildb = 1;
break;
}
 
slice_param++;
}
}
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen7_mfd_avc_frame_store_index(ctx, pic_param, gen7_mfd_context);
width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
assert(height_in_mbs > 0 && height_in_mbs <= 256);
 
/* Current decoded picture */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
obj_surface->flags |= (pic_param->pic_fields.bits.reference_pic_flag ? SURFACE_REFERENCED : 0);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
gen7_mfd_init_avc_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 64 * 4,
0x1000);
assert(bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 64 * 2,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
width_in_mbs * 64 * 2,
0x1000);
assert(bo);
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen7_mfd_avc_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
gen7_mfd_avc_decode_init(ctx, decode_state, gen7_mfd_context);
 
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
gen7_mfd_avc_qm_state(ctx, decode_state, gen7_mfd_context);
gen7_mfd_avc_img_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen7_mfd_avc_directmode_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen7_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen7_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen7_mfd_context);
gen7_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
gen7_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static void
gen7_mfd_mpeg2_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferMPEG2 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *bo;
unsigned int width_in_mbs;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
 
mpeg2_set_reference_surfaces(
ctx,
gen7_mfd_context->reference_surface,
decode_state,
pic_param
);
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->post_deblocking_output.valid = 0;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static void
gen7_mfd_mpeg2_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
BEGIN_BCS_BATCH(batch, 13);
OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
OUT_BCS_BATCH(batch,
(pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
pic_param->picture_coding_extension.bits.picture_structure << 12 |
pic_param->picture_coding_extension.bits.top_field_first << 11 |
pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
pic_param->picture_coding_extension.bits.q_scale_type << 8 |
pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
pic_param->picture_coding_extension.bits.alternate_scan << 6);
OUT_BCS_BATCH(batch,
pic_param->picture_coding_type << 9);
OUT_BCS_BATCH(batch,
((ALIGN(pic_param->vertical_size, 16) / 16) - 1) << 16 |
((ALIGN(pic_param->horizontal_size, 16) / 16) - 1));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_mpeg2_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen7_mfd_context->iq_matrix.mpeg2;
int i, j;
 
/* Update internal QM state */
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
VAIQMatrixBufferMPEG2 * const iq_matrix =
(VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
 
if (gen_iq_matrix->load_intra_quantiser_matrix == -1 ||
iq_matrix->load_intra_quantiser_matrix) {
gen_iq_matrix->load_intra_quantiser_matrix =
iq_matrix->load_intra_quantiser_matrix;
if (iq_matrix->load_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->intra_quantiser_matrix[j];
}
}
 
if (gen_iq_matrix->load_non_intra_quantiser_matrix == -1 ||
iq_matrix->load_non_intra_quantiser_matrix) {
gen_iq_matrix->load_non_intra_quantiser_matrix =
iq_matrix->load_non_intra_quantiser_matrix;
if (iq_matrix->load_non_intra_quantiser_matrix) {
for (j = 0; j < 64; j++)
gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
iq_matrix->non_intra_quantiser_matrix[j];
}
}
}
 
/* Commit QM state to HW */
for (i = 0; i < 2; i++) {
unsigned char *qm = NULL;
int qm_type;
 
if (i == 0) {
if (gen_iq_matrix->load_intra_quantiser_matrix) {
qm = gen_iq_matrix->intra_quantiser_matrix;
qm_type = MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX;
}
} else {
if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
qm = gen_iq_matrix->non_intra_quantiser_matrix;
qm_type = MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX;
}
}
 
if (!qm)
continue;
 
gen7_mfd_qm_state(ctx, qm_type, qm, 64, gen7_mfd_context);
}
}
 
static void
gen7_mfd_mpeg2_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferMPEG2 *pic_param,
VASliceParameterBufferMPEG2 *slice_param,
VASliceParameterBufferMPEG2 *next_slice_param,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
 
if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
is_field_pic = 1;
is_field_pic_wa = is_field_pic &&
gen7_mfd_context->wa_mpeg2_slice_vertical_position > 0;
 
vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos0 = slice_param->slice_horizontal_position;
 
if (next_slice_param == NULL) {
vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
hpos1 = 0;
} else {
vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
hpos1 = next_slice_param->slice_horizontal_position;
}
 
mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
hpos0 << 24 |
vpos0 << 16 |
mb_count << 8 |
(next_slice_param == NULL) << 5 |
(next_slice_param == NULL) << 3 |
(slice_param->macroblock_offset & 0x7));
OUT_BCS_BATCH(batch,
slice_param->quantiser_scale_code << 24);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_mpeg2_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferMPEG2 *pic_param;
VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
gen7_mfd_mpeg2_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
gen7_mfd_mpeg2_pic_state(ctx, decode_state, gen7_mfd_context);
gen7_mfd_mpeg2_qm_state(ctx, decode_state, gen7_mfd_context);
 
if (gen7_mfd_context->wa_mpeg2_slice_vertical_position < 0)
gen7_mfd_context->wa_mpeg2_slice_vertical_position =
mpeg2_wa_slice_vertical_position(decode_state, pic_param);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen7_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
static const int va_to_gen7_vc1_pic_type[5] = {
GEN7_VC1_I_PICTURE,
GEN7_VC1_P_PICTURE,
GEN7_VC1_B_PICTURE,
GEN7_VC1_BI_PICTURE,
GEN7_VC1_P_PICTURE,
};
 
static const int va_to_gen7_vc1_mv[4] = {
1, /* 1-MV */
2, /* 1-MV half-pel */
3, /* 1-MV half-pef bilinear */
0, /* Mixed MV */
};
 
static const int b_picture_scale_factor[21] = {
128, 85, 170, 64, 192,
51, 102, 153, 204, 43,
215, 37, 74, 111, 148,
185, 222, 32, 96, 160,
224,
};
 
static const int va_to_gen7_vc1_condover[3] = {
0,
2,
3
};
 
static const int va_to_gen7_vc1_profile[4] = {
GEN7_VC1_SIMPLE_PROFILE,
GEN7_VC1_MAIN_PROFILE,
GEN7_VC1_RESERVED_PROFILE,
GEN7_VC1_ADVANCED_PROFILE
};
 
static void
gen7_mfd_free_vc1_surface(void **data)
{
struct gen7_vc1_surface *gen7_vc1_surface = *data;
 
if (!gen7_vc1_surface)
return;
 
dri_bo_unreference(gen7_vc1_surface->dmv);
free(gen7_vc1_surface);
*data = NULL;
}
 
static void
gen7_mfd_init_vc1_surface(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
struct object_surface *obj_surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen7_vc1_surface *gen7_vc1_surface = obj_surface->private_data;
int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
 
obj_surface->free_private_data = gen7_mfd_free_vc1_surface;
 
if (!gen7_vc1_surface) {
gen7_vc1_surface = calloc(sizeof(struct gen7_vc1_surface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = gen7_vc1_surface;
}
 
gen7_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
 
if (gen7_vc1_surface->dmv == NULL) {
gen7_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
width_in_mbs * height_in_mbs * 64,
0x1000);
}
}
 
static void
gen7_mfd_vc1_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int i;
dri_bo *bo;
int width_in_mbs;
int picture_type;
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
picture_type = pic_param->picture_fields.bits.picture_type;
/* reference picture */
obj_surface = SURFACE(pic_param->forward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen7_mfd_context->reference_surface[0].surface_id = pic_param->forward_reference_picture;
else
gen7_mfd_context->reference_surface[0].surface_id = VA_INVALID_ID;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->bo)
gen7_mfd_context->reference_surface[1].surface_id = pic_param->backward_reference_picture;
else
gen7_mfd_context->reference_surface[1].surface_id = pic_param->forward_reference_picture;
 
/* must do so !!! */
for (i = 2; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++)
gen7_mfd_context->reference_surface[i].surface_id = gen7_mfd_context->reference_surface[i % 2].surface_id;
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
gen7_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
width_in_mbs * 64,
0x1000);
assert(bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"deblocking filter row store",
width_in_mbs * 7 * 64,
0x1000);
assert(bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
width_in_mbs * 96,
0x1000);
assert(bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
 
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
if (gen7_mfd_context->bitplane_read_buffer.valid) {
int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
int src_w, src_h;
uint8_t *src = NULL, *dst = NULL;
 
assert(decode_state->bit_plane->buffer);
src = decode_state->bit_plane->buffer;
 
bo = dri_bo_alloc(i965->intel.bufmgr,
"VC-1 Bitplane",
bitplane_width * height_in_mbs,
0x1000);
assert(bo);
gen7_mfd_context->bitplane_read_buffer.bo = bo;
 
dri_bo_map(bo, True);
assert(bo->virtual);
dst = bo->virtual;
 
for (src_h = 0; src_h < height_in_mbs; src_h++) {
for(src_w = 0; src_w < width_in_mbs; src_w++) {
int src_index, dst_index;
int src_shift;
uint8_t src_value;
 
src_index = (src_h * width_in_mbs + src_w) / 2;
src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
src_value = ((src[src_index] >> src_shift) & 0xf);
 
if (picture_type == GEN7_VC1_SKIPPED_PICTURE){
src_value |= 0x2;
}
 
dst_index = src_w / 2;
dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
}
 
if (src_w & 1)
dst[src_w / 2] >>= 4;
 
dst += bitplane_width;
}
 
dri_bo_unmap(bo);
} else
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
}
 
static void
gen7_mfd_vc1_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
int unified_mv_mode;
int ref_field_pic_polarity = 0;
int scale_factor = 0;
int trans_ac_y = 0;
int dmv_surface_valid = 0;
int brfd = 0;
int fcm = 0;
int picture_type;
int profile;
int overlap;
int interpolation_mode = 0;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
profile = va_to_gen7_vc1_profile[pic_param->sequence_fields.bits.profile];
dquant = pic_param->pic_quantizer_fields.bits.dquant;
dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
 
if (dquant == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
} else if (dquant == 2) {
alt_pquant_config = 1;
alt_pquant_edge_mask = 0xf;
} else {
assert(dquant == 1);
if (dquantfrm == 0) {
alt_pquant_config = 0;
alt_pquant_edge_mask = 0;
alt_pq = 0;
} else {
assert(dquantfrm == 1);
alt_pquant_config = 1;
 
switch (dqprofile) {
case 3:
if (dqbilevel == 0) {
alt_pquant_config = 2;
alt_pquant_edge_mask = 0;
} else {
assert(dqbilevel == 1);
alt_pquant_config = 3;
alt_pquant_edge_mask = 0;
}
break;
case 0:
alt_pquant_edge_mask = 0xf;
break;
 
case 1:
if (dqdbedge == 3)
alt_pquant_edge_mask = 0x9;
else
alt_pquant_edge_mask = (0x3 << dqdbedge);
 
break;
 
case 2:
alt_pquant_edge_mask = (0x1 << dqsbedge);
break;
 
default:
assert(0);
}
}
}
 
if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
assert(pic_param->mv_fields.bits.mv_mode2 < 4);
unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
} else {
assert(pic_param->mv_fields.bits.mv_mode < 4);
unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode];
}
 
if (pic_param->sequence_fields.bits.interlace == 1 &&
pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
/* FIXME: calculate reference field picture polarity */
assert(0);
ref_field_pic_polarity = 0;
}
 
if (pic_param->b_picture_fraction < 21)
scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
 
picture_type = va_to_gen7_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
if (profile == GEN7_VC1_ADVANCED_PROFILE &&
picture_type == GEN7_VC1_I_PICTURE)
picture_type = GEN7_VC1_BI_PICTURE;
 
if (picture_type == GEN7_VC1_I_PICTURE || picture_type == GEN7_VC1_BI_PICTURE) /* I picture */
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
else {
trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
/*
* 8.3.6.2.1 Transform Type Selection
* If variable-sized transform coding is not enabled,
* then the 8x8 transform shall be used for all blocks.
* it is also MFX_VC1_PIC_STATE requirement.
*/
if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
pic_param->transform_fields.bits.frame_level_transform_type = 0;
}
}
 
 
if (picture_type == GEN7_VC1_B_PICTURE) {
struct gen7_vc1_surface *gen7_vc1_surface = NULL;
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
assert(obj_surface);
gen7_vc1_surface = obj_surface->private_data;
 
if (!gen7_vc1_surface ||
(va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_I_PICTURE ||
va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_BI_PICTURE))
dmv_surface_valid = 0;
else
dmv_surface_valid = 1;
}
 
assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
 
if (pic_param->picture_fields.bits.frame_coding_mode < 2)
fcm = pic_param->picture_fields.bits.frame_coding_mode;
else {
if (pic_param->picture_fields.bits.top_field_first)
fcm = 2;
else
fcm = 3;
}
 
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_B_PICTURE) { /* B picture */
brfd = pic_param->reference_fields.bits.reference_distance;
brfd = (scale_factor * brfd) >> 8;
brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
 
if (brfd < 0)
brfd = 0;
}
 
overlap = 0;
if (profile != GEN7_VC1_ADVANCED_PROFILE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
overlap = 1;
}
}else {
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
}
if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
overlap = 1;
} else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
overlap = 1;
}
}
}
 
assert(pic_param->conditional_overlap_flag < 3);
assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
 
if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
interpolation_mode = 9; /* Half-pel bilinear */
else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
(pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
interpolation_mode = 1; /* Half-pel bicubic */
else
interpolation_mode = 0; /* Quarter-pel bicubic */
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
(((ALIGN(pic_param->coded_height, 16) / 16) - 1) << 16) |
((ALIGN(pic_param->coded_width, 16) / 16) - 1));
OUT_BCS_BATCH(batch,
((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1) << 24 |
dmv_surface_valid << 15 |
(pic_param->pic_quantizer_fields.bits.quantizer == 0) << 14 | /* implicit quantizer */
pic_param->rounding_control << 13 |
pic_param->sequence_fields.bits.syncmarker << 12 |
interpolation_mode << 8 |
0 << 7 | /* FIXME: scale up or down ??? */
pic_param->range_reduction_frame << 6 |
pic_param->entrypoint_fields.bits.loopfilter << 5 |
overlap << 4 |
!pic_param->picture_fields.bits.is_first_field << 3 |
(pic_param->sequence_fields.bits.profile == 3) << 0);
OUT_BCS_BATCH(batch,
va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] << 29 |
picture_type << 26 |
fcm << 24 |
alt_pq << 16 |
pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 8 |
scale_factor << 0);
OUT_BCS_BATCH(batch,
unified_mv_mode << 28 |
pic_param->mv_fields.bits.four_mv_switch << 27 |
pic_param->fast_uvmc_flag << 26 |
ref_field_pic_polarity << 25 |
pic_param->reference_fields.bits.num_reference_pictures << 24 |
pic_param->reference_fields.bits.reference_distance << 20 |
pic_param->reference_fields.bits.reference_distance << 16 | /* FIXME: ??? */
pic_param->mv_fields.bits.extended_dmv_range << 10 |
pic_param->mv_fields.bits.extended_mv_range << 8 |
alt_pquant_edge_mask << 4 |
alt_pquant_config << 2 |
pic_param->pic_quantizer_fields.bits.half_qp << 1 |
pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 0);
OUT_BCS_BATCH(batch,
!!pic_param->bitplane_present.value << 31 |
!pic_param->bitplane_present.flags.bp_forward_mb << 30 |
!pic_param->bitplane_present.flags.bp_mv_type_mb << 29 |
!pic_param->bitplane_present.flags.bp_skip_mb << 28 |
!pic_param->bitplane_present.flags.bp_direct_mb << 27 |
!pic_param->bitplane_present.flags.bp_overflags << 26 |
!pic_param->bitplane_present.flags.bp_ac_pred << 25 |
!pic_param->bitplane_present.flags.bp_field_tx << 24 |
pic_param->mv_fields.bits.mv_table << 20 |
pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
pic_param->transform_fields.bits.frame_level_transform_type << 12 |
pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
pic_param->mb_mode_table << 8 |
trans_ac_y << 6 |
pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
pic_param->cbp_table << 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
int intensitycomp_single;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
0 << 14 | /* FIXME: double ??? */
0 << 12 |
intensitycomp_single << 10 |
intensitycomp_single << 8 |
0 << 4 | /* FIXME: interlace mode */
0);
OUT_BCS_BATCH(batch,
pic_param->luma_shift << 16 |
pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
 
static void
gen7_mfd_vc1_directmode_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
obj_surface = SURFACE(decode_state->current_render_target);
 
if (obj_surface && obj_surface->private_data) {
dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
obj_surface = SURFACE(pic_param->backward_reference_picture);
 
if (obj_surface && obj_surface->private_data) {
dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
}
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
 
if (dmv_write_buffer)
OUT_BCS_RELOC(batch, dmv_write_buffer,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
if (dmv_read_buffer)
OUT_BCS_RELOC(batch, dmv_read_buffer,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static int
gen7_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
{
int out_slice_data_bit_offset;
int slice_header_size = in_slice_data_bit_offset / 8;
int i, j;
 
if (profile != 3)
out_slice_data_bit_offset = in_slice_data_bit_offset;
else {
for (i = 0, j = 0; i < slice_header_size; i++, j++) {
if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
i++, j += 2;
}
}
 
out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
}
 
return out_slice_data_bit_offset;
}
 
static void
gen7_mfd_vc1_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferVC1 *pic_param,
VASliceParameterBufferVC1 *slice_param,
VASliceParameterBufferVC1 *next_slice_param,
dri_bo *slice_data_bo,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int next_slice_start_vert_pos;
int macroblock_offset;
uint8_t *slice_data = NULL;
 
dri_bo_map(slice_data_bo, 0);
slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
macroblock_offset = gen7_mfd_vc1_get_macroblock_bit_offset(slice_data,
slice_param->macroblock_offset,
pic_param->sequence_fields.bits.profile);
dri_bo_unmap(slice_data_bo);
 
if (next_slice_param)
next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
else
next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (5 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size - (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset + (macroblock_offset >> 3));
OUT_BCS_BATCH(batch,
slice_param->slice_vertical_position << 16 |
next_slice_start_vert_pos << 0);
OUT_BCS_BATCH(batch,
(macroblock_offset & 0x7));
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_vc1_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferVC1 *pic_param;
VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
 
gen7_mfd_vc1_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
gen7_mfd_vc1_pic_state(ctx, decode_state, gen7_mfd_context);
gen7_mfd_vc1_pred_pipe_state(ctx, decode_state, gen7_mfd_context);
gen7_mfd_vc1_directmode_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen7_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
#ifdef HAVE_VA_JPEG_DECODE
static void
gen7_mfd_jpeg_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAPictureParameterBufferJPEGBaseline *pic_param;
int subsampling = SUBSAMPLE_YUV420;
 
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
if (pic_param->num_components == 1)
subsampling = SUBSAMPLE_YUV400;
else if (pic_param->num_components == 3) {
int h1 = pic_param->components[0].h_sampling_factor;
int h2 = pic_param->components[1].h_sampling_factor;
int h3 = pic_param->components[2].h_sampling_factor;
int v1 = pic_param->components[0].v_sampling_factor;
int v2 = pic_param->components[1].v_sampling_factor;
int v3 = pic_param->components[2].v_sampling_factor;
 
if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV420;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422H;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV444;
else if (h1 == 4 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV411;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422V;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 2 && v3 == 2)
subsampling = SUBSAMPLE_YUV422H;
else if (h2 == 2 && h2 == 2 && h3 == 2 &&
v1 == 2 && v2 == 1 && v3 == 1)
subsampling = SUBSAMPLE_YUV422V;
else
assert(0);
} else {
assert(0);
}
 
/* Current decoded picture */
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('I','M','C','1'), subsampling);
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.valid = 1;
 
gen7_mfd_context->post_deblocking_output.bo = NULL;
gen7_mfd_context->post_deblocking_output.valid = 0;
 
gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
 
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
gen7_mfd_context->bitplane_read_buffer.valid = 0;
}
 
static const int va_to_gen7_jpeg_rotation[4] = {
GEN7_JPEG_ROTATION_0,
GEN7_JPEG_ROTATION_90,
GEN7_JPEG_ROTATION_180,
GEN7_JPEG_ROTATION_270
};
 
static void
gen7_mfd_jpeg_pic_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferJPEGBaseline *pic_param;
int chroma_type = GEN7_YUV420;
int frame_width_in_blks;
int frame_height_in_blks;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
if (pic_param->num_components == 1)
chroma_type = GEN7_YUV400;
else if (pic_param->num_components == 3) {
int h1 = pic_param->components[0].h_sampling_factor;
int h2 = pic_param->components[1].h_sampling_factor;
int h3 = pic_param->components[2].h_sampling_factor;
int v1 = pic_param->components[0].v_sampling_factor;
int v2 = pic_param->components[1].v_sampling_factor;
int v3 = pic_param->components[2].v_sampling_factor;
 
if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV420;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422H_2Y;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV444;
else if (h1 == 4 && h2 == 1 && h3 == 1 &&
v1 == 1 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV411;
else if (h1 == 1 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422V_2Y;
else if (h1 == 2 && h2 == 1 && h3 == 1 &&
v1 == 2 && v2 == 2 && v3 == 2)
chroma_type = GEN7_YUV422H_4Y;
else if (h2 == 2 && h2 == 2 && h3 == 2 &&
v1 == 2 && v2 == 1 && v3 == 1)
chroma_type = GEN7_YUV422V_4Y;
else
assert(0);
}
 
if (chroma_type == GEN7_YUV400 ||
chroma_type == GEN7_YUV444 ||
chroma_type == GEN7_YUV422V_2Y) {
frame_width_in_blks = ((pic_param->picture_width + 7) / 8);
frame_height_in_blks = ((pic_param->picture_height + 7) / 8);
} else if (chroma_type == GEN7_YUV411) {
frame_width_in_blks = ((pic_param->picture_width + 31) / 32) * 4;
frame_height_in_blks = ((pic_param->picture_height + 31) / 32) * 4;
} else {
frame_width_in_blks = ((pic_param->picture_width + 15) / 16) * 2;
frame_height_in_blks = ((pic_param->picture_height + 15) / 16) * 2;
}
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
OUT_BCS_BATCH(batch,
(va_to_gen7_jpeg_rotation[0] << 4) | /* without rotation */
(chroma_type << 0));
OUT_BCS_BATCH(batch,
((frame_height_in_blks - 1) << 16) | /* FrameHeightInBlks */
((frame_width_in_blks - 1) << 0)); /* FrameWidthInBlks */
ADVANCE_BCS_BATCH(batch);
}
 
static const int va_to_gen7_jpeg_hufftable[2] = {
MFX_HUFFTABLE_ID_Y,
MFX_HUFFTABLE_ID_UV
};
 
static void
gen7_mfd_jpeg_huff_table_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context,
int num_tables)
{
VAHuffmanTableBufferJPEGBaseline *huffman_table;
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int index;
 
if (!decode_state->huffman_table || !decode_state->huffman_table->buffer)
return;
 
huffman_table = (VAHuffmanTableBufferJPEGBaseline *)decode_state->huffman_table->buffer;
 
for (index = 0; index < num_tables; index++) {
int id = va_to_gen7_jpeg_hufftable[index];
BEGIN_BCS_BATCH(batch, 53);
OUT_BCS_BATCH(batch, MFX_JPEG_HUFF_TABLE_STATE | (53 - 2));
OUT_BCS_BATCH(batch, id);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_dc_codes, 12);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].dc_values, 12);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_ac_codes, 16);
intel_batchbuffer_data(batch, huffman_table->huffman_table[index].ac_values, 164);
ADVANCE_BCS_BATCH(batch);
}
}
 
static const int va_to_gen7_jpeg_qm[5] = {
-1,
MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX,
MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX,
MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX,
MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX
};
 
static void
gen7_mfd_jpeg_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
VAPictureParameterBufferJPEGBaseline *pic_param;
VAIQMatrixBufferJPEGBaseline *iq_matrix;
int index;
 
if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
return;
 
iq_matrix = (VAIQMatrixBufferJPEGBaseline *)decode_state->iq_matrix->buffer;
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
assert(pic_param->num_components <= 3);
 
for (index = 0; index < pic_param->num_components; index++) {
int qm_type = va_to_gen7_jpeg_qm[pic_param->components[index].component_id - pic_param->components[0].component_id + 1];
unsigned char *qm = iq_matrix->quantiser_table[pic_param->components[index].quantiser_table_selector];
unsigned char raster_qm[64];
int j;
 
if (!iq_matrix->load_quantiser_table[pic_param->components[index].quantiser_table_selector])
continue;
 
for (j = 0; j < 64; j++)
raster_qm[zigzag_direct[j]] = qm[j];
 
gen7_mfd_qm_state(ctx, qm_type, raster_qm, 64, gen7_mfd_context);
}
}
 
static void
gen7_mfd_jpeg_bsd_object(VADriverContextP ctx,
VAPictureParameterBufferJPEGBaseline *pic_param,
VASliceParameterBufferJPEGBaseline *slice_param,
VASliceParameterBufferJPEGBaseline *next_slice_param,
dri_bo *slice_data_bo,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int scan_component_mask = 0;
int i;
 
assert(slice_param->num_components > 0);
assert(slice_param->num_components < 4);
assert(slice_param->num_components <= pic_param->num_components);
 
for (i = 0; i < slice_param->num_components; i++) {
switch (slice_param->components[i].component_selector - pic_param->components[0].component_id + 1) {
case 1:
scan_component_mask |= (1 << 0);
break;
case 2:
scan_component_mask |= (1 << 1);
break;
case 3:
scan_component_mask |= (1 << 2);
break;
default:
assert(0);
break;
}
}
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_JPEG_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch,
slice_param->slice_data_size);
OUT_BCS_BATCH(batch,
slice_param->slice_data_offset);
OUT_BCS_BATCH(batch,
slice_param->slice_horizontal_position << 16 |
slice_param->slice_vertical_position << 0);
OUT_BCS_BATCH(batch,
((slice_param->num_components != 1) << 30) | /* interleaved */
(scan_component_mask << 27) | /* scan components */
(0 << 26) | /* disable interrupt allowed */
(slice_param->num_mcus << 0)); /* MCU count */
OUT_BCS_BATCH(batch,
(slice_param->restart_interval << 0)); /* RestartInterval */
ADVANCE_BCS_BATCH(batch);
}
 
/* Workaround for JPEG decoding on Ivybridge */
 
VAStatus
i965_DestroySurfaces(VADriverContextP ctx,
VASurfaceID *surface_list,
int num_surfaces);
VAStatus
i965_CreateSurfaces(VADriverContextP ctx,
int width,
int height,
int format,
int num_surfaces,
VASurfaceID *surfaces);
 
static struct {
int width;
int height;
unsigned char data[32];
int data_size;
int data_bit_offset;
int qp;
} gen7_jpeg_wa_clip = {
16,
16,
{
0x65, 0xb8, 0x40, 0x32, 0x13, 0xfd, 0x06, 0x6c,
0xfc, 0x0a, 0x50, 0x71, 0x5c, 0x00
},
14,
40,
28,
};
 
static void
gen7_jpeg_wa_init(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VAStatus status;
struct object_surface *obj_surface;
 
if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE)
i965_DestroySurfaces(ctx,
&gen7_mfd_context->jpeg_wa_surface_id,
1);
 
status = i965_CreateSurfaces(ctx,
gen7_jpeg_wa_clip.width,
gen7_jpeg_wa_clip.height,
VA_RT_FORMAT_YUV420,
1,
&gen7_mfd_context->jpeg_wa_surface_id);
assert(status == VA_STATUS_SUCCESS);
 
obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
 
if (!gen7_mfd_context->jpeg_wa_slice_data_bo) {
gen7_mfd_context->jpeg_wa_slice_data_bo = dri_bo_alloc(i965->intel.bufmgr,
"JPEG WA data",
0x1000,
0x1000);
dri_bo_subdata(gen7_mfd_context->jpeg_wa_slice_data_bo,
0,
gen7_jpeg_wa_clip.data_size,
gen7_jpeg_wa_clip.data);
}
}
 
static void
gen7_jpeg_wa_pipe_mode_select(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 5);
OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
OUT_BCS_BATCH(batch,
(MFX_LONG_MODE << 17) | /* Currently only support long format */
(MFD_MODE_VLD << 15) | /* VLD mode */
(0 << 10) | /* disable Stream-Out */
(0 << 9) | /* Post Deblocking Output */
(1 << 8) | /* Pre Deblocking Output */
(0 << 5) | /* not in stitch mode */
(MFX_CODEC_DECODE << 4) | /* decoding mode */
(MFX_FORMAT_AVC << 0));
OUT_BCS_BATCH(batch,
(0 << 4) | /* terminate if AVC motion and POC table error occurs */
(0 << 3) | /* terminate if AVC mbdata error occurs */
(0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
(0 << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
OUT_BCS_BATCH(batch, 0); /* reserved */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_surface_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
((obj_surface->orig_width - 1) << 18) |
((obj_surface->orig_height - 1) << 4));
OUT_BCS_BATCH(batch,
(MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
(1 << 27) | /* interleave chroma, set to 0 for JPEG */
(0 << 22) | /* surface object control state, ignored */
((obj_surface->width - 1) << 3) | /* pitch */
(0 << 2) | /* must be 0 */
(1 << 1) | /* must be tiled */
(I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for U(Cb), must be 0 */
(obj_surface->y_cb_offset << 0)); /* Y offset for U(Cb) */
OUT_BCS_BATCH(batch,
(0 << 16) | /* X offset for V(Cr), must be 0 */
(0 << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_pipe_buf_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *intra_bo;
int i;
 
intra_bo = dri_bo_alloc(i965->intel.bufmgr,
"intra row store",
128 * 64,
0x1000);
 
BEGIN_BCS_BATCH(batch, 24);
OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
OUT_BCS_RELOC(batch,
obj_surface->bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0); /* post deblocking */
 
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
 
OUT_BCS_RELOC(batch,
intra_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_BATCH(batch, 0);
 
/* DW 7..22 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
}
 
OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(intra_bo);
}
 
static void
gen7_jpeg_wa_bsp_buf_base_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
dri_bo *bsd_mpc_bo, *mpr_bo;
 
bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd mpc row store",
11520, /* 1.5 * 120 * 64 */
0x1000);
 
mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
7680, /* 1. 0 * 120 * 64 */
0x1000);
 
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
 
OUT_BCS_RELOC(batch,
bsd_mpc_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
OUT_BCS_RELOC(batch,
mpr_bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
 
dri_bo_unreference(bsd_mpc_bo);
dri_bo_unreference(mpr_bo);
}
 
static void
gen7_jpeg_wa_avc_qm_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
 
}
 
static void
gen7_jpeg_wa_avc_img_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int img_struct = 0;
int mbaff_frame_flag = 0;
unsigned int width_in_mbs = 1, height_in_mbs = 1;
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
OUT_BCS_BATCH(batch,
width_in_mbs * height_in_mbs);
OUT_BCS_BATCH(batch,
((height_in_mbs - 1) << 16) |
((width_in_mbs - 1) << 0));
OUT_BCS_BATCH(batch,
(0 << 24) |
(0 << 16) |
(0 << 14) |
(0 << 13) |
(0 << 12) | /* differ from GEN6 */
(0 << 10) |
(img_struct << 8));
OUT_BCS_BATCH(batch,
(1 << 10) | /* 4:2:0 */
(1 << 7) | /* CABAC */
(0 << 6) |
(0 << 5) |
(0 << 4) |
(0 << 3) |
(1 << 2) |
(mbaff_frame_flag << 1) |
(0 << 0));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_avc_directmode_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int i;
 
BEGIN_BCS_BATCH(batch, 69);
OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
 
/* reference surfaces 0..15 */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0); /* bottom */
}
 
/* the current decoding frame/field */
OUT_BCS_BATCH(batch, 0); /* top */
OUT_BCS_BATCH(batch, 0); /* bottom */
 
/* POC List */
for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
 
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_ind_obj_base_addr_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
OUT_BCS_RELOC(batch,
gen7_mfd_context->jpeg_wa_slice_data_bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_avc_bsd_object(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
 
/* the input bitsteam format on GEN7 differs from GEN6 */
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
OUT_BCS_BATCH(batch, gen7_jpeg_wa_clip.data_size);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch,
(0 << 31) |
(0 << 14) |
(0 << 12) |
(0 << 10) |
(0 << 8));
OUT_BCS_BATCH(batch,
((gen7_jpeg_wa_clip.data_bit_offset >> 3) << 16) |
(0 << 5) |
(0 << 4) |
(1 << 3) | /* LastSlice Flag */
(gen7_jpeg_wa_clip.data_bit_offset & 0x7));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_jpeg_wa_avc_slice_state(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
int slice_hor_pos = 0, slice_ver_pos = 0, next_slice_hor_pos = 0, next_slice_ver_pos = 1;
int num_ref_idx_l0 = 0, num_ref_idx_l1 = 0;
int first_mb_in_slice = 0;
int slice_type = SLICE_TYPE_I;
 
BEGIN_BCS_BATCH(batch, 11);
OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
OUT_BCS_BATCH(batch, slice_type);
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(0 << 8) |
(0 << 0));
OUT_BCS_BATCH(batch,
(0 << 29) |
(1 << 27) | /* disable Deblocking */
(0 << 24) |
(gen7_jpeg_wa_clip.qp << 16) |
(0 << 8) |
(0 << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(next_slice_ver_pos << 16) |
(next_slice_hor_pos << 0));
OUT_BCS_BATCH(batch, (1 << 19)); /* last slice flag */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
gen7_mfd_jpeg_wa(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
gen7_jpeg_wa_init(ctx, gen7_mfd_context);
intel_batchbuffer_emit_mi_flush(batch);
gen7_jpeg_wa_pipe_mode_select(ctx, gen7_mfd_context);
gen7_jpeg_wa_surface_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_pipe_buf_addr_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_bsp_buf_base_addr_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_avc_qm_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_avc_img_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_ind_obj_base_addr_state(ctx, gen7_mfd_context);
 
gen7_jpeg_wa_avc_directmode_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_avc_slice_state(ctx, gen7_mfd_context);
gen7_jpeg_wa_avc_bsd_object(ctx, gen7_mfd_context);
}
 
void
gen7_mfd_jpeg_decode_picture(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
VAPictureParameterBufferJPEGBaseline *pic_param;
VASliceParameterBufferJPEGBaseline *slice_param, *next_slice_param, *next_slice_group_param;
dri_bo *slice_data_bo;
int i, j, max_selector = 0;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
 
/* Currently only support Baseline DCT */
gen7_mfd_jpeg_decode_init(ctx, decode_state, gen7_mfd_context);
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
gen7_mfd_jpeg_wa(ctx, gen7_mfd_context);
intel_batchbuffer_emit_mi_flush(batch);
gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
gen7_mfd_jpeg_pic_state(ctx, decode_state, gen7_mfd_context);
gen7_mfd_jpeg_qm_state(ctx, decode_state, gen7_mfd_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
int component;
 
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
for (component = 0; component < slice_param->num_components; component++) {
if (max_selector < slice_param->components[component].dc_table_selector)
max_selector = slice_param->components[component].dc_table_selector;
 
if (max_selector < slice_param->components[component].ac_table_selector)
max_selector = slice_param->components[component].ac_table_selector;
}
 
slice_param++;
}
}
 
assert(max_selector < 2);
gen7_mfd_jpeg_huff_table_state(ctx, decode_state, gen7_mfd_context, max_selector + 1);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
slice_data_bo = decode_state->slice_datas[j]->bo;
gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
 
if (j == decode_state->num_slice_params - 1)
next_slice_group_param = NULL;
else
next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
 
if (i < decode_state->slice_params[j]->num_elements - 1)
next_slice_param = slice_param + 1;
else
next_slice_param = next_slice_group_param;
 
gen7_mfd_jpeg_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
slice_param++;
}
}
 
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
#endif
 
static void
gen7_mfd_decode_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
 
{
struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
struct decode_state *decode_state = &codec_state->decode;
 
assert(gen7_mfd_context);
 
gen7_mfd_context->wa_mpeg2_slice_vertical_position = -1;
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
gen7_mfd_mpeg2_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
gen7_mfd_avc_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
gen7_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
 
#ifdef HAVE_VA_JPEG_DECODE
case VAProfileJPEGBaseline:
gen7_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
break;
#endif
 
default:
assert(0);
break;
}
}
 
static void
gen7_mfd_context_destroy(void *hw_context)
{
struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
 
dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
gen7_mfd_context->post_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
gen7_mfd_context->pre_deblocking_output.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
gen7_mfd_context->bitplane_read_buffer.bo = NULL;
 
dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
 
intel_batchbuffer_free(gen7_mfd_context->base.batch);
free(gen7_mfd_context);
}
 
static void gen7_mfd_mpeg2_context_init(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
gen7_mfd_context->iq_matrix.mpeg2.load_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_non_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_chroma_intra_quantiser_matrix = -1;
gen7_mfd_context->iq_matrix.mpeg2.load_chroma_non_intra_quantiser_matrix = -1;
}
 
struct hw_context *
gen7_dec_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct gen7_mfd_context *gen7_mfd_context = calloc(1, sizeof(struct gen7_mfd_context));
int i;
 
gen7_mfd_context->base.destroy = gen7_mfd_context_destroy;
gen7_mfd_context->base.run = gen7_mfd_decode_picture;
gen7_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
gen7_mfd_context->reference_surface[i].frame_store_id = -1;
}
 
gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
gen7_mfd_mpeg2_context_init(ctx, gen7_mfd_context);
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
gen7_mfd_avc_context_init(ctx, gen7_mfd_context);
break;
default:
break;
}
return (struct hw_context *)gen7_mfd_context;
}
/drivers/video/i965/gen7_mfd.h
0,0 → 1,95
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef _GEN7_MFD_H_
#define _GEN7_MFD_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
#include "i965_decoder.h"
 
#define GEN7_VC1_I_PICTURE 0
#define GEN7_VC1_P_PICTURE 1
#define GEN7_VC1_B_PICTURE 2
#define GEN7_VC1_BI_PICTURE 3
#define GEN7_VC1_SKIPPED_PICTURE 4
 
#define GEN7_VC1_SIMPLE_PROFILE 0
#define GEN7_VC1_MAIN_PROFILE 1
#define GEN7_VC1_ADVANCED_PROFILE 2
#define GEN7_VC1_RESERVED_PROFILE 3
 
#define GEN7_JPEG_ROTATION_0 0
#define GEN7_JPEG_ROTATION_90 1
#define GEN7_JPEG_ROTATION_270 2
#define GEN7_JPEG_ROTATION_180 3
 
#define GEN7_YUV400 0
#define GEN7_YUV420 1
#define GEN7_YUV422H_2Y 2
#define GEN7_YUV444 3
#define GEN7_YUV411 4
#define GEN7_YUV422V_2Y 5
#define GEN7_YUV422H_4Y 6
#define GEN7_YUV422V_4Y 7
 
struct gen7_vc1_surface
{
dri_bo *dmv;
int picture_type;
};
 
struct hw_context;
 
struct gen7_mfd_context
{
struct hw_context base;
 
union {
VAIQMatrixBufferMPEG2 mpeg2;
VAIQMatrixBufferH264 h264; /* flat scaling lists (default) */
} iq_matrix;
 
GenFrameStore reference_surface[MAX_GEN_REFERENCE_FRAMES];
GenBuffer post_deblocking_output;
GenBuffer pre_deblocking_output;
GenBuffer intra_row_store_scratch_buffer;
GenBuffer deblocking_filter_row_store_scratch_buffer;
GenBuffer bsd_mpc_row_store_scratch_buffer;
GenBuffer mpr_row_store_scratch_buffer;
GenBuffer bitplane_read_buffer;
VASurfaceID jpeg_wa_surface_id;
dri_bo *jpeg_wa_slice_data_bo;
 
int wa_mpeg2_slice_vertical_position;
};
 
#endif /* _GEN7_MFD_H_ */
/drivers/video/i965/i965_avc_bsd.c
0,0 → 1,1051
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#ifndef HAVE_GEN_AVC_SURFACE
#define HAVE_GEN_AVC_SURFACE 1
#endif
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_avc_bsd.h"
#include "i965_media_h264.h"
#include "i965_media.h"
#include "i965_decoder_utils.h"
 
static void
i965_avc_bsd_init_avc_bsd_surface(VADriverContextP ctx,
struct object_surface *obj_surface,
VAPictureParameterBufferH264 *pic_param,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
GenAvcSurface *avc_bsd_surface = obj_surface->private_data;
 
obj_surface->free_private_data = gen_free_avc_surface;
 
if (!avc_bsd_surface) {
avc_bsd_surface = calloc(sizeof(GenAvcSurface), 1);
assert((obj_surface->size & 0x3f) == 0);
obj_surface->private_data = avc_bsd_surface;
}
 
avc_bsd_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
!pic_param->seq_fields.bits.direct_8x8_inference_flag);
 
if (avc_bsd_surface->dmv_top == NULL) {
avc_bsd_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
DMV_SIZE,
0x1000);
}
 
if (avc_bsd_surface->dmv_bottom_flag &&
avc_bsd_surface->dmv_bottom == NULL) {
avc_bsd_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
"direct mv w/r buffer",
DMV_SIZE,
0x1000);
}
}
 
static void
i965_bsd_ind_obj_base_address(VADriverContextP ctx,
struct decode_state *decode_state,
int slice,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
dri_bo *ind_bo = decode_state->slice_datas[slice]->bo;
 
BEGIN_BCS_BATCH(batch, 3);
OUT_BCS_BATCH(batch, CMD_BSD_IND_OBJ_BASE_ADDR | (3 - 2));
OUT_BCS_RELOC(batch, ind_bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
 
static void
i965_avc_bsd_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
int qm_present_flag;
int img_struct;
int mbaff_frame_flag;
unsigned int avc_it_command_header;
unsigned int width_in_mbs, height_in_mbs;
VAPictureParameterBufferH264 *pic_param;
 
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
qm_present_flag = 1;
else
qm_present_flag = 0; /* built-in QM matrices */
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
 
if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
img_struct = 1;
else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
img_struct = 3;
else
img_struct = 0;
 
if ((img_struct & 0x1) == 0x1) {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
} else {
assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
}
 
if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
assert(pic_param->pic_fields.bits.field_pic_flag == 0);
} else {
assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
}
 
mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
 
width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
assert(!((width_in_mbs * height_in_mbs) & 0x8000)); /* hardware requirement */
 
/* BSD unit doesn't support 4:2:2 and 4:4:4 picture */
assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
 
avc_it_command_header = (CMD_MEDIA_OBJECT_EX | (12 - 2));
 
BEGIN_BCS_BATCH(batch, 6);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_IMG_STATE | (6 - 2));
OUT_BCS_BATCH(batch,
((width_in_mbs * height_in_mbs) & 0x7fff));
OUT_BCS_BATCH(batch,
(height_in_mbs << 16) |
(width_in_mbs << 0));
OUT_BCS_BATCH(batch,
((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
(SCAN_RASTER_ORDER << 15) | /* AVC ILDB Data */
(SCAN_SPECIAL_ORDER << 14) | /* AVC IT Command */
(SCAN_RASTER_ORDER << 13) | /* AVC IT Data */
(1 << 12) | /* always 1, hardware requirement */
(qm_present_flag << 10) |
(img_struct << 8) |
(16 << 0)); /* FIXME: always support 16 reference frames ??? */
OUT_BCS_BATCH(batch,
(RESIDUAL_DATA_OFFSET << 24) | /* residual data offset */
(0 << 17) | /* don't overwrite SRT */
(0 << 16) | /* Un-SRT (Unsynchronized Root Thread) */
(0 << 12) | /* FIXME: no 16MV ??? */
(pic_param->seq_fields.bits.chroma_format_idc << 10) |
(i965_h264_context->enable_avc_ildb << 8) | /* Enable ILDB writing output */
(pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
(pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
(pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
(pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
(pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
(mbaff_frame_flag << 1) |
(pic_param->pic_fields.bits.field_pic_flag << 0));
OUT_BCS_BATCH(batch, avc_it_command_header);
ADVANCE_BCS_BATCH(batch);
}
 
static void
i965_avc_bsd_qm_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
int cmd_len;
VAIQMatrixBufferH264 *iq_matrix;
VAPictureParameterBufferH264 *pic_param;
 
if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
return;
 
iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
cmd_len = 2 + 6 * 4; /* always load six 4x4 scaling matrices */
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
cmd_len += 2 * 16; /* load two 8x8 scaling matrices */
 
BEGIN_BCS_BATCH(batch, cmd_len);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_QM_STATE | (cmd_len - 2));
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
OUT_BCS_BATCH(batch,
(0x0 << 8) | /* don't use default built-in matrices */
(0xff << 0)); /* six 4x4 and two 8x8 scaling matrices */
else
OUT_BCS_BATCH(batch,
(0x0 << 8) | /* don't use default built-in matrices */
(0x3f << 0)); /* six 4x4 scaling matrices */
 
intel_batchbuffer_data(batch, &iq_matrix->ScalingList4x4[0][0], 6 * 4 * 4);
 
if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
intel_batchbuffer_data(batch, &iq_matrix->ScalingList8x8[0][0], 2 * 16 * 4);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
i965_avc_bsd_slice_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
int present_flag, cmd_len, list, j;
uint8_t ref_idx_state[32];
char weightoffsets[32 * 6];
 
/* don't issue SLICE_STATE for intra-prediction decoding */
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI)
return;
 
cmd_len = 2;
 
if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) {
present_flag = PRESENT_REF_LIST0;
cmd_len += 8;
} else {
present_flag = PRESENT_REF_LIST0 | PRESENT_REF_LIST1;
cmd_len += 16;
}
 
if ((slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP) &&
(pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
present_flag |= PRESENT_WEIGHT_OFFSET_L0;
cmd_len += 48;
}
 
if ((slice_param->slice_type == SLICE_TYPE_B) &&
(pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
present_flag |= PRESENT_WEIGHT_OFFSET_L0 | PRESENT_WEIGHT_OFFSET_L1;
cmd_len += 96;
}
 
BEGIN_BCS_BATCH(batch, cmd_len);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_SLICE_STATE | (cmd_len - 2));
OUT_BCS_BATCH(batch, present_flag);
 
for (list = 0; list < 2; list++) {
int flag, num_va_pics;
VAPictureH264 *va_pic;
 
if (list == 0) {
flag = PRESENT_REF_LIST0;
va_pic = slice_param->RefPicList0;
num_va_pics = slice_param->num_ref_idx_l0_active_minus1 + 1;
} else {
flag = PRESENT_REF_LIST1;
va_pic = slice_param->RefPicList1;
num_va_pics = slice_param->num_ref_idx_l1_active_minus1 + 1;
}
 
if (!(present_flag & flag))
continue;
 
gen5_fill_avc_ref_idx_state(
ref_idx_state,
va_pic, num_va_pics,
i965_h264_context->fsid_list
);
intel_batchbuffer_data(batch, ref_idx_state, sizeof(ref_idx_state));
}
 
i965_h264_context->weight128_luma_l0 = 0;
i965_h264_context->weight128_luma_l1 = 0;
i965_h264_context->weight128_chroma_l0 = 0;
i965_h264_context->weight128_chroma_l1 = 0;
 
i965_h264_context->weight128_offset0_flag = 0;
i965_h264_context->weight128_offset0 = 0;
 
if (present_flag & PRESENT_WEIGHT_OFFSET_L0) {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_offset_l0[j];
weightoffsets[j * 6 + 1] = slice_param->luma_weight_l0[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_offset_l0[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_weight_l0[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_offset_l0[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_weight_l0[j][1];
 
if (pic_param->pic_fields.bits.weighted_pred_flag == 1 ||
pic_param->pic_fields.bits.weighted_bipred_idc == 1) {
if (i965_h264_context->use_hw_w128) {
if (slice_param->luma_weight_l0[j] == 128)
i965_h264_context->weight128_luma_l0 |= (1 << j);
 
if (slice_param->chroma_weight_l0[j][0] == 128 ||
slice_param->chroma_weight_l0[j][1] == 128)
i965_h264_context->weight128_chroma_l0 |= (1 << j);
} else {
/* FIXME: workaround for weight 128 */
if (slice_param->luma_weight_l0[j] == 128 ||
slice_param->chroma_weight_l0[j][0] == 128 ||
slice_param->chroma_weight_l0[j][1] == 128)
i965_h264_context->weight128_offset0_flag = 1;
}
}
}
 
intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
}
 
if (present_flag & PRESENT_WEIGHT_OFFSET_L1) {
for (j = 0; j < 32; j++) {
weightoffsets[j * 6 + 0] = slice_param->luma_offset_l1[j];
weightoffsets[j * 6 + 1] = slice_param->luma_weight_l1[j];
weightoffsets[j * 6 + 2] = slice_param->chroma_offset_l1[j][0];
weightoffsets[j * 6 + 3] = slice_param->chroma_weight_l1[j][0];
weightoffsets[j * 6 + 4] = slice_param->chroma_offset_l1[j][1];
weightoffsets[j * 6 + 5] = slice_param->chroma_weight_l1[j][1];
 
if (pic_param->pic_fields.bits.weighted_bipred_idc == 1) {
if (i965_h264_context->use_hw_w128) {
if (slice_param->luma_weight_l1[j] == 128)
i965_h264_context->weight128_luma_l1 |= (1 << j);
 
if (slice_param->chroma_weight_l1[j][0] == 128 ||
slice_param->chroma_weight_l1[j][1] == 128)
i965_h264_context->weight128_chroma_l1 |= (1 << j);
} else {
if (slice_param->luma_weight_l0[j] == 128 ||
slice_param->chroma_weight_l0[j][0] == 128 ||
slice_param->chroma_weight_l0[j][1] == 128)
i965_h264_context->weight128_offset0_flag = 1;
}
}
}
 
intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
}
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
i965_avc_bsd_buf_base_state(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965_h264_context->batch;
struct i965_avc_bsd_context *i965_avc_bsd_context;
int i, j;
VAPictureH264 *va_pic;
struct object_surface *obj_surface;
GenAvcSurface *avc_bsd_surface;
 
i965_avc_bsd_context = &i965_h264_context->i965_avc_bsd_context;
 
BEGIN_BCS_BATCH(batch, 74);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_BUF_BASE_STATE | (74 - 2));
OUT_BCS_RELOC(batch, i965_avc_bsd_context->bsd_raw_store.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_RELOC(batch, i965_avc_bsd_context->mpr_row_store.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
OUT_BCS_RELOC(batch, i965_h264_context->avc_it_command_mb_info.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
i965_h264_context->avc_it_command_mb_info.mbs * i965_h264_context->use_avc_hw_scoreboard * MB_CMD_IN_BYTES);
OUT_BCS_RELOC(batch, i965_h264_context->avc_it_data.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
(i965_h264_context->avc_it_data.write_offset << 6));
 
if (i965_h264_context->enable_avc_ildb)
OUT_BCS_RELOC(batch, i965_h264_context->avc_ildb_data.bo,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_BATCH(batch, 0);
 
for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
if (i965_h264_context->fsid_list[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == i965_h264_context->fsid_list[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
 
if (!(va_pic->flags & VA_PICTURE_H264_INVALID)) {
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
avc_bsd_surface = obj_surface->private_data;
if (avc_bsd_surface == NULL) {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
} else {
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
 
if (avc_bsd_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
else
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
}
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
obj_surface->flags |= (pic_param->pic_fields.bits.reference_pic_flag ? SURFACE_REFERENCED : 0);
i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
/* initial uv component for YUV400 case */
if (pic_param->seq_fields.bits.chroma_format_idc == 0) {
unsigned int uv_offset = obj_surface->width * obj_surface->height;
unsigned int uv_size = obj_surface->width * obj_surface->height / 2;
 
dri_bo_map(obj_surface->bo, 1);
memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size);
dri_bo_unmap(obj_surface->bo);
}
 
i965_avc_bsd_init_avc_bsd_surface(ctx, obj_surface, pic_param, i965_h264_context);
avc_bsd_surface = obj_surface->private_data;
 
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
if (avc_bsd_surface->dmv_bottom_flag == 1)
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_bottom,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
else
OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
0);
 
/* POC List */
for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
if (i965_h264_context->fsid_list[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == i965_h264_context->fsid_list[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
 
if (!(va_pic->flags & VA_PICTURE_H264_INVALID)) {
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
}
} else {
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
}
}
 
va_pic = &pic_param->CurrPic;
OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
 
ADVANCE_BCS_BATCH(batch);
}
 
static void
g4x_avc_bsd_object(VADriverContextP ctx,
struct decode_state *decode_state,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
int slice_index,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
if (slice_param) {
int encrypted, counter_value, cmd_len;
int slice_hor_pos, slice_ver_pos;
int num_ref_idx_l0, num_ref_idx_l1;
int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
unsigned int slice_data_bit_offset;
int weighted_pred_idc = 0;
int first_mb_in_slice = 0;
int slice_type;
 
encrypted = 0; /* FIXME: which flag in VAAPI is used for encryption? */
 
if (encrypted) {
cmd_len = 9;
counter_value = 0; /* FIXME: ??? */
} else
cmd_len = 8;
 
 
slice_data_bit_offset = avc_get_first_mb_bit_offset_with_epb(
decode_state->slice_datas[slice_index]->bo,
slice_param,
pic_param->pic_fields.bits.entropy_coding_mode_flag
);
 
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI)
slice_type = SLICE_TYPE_I;
else if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP)
slice_type = SLICE_TYPE_P;
else {
assert(slice_param->slice_type == SLICE_TYPE_B);
slice_type = SLICE_TYPE_B;
}
 
if (slice_type == SLICE_TYPE_I) {
assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = 0;
num_ref_idx_l1 = 0;
} else if (slice_type == SLICE_TYPE_P) {
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = 0;
} else {
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
}
 
if (slice_type == SLICE_TYPE_P)
weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
else if (slice_type == SLICE_TYPE_B)
weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
 
first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
slice_hor_pos = first_mb_in_slice % width_in_mbs;
slice_ver_pos = first_mb_in_slice / width_in_mbs;
 
BEGIN_BCS_BATCH(batch, cmd_len);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (cmd_len - 2));
OUT_BCS_BATCH(batch,
(encrypted << 31) |
((slice_param->slice_data_size - (slice_data_bit_offset >> 3)) << 0));
OUT_BCS_BATCH(batch,
(slice_param->slice_data_offset +
(slice_data_bit_offset >> 3)));
OUT_BCS_BATCH(batch,
(0 << 31) | /* concealment mode: 0->intra 16x16 prediction, 1->inter P Copy */
(0 << 14) | /* ignore BSDPrematureComplete Error handling */
(0 << 13) | /* FIXME: ??? */
(0 << 12) | /* ignore MPR Error handling */
(0 << 10) | /* ignore Entropy Error handling */
(0 << 8) | /* ignore MB Header Error handling */
(slice_type << 0));
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(slice_param->chroma_log2_weight_denom << 8) |
(slice_param->luma_log2_weight_denom << 0));
OUT_BCS_BATCH(batch,
(weighted_pred_idc << 30) |
(slice_param->direct_spatial_mv_pred_flag << 29) |
(slice_param->disable_deblocking_filter_idc << 27) |
(slice_param->cabac_init_idc << 24) |
((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(1 << 7) |
((0x7 - (slice_data_bit_offset & 0x7)) << 0));
 
if (encrypted) {
OUT_BCS_BATCH(batch, counter_value);
}
 
ADVANCE_BCS_BATCH(batch);
} else {
BEGIN_BCS_BATCH(batch, 8);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (8 - 2));
OUT_BCS_BATCH(batch, 0); /* indirect data length for phantom slice is 0 */
OUT_BCS_BATCH(batch, 0); /* indirect data start address for phantom slice is 0 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag));
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
ironlake_avc_bsd_object(VADriverContextP ctx,
struct decode_state *decode_state,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
int slice_index,
struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
 
if (slice_param) {
int encrypted, counter_value;
int slice_hor_pos, slice_ver_pos;
int num_ref_idx_l0, num_ref_idx_l1;
int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
unsigned int slice_data_bit_offset;
int weighted_pred_idc = 0;
int first_mb_in_slice;
int slice_type;
 
encrypted = 0; /* FIXME: which flag in VAAPI is used for encryption? */
 
if (encrypted) {
counter_value = 0; /* FIXME: ??? */
} else
counter_value = 0;
 
slice_data_bit_offset = avc_get_first_mb_bit_offset_with_epb(
decode_state->slice_datas[slice_index]->bo,
slice_param,
pic_param->pic_fields.bits.entropy_coding_mode_flag
);
 
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI)
slice_type = SLICE_TYPE_I;
else if (slice_param->slice_type == SLICE_TYPE_P ||
slice_param->slice_type == SLICE_TYPE_SP)
slice_type = SLICE_TYPE_P;
else {
assert(slice_param->slice_type == SLICE_TYPE_B);
slice_type = SLICE_TYPE_B;
}
 
if (slice_type == SLICE_TYPE_I) {
assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = 0;
num_ref_idx_l1 = 0;
} else if (slice_type == SLICE_TYPE_P) {
assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = 0;
} else {
num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
}
 
if (slice_type == SLICE_TYPE_P)
weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
else if (slice_type == SLICE_TYPE_B)
weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
 
first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
slice_hor_pos = first_mb_in_slice % width_in_mbs;
slice_ver_pos = first_mb_in_slice / width_in_mbs;
 
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (16 - 2));
OUT_BCS_BATCH(batch,
(encrypted << 31) |
(0 << 30) | /* FIXME: packet based bit stream */
(0 << 29) | /* FIXME: packet format */
((slice_param->slice_data_size - (slice_data_bit_offset >> 3)) << 0));
OUT_BCS_BATCH(batch,
(slice_param->slice_data_offset +
(slice_data_bit_offset >> 3)));
OUT_BCS_BATCH(batch,
(0 << 31) | /* concealment mode: 0->intra 16x16 prediction, 1->inter P Copy */
(0 << 14) | /* ignore BSDPrematureComplete Error handling */
(0 << 13) | /* FIXME: ??? */
(0 << 12) | /* ignore MPR Error handling */
(0 << 10) | /* ignore Entropy Error handling */
(0 << 8) | /* ignore MB Header Error handling */
(slice_type << 0));
OUT_BCS_BATCH(batch,
(num_ref_idx_l1 << 24) |
(num_ref_idx_l0 << 16) |
(slice_param->chroma_log2_weight_denom << 8) |
(slice_param->luma_log2_weight_denom << 0));
OUT_BCS_BATCH(batch,
(weighted_pred_idc << 30) |
(slice_param->direct_spatial_mv_pred_flag << 29) |
(slice_param->disable_deblocking_filter_idc << 27) |
(slice_param->cabac_init_idc << 24) |
((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
OUT_BCS_BATCH(batch,
(slice_ver_pos << 24) |
(slice_hor_pos << 16) |
(first_mb_in_slice << 0));
OUT_BCS_BATCH(batch,
(1 << 7) |
((0x7 - (slice_data_bit_offset & 0x7)) << 0));
OUT_BCS_BATCH(batch, counter_value);
/* FIXME: dw9-dw11 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, i965_h264_context->weight128_luma_l0);
OUT_BCS_BATCH(batch, i965_h264_context->weight128_luma_l1);
OUT_BCS_BATCH(batch, i965_h264_context->weight128_chroma_l0);
OUT_BCS_BATCH(batch, i965_h264_context->weight128_chroma_l1);
 
ADVANCE_BCS_BATCH(batch);
} else {
BEGIN_BCS_BATCH(batch, 16);
OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (16 - 2));
OUT_BCS_BATCH(batch, 0); /* indirect data length for phantom slice is 0 */
OUT_BCS_BATCH(batch, 0); /* indirect data start address for phantom slice is 0 */
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag));
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
}
 
static void
i965_avc_bsd_object(VADriverContextP ctx,
struct decode_state *decode_state,
VAPictureParameterBufferH264 *pic_param,
VASliceParameterBufferH264 *slice_param,
int slice_index,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (IS_IRONLAKE(i965->intel.device_id))
ironlake_avc_bsd_object(ctx, decode_state, pic_param, slice_param, slice_index, i965_h264_context);
else
g4x_avc_bsd_object(ctx, decode_state, pic_param, slice_param, slice_index, i965_h264_context);
}
 
static void
i965_avc_bsd_phantom_slice(VADriverContextP ctx,
struct decode_state *decode_state,
VAPictureParameterBufferH264 *pic_param,
struct i965_h264_context *i965_h264_context)
{
i965_avc_bsd_object(ctx, decode_state, pic_param, NULL, 0, i965_h264_context);
}
 
static void
i965_avc_bsd_frame_store_index(VADriverContextP ctx,
VAPictureParameterBufferH264 *pic_param,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i, j;
 
assert(ARRAY_ELEMS(i965_h264_context->fsid_list) == ARRAY_ELEMS(pic_param->ReferenceFrames));
 
for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
int found = 0;
 
if (i965_h264_context->fsid_list[i].surface_id == VA_INVALID_ID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[j];
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (i965_h264_context->fsid_list[i].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
struct object_surface *obj_surface = SURFACE(i965_h264_context->fsid_list[i].surface_id);
obj_surface->flags &= ~SURFACE_REFERENCED;
 
if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) {
dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
obj_surface->flags &= ~SURFACE_REF_DIS_MASK;
}
 
if (obj_surface->free_private_data)
obj_surface->free_private_data(&obj_surface->private_data);
 
i965_h264_context->fsid_list[i].surface_id = VA_INVALID_ID;
i965_h264_context->fsid_list[i].frame_store_id = -1;
}
}
 
for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
VAPictureH264 *ref_pic = &pic_param->ReferenceFrames[i];
int found = 0;
 
if (ref_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
for (j = 0; j < ARRAY_ELEMS(i965_h264_context->fsid_list); j++) {
if (i965_h264_context->fsid_list[j].surface_id == VA_INVALID_ID)
continue;
if (i965_h264_context->fsid_list[j].surface_id == ref_pic->picture_id) {
found = 1;
break;
}
}
 
if (!found) {
int frame_idx;
struct object_surface *obj_surface = SURFACE(ref_pic->picture_id);
assert(obj_surface);
i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
for (frame_idx = 0; frame_idx < ARRAY_ELEMS(i965_h264_context->fsid_list); frame_idx++) {
for (j = 0; j < ARRAY_ELEMS(i965_h264_context->fsid_list); j++) {
if (i965_h264_context->fsid_list[j].surface_id == VA_INVALID_ID)
continue;
 
if (i965_h264_context->fsid_list[j].frame_store_id == frame_idx)
break;
}
 
if (j == ARRAY_ELEMS(i965_h264_context->fsid_list))
break;
}
 
assert(frame_idx < ARRAY_ELEMS(i965_h264_context->fsid_list));
 
for (j = 0; j < ARRAY_ELEMS(i965_h264_context->fsid_list); j++) {
if (i965_h264_context->fsid_list[j].surface_id == VA_INVALID_ID) {
i965_h264_context->fsid_list[j].surface_id = ref_pic->picture_id;
i965_h264_context->fsid_list[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list) - 1; i++) {
if (i965_h264_context->fsid_list[i].surface_id != VA_INVALID_ID &&
i965_h264_context->fsid_list[i].frame_store_id == i)
continue;
 
for (j = i + 1; j < ARRAY_ELEMS(i965_h264_context->fsid_list); j++) {
if (i965_h264_context->fsid_list[j].surface_id != VA_INVALID_ID &&
i965_h264_context->fsid_list[j].frame_store_id == i) {
VASurfaceID id = i965_h264_context->fsid_list[i].surface_id;
int frame_idx = i965_h264_context->fsid_list[i].frame_store_id;
 
i965_h264_context->fsid_list[i].surface_id = i965_h264_context->fsid_list[j].surface_id;
i965_h264_context->fsid_list[i].frame_store_id = i965_h264_context->fsid_list[j].frame_store_id;
i965_h264_context->fsid_list[j].surface_id = id;
i965_h264_context->fsid_list[j].frame_store_id = frame_idx;
break;
}
}
}
}
 
void
i965_avc_bsd_pipeline(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
{
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
VAPictureParameterBufferH264 *pic_param;
VASliceParameterBufferH264 *slice_param;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
i965_avc_bsd_frame_store_index(ctx, pic_param, i965_h264_context);
 
i965_h264_context->enable_avc_ildb = 0;
i965_h264_context->picture.i_flag = 1;
 
for (j = 0; j < decode_state->num_slice_params && i965_h264_context->enable_avc_ildb == 0; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (slice_param->disable_deblocking_filter_idc != 1) {
i965_h264_context->enable_avc_ildb = 1;
break;
}
 
slice_param++;
}
}
 
intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
 
i965_avc_bsd_img_state(ctx, decode_state, i965_h264_context);
i965_avc_bsd_qm_state(ctx, decode_state, i965_h264_context);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
 
i965_bsd_ind_obj_base_address(ctx, decode_state, j, i965_h264_context);
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
assert((slice_param->slice_type == SLICE_TYPE_I) ||
(slice_param->slice_type == SLICE_TYPE_SI) ||
(slice_param->slice_type == SLICE_TYPE_P) ||
(slice_param->slice_type == SLICE_TYPE_SP) ||
(slice_param->slice_type == SLICE_TYPE_B));
 
if (i965_h264_context->picture.i_flag &&
(slice_param->slice_type != SLICE_TYPE_I ||
slice_param->slice_type != SLICE_TYPE_SI))
i965_h264_context->picture.i_flag = 0;
 
i965_avc_bsd_slice_state(ctx, pic_param, slice_param, i965_h264_context);
i965_avc_bsd_buf_base_state(ctx, pic_param, slice_param, i965_h264_context);
i965_avc_bsd_object(ctx, decode_state, pic_param, slice_param, j, i965_h264_context);
slice_param++;
}
}
 
i965_avc_bsd_phantom_slice(ctx, decode_state, pic_param, i965_h264_context);
intel_batchbuffer_emit_mi_flush(batch);
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
}
 
void
i965_avc_bsd_decode_init(VADriverContextP ctx, void *h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
struct i965_avc_bsd_context *i965_avc_bsd_context;
dri_bo *bo;
 
assert(i965_h264_context);
i965_avc_bsd_context = &i965_h264_context->i965_avc_bsd_context;
 
dri_bo_unreference(i965_avc_bsd_context->bsd_raw_store.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"bsd raw store",
0x3000, /* at least 11520 bytes to support 120 MBs per row */
64);
assert(bo);
i965_avc_bsd_context->bsd_raw_store.bo = bo;
 
dri_bo_unreference(i965_avc_bsd_context->mpr_row_store.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"mpr row store",
0x2000, /* at least 7680 bytes to support 120 MBs per row */
64);
assert(bo);
i965_avc_bsd_context->mpr_row_store.bo = bo;
}
 
Bool
i965_avc_bsd_ternimate(struct i965_avc_bsd_context *i965_avc_bsd_context)
{
dri_bo_unreference(i965_avc_bsd_context->bsd_raw_store.bo);
dri_bo_unreference(i965_avc_bsd_context->mpr_row_store.bo);
 
return True;
}
/drivers/video/i965/i965_avc_bsd.h
0,0 → 1,50
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef __I965_AVC_BSD_H__
#define __I965_AVC_BSD_H__
 
#define DMV_SIZE 0x88000 /* 557056 bytes for a frame */
 
struct i965_avc_bsd_context
{
struct {
dri_bo *bo;
} bsd_raw_store;
 
struct {
dri_bo *bo;
} mpr_row_store;
};
 
void i965_avc_bsd_pipeline(VADriverContextP, struct decode_state *, void *h264_context);
void i965_avc_bsd_decode_init(VADriverContextP, void *h264_context);
Bool i965_avc_bsd_ternimate(struct i965_avc_bsd_context *);
 
#endif /* __I965_AVC_BSD_H__ */
 
/drivers/video/i965/i965_avc_hw_scoreboard.c
0,0 → 1,461
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_avc_hw_scoreboard.h"
#include "i965_media_h264.h"
#include "i965_media.h"
 
/* On Ironlake */
#include "shaders/h264/mc/export.inc.gen5"
 
enum {
AVC_HW_SCOREBOARD = 0,
AVC_HW_SCOREBOARD_MBAFF
};
 
static unsigned long avc_hw_scoreboard_kernel_offset[] = {
SETHWSCOREBOARD_IP_GEN5 * INST_UNIT_GEN5,
SETHWSCOREBOARD_MBAFF_IP_GEN5 * INST_UNIT_GEN5
};
 
static unsigned int avc_hw_scoreboard_constants[] = {
0x08040201,
0x00000010,
0x08000210,
0x00000000,
0x08040201,
0x08040210,
0x01000010,
0x08040200
};
 
static void
i965_avc_hw_scoreboard_surface_state(struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct i965_surface_state *ss;
dri_bo *bo;
 
bo = avc_hw_scoreboard_context->surface.ss_bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
ss = bo->virtual;
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_BUFFER;
ss->ss1.base_addr = avc_hw_scoreboard_context->surface.s_bo->offset;
ss->ss2.width = ((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) & 0x7f);
ss->ss2.height = (((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) >> 7) & 0x1fff);
ss->ss3.depth = (((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) >> 20) & 0x7f);
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
offsetof(struct i965_surface_state, ss1),
avc_hw_scoreboard_context->surface.s_bo);
dri_bo_unmap(bo);
}
 
static void
i965_avc_hw_scoreboard_interface_descriptor_table(struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct i965_interface_descriptor *desc;
dri_bo *bo;
 
bo = avc_hw_scoreboard_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
memset(desc, 0, sizeof(*desc));
desc->desc0.grf_reg_blocks = 7;
desc->desc0.kernel_start_pointer = (avc_hw_scoreboard_context->hw_kernel.bo->offset +
avc_hw_scoreboard_context->hw_kernel.offset) >> 6; /* reloc */
desc->desc1.const_urb_entry_read_offset = 0;
desc->desc1.const_urb_entry_read_len = 1;
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer =
avc_hw_scoreboard_context->binding_table.bo->offset >> 5; /*reloc */
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc0.grf_reg_blocks + avc_hw_scoreboard_context->hw_kernel.offset,
offsetof(struct i965_interface_descriptor, desc0),
avc_hw_scoreboard_context->hw_kernel.bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc3.binding_table_entry_count,
offsetof(struct i965_interface_descriptor, desc3),
avc_hw_scoreboard_context->binding_table.bo);
 
dri_bo_unmap(bo);
}
 
static void
i965_avc_hw_scoreboard_binding_table(struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
unsigned int *binding_table;
dri_bo *bo = avc_hw_scoreboard_context->binding_table.bo;
 
dri_bo_map(bo, 1);
assert(bo->virtual);
binding_table = bo->virtual;
memset(binding_table, 0, bo->size);
binding_table[0] = avc_hw_scoreboard_context->surface.ss_bo->offset;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
0,
avc_hw_scoreboard_context->surface.ss_bo);
dri_bo_unmap(bo);
}
 
static void
i965_avc_hw_scoreboard_vfe_state(struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct i965_vfe_state *vfe_state;
dri_bo *bo;
 
bo = avc_hw_scoreboard_context->vfe_state.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
vfe_state = bo->virtual;
memset(vfe_state, 0, sizeof(*vfe_state));
vfe_state->vfe1.max_threads = avc_hw_scoreboard_context->urb.num_vfe_entries - 1;
vfe_state->vfe1.urb_entry_alloc_size = avc_hw_scoreboard_context->urb.size_vfe_entry - 1;
vfe_state->vfe1.num_urb_entries = avc_hw_scoreboard_context->urb.num_vfe_entries;
vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
vfe_state->vfe1.children_present = 0;
vfe_state->vfe2.interface_descriptor_base =
avc_hw_scoreboard_context->idrt.bo->offset >> 4; /* reloc */
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_vfe_state, vfe2),
avc_hw_scoreboard_context->idrt.bo);
dri_bo_unmap(bo);
}
 
static void
i965_avc_hw_scoreboard_upload_constants(struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
unsigned char *constant_buffer;
 
if (avc_hw_scoreboard_context->curbe.upload)
return;
 
dri_bo_map(avc_hw_scoreboard_context->curbe.bo, 1);
assert(avc_hw_scoreboard_context->curbe.bo->virtual);
constant_buffer = avc_hw_scoreboard_context->curbe.bo->virtual;
memcpy(constant_buffer, avc_hw_scoreboard_constants, sizeof(avc_hw_scoreboard_constants));
dri_bo_unmap(avc_hw_scoreboard_context->curbe.bo);
avc_hw_scoreboard_context->curbe.upload = 1;
}
 
static void
i965_avc_hw_scoreboard_states_setup(struct i965_h264_context *i965_h264_context)
{
i965_avc_hw_scoreboard_surface_state(i965_h264_context);
i965_avc_hw_scoreboard_binding_table(i965_h264_context);
i965_avc_hw_scoreboard_interface_descriptor_table(i965_h264_context);
i965_avc_hw_scoreboard_vfe_state(i965_h264_context);
i965_avc_hw_scoreboard_upload_constants(i965_h264_context);
}
 
static void
i965_avc_hw_scoreboard_pipeline_select(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965_h264_context->batch;
unsigned int vfe_fence, cs_fence;
 
vfe_fence = avc_hw_scoreboard_context->urb.cs_start;
cs_fence = URB_SIZE((&i965->intel));
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
(cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_state_base_address(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_state_pointers(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
OUT_BATCH(batch, 0);
OUT_RELOC(batch, avc_hw_scoreboard_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_cs_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
OUT_BATCH(batch,
((avc_hw_scoreboard_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
(avc_hw_scoreboard_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_constant_buffer(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
OUT_RELOC(batch, avc_hw_scoreboard_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
avc_hw_scoreboard_context->urb.size_cs_entry - 1);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_hw_scoreboard_objects(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
int number_mb_cmds = 512;
int starting_mb_number = avc_hw_scoreboard_context->inline_data.starting_mb_number;
int i;
 
for (i = 0; i < avc_hw_scoreboard_context->inline_data.num_mb_cmds / 512; i++) {
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
OUT_BATCH(batch, 0); /* interface descriptor offset: 0 */
OUT_BATCH(batch, 0); /* no indirect data */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, ((number_mb_cmds << 16) |
(starting_mb_number << 0)));
OUT_BATCH(batch, avc_hw_scoreboard_context->inline_data.pic_width_in_mbs);
ADVANCE_BATCH(batch);
 
starting_mb_number += 512;
}
 
number_mb_cmds = avc_hw_scoreboard_context->inline_data.num_mb_cmds % 512;
 
if (number_mb_cmds) {
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
OUT_BATCH(batch, 0); /* interface descriptor offset: 0 */
OUT_BATCH(batch, 0); /* no indirect data */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, ((number_mb_cmds << 16) |
(starting_mb_number << 0)));
OUT_BATCH(batch, avc_hw_scoreboard_context->inline_data.pic_width_in_mbs);
ADVANCE_BATCH(batch);
}
}
 
static void
i965_avc_hw_scoreboard_pipeline_setup(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
i965_avc_hw_scoreboard_pipeline_select(ctx, i965_h264_context);
i965_avc_hw_scoreboard_state_base_address(ctx, i965_h264_context);
i965_avc_hw_scoreboard_state_pointers(ctx, i965_h264_context);
i965_avc_hw_scoreboard_urb_layout(ctx, i965_h264_context);
i965_avc_hw_scoreboard_cs_urb_layout(ctx, i965_h264_context);
i965_avc_hw_scoreboard_constant_buffer(ctx, i965_h264_context);
i965_avc_hw_scoreboard_objects(ctx, i965_h264_context);
intel_batchbuffer_end_atomic(batch);
}
 
void
i965_avc_hw_scoreboard(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
{
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
 
if (i965_h264_context->use_avc_hw_scoreboard) {
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
 
avc_hw_scoreboard_context->inline_data.num_mb_cmds = i965_h264_context->avc_it_command_mb_info.mbs;
avc_hw_scoreboard_context->inline_data.starting_mb_number = i965_h264_context->avc_it_command_mb_info.mbs;
avc_hw_scoreboard_context->inline_data.pic_width_in_mbs = i965_h264_context->picture.width_in_mbs;
avc_hw_scoreboard_context->surface.total_mbs = i965_h264_context->avc_it_command_mb_info.mbs * 2;
dri_bo_unreference(avc_hw_scoreboard_context->hw_kernel.bo);
avc_hw_scoreboard_context->hw_kernel.bo = i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo;
assert(avc_hw_scoreboard_context->hw_kernel.bo != NULL);
dri_bo_reference(avc_hw_scoreboard_context->hw_kernel.bo);
 
if (i965_h264_context->picture.mbaff_frame_flag)
avc_hw_scoreboard_context->hw_kernel.offset = avc_hw_scoreboard_kernel_offset[AVC_HW_SCOREBOARD_MBAFF];
else
avc_hw_scoreboard_context->hw_kernel.offset = avc_hw_scoreboard_kernel_offset[AVC_HW_SCOREBOARD];
 
i965_avc_hw_scoreboard_states_setup(i965_h264_context);
i965_avc_hw_scoreboard_pipeline_setup(ctx, i965_h264_context);
}
}
 
void
i965_avc_hw_scoreboard_decode_init(VADriverContextP ctx, void *h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
 
if (i965_h264_context->use_avc_hw_scoreboard) {
struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
dri_bo *bo;
 
if (avc_hw_scoreboard_context->curbe.bo == NULL) {
bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096, 64);
assert(bo);
avc_hw_scoreboard_context->curbe.bo = bo;
avc_hw_scoreboard_context->curbe.upload = 0;
}
 
dri_bo_unreference(avc_hw_scoreboard_context->surface.s_bo);
avc_hw_scoreboard_context->surface.s_bo = i965_h264_context->avc_it_command_mb_info.bo;
assert(avc_hw_scoreboard_context->surface.s_bo != NULL);
dri_bo_reference(avc_hw_scoreboard_context->surface.s_bo);
 
dri_bo_unreference(avc_hw_scoreboard_context->surface.ss_bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state",
sizeof(struct i965_surface_state), 32);
assert(bo);
avc_hw_scoreboard_context->surface.ss_bo = bo;
 
dri_bo_unreference(avc_hw_scoreboard_context->binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"binding table",
MAX_MEDIA_SURFACES * sizeof(unsigned int), 32);
assert(bo);
avc_hw_scoreboard_context->binding_table.bo = bo;
 
dri_bo_unreference(avc_hw_scoreboard_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"interface discriptor",
MAX_INTERFACE_DESC * sizeof(struct i965_interface_descriptor), 16);
assert(bo);
avc_hw_scoreboard_context->idrt.bo = bo;
 
dri_bo_unreference(avc_hw_scoreboard_context->vfe_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vfe state",
sizeof(struct i965_vfe_state), 32);
assert(bo);
avc_hw_scoreboard_context->vfe_state.bo = bo;
 
avc_hw_scoreboard_context->urb.num_vfe_entries = 32;
avc_hw_scoreboard_context->urb.size_vfe_entry = 2;
avc_hw_scoreboard_context->urb.num_cs_entries = 1;
avc_hw_scoreboard_context->urb.size_cs_entry = 1;
avc_hw_scoreboard_context->urb.vfe_start = 0;
avc_hw_scoreboard_context->urb.cs_start = avc_hw_scoreboard_context->urb.vfe_start +
avc_hw_scoreboard_context->urb.num_vfe_entries * avc_hw_scoreboard_context->urb.size_vfe_entry;
assert(avc_hw_scoreboard_context->urb.cs_start +
avc_hw_scoreboard_context->urb.num_cs_entries * avc_hw_scoreboard_context->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
}
}
 
Bool
i965_avc_hw_scoreboard_ternimate(struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context)
{
dri_bo_unreference(avc_hw_scoreboard_context->curbe.bo);
avc_hw_scoreboard_context->curbe.bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->surface.ss_bo);
avc_hw_scoreboard_context->surface.ss_bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->surface.s_bo);
avc_hw_scoreboard_context->surface.s_bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->binding_table.bo);
avc_hw_scoreboard_context->binding_table.bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->idrt.bo);
avc_hw_scoreboard_context->idrt.bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->vfe_state.bo);
avc_hw_scoreboard_context->vfe_state.bo = NULL;
 
dri_bo_unreference(avc_hw_scoreboard_context->hw_kernel.bo);
avc_hw_scoreboard_context->hw_kernel.bo = NULL;
 
return True;
}
/drivers/video/i965/i965_avc_hw_scoreboard.h
0,0 → 1,85
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef __I965_AVC_HW_SCOREBOARD_H__
#define __I965_AVC_HW_SCOREBOARD_H__
 
struct i965_avc_hw_scoreboard_context
{
struct {
unsigned int num_mb_cmds;
unsigned int starting_mb_number;
unsigned int pic_width_in_mbs;
} inline_data;
 
struct {
dri_bo *ss_bo;
dri_bo *s_bo;
unsigned int total_mbs;
} surface;
 
struct {
dri_bo *bo;
} binding_table;
 
struct {
dri_bo *bo;
} idrt;
 
struct {
dri_bo *bo;
} vfe_state;
 
struct {
dri_bo *bo;
int upload;
} curbe;
 
struct {
dri_bo *bo;
unsigned long offset;
} hw_kernel;
 
struct {
unsigned int vfe_start;
unsigned int cs_start;
 
unsigned int num_vfe_entries;
unsigned int num_cs_entries;
 
unsigned int size_vfe_entry;
unsigned int size_cs_entry;
} urb;
};
 
void i965_avc_hw_scoreboard(VADriverContextP, struct decode_state *, void *h264_context);
void i965_avc_hw_scoreboard_decode_init(VADriverContextP, void *h264_context);
Bool i965_avc_hw_scoreboard_ternimate(struct i965_avc_hw_scoreboard_context *);
 
#endif /* __I965_AVC_HW_SCOREBOARD_H__ */
 
/drivers/video/i965/i965_avc_ildb.c
0,0 → 1,653
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_avc_ildb.h"
#include "i965_media_h264.h"
#include "i965_media.h"
 
/* On Cantiga */
#include "shaders/h264/mc/export.inc"
 
/* On Ironlake */
#include "shaders/h264/mc/export.inc.gen5"
 
#define PICTURE_FRAME 0
#define PICTURE_FIELD 1
#define PICTURE_MBAFF 2
 
enum {
AVC_ILDB_ROOT_Y_ILDB_FRAME,
AVC_ILDB_CHILD_Y_ILDB_FRAME,
AVC_ILDB_ROOT_UV_ILDB_FRAME,
AVC_ILDB_CHILD_UV_ILDB_FRAME,
AVC_ILDB_ROOT_Y_ILDB_FIELD,
AVC_ILDB_CHILD_Y_ILDB_FIELD,
AVC_ILDB_ROOT_UV_ILDB_FIELD,
AVC_ILDB_CHILD_UV_ILDB_FIELD,
AVC_ILDB_ROOT_Y_ILDB_MBAFF,
AVC_ILDB_CHILD_Y_ILDB_MBAFF,
AVC_ILDB_ROOT_UV_ILDB_MBAFF,
AVC_ILDB_CHILD_UV_ILDB_MBAFF
};
 
static unsigned long avc_ildb_kernel_offset_gen4[] = {
AVC_ILDB_ROOT_Y_ILDB_FRAME_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_Y_ILDB_FRAME_IP * INST_UNIT_GEN4,
AVC_ILDB_ROOT_UV_ILDB_FRAME_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_UV_ILDB_FRAME_IP * INST_UNIT_GEN4,
AVC_ILDB_ROOT_Y_ILDB_FIELD_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_Y_ILDB_FIELD_IP * INST_UNIT_GEN4,
AVC_ILDB_ROOT_UV_ILDB_FIELD_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_UV_ILDB_FIELD_IP * INST_UNIT_GEN4,
AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP * INST_UNIT_GEN4,
AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP * INST_UNIT_GEN4,
AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP * INST_UNIT_GEN4
};
 
static unsigned long avc_ildb_kernel_offset_gen5[] = {
AVC_ILDB_ROOT_Y_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_Y_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_ROOT_UV_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_UV_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_ROOT_Y_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_Y_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_ROOT_UV_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_UV_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5
};
 
struct avc_ildb_root_input
{
unsigned int blocks_per_row : 16;
unsigned int blocks_per_column : 16;
 
unsigned int picture_type : 16;
unsigned int max_concurrent_threads : 16;
 
unsigned int debug_field : 16;
unsigned int mbaff_frame_flag : 1;
unsigned int bottom_field_flag : 1;
unsigned int control_data_expansion_flag : 1;
unsigned int chroma_format : 1;
unsigned int pad0 : 12;
 
unsigned int ramp_constant_0;
unsigned int ramp_constant_1;
 
int constant_0 : 8;
int constant_1 : 8;
int pad1 : 16;
 
unsigned int pad2;
unsigned int pad3;
};
 
#define NUM_AVC_ILDB_INTERFACES ARRAY_ELEMS(avc_ildb_kernel_offset_gen4)
static unsigned long *avc_ildb_kernel_offset = NULL;
 
static void
i965_avc_ildb_surface_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct i965_surface_state *ss;
struct object_surface *obj_surface;
VAPictureParameterBufferH264 *pic_param;
VAPictureH264 *va_pic;
dri_bo *bo;
int i;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
 
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].s_bo = i965_h264_context->avc_ildb_data.bo;
dri_bo_reference(avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].s_bo);
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].offset = 0;
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].surface_type = I965_SURFACE_BUFFER;
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].width = ((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) & 0x7f);
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].height = (((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) >> 7) & 0x1fff);
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].depth = (((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) >> 20) & 0x7f);
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].pitch = EDGE_CONTROL_DATA_IN_BTYES - 1;
avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].is_target = 0;
avc_ildb_context->surface[SURFACE_SRC_Y].s_bo = obj_surface->bo;
dri_bo_reference(avc_ildb_context->surface[SURFACE_SRC_Y].s_bo);
avc_ildb_context->surface[SURFACE_SRC_Y].offset = 0;
avc_ildb_context->surface[SURFACE_SRC_Y].surface_type = I965_SURFACE_2D;
avc_ildb_context->surface[SURFACE_SRC_Y].format = I965_SURFACEFORMAT_R8_SINT;
avc_ildb_context->surface[SURFACE_SRC_Y].width = obj_surface->width / 4 - 1;
avc_ildb_context->surface[SURFACE_SRC_Y].height = obj_surface->height - 1;
avc_ildb_context->surface[SURFACE_SRC_Y].depth = 0;
avc_ildb_context->surface[SURFACE_SRC_Y].pitch = obj_surface->width - 1;
avc_ildb_context->surface[SURFACE_SRC_Y].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
avc_ildb_context->surface[SURFACE_SRC_Y].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
avc_ildb_context->surface[SURFACE_SRC_Y].is_target = 0;
avc_ildb_context->surface[SURFACE_SRC_UV].s_bo = obj_surface->bo;
dri_bo_reference(avc_ildb_context->surface[SURFACE_SRC_UV].s_bo);
avc_ildb_context->surface[SURFACE_SRC_UV].offset = obj_surface->width * obj_surface->height;
avc_ildb_context->surface[SURFACE_SRC_UV].surface_type = I965_SURFACE_2D;
avc_ildb_context->surface[SURFACE_SRC_UV].format = I965_SURFACEFORMAT_R8G8_SINT;
avc_ildb_context->surface[SURFACE_SRC_UV].width = obj_surface->width / 4 - 1;
avc_ildb_context->surface[SURFACE_SRC_UV].height = obj_surface->height / 2 - 1;
avc_ildb_context->surface[SURFACE_SRC_UV].depth = 0;
avc_ildb_context->surface[SURFACE_SRC_UV].pitch = obj_surface->width - 1;
avc_ildb_context->surface[SURFACE_SRC_UV].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
avc_ildb_context->surface[SURFACE_SRC_UV].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
avc_ildb_context->surface[SURFACE_SRC_UV].is_target = 0;
 
avc_ildb_context->surface[SURFACE_DEST_Y].s_bo = obj_surface->bo;
dri_bo_reference(avc_ildb_context->surface[SURFACE_DEST_Y].s_bo);
avc_ildb_context->surface[SURFACE_DEST_Y].offset = 0;
avc_ildb_context->surface[SURFACE_DEST_Y].surface_type = I965_SURFACE_2D;
avc_ildb_context->surface[SURFACE_DEST_Y].format = I965_SURFACEFORMAT_R8_SINT;
avc_ildb_context->surface[SURFACE_DEST_Y].width = obj_surface->width / 4 - 1;
avc_ildb_context->surface[SURFACE_DEST_Y].height = obj_surface->height - 1;
avc_ildb_context->surface[SURFACE_DEST_Y].depth = 0;
avc_ildb_context->surface[SURFACE_DEST_Y].pitch = obj_surface->width - 1;
avc_ildb_context->surface[SURFACE_DEST_Y].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
avc_ildb_context->surface[SURFACE_DEST_Y].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
avc_ildb_context->surface[SURFACE_DEST_Y].is_target = 1;
 
avc_ildb_context->surface[SURFACE_DEST_UV].s_bo = obj_surface->bo;
dri_bo_reference(avc_ildb_context->surface[SURFACE_DEST_UV].s_bo);
avc_ildb_context->surface[SURFACE_DEST_UV].offset = obj_surface->width * obj_surface->height;
avc_ildb_context->surface[SURFACE_DEST_UV].surface_type = I965_SURFACE_2D;
avc_ildb_context->surface[SURFACE_DEST_UV].format = I965_SURFACEFORMAT_R8G8_SINT;
avc_ildb_context->surface[SURFACE_DEST_UV].width = obj_surface->width / 4 - 1;
avc_ildb_context->surface[SURFACE_DEST_UV].height = obj_surface->height / 2 - 1;
avc_ildb_context->surface[SURFACE_DEST_UV].depth = 0;
avc_ildb_context->surface[SURFACE_DEST_UV].pitch = obj_surface->width - 1;
avc_ildb_context->surface[SURFACE_DEST_UV].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
avc_ildb_context->surface[SURFACE_DEST_UV].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
avc_ildb_context->surface[SURFACE_DEST_UV].is_target = 1;
 
for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
bo = avc_ildb_context->surface[i].ss_bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
ss = bo->virtual;
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = avc_ildb_context->surface[i].surface_type;
ss->ss0.surface_format = avc_ildb_context->surface[i].format;
ss->ss0.vert_line_stride = avc_ildb_context->surface[i].vert_line_stride;
ss->ss0.vert_line_stride_ofs = avc_ildb_context->surface[i].vert_line_stride_ofs;
ss->ss1.base_addr = avc_ildb_context->surface[i].s_bo->offset + avc_ildb_context->surface[i].offset;
ss->ss2.width = avc_ildb_context->surface[i].width;
ss->ss2.height = avc_ildb_context->surface[i].height;
ss->ss3.depth = avc_ildb_context->surface[i].depth;
ss->ss3.pitch = avc_ildb_context->surface[i].pitch;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_RENDER,
avc_ildb_context->surface[i].is_target ? I915_GEM_DOMAIN_RENDER : 0,
avc_ildb_context->surface[i].offset,
offsetof(struct i965_surface_state, ss1),
avc_ildb_context->surface[i].s_bo);
dri_bo_unmap(bo);
}
}
 
static void
i965_avc_ildb_binding_table(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
unsigned int *binding_table;
dri_bo *bo = avc_ildb_context->binding_table.bo;
int i;
 
dri_bo_map(bo, 1);
assert(bo->virtual);
binding_table = bo->virtual;
memset(binding_table, 0, bo->size);
 
for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
binding_table[i] = avc_ildb_context->surface[i].ss_bo->offset;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
i * sizeof(*binding_table),
avc_ildb_context->surface[i].ss_bo);
}
 
dri_bo_unmap(bo);
}
 
static void
i965_avc_ildb_interface_descriptor_table(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct i965_interface_descriptor *desc;
dri_bo *bo;
int i;
 
bo = avc_ildb_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
 
for (i = 0; i < NUM_AVC_ILDB_INTERFACES; i++) {
int kernel_offset = avc_ildb_kernel_offset[i];
memset(desc, 0, sizeof(*desc));
desc->desc0.grf_reg_blocks = 7;
desc->desc0.kernel_start_pointer = (i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo->offset + kernel_offset) >> 6; /* reloc */
desc->desc1.const_urb_entry_read_offset = 0;
desc->desc1.const_urb_entry_read_len = ((i == AVC_ILDB_ROOT_Y_ILDB_FRAME ||
i == AVC_ILDB_ROOT_Y_ILDB_FIELD ||
i == AVC_ILDB_ROOT_Y_ILDB_MBAFF) ? 1 : 0);
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer =
avc_ildb_context->binding_table.bo->offset >> 5; /*reloc */
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc0.grf_reg_blocks + kernel_offset,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc3.binding_table_entry_count,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
avc_ildb_context->binding_table.bo);
desc++;
}
 
dri_bo_unmap(bo);
}
 
static void
i965_avc_ildb_vfe_state(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct i965_vfe_state *vfe_state;
dri_bo *bo;
 
bo = avc_ildb_context->vfe_state.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
vfe_state = bo->virtual;
memset(vfe_state, 0, sizeof(*vfe_state));
vfe_state->vfe1.max_threads = 0;
vfe_state->vfe1.urb_entry_alloc_size = avc_ildb_context->urb.size_vfe_entry - 1;
vfe_state->vfe1.num_urb_entries = avc_ildb_context->urb.num_vfe_entries;
vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
vfe_state->vfe1.children_present = 1;
vfe_state->vfe2.interface_descriptor_base =
avc_ildb_context->idrt.bo->offset >> 4; /* reloc */
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_vfe_state, vfe2),
avc_ildb_context->idrt.bo);
dri_bo_unmap(bo);
}
 
static void
i965_avc_ildb_upload_constants(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
VAPictureParameterBufferH264 *pic_param;
struct avc_ildb_root_input *root_input;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
dri_bo_map(avc_ildb_context->curbe.bo, 1);
assert(avc_ildb_context->curbe.bo->virtual);
root_input = avc_ildb_context->curbe.bo->virtual;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
root_input->max_concurrent_threads = 76; /* 72 - 2 + 8 - 2 */
} else {
root_input->max_concurrent_threads = 54; /* 50 - 2 + 8 - 2 */
}
 
if (pic_param->pic_fields.bits.field_pic_flag)
root_input->picture_type = PICTURE_FIELD;
else {
if (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag)
root_input->picture_type = PICTURE_MBAFF;
else
root_input->picture_type = PICTURE_FRAME;
}
 
avc_ildb_context->picture_type = root_input->picture_type;
root_input->blocks_per_row = pic_param->picture_width_in_mbs_minus1 + 1;
root_input->blocks_per_column = (pic_param->picture_height_in_mbs_minus1 + 1) /
(1 + (root_input->picture_type != PICTURE_FRAME));
avc_ildb_context->mbs_per_picture = (pic_param->picture_width_in_mbs_minus1 + 1) *
(pic_param->picture_height_in_mbs_minus1 + 1);
root_input->mbaff_frame_flag = (root_input->picture_type == PICTURE_MBAFF);
root_input->bottom_field_flag = !!(pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD);
root_input->control_data_expansion_flag = 1; /* Always 1 on G4x+ */
root_input->chroma_format = (pic_param->seq_fields.bits.chroma_format_idc != 1); /* 0=4:0:0, 1=4:2:0 */
root_input->ramp_constant_0 = 0x03020100;
root_input->ramp_constant_1 = 0x07060504;
 
root_input->constant_0 = -2;
root_input->constant_1 = 1;
 
dri_bo_unmap(avc_ildb_context->curbe.bo);
}
 
static void
i965_avc_ildb_states_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_h264_context *i965_h264_context)
{
i965_avc_ildb_surface_state(ctx, decode_state, i965_h264_context);
i965_avc_ildb_binding_table(ctx, i965_h264_context);
i965_avc_ildb_interface_descriptor_table(ctx, i965_h264_context);
i965_avc_ildb_vfe_state(ctx, i965_h264_context);
i965_avc_ildb_upload_constants(ctx, decode_state, i965_h264_context);
}
 
static void
i965_avc_ildb_pipeline_select(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
unsigned int vfe_fence, cs_fence;
 
vfe_fence = avc_ildb_context->urb.cs_start;
cs_fence = URB_SIZE((&i965->intel));
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
(cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_state_base_address(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
} else {
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
}
 
static void
i965_avc_ildb_state_pointers(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
OUT_BATCH(batch, 0);
OUT_RELOC(batch, avc_ildb_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_cs_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
OUT_BATCH(batch,
((avc_ildb_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
(avc_ildb_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_constant_buffer(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
OUT_RELOC(batch, avc_ildb_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
avc_ildb_context->urb.size_cs_entry - 1);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_objects(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
 
switch (avc_ildb_context->picture_type) {
case PICTURE_FRAME:
OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_FRAME);
break;
 
case PICTURE_FIELD:
OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_FIELD);
break;
 
case PICTURE_MBAFF:
OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_MBAFF);
break;
 
default:
assert(0);
OUT_BATCH(batch, 0);
break;
}
 
OUT_BATCH(batch, 0); /* no indirect data */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_avc_ildb_pipeline_setup(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
{
struct intel_batchbuffer *batch = i965_h264_context->batch;
 
intel_batchbuffer_emit_mi_flush(batch);
i965_avc_ildb_pipeline_select(ctx, i965_h264_context);
i965_avc_ildb_state_base_address(ctx, i965_h264_context);
i965_avc_ildb_state_pointers(ctx, i965_h264_context);
i965_avc_ildb_urb_layout(ctx, i965_h264_context);
i965_avc_ildb_cs_urb_layout(ctx, i965_h264_context);
i965_avc_ildb_constant_buffer(ctx, i965_h264_context);
i965_avc_ildb_objects(ctx, i965_h264_context);
}
 
void
i965_avc_ildb(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
{
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
 
if (i965_h264_context->enable_avc_ildb) {
i965_avc_ildb_states_setup(ctx, decode_state, i965_h264_context);
i965_avc_ildb_pipeline_setup(ctx, i965_h264_context);
}
}
 
void
i965_avc_ildb_decode_init(VADriverContextP ctx, void *h264_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;;
dri_bo *bo;
int i;
 
dri_bo_unreference(avc_ildb_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096, 64);
assert(bo);
avc_ildb_context->curbe.bo = bo;
 
dri_bo_unreference(avc_ildb_context->binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"binding table",
NUM_AVC_ILDB_SURFACES * sizeof(unsigned int), 32);
assert(bo);
avc_ildb_context->binding_table.bo = bo;
 
dri_bo_unreference(avc_ildb_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"interface discriptor",
NUM_AVC_ILDB_INTERFACES * sizeof(struct i965_interface_descriptor), 16);
assert(bo);
avc_ildb_context->idrt.bo = bo;
 
dri_bo_unreference(avc_ildb_context->vfe_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vfe state",
sizeof(struct i965_vfe_state), 32);
assert(bo);
avc_ildb_context->vfe_state.bo = bo;
 
avc_ildb_context->urb.num_vfe_entries = 1;
avc_ildb_context->urb.size_vfe_entry = 640;
avc_ildb_context->urb.num_cs_entries = 1;
avc_ildb_context->urb.size_cs_entry = 1;
avc_ildb_context->urb.vfe_start = 0;
avc_ildb_context->urb.cs_start = avc_ildb_context->urb.vfe_start +
avc_ildb_context->urb.num_vfe_entries * avc_ildb_context->urb.size_vfe_entry;
assert(avc_ildb_context->urb.cs_start +
avc_ildb_context->urb.num_cs_entries * avc_ildb_context->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
 
for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
dri_bo_unreference(avc_ildb_context->surface[i].s_bo);
avc_ildb_context->surface[i].s_bo = NULL;
 
dri_bo_unreference(avc_ildb_context->surface[i].ss_bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state",
sizeof(struct i965_surface_state), 32);
assert(bo);
avc_ildb_context->surface[i].ss_bo = bo;
}
 
/* kernel offset */
assert(NUM_AVC_ILDB_INTERFACES == ARRAY_ELEMS(avc_ildb_kernel_offset_gen5));
 
if (IS_IRONLAKE(i965->intel.device_id)) {
avc_ildb_kernel_offset = avc_ildb_kernel_offset_gen5;
} else {
avc_ildb_kernel_offset = avc_ildb_kernel_offset_gen4;
}
}
 
Bool
i965_avc_ildb_ternimate(struct i965_avc_ildb_context *avc_ildb_context)
{
int i;
 
dri_bo_unreference(avc_ildb_context->curbe.bo);
avc_ildb_context->curbe.bo = NULL;
 
dri_bo_unreference(avc_ildb_context->binding_table.bo);
avc_ildb_context->binding_table.bo = NULL;
 
dri_bo_unreference(avc_ildb_context->idrt.bo);
avc_ildb_context->idrt.bo = NULL;
 
dri_bo_unreference(avc_ildb_context->vfe_state.bo);
avc_ildb_context->vfe_state.bo = NULL;
 
for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
dri_bo_unreference(avc_ildb_context->surface[i].ss_bo);
avc_ildb_context->surface[i].ss_bo = NULL;
 
dri_bo_unreference(avc_ildb_context->surface[i].s_bo);
avc_ildb_context->surface[i].s_bo = NULL;
}
 
return True;
}
/drivers/video/i965/i965_avc_ildb.h
0,0 → 1,96
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef __I965_AVC_ILDB_H__
#define __I965_AVC_ILDB_H__
 
#define SURFACE_EDGE_CONTROL_DATA 0
#define SURFACE_SRC_Y 1
#define SURFACE_SRC_UV 2
#define SURFACE_DEST_Y 3
#define SURFACE_DEST_UV 4
 
#define NUM_AVC_ILDB_SURFACES 5
 
#define EDGE_CONTROL_DATA_IN_DWS 16
#define EDGE_CONTROL_DATA_IN_BTYES 64
 
struct i965_avc_ildb_context
{
struct {
dri_bo *bo;
} curbe;
 
struct {
dri_bo *ss_bo;
dri_bo *s_bo;
unsigned long offset;
int surface_type;
int width;
int height;
int depth;
int pitch;
int format;
int vert_line_stride;
int vert_line_stride_ofs;
int is_target;
} surface[NUM_AVC_ILDB_SURFACES];
 
struct {
dri_bo *bo;
} binding_table;
 
struct {
dri_bo *bo;
} idrt;
 
struct {
dri_bo *bo;
} vfe_state;
 
struct {
unsigned int vfe_start;
unsigned int cs_start;
 
unsigned int num_vfe_entries;
unsigned int num_cs_entries;
 
unsigned int size_vfe_entry;
unsigned int size_cs_entry;
} urb;
 
int picture_type;
int mbs_per_picture;
};
 
void i965_avc_ildb(VADriverContextP, struct decode_state *, void *h264_context);
void i965_avc_ildb_decode_init(VADriverContextP, void *h264_context);
Bool i965_avc_ildb_ternimate(struct i965_avc_ildb_context *);
 
#endif /* __I965_AVC_ILDB_H__ */
 
/drivers/video/i965/i965_decoder.h
0,0 → 1,91
/*
* Copyright (C) 2012 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
 
#ifndef I965_DECODER_H
#define I965_DECODER_H
 
#include <stdint.h>
#include <stdlib.h>
 
#include <va/va.h>
#include <intel_bufmgr.h>
 
#define MAX_GEN_REFERENCE_FRAMES 16
 
typedef struct gen_frame_store GenFrameStore;
struct gen_frame_store {
VASurfaceID surface_id;
int frame_store_id;
};
 
typedef struct gen_buffer GenBuffer;
struct gen_buffer {
dri_bo *bo;
int valid;
};
 
#if HAVE_GEN_AVC_SURFACE
 
//static pthread_mutex_t free_avc_surface_lock = PTHREAD_MUTEX_INITIALIZER;
 
typedef struct gen_avc_surface GenAvcSurface;
struct gen_avc_surface
{
dri_bo *dmv_top;
dri_bo *dmv_bottom;
int dmv_bottom_flag;
};
 
static void
gen_free_avc_surface(void **data)
{
GenAvcSurface *avc_surface;
 
// pthread_mutex_lock(&free_avc_surface_lock);
 
avc_surface = *data;
 
if (!avc_surface) {
// pthread_mutex_unlock(&free_avc_surface_lock);
return;
}
 
 
dri_bo_unreference(avc_surface->dmv_top);
avc_surface->dmv_top = NULL;
dri_bo_unreference(avc_surface->dmv_bottom);
avc_surface->dmv_bottom = NULL;
 
free(avc_surface);
*data = NULL;
 
// pthread_mutex_unlock(&free_avc_surface_lock);
}
 
#endif
 
extern struct hw_context *
gen75_dec_hw_context_init(VADriverContextP ctx, VAProfile profile);
 
#endif /* I965_DECODER_H */
/drivers/video/i965/i965_decoder_utils.c
0,0 → 1,327
/*
* Copyright (C) 2006-2012 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
 
#include "sysdeps.h"
#include <alloca.h>
#include "intel_batchbuffer.h"
#include "i965_decoder_utils.h"
#include "i965_drv_video.h"
#include "i965_defines.h"
 
/* Set reference surface if backing store exists */
static inline int
set_ref_frame(
struct i965_driver_data *i965,
GenFrameStore *ref_frame,
VASurfaceID va_surface
)
{
struct object_surface *obj_surface;
 
if (va_surface == VA_INVALID_ID)
return 0;
 
obj_surface = SURFACE(va_surface);
if (!obj_surface || !obj_surface->bo)
return 0;
 
ref_frame->surface_id = va_surface;
return 1;
}
 
/* Check wether codec layer incorrectly fills in slice_vertical_position */
int
mpeg2_wa_slice_vertical_position(
struct decode_state *decode_state,
VAPictureParameterBufferMPEG2 *pic_param
)
{
unsigned int i, j, mb_height, vpos, last_vpos = 0;
 
/* Assume progressive sequence if we got a progressive frame */
if (pic_param->picture_coding_extension.bits.progressive_frame)
return 0;
 
/* Wait for a field coded picture */
if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_FRAME)
return -1;
 
assert(decode_state && decode_state->slice_params);
 
mb_height = (pic_param->vertical_size + 31) / 32;
 
for (j = 0; j < decode_state->num_slice_params; j++) {
struct buffer_store * const buffer_store =
decode_state->slice_params[j];
 
for (i = 0; i < buffer_store->num_elements; i++) {
VASliceParameterBufferMPEG2 * const slice_param =
((VASliceParameterBufferMPEG2 *)buffer_store->buffer) + i;
 
vpos = slice_param->slice_vertical_position;
if (vpos >= mb_height || vpos == last_vpos + 2) {
WARN_ONCE("codec layer incorrectly fills in MPEG-2 slice_vertical_position. Workaround applied\n");
return 1;
}
last_vpos = vpos;
}
}
return 0;
}
 
/* Build MPEG-2 reference frames array */
void
mpeg2_set_reference_surfaces(
VADriverContextP ctx,
GenFrameStore ref_frames[MAX_GEN_REFERENCE_FRAMES],
struct decode_state *decode_state,
VAPictureParameterBufferMPEG2 *pic_param
)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
VASurfaceID va_surface;
unsigned pic_structure, is_second_field, n = 0;
 
pic_structure = pic_param->picture_coding_extension.bits.picture_structure;
is_second_field = pic_structure != MPEG_FRAME &&
!pic_param->picture_coding_extension.bits.is_first_field;
 
ref_frames[0].surface_id = VA_INVALID_ID;
 
/* Reference frames are indexed by frame store ID (0:top, 1:bottom) */
switch (pic_param->picture_coding_type) {
case MPEG_P_PICTURE:
if (is_second_field && pic_structure == MPEG_BOTTOM_FIELD) {
va_surface = decode_state->current_render_target;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
}
va_surface = pic_param->forward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
break;
 
case MPEG_B_PICTURE:
va_surface = pic_param->forward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
va_surface = pic_param->backward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
break;
}
 
while (n != 2)
ref_frames[n++].surface_id = ref_frames[0].surface_id;
 
if (pic_param->picture_coding_extension.bits.progressive_frame)
return;
 
ref_frames[2].surface_id = VA_INVALID_ID;
 
/* Bottom field pictures used as reference */
switch (pic_param->picture_coding_type) {
case MPEG_P_PICTURE:
if (is_second_field && pic_structure == MPEG_TOP_FIELD) {
va_surface = decode_state->current_render_target;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
}
va_surface = pic_param->forward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
break;
 
case MPEG_B_PICTURE:
va_surface = pic_param->forward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
va_surface = pic_param->backward_reference_picture;
n += set_ref_frame(i965, &ref_frames[n], va_surface);
break;
}
 
while (n != 4)
ref_frames[n++].surface_id = ref_frames[2].surface_id;
}
 
/* Generate flat scaling matrices for H.264 decoding */
void
avc_gen_default_iq_matrix(VAIQMatrixBufferH264 *iq_matrix)
{
/* Flat_4x4_16 */
memset(&iq_matrix->ScalingList4x4, 16, sizeof(iq_matrix->ScalingList4x4));
 
/* Flat_8x8_16 */
memset(&iq_matrix->ScalingList8x8, 16, sizeof(iq_matrix->ScalingList8x8));
}
 
/* Get first macroblock bit offset for BSD, minus EPB count (AVC) */
/* XXX: slice_data_bit_offset does not account for EPB */
unsigned int
avc_get_first_mb_bit_offset(
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *slice_param,
unsigned int mode_flag
)
{
unsigned int slice_data_bit_offset = slice_param->slice_data_bit_offset;
 
if (mode_flag == ENTROPY_CABAC)
slice_data_bit_offset = ALIGN(slice_data_bit_offset, 0x8);
return slice_data_bit_offset;
}
 
/* Get first macroblock bit offset for BSD, with EPB count (AVC) */
/* XXX: slice_data_bit_offset does not account for EPB */
unsigned int
avc_get_first_mb_bit_offset_with_epb(
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *slice_param,
unsigned int mode_flag
)
{
unsigned int in_slice_data_bit_offset = slice_param->slice_data_bit_offset;
unsigned int out_slice_data_bit_offset;
unsigned int i, j, n, buf_size, data_size, header_size;
uint8_t *buf;
int ret;
 
header_size = slice_param->slice_data_bit_offset / 8;
data_size = slice_param->slice_data_size - slice_param->slice_data_offset;
buf_size = (header_size * 3 + 1) / 2; // Max possible header size (x1.5)
if (buf_size > data_size)
buf_size = data_size;
 
buf = alloca(buf_size);
ret = dri_bo_get_subdata(
slice_data_bo, slice_param->slice_data_offset,
buf_size, buf
);
assert(ret == 0);
 
for (i = 2, j = 2, n = 0; i < buf_size && j < header_size; i++, j++) {
if (buf[i] == 0x03 && buf[i - 1] == 0x00 && buf[i - 2] == 0x00)
i += 2, j++, n++;
}
out_slice_data_bit_offset = in_slice_data_bit_offset + n * 8;
 
if (mode_flag == ENTROPY_CABAC)
out_slice_data_bit_offset = ALIGN(out_slice_data_bit_offset, 0x8);
return out_slice_data_bit_offset;
}
 
static inline uint8_t
get_ref_idx_state_1(const VAPictureH264 *va_pic, unsigned int frame_store_id)
{
const unsigned int is_long_term =
!!(va_pic->flags & VA_PICTURE_H264_LONG_TERM_REFERENCE);
const unsigned int is_top_field =
!!(va_pic->flags & VA_PICTURE_H264_TOP_FIELD);
const unsigned int is_bottom_field =
!!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
 
return ((is_long_term << 6) |
((is_top_field ^ is_bottom_field ^ 1) << 5) |
(frame_store_id << 1) |
((is_top_field ^ 1) & is_bottom_field));
}
 
/* Fill in Reference List Entries (Gen5+: ILK, SNB, IVB) */
void
gen5_fill_avc_ref_idx_state(
uint8_t state[32],
const VAPictureH264 ref_list[32],
unsigned int ref_list_count,
const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
)
{
unsigned int i, n, frame_idx;
 
for (i = 0, n = 0; i < ref_list_count; i++) {
const VAPictureH264 * const va_pic = &ref_list[i];
 
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
for (frame_idx = 0; frame_idx < MAX_GEN_REFERENCE_FRAMES; frame_idx++) {
const GenFrameStore * const fs = &frame_store[frame_idx];
if (fs->surface_id != VA_INVALID_ID &&
fs->surface_id == va_pic->picture_id) {
assert(frame_idx == fs->frame_store_id);
break;
}
}
assert(frame_idx < MAX_GEN_REFERENCE_FRAMES);
state[n++] = get_ref_idx_state_1(va_pic, frame_idx);
}
 
for (; n < 32; n++)
state[n] = 0xff;
}
 
/* Emit Reference List Entries (Gen6+: SNB, IVB) */
static void
gen6_send_avc_ref_idx_state_1(
struct intel_batchbuffer *batch,
unsigned int list,
const VAPictureH264 *ref_list,
unsigned int ref_list_count,
const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
)
{
uint8_t ref_idx_state[32];
 
BEGIN_BCS_BATCH(batch, 10);
OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | (10 - 2));
OUT_BCS_BATCH(batch, list);
gen5_fill_avc_ref_idx_state(
ref_idx_state,
ref_list, ref_list_count,
frame_store
);
intel_batchbuffer_data(batch, ref_idx_state, sizeof(ref_idx_state));
ADVANCE_BCS_BATCH(batch);
}
 
void
gen6_send_avc_ref_idx_state(
struct intel_batchbuffer *batch,
const VASliceParameterBufferH264 *slice_param,
const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
)
{
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI)
return;
 
/* RefPicList0 */
gen6_send_avc_ref_idx_state_1(
batch, 0,
slice_param->RefPicList0, slice_param->num_ref_idx_l0_active_minus1 + 1,
frame_store
);
 
if (slice_param->slice_type != SLICE_TYPE_B)
return;
 
/* RefPicList1 */
gen6_send_avc_ref_idx_state_1(
batch, 1,
slice_param->RefPicList1, slice_param->num_ref_idx_l1_active_minus1 + 1,
frame_store
);
}
/drivers/video/i965/i965_decoder_utils.h
0,0 → 1,78
/*
* Copyright (C) 2006-2012 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
 
#ifndef I965_DECODER_UTILS_H
#define I965_DECODER_UTILS_H
 
#include "i965_decoder.h"
#include "intel_batchbuffer.h"
 
struct decode_state;
 
int
mpeg2_wa_slice_vertical_position(
struct decode_state *decode_state,
VAPictureParameterBufferMPEG2 *pic_param
);
 
void
mpeg2_set_reference_surfaces(
VADriverContextP ctx,
GenFrameStore ref_frames[MAX_GEN_REFERENCE_FRAMES],
struct decode_state *decode_state,
VAPictureParameterBufferMPEG2 *pic_param
);
 
void
avc_gen_default_iq_matrix(VAIQMatrixBufferH264 *iq_matrix);
 
unsigned int
avc_get_first_mb_bit_offset(
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *slice_param,
unsigned int mode_flag
);
 
unsigned int
avc_get_first_mb_bit_offset_with_epb(
dri_bo *slice_data_bo,
VASliceParameterBufferH264 *slice_param,
unsigned int mode_flag
);
 
void
gen5_fill_avc_ref_idx_state(
uint8_t state[32],
const VAPictureH264 ref_list[32],
unsigned int ref_list_count,
const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
);
 
void
gen6_send_avc_ref_idx_state(
struct intel_batchbuffer *batch,
const VASliceParameterBufferH264 *slice_param,
const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
);
 
#endif /* I965_DECODER_UTILS_H */
/drivers/video/i965/i965_defines.h
0,0 → 1,753
#ifndef _I965_DEFINES_H_
#define _I965_DEFINES_H_
 
#define CMD(pipeline,op,sub_op) ((3 << 29) | \
((pipeline) << 27) | \
((op) << 24) | \
((sub_op) << 16))
 
#define CMD_URB_FENCE CMD(0, 0, 0)
#define CMD_CS_URB_STATE CMD(0, 0, 1)
#define CMD_CONSTANT_BUFFER CMD(0, 0, 2)
#define CMD_STATE_PREFETCH CMD(0, 0, 3)
 
#define CMD_STATE_BASE_ADDRESS CMD(0, 1, 1)
#define CMD_STATE_SIP CMD(0, 1, 2)
#define CMD_PIPELINE_SELECT CMD(1, 1, 4)
#define CMD_SAMPLER_PALETTE_LOAD CMD(3, 1, 2)
 
#define CMD_MEDIA_STATE_POINTERS CMD(2, 0, 0)
#define CMD_MEDIA_VFE_STATE CMD(2, 0, 0)
#define CMD_MEDIA_CURBE_LOAD CMD(2, 0, 1)
#define CMD_MEDIA_INTERFACE_LOAD CMD(2, 0, 2)
#define CMD_MEDIA_OBJECT CMD(2, 1, 0)
#define CMD_MEDIA_OBJECT_EX CMD(2, 1, 1)
 
#define CMD_AVC_BSD_IMG_STATE CMD(2, 4, 0)
#define CMD_AVC_BSD_QM_STATE CMD(2, 4, 1)
#define CMD_AVC_BSD_SLICE_STATE CMD(2, 4, 2)
#define CMD_AVC_BSD_BUF_BASE_STATE CMD(2, 4, 3)
#define CMD_BSD_IND_OBJ_BASE_ADDR CMD(2, 4, 4)
#define CMD_AVC_BSD_OBJECT CMD(2, 4, 8)
 
#define CMD_MEDIA_VFE_STATE CMD(2, 0, 0)
#define CMD_MEDIA_CURBE_LOAD CMD(2, 0, 1)
#define CMD_MEDIA_INTERFACE_DESCRIPTOR_LOAD CMD(2, 0, 2)
#define CMD_MEDIA_GATEWAY_STATE CMD(2, 0, 3)
#define CMD_MEDIA_STATE_FLUSH CMD(2, 0, 4)
#define CMD_MEDIA_OBJECT_WALKER CMD(2, 1, 3)
 
#define CMD_PIPELINED_POINTERS CMD(3, 0, 0)
#define CMD_BINDING_TABLE_POINTERS CMD(3, 0, 1)
# define GEN6_BINDING_TABLE_MODIFY_PS (1 << 12)/* for GEN6 */
# define GEN6_BINDING_TABLE_MODIFY_GS (1 << 9) /* for GEN6 */
# define GEN6_BINDING_TABLE_MODIFY_VS (1 << 8) /* for GEN6 */
 
#define CMD_VERTEX_BUFFERS CMD(3, 0, 8)
#define CMD_VERTEX_ELEMENTS CMD(3, 0, 9)
#define CMD_DRAWING_RECTANGLE CMD(3, 1, 0)
#define CMD_CONSTANT_COLOR CMD(3, 1, 1)
#define CMD_3DPRIMITIVE CMD(3, 3, 0)
 
#define CMD_DEPTH_BUFFER CMD(3, 1, 5)
# define CMD_DEPTH_BUFFER_TYPE_SHIFT 29
# define CMD_DEPTH_BUFFER_FORMAT_SHIFT 18
 
#define CMD_CLEAR_PARAMS CMD(3, 1, 0x10)
/* DW1 */
# define CMD_CLEAR_PARAMS_DEPTH_CLEAR_VALID (1 << 15)
 
/* for GEN6+ */
#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS CMD(3, 0, 0x02)
# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS (1 << 12)
# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS (1 << 9)
# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS (1 << 8)
 
#define GEN6_3DSTATE_URB CMD(3, 0, 0x05)
/* DW1 */
# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT 16
# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT 0
/* DW2 */
# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT 8
# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT 0
 
#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS CMD(3, 0, 0x0d)
# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC (1 << 12)
# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF (1 << 11)
# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP (1 << 10)
 
#define GEN6_3DSTATE_CC_STATE_POINTERS CMD(3, 0, 0x0e)
 
#define GEN6_3DSTATE_VS CMD(3, 0, 0x10)
 
#define GEN6_3DSTATE_GS CMD(3, 0, 0x11)
/* DW4 */
# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT 0
 
#define GEN6_3DSTATE_CLIP CMD(3, 0, 0x12)
 
#define GEN6_3DSTATE_SF CMD(3, 0, 0x13)
/* DW1 on GEN6 */
# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT 22
# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT 11
# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT 4
/* DW1 on GEN7 */
# define GEN7_SF_DEPTH_BUFFER_SURFACE_FORMAT_SHIFT 12
 
 
/* DW2 */
/* DW3 */
# define GEN6_3DSTATE_SF_CULL_BOTH (0 << 29)
# define GEN6_3DSTATE_SF_CULL_NONE (1 << 29)
# define GEN6_3DSTATE_SF_CULL_FRONT (2 << 29)
# define GEN6_3DSTATE_SF_CULL_BACK (3 << 29)
/* DW4 */
# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT 29
# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT 27
# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT 25
 
 
#define GEN6_3DSTATE_WM CMD(3, 0, 0x14)
/* DW2 */
# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF 27
# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT 18
/* DW4 */
# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT 16
/* DW5 */
# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT 25
# define GEN6_3DSTATE_WM_DISPATCH_ENABLE (1 << 19)
# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE (1 << 1)
# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE (1 << 0)
/* DW6 */
# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT 20
# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 15)
# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 14)
# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 13)
# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 12)
# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 11)
# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 10)
 
/* 3DSTATE_WM on GEN7 */
/* DW1 */
# define GEN7_WM_STATISTICS_ENABLE (1 << 31)
# define GEN7_WM_DEPTH_CLEAR (1 << 30)
# define GEN7_WM_DISPATCH_ENABLE (1 << 29)
# define GEN6_WM_DEPTH_RESOLVE (1 << 28)
# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE (1 << 27)
# define GEN7_WM_KILL_ENABLE (1 << 25)
# define GEN7_WM_PSCDEPTH_OFF (0 << 23)
# define GEN7_WM_PSCDEPTH_ON (1 << 23)
# define GEN7_WM_PSCDEPTH_ON_GE (2 << 23)
# define GEN7_WM_PSCDEPTH_ON_LE (3 << 23)
# define GEN7_WM_USES_SOURCE_DEPTH (1 << 20)
# define GEN7_WM_USES_SOURCE_W (1 << 19)
# define GEN7_WM_POSITION_ZW_PIXEL (0 << 17)
# define GEN7_WM_POSITION_ZW_CENTROID (2 << 17)
# define GEN7_WM_POSITION_ZW_SAMPLE (3 << 17)
# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 16)
# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 15)
# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 14)
# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 13)
# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 12)
# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 11)
# define GEN7_WM_USES_INPUT_COVERAGE_MASK (1 << 10)
# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5 (0 << 8)
# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0 (1 << 8)
# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0 (2 << 8)
# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0 (3 << 8)
# define GEN7_WM_LINE_AA_WIDTH_0_5 (0 << 6)
# define GEN7_WM_LINE_AA_WIDTH_1_0 (1 << 6)
# define GEN7_WM_LINE_AA_WIDTH_2_0 (2 << 6)
# define GEN7_WM_LINE_AA_WIDTH_4_0 (3 << 6)
# define GEN7_WM_POLYGON_STIPPLE_ENABLE (1 << 4)
# define GEN7_WM_LINE_STIPPLE_ENABLE (1 << 3)
# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT (1 << 2)
# define GEN7_WM_MSRAST_OFF_PIXEL (0 << 0)
# define GEN7_WM_MSRAST_OFF_PATTERN (1 << 0)
# define GEN7_WM_MSRAST_ON_PIXEL (2 << 0)
# define GEN7_WM_MSRAST_ON_PATTERN (3 << 0)
/* DW2 */
# define GEN7_WM_MSDISPMODE_PERPIXEL (1 << 31)
 
#define GEN6_3DSTATE_CONSTANT_VS CMD(3, 0, 0x15)
#define GEN6_3DSTATE_CONSTANT_GS CMD(3, 0, 0x16)
#define GEN6_3DSTATE_CONSTANT_PS CMD(3, 0, 0x17)
 
# define GEN6_3DSTATE_CONSTANT_BUFFER_3_ENABLE (1 << 15)
# define GEN6_3DSTATE_CONSTANT_BUFFER_2_ENABLE (1 << 14)
# define GEN6_3DSTATE_CONSTANT_BUFFER_1_ENABLE (1 << 13)
# define GEN6_3DSTATE_CONSTANT_BUFFER_0_ENABLE (1 << 12)
 
#define GEN6_3DSTATE_SAMPLE_MASK CMD(3, 0, 0x18)
 
#define GEN6_3DSTATE_MULTISAMPLE CMD(3, 1, 0x0d)
/* DW1 */
# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4)
# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4)
# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1 (0 << 1)
# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4 (2 << 1)
# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8 (3 << 1)
 
/* GEN7 */
#define GEN7_3DSTATE_CLEAR_PARAMS CMD(3, 0, 0x04)
#define GEN7_3DSTATE_DEPTH_BUFFER CMD(3, 0, 0x05)
 
#define GEN7_3DSTATE_URB_VS CMD(3, 0, 0x30)
#define GEN7_3DSTATE_URB_HS CMD(3, 0, 0x31)
#define GEN7_3DSTATE_URB_DS CMD(3, 0, 0x32)
#define GEN7_3DSTATE_URB_GS CMD(3, 0, 0x33)
/* DW1 */
# define GEN7_URB_ENTRY_NUMBER_SHIFT 0
# define GEN7_URB_ENTRY_SIZE_SHIFT 16
# define GEN7_URB_STARTING_ADDRESS_SHIFT 25
 
#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS CMD(3, 1, 0x12)
#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS CMD(3, 1, 0x16)
/* DW1 */
# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
 
#define GEN7_3DSTATE_CONSTANT_HS CMD(3, 0, 0x19)
#define GEN7_3DSTATE_CONSTANT_DS CMD(3, 0, 0x1a)
 
#define GEN7_3DSTATE_HS CMD(3, 0, 0x1b)
#define GEN7_3DSTATE_TE CMD(3, 0, 0x1c)
#define GEN7_3DSTATE_DS CMD(3, 0, 0x1d)
#define GEN7_3DSTATE_STREAMOUT CMD(3, 0, 0x1e)
#define GEN7_3DSTATE_SBE CMD(3, 0, 0x1f)
 
/* DW1 */
# define GEN7_SBE_SWIZZLE_CONTROL_MODE (1 << 28)
# define GEN7_SBE_NUM_OUTPUTS_SHIFT 22
# define GEN7_SBE_SWIZZLE_ENABLE (1 << 21)
# define GEN7_SBE_POINT_SPRITE_LOWERLEFT (1 << 20)
# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT 11
# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT 4
 
#define GEN7_3DSTATE_PS CMD(3, 0, 0x20)
/* DW1: kernel pointer */
/* DW2 */
# define GEN7_PS_SPF_MODE (1 << 31)
# define GEN7_PS_VECTOR_MASK_ENABLE (1 << 30)
# define GEN7_PS_SAMPLER_COUNT_SHIFT 27
# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18
# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16)
# define GEN7_PS_FLOATING_POINT_MODE_ALT (1 << 16)
/* DW3: scratch space */
/* DW4 */
# define GEN7_PS_MAX_THREADS_SHIFT_IVB 24
# define GEN7_PS_MAX_THREADS_SHIFT_HSW 23
# define GEN7_PS_SAMPLE_MASK_SHIFT_HSW 12
# define GEN7_PS_PUSH_CONSTANT_ENABLE (1 << 11)
# define GEN7_PS_ATTRIBUTE_ENABLE (1 << 10)
# define GEN7_PS_OMASK_TO_RENDER_TARGET (1 << 9)
# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE (1 << 7)
# define GEN7_PS_POSOFFSET_NONE (0 << 3)
# define GEN7_PS_POSOFFSET_CENTROID (2 << 3)
# define GEN7_PS_POSOFFSET_SAMPLE (3 << 3)
# define GEN7_PS_32_DISPATCH_ENABLE (1 << 2)
# define GEN7_PS_16_DISPATCH_ENABLE (1 << 1)
# define GEN7_PS_8_DISPATCH_ENABLE (1 << 0)
/* DW5 */
# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0 16
# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1 8
# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2 0
/* DW6: kernel 1 pointer */
/* DW7: kernel 2 pointer */
 
#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL CMD(3, 0, 0x21)
#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC CMD(3, 0, 0x23)
 
#define GEN7_3DSTATE_BLEND_STATE_POINTERS CMD(3, 0, 0x24)
#define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS CMD(3, 0, 0x25)
 
#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS CMD(3, 0, 0x26)
#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS CMD(3, 0, 0x27)
#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS CMD(3, 0, 0x28)
#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS CMD(3, 0, 0x29)
#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS CMD(3, 0, 0x2a)
 
#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS CMD(3, 0, 0x2b)
#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS CMD(3, 0, 0x2e)
#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS CMD(3, 0, 0x2f)
 
#define MFX(pipeline, op, sub_opa, sub_opb) \
(3 << 29 | \
(pipeline) << 27 | \
(op) << 24 | \
(sub_opa) << 21 | \
(sub_opb) << 16)
 
#define MFX_PIPE_MODE_SELECT MFX(2, 0, 0, 0)
#define MFX_SURFACE_STATE MFX(2, 0, 0, 1)
#define MFX_PIPE_BUF_ADDR_STATE MFX(2, 0, 0, 2)
#define MFX_IND_OBJ_BASE_ADDR_STATE MFX(2, 0, 0, 3)
#define MFX_BSP_BUF_BASE_ADDR_STATE MFX(2, 0, 0, 4)
#define MFX_AES_STATE MFX(2, 0, 0, 5)
#define MFX_STATE_POINTER MFX(2, 0, 0, 6)
#define MFX_QM_STATE MFX(2, 0, 0, 7)
#define MFX_FQM_STATE MFX(2, 0, 0, 8)
 
#define MFX_WAIT MFX(1, 0, 0, 0)
 
#define MFX_AVC_IMG_STATE MFX(2, 1, 0, 0)
#define MFX_AVC_QM_STATE MFX(2, 1, 0, 1)
#define MFX_AVC_DIRECTMODE_STATE MFX(2, 1, 0, 2)
#define MFX_AVC_SLICE_STATE MFX(2, 1, 0, 3)
#define MFX_AVC_REF_IDX_STATE MFX(2, 1, 0, 4)
#define MFX_AVC_WEIGHTOFFSET_STATE MFX(2, 1, 0, 5)
 
#define MFD_AVC_PICID_STATE MFX(2, 1, 1, 5)
#define MFD_AVC_BSD_OBJECT MFX(2, 1, 1, 8)
 
#define MFC_AVC_FQM_STATE MFX(2, 1, 2, 2)
#define MFC_AVC_INSERT_OBJECT MFX(2, 1, 2, 8)
#define MFC_AVC_PAK_OBJECT MFX(2, 1, 2, 9)
 
#define MFX_MPEG2_PIC_STATE MFX(2, 3, 0, 0)
#define MFX_MPEG2_QM_STATE MFX(2, 3, 0, 1)
 
#define MFD_MPEG2_BSD_OBJECT MFX(2, 3, 1, 8)
 
#define MFX_VC1_PIC_STATE MFX(2, 2, 0, 0)
#define MFX_VC1_PRED_PIPE_STATE MFX(2, 2, 0, 1)
#define MFX_VC1_DIRECTMODE_STATE MFX(2, 2, 0, 2)
 
#define MFD_VC1_SHORT_PIC_STATE MFX(2, 2, 1, 0)
#define MFD_VC1_LONG_PIC_STATE MFX(2, 2, 1, 1)
 
#define MFD_VC1_BSD_OBJECT MFX(2, 2, 1, 8)
 
#define MFX_JPEG_PIC_STATE MFX(2, 7, 0, 0)
#define MFX_JPEG_HUFF_TABLE_STATE MFX(2, 7, 0, 2)
 
#define MFD_JPEG_BSD_OBJECT MFX(2, 7, 1, 8)
 
#define VEB(pipeline, op, sub_opa, sub_opb) \
(3 << 29 | \
(pipeline) << 27 | \
(op) << 24 | \
(sub_opa) << 21 | \
(sub_opb) << 16)
 
#define VEB_SURFACE_STATE VEB(2, 4, 0, 0)
#define VEB_STATE VEB(2, 4, 0, 2)
#define VEB_DNDI_IECP_STATE VEB(2, 4, 0, 3)
 
#define I965_DEPTHFORMAT_D32_FLOAT 1
 
#define BASE_ADDRESS_MODIFY (1 << 0)
 
#define PIPELINE_SELECT_3D 0
#define PIPELINE_SELECT_MEDIA 1
 
 
#define UF0_CS_REALLOC (1 << 13)
#define UF0_VFE_REALLOC (1 << 12)
#define UF0_SF_REALLOC (1 << 11)
#define UF0_CLIP_REALLOC (1 << 10)
#define UF0_GS_REALLOC (1 << 9)
#define UF0_VS_REALLOC (1 << 8)
#define UF1_CLIP_FENCE_SHIFT 20
#define UF1_GS_FENCE_SHIFT 10
#define UF1_VS_FENCE_SHIFT 0
#define UF2_CS_FENCE_SHIFT 20
#define UF2_VFE_FENCE_SHIFT 10
#define UF2_SF_FENCE_SHIFT 0
 
#define VFE_GENERIC_MODE 0x0
#define VFE_VLD_MODE 0x1
#define VFE_IS_MODE 0x2
#define VFE_AVC_MC_MODE 0x4
#define VFE_AVC_IT_MODE 0x7
 
#define FLOATING_POINT_IEEE_754 0
#define FLOATING_POINT_NON_IEEE_754 1
 
 
#define I965_SURFACE_1D 0
#define I965_SURFACE_2D 1
#define I965_SURFACE_3D 2
#define I965_SURFACE_CUBE 3
#define I965_SURFACE_BUFFER 4
#define I965_SURFACE_NULL 7
 
#define I965_SURFACEFORMAT_R32G32B32A32_FLOAT 0x000
#define I965_SURFACEFORMAT_R32G32B32A32_SINT 0x001
#define I965_SURFACEFORMAT_R32G32B32A32_UINT 0x002
#define I965_SURFACEFORMAT_R32G32B32A32_UNORM 0x003
#define I965_SURFACEFORMAT_R32G32B32A32_SNORM 0x004
#define I965_SURFACEFORMAT_R64G64_FLOAT 0x005
#define I965_SURFACEFORMAT_R32G32B32X32_FLOAT 0x006
#define I965_SURFACEFORMAT_R32G32B32A32_SSCALED 0x007
#define I965_SURFACEFORMAT_R32G32B32A32_USCALED 0x008
#define I965_SURFACEFORMAT_R32G32B32_FLOAT 0x040
#define I965_SURFACEFORMAT_R32G32B32_SINT 0x041
#define I965_SURFACEFORMAT_R32G32B32_UINT 0x042
#define I965_SURFACEFORMAT_R32G32B32_UNORM 0x043
#define I965_SURFACEFORMAT_R32G32B32_SNORM 0x044
#define I965_SURFACEFORMAT_R32G32B32_SSCALED 0x045
#define I965_SURFACEFORMAT_R32G32B32_USCALED 0x046
#define I965_SURFACEFORMAT_R16G16B16A16_UNORM 0x080
#define I965_SURFACEFORMAT_R16G16B16A16_SNORM 0x081
#define I965_SURFACEFORMAT_R16G16B16A16_SINT 0x082
#define I965_SURFACEFORMAT_R16G16B16A16_UINT 0x083
#define I965_SURFACEFORMAT_R16G16B16A16_FLOAT 0x084
#define I965_SURFACEFORMAT_R32G32_FLOAT 0x085
#define I965_SURFACEFORMAT_R32G32_SINT 0x086
#define I965_SURFACEFORMAT_R32G32_UINT 0x087
#define I965_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088
#define I965_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089
#define I965_SURFACEFORMAT_L32A32_FLOAT 0x08A
#define I965_SURFACEFORMAT_R32G32_UNORM 0x08B
#define I965_SURFACEFORMAT_R32G32_SNORM 0x08C
#define I965_SURFACEFORMAT_R64_FLOAT 0x08D
#define I965_SURFACEFORMAT_R16G16B16X16_UNORM 0x08E
#define I965_SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F
#define I965_SURFACEFORMAT_A32X32_FLOAT 0x090
#define I965_SURFACEFORMAT_L32X32_FLOAT 0x091
#define I965_SURFACEFORMAT_I32X32_FLOAT 0x092
#define I965_SURFACEFORMAT_R16G16B16A16_SSCALED 0x093
#define I965_SURFACEFORMAT_R16G16B16A16_USCALED 0x094
#define I965_SURFACEFORMAT_R32G32_SSCALED 0x095
#define I965_SURFACEFORMAT_R32G32_USCALED 0x096
#define I965_SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0
#define I965_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1
#define I965_SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2
#define I965_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3
#define I965_SURFACEFORMAT_R10G10B10A2_UINT 0x0C4
#define I965_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5
#define I965_SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7
#define I965_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8
#define I965_SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9
#define I965_SURFACEFORMAT_R8G8B8A8_SINT 0x0CA
#define I965_SURFACEFORMAT_R8G8B8A8_UINT 0x0CB
#define I965_SURFACEFORMAT_R16G16_UNORM 0x0CC
#define I965_SURFACEFORMAT_R16G16_SNORM 0x0CD
#define I965_SURFACEFORMAT_R16G16_SINT 0x0CE
#define I965_SURFACEFORMAT_R16G16_UINT 0x0CF
#define I965_SURFACEFORMAT_R16G16_FLOAT 0x0D0
#define I965_SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1
#define I965_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2
#define I965_SURFACEFORMAT_R11G11B10_FLOAT 0x0D3
#define I965_SURFACEFORMAT_R32_SINT 0x0D6
#define I965_SURFACEFORMAT_R32_UINT 0x0D7
#define I965_SURFACEFORMAT_R32_FLOAT 0x0D8
#define I965_SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9
#define I965_SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA
#define I965_SURFACEFORMAT_L16A16_UNORM 0x0DF
#define I965_SURFACEFORMAT_I24X8_UNORM 0x0E0
#define I965_SURFACEFORMAT_L24X8_UNORM 0x0E1
#define I965_SURFACEFORMAT_A24X8_UNORM 0x0E2
#define I965_SURFACEFORMAT_I32_FLOAT 0x0E3
#define I965_SURFACEFORMAT_L32_FLOAT 0x0E4
#define I965_SURFACEFORMAT_A32_FLOAT 0x0E5
#define I965_SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9
#define I965_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA
#define I965_SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB
#define I965_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC
#define I965_SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED
#define I965_SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE
#define I965_SURFACEFORMAT_L16A16_FLOAT 0x0F0
#define I965_SURFACEFORMAT_R32_UNORM 0x0F1
#define I965_SURFACEFORMAT_R32_SNORM 0x0F2
#define I965_SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3
#define I965_SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4
#define I965_SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5
#define I965_SURFACEFORMAT_R16G16_SSCALED 0x0F6
#define I965_SURFACEFORMAT_R16G16_USCALED 0x0F7
#define I965_SURFACEFORMAT_R32_SSCALED 0x0F8
#define I965_SURFACEFORMAT_R32_USCALED 0x0F9
#define I965_SURFACEFORMAT_B5G6R5_UNORM 0x100
#define I965_SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101
#define I965_SURFACEFORMAT_B5G5R5A1_UNORM 0x102
#define I965_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103
#define I965_SURFACEFORMAT_B4G4R4A4_UNORM 0x104
#define I965_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105
#define I965_SURFACEFORMAT_R8G8_UNORM 0x106
#define I965_SURFACEFORMAT_R8G8_SNORM 0x107
#define I965_SURFACEFORMAT_R8G8_SINT 0x108
#define I965_SURFACEFORMAT_R8G8_UINT 0x109
#define I965_SURFACEFORMAT_R16_UNORM 0x10A
#define I965_SURFACEFORMAT_R16_SNORM 0x10B
#define I965_SURFACEFORMAT_R16_SINT 0x10C
#define I965_SURFACEFORMAT_R16_UINT 0x10D
#define I965_SURFACEFORMAT_R16_FLOAT 0x10E
#define I965_SURFACEFORMAT_I16_UNORM 0x111
#define I965_SURFACEFORMAT_L16_UNORM 0x112
#define I965_SURFACEFORMAT_A16_UNORM 0x113
#define I965_SURFACEFORMAT_L8A8_UNORM 0x114
#define I965_SURFACEFORMAT_I16_FLOAT 0x115
#define I965_SURFACEFORMAT_L16_FLOAT 0x116
#define I965_SURFACEFORMAT_A16_FLOAT 0x117
#define I965_SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119
#define I965_SURFACEFORMAT_B5G5R5X1_UNORM 0x11A
#define I965_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B
#define I965_SURFACEFORMAT_R8G8_SSCALED 0x11C
#define I965_SURFACEFORMAT_R8G8_USCALED 0x11D
#define I965_SURFACEFORMAT_R16_SSCALED 0x11E
#define I965_SURFACEFORMAT_R16_USCALED 0x11F
#define I965_SURFACEFORMAT_P8A8_UNORM 0x122
#define I965_SURFACEFORMAT_A8P8_UNORM 0x123
#define I965_SURFACEFORMAT_R8_UNORM 0x140
#define I965_SURFACEFORMAT_R8_SNORM 0x141
#define I965_SURFACEFORMAT_R8_SINT 0x142
#define I965_SURFACEFORMAT_R8_UINT 0x143
#define I965_SURFACEFORMAT_A8_UNORM 0x144
#define I965_SURFACEFORMAT_I8_UNORM 0x145
#define I965_SURFACEFORMAT_L8_UNORM 0x146
#define I965_SURFACEFORMAT_P4A4_UNORM 0x147
#define I965_SURFACEFORMAT_A4P4_UNORM 0x148
#define I965_SURFACEFORMAT_R8_SSCALED 0x149
#define I965_SURFACEFORMAT_R8_USCALED 0x14A
#define I965_SURFACEFORMAT_R1_UINT 0x181
#define I965_SURFACEFORMAT_YCRCB_NORMAL 0x182
#define I965_SURFACEFORMAT_YCRCB_SWAPUVY 0x183
#define I965_SURFACEFORMAT_BC1_UNORM 0x186
#define I965_SURFACEFORMAT_BC2_UNORM 0x187
#define I965_SURFACEFORMAT_BC3_UNORM 0x188
#define I965_SURFACEFORMAT_BC4_UNORM 0x189
#define I965_SURFACEFORMAT_BC5_UNORM 0x18A
#define I965_SURFACEFORMAT_BC1_UNORM_SRGB 0x18B
#define I965_SURFACEFORMAT_BC2_UNORM_SRGB 0x18C
#define I965_SURFACEFORMAT_BC3_UNORM_SRGB 0x18D
#define I965_SURFACEFORMAT_MONO8 0x18E
#define I965_SURFACEFORMAT_YCRCB_SWAPUV 0x18F
#define I965_SURFACEFORMAT_YCRCB_SWAPY 0x190
#define I965_SURFACEFORMAT_DXT1_RGB 0x191
#define I965_SURFACEFORMAT_FXT1 0x192
#define I965_SURFACEFORMAT_R8G8B8_UNORM 0x193
#define I965_SURFACEFORMAT_R8G8B8_SNORM 0x194
#define I965_SURFACEFORMAT_R8G8B8_SSCALED 0x195
#define I965_SURFACEFORMAT_R8G8B8_USCALED 0x196
#define I965_SURFACEFORMAT_R64G64B64A64_FLOAT 0x197
#define I965_SURFACEFORMAT_R64G64B64_FLOAT 0x198
#define I965_SURFACEFORMAT_BC4_SNORM 0x199
#define I965_SURFACEFORMAT_BC5_SNORM 0x19A
#define I965_SURFACEFORMAT_R16G16B16_UNORM 0x19C
#define I965_SURFACEFORMAT_R16G16B16_SNORM 0x19D
#define I965_SURFACEFORMAT_R16G16B16_SSCALED 0x19E
#define I965_SURFACEFORMAT_R16G16B16_USCALED 0x19F
 
#define I965_CULLMODE_BOTH 0
#define I965_CULLMODE_NONE 1
#define I965_CULLMODE_FRONT 2
#define I965_CULLMODE_BACK 3
 
#define I965_MAPFILTER_NEAREST 0x0
#define I965_MAPFILTER_LINEAR 0x1
#define I965_MAPFILTER_ANISOTROPIC 0x2
 
#define I965_MIPFILTER_NONE 0
#define I965_MIPFILTER_NEAREST 1
#define I965_MIPFILTER_LINEAR 3
 
#define HSW_SCS_ZERO 0
#define HSW_SCS_ONE 1
#define HSW_SCS_RED 4
#define HSW_SCS_GREEN 5
#define HSW_SCS_BLUE 6
#define HSW_SCS_ALPHA 7
 
#define I965_TEXCOORDMODE_WRAP 0
#define I965_TEXCOORDMODE_MIRROR 1
#define I965_TEXCOORDMODE_CLAMP 2
#define I965_TEXCOORDMODE_CUBE 3
#define I965_TEXCOORDMODE_CLAMP_BORDER 4
#define I965_TEXCOORDMODE_MIRROR_ONCE 5
 
#define I965_BLENDFACTOR_ONE 0x1
#define I965_BLENDFACTOR_SRC_COLOR 0x2
#define I965_BLENDFACTOR_SRC_ALPHA 0x3
#define I965_BLENDFACTOR_DST_ALPHA 0x4
#define I965_BLENDFACTOR_DST_COLOR 0x5
#define I965_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6
#define I965_BLENDFACTOR_CONST_COLOR 0x7
#define I965_BLENDFACTOR_CONST_ALPHA 0x8
#define I965_BLENDFACTOR_SRC1_COLOR 0x9
#define I965_BLENDFACTOR_SRC1_ALPHA 0x0A
#define I965_BLENDFACTOR_ZERO 0x11
#define I965_BLENDFACTOR_INV_SRC_COLOR 0x12
#define I965_BLENDFACTOR_INV_SRC_ALPHA 0x13
#define I965_BLENDFACTOR_INV_DST_ALPHA 0x14
#define I965_BLENDFACTOR_INV_DST_COLOR 0x15
#define I965_BLENDFACTOR_INV_CONST_COLOR 0x17
#define I965_BLENDFACTOR_INV_CONST_ALPHA 0x18
#define I965_BLENDFACTOR_INV_SRC1_COLOR 0x19
#define I965_BLENDFACTOR_INV_SRC1_ALPHA 0x1A
 
#define I965_BLENDFUNCTION_ADD 0
#define I965_BLENDFUNCTION_SUBTRACT 1
#define I965_BLENDFUNCTION_REVERSE_SUBTRACT 2
#define I965_BLENDFUNCTION_MIN 3
#define I965_BLENDFUNCTION_MAX 4
 
#define I965_SURFACERETURNFORMAT_FLOAT32 0
#define I965_SURFACERETURNFORMAT_S1 1
 
#define I965_VFCOMPONENT_NOSTORE 0
#define I965_VFCOMPONENT_STORE_SRC 1
#define I965_VFCOMPONENT_STORE_0 2
#define I965_VFCOMPONENT_STORE_1_FLT 3
#define I965_VFCOMPONENT_STORE_1_INT 4
#define I965_VFCOMPONENT_STORE_VID 5
#define I965_VFCOMPONENT_STORE_IID 6
#define I965_VFCOMPONENT_STORE_PID 7
 
#define VE0_VERTEX_BUFFER_INDEX_SHIFT 27
#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT 26 /* for GEN6 */
#define VE0_VALID (1 << 26)
#define GEN6_VE0_VALID (1 << 25) /* for GEN6 */
#define VE0_FORMAT_SHIFT 16
#define VE0_OFFSET_SHIFT 0
#define VE1_VFCOMPONENT_0_SHIFT 28
#define VE1_VFCOMPONENT_1_SHIFT 24
#define VE1_VFCOMPONENT_2_SHIFT 20
#define VE1_VFCOMPONENT_3_SHIFT 16
#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0
 
#define VB0_BUFFER_INDEX_SHIFT 27
#define GEN6_VB0_BUFFER_INDEX_SHIFT 26
#define VB0_VERTEXDATA (0 << 26)
#define VB0_INSTANCEDATA (1 << 26)
#define GEN6_VB0_VERTEXDATA (0 << 20)
#define GEN6_VB0_INSTANCEDATA (1 << 20)
#define GEN7_VB0_ADDRESS_MODIFYENABLE (1 << 14)
#define VB0_BUFFER_PITCH_SHIFT 0
 
#define _3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
#define _3DPRIMITIVE_VERTEX_RANDOM (1 << 15)
#define _3DPRIMITIVE_TOPOLOGY_SHIFT 10
/* DW1 on GEN7*/
# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 8)
# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 8)
 
#define _3DPRIM_POINTLIST 0x01
#define _3DPRIM_LINELIST 0x02
#define _3DPRIM_LINESTRIP 0x03
#define _3DPRIM_TRILIST 0x04
#define _3DPRIM_TRISTRIP 0x05
#define _3DPRIM_TRIFAN 0x06
#define _3DPRIM_QUADLIST 0x07
#define _3DPRIM_QUADSTRIP 0x08
#define _3DPRIM_LINELIST_ADJ 0x09
#define _3DPRIM_LINESTRIP_ADJ 0x0A
#define _3DPRIM_TRILIST_ADJ 0x0B
#define _3DPRIM_TRISTRIP_ADJ 0x0C
#define _3DPRIM_TRISTRIP_REVERSE 0x0D
#define _3DPRIM_POLYGON 0x0E
#define _3DPRIM_RECTLIST 0x0F
#define _3DPRIM_LINELOOP 0x10
#define _3DPRIM_POINTLIST_BF 0x11
#define _3DPRIM_LINESTRIP_CONT 0x12
#define _3DPRIM_LINESTRIP_BF 0x13
#define _3DPRIM_LINESTRIP_CONT_BF 0x14
#define _3DPRIM_TRIFAN_NOSTIPPLE 0x15
 
#define I965_TILEWALK_XMAJOR 0
#define I965_TILEWALK_YMAJOR 1
 
#define SCAN_RASTER_ORDER 0
#define SCAN_SPECIAL_ORDER 1
 
#define ENTROPY_CAVLD 0
#define ENTROPY_CABAC 1
 
#define SLICE_TYPE_P 0
#define SLICE_TYPE_B 1
#define SLICE_TYPE_I 2
#define SLICE_TYPE_SP 3
#define SLICE_TYPE_SI 4
 
#define PRESENT_REF_LIST0 (1 << 0)
#define PRESENT_REF_LIST1 (1 << 1)
#define PRESENT_WEIGHT_OFFSET_L0 (1 << 2)
#define PRESENT_WEIGHT_OFFSET_L1 (1 << 3)
 
#define RESIDUAL_DATA_OFFSET 48
 
#define PRESENT_NOMV 0
#define PRESENT_NOWO 1
#define PRESENT_MV_WO 3
 
#define SCOREBOARD_STALLING 0
#define SCOREBOARD_NON_STALLING 1
 
#define SURFACE_FORMAT_YCRCB_NORMAL 0
#define SURFACE_FORMAT_YCRCB_SWAPUVY 1
#define SURFACE_FORMAT_YCRCB_SWAPUV 2
#define SURFACE_FORMAT_YCRCB_SWAPY 3
#define SURFACE_FORMAT_PLANAR_420_8 4
#define SURFACE_FORMAT_PLANAR_411_8 5
#define SURFACE_FORMAT_PLANAR_422_8 6
#define SURFACE_FORMAT_STMM_DN_STATISTICS 7
#define SURFACE_FORMAT_R10G10B10A2_UNORM 8
#define SURFACE_FORMAT_R8G8B8A8_UNORM 9
#define SURFACE_FORMAT_R8B8_UNORM 10
#define SURFACE_FORMAT_R8_UNORM 11
#define SURFACE_FORMAT_Y8_UNORM 12
 
#define AVS_FILTER_ADAPTIVE_8_TAP 0
#define AVS_FILTER_NEAREST 1
 
#define IEF_FILTER_COMBO 0
#define IEF_FILTER_DETAIL 1
 
#define IEF_FILTER_SIZE_3X3 0
#define IEF_FILTER_SIZE_5X5 1
 
#define MFX_FORMAT_MPEG2 0
#define MFX_FORMAT_VC1 1
#define MFX_FORMAT_AVC 2
#define MFX_FORMAT_JPEG 3
 
#define MFX_SHORT_MODE 0
#define MFX_LONG_MODE 1
 
#define MFX_CODEC_DECODE 0
#define MFX_CODEC_ENCODE 1
 
#define MFX_QM_AVC_4X4_INTRA_MATRIX 0
#define MFX_QM_AVC_4X4_INTER_MATRIX 1
#define MFX_QM_AVC_8x8_INTRA_MATRIX 2
#define MFX_QM_AVC_8x8_INTER_MATRIX 3
 
#define MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX 0
#define MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX 1
 
#define MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX 0
#define MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX 1
#define MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX 2
#define MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX 3 /* for new device */
 
#define MFX_HUFFTABLE_ID_Y 0
#define MFX_HUFFTABLE_ID_UV 1 /* UV on Ivybridge */
 
#define MFD_MODE_VLD 0
#define MFD_MODE_IT 1
 
#define MFX_SURFACE_PLANAR_420_8 4
#define MFX_SURFACE_PLANAR_411_8 5
#define MFX_SURFACE_PLANAR_422_8 6
#define MFX_SURFACE_MONOCHROME 12
 
#define MPEG_I_PICTURE 1
#define MPEG_P_PICTURE 2
#define MPEG_B_PICTURE 3
 
#define MPEG_TOP_FIELD 1
#define MPEG_BOTTOM_FIELD 2
#define MPEG_FRAME 3
 
#define SUBSAMPLE_YUV400 0
#define SUBSAMPLE_YUV420 1
#define SUBSAMPLE_YUV422H 2
#define SUBSAMPLE_YUV422V 3
#define SUBSAMPLE_YUV444 4
#define SUBSAMPLE_YUV411 5
 
#define URB_SIZE(intel) (IS_GEN7(intel->device_id) ? 4096 : \
IS_GEN6(intel->device_id) ? 1024 : \
IS_IRONLAKE(intel->device_id) ? 1024 : \
IS_G4X(intel->device_id) ? 384 : 256)
 
#endif /* _I965_DEFINES_H_ */
/drivers/video/i965/i965_drv_video.c
0,0 → 1,2861
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#include "sysdeps.h"
 
#ifdef HAVE_VA_X11
# include "i965_output_dri.h"
#endif
 
#ifdef HAVE_VA_WAYLAND
# include "i965_output_wayland.h"
#endif
 
#include "intel_driver.h"
#include "intel_memman.h"
#include "intel_batchbuffer.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_decoder.h"
#include "i965_encoder.h"
 
#define VA_DRIVER_INIT_FUNC __vaDriverInit_0_32
 
#define INTEL_DRIVER_MAJOR_VERSION 1
#define INTEL_DRIVER_MINOR_VERSION 0
#define INTEL_DRIVER_MICRO_VERSION 20
#define INTEL_DRIVER_PRE_VERSION 1
 
#define CONFIG_ID_OFFSET 0x01000000
#define CONTEXT_ID_OFFSET 0x02000000
#define SURFACE_ID_OFFSET 0x04000000
#define BUFFER_ID_OFFSET 0x08000000
#define IMAGE_ID_OFFSET 0x0a000000
#define SUBPIC_ID_OFFSET 0x10000000
 
#define HAS_MPEG2(ctx) (IS_G4X((ctx)->intel.device_id) || \
IS_IRONLAKE((ctx)->intel.device_id) || \
((IS_GEN6((ctx)->intel.device_id) || \
IS_GEN7((ctx)->intel.device_id)) && \
(ctx)->intel.has_bsd))
 
#define HAS_H264(ctx) ((IS_GEN7((ctx)->intel.device_id) || \
IS_GEN6((ctx)->intel.device_id) || \
IS_IRONLAKE((ctx)->intel.device_id)) && \
(ctx)->intel.has_bsd)
 
#define HAS_VC1(ctx) ((IS_GEN7((ctx)->intel.device_id) || \
IS_GEN6((ctx)->intel.device_id)) && \
(ctx)->intel.has_bsd)
 
#define HAS_TILED_SURFACE(ctx) ((IS_GEN7((ctx)->intel.device_id) || \
IS_GEN6((ctx)->intel.device_id)) && \
(ctx)->render_state.interleaved_uv)
 
#define HAS_ENCODER(ctx) ((IS_GEN7((ctx)->intel.device_id) || \
IS_GEN6((ctx)->intel.device_id)) && \
(ctx)->intel.has_bsd)
 
#define HAS_JPEG(ctx) (IS_GEN7((ctx)->intel.device_id) && \
(ctx)->intel.has_bsd)
 
#define HAS_ACCELERATED_GETIMAGE(ctx) (IS_GEN6((ctx)->intel.device_id) || \
IS_GEN7((ctx)->intel.device_id))
 
#define HAS_ACCELERATED_PUTIMAGE(ctx) HAS_VPP(ctx)
 
#if VA_CHECK_VERSION(0,33,0)
/* Check whether we are rendering to X11 (VA/X11 or VA/GLX API) */
#define IS_VA_X11(ctx) \
(((ctx)->display_type & VA_DISPLAY_MAJOR_MASK) == VA_DISPLAY_X11)
 
/* Check whether we are rendering to Wayland */
#define IS_VA_WAYLAND(ctx) \
(((ctx)->display_type & VA_DISPLAY_MAJOR_MASK) == VA_DISPLAY_WAYLAND)
#else
/* Previous VA-API versions only supported VA/X11 (and VA/GLX) API */
#define IS_VA_X11(ctx) 1
#define IS_VA_WAYLAND(ctx) 0
#endif
 
enum {
I965_SURFACETYPE_RGBA = 1,
I965_SURFACETYPE_YUV,
I965_SURFACETYPE_INDEXED
};
 
/* List of supported display attributes */
static const VADisplayAttribute i965_display_attributes[] = {
{
VADisplayAttribRotation,
0, 3, VA_ROTATION_NONE,
VA_DISPLAY_ATTRIB_GETTABLE|VA_DISPLAY_ATTRIB_SETTABLE
},
};
 
/* List of supported image formats */
typedef struct {
unsigned int type;
VAImageFormat va_format;
} i965_image_format_map_t;
 
static const i965_image_format_map_t
i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
{ I965_SURFACETYPE_YUV,
{ VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
{ I965_SURFACETYPE_YUV,
{ VA_FOURCC('I','4','2','0'), VA_LSB_FIRST, 12, } },
{ I965_SURFACETYPE_YUV,
{ VA_FOURCC('N','V','1','2'), VA_LSB_FIRST, 12, } },
};
 
/* List of supported subpicture formats */
typedef struct {
unsigned int type;
unsigned int format;
VAImageFormat va_format;
unsigned int va_flags;
} i965_subpic_format_map_t;
 
#define COMMON_SUBPICTURE_FLAGS \
(VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD| \
VA_SUBPICTURE_GLOBAL_ALPHA)
 
static const i965_subpic_format_map_t
i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = {
{ I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_P4A4_UNORM,
{ VA_FOURCC('I','A','4','4'), VA_MSB_FIRST, 8, },
COMMON_SUBPICTURE_FLAGS },
{ I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM,
{ VA_FOURCC('A','I','4','4'), VA_MSB_FIRST, 8, },
COMMON_SUBPICTURE_FLAGS },
{ I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_P8A8_UNORM,
{ VA_FOURCC('I','A','8','8'), VA_MSB_FIRST, 16, },
COMMON_SUBPICTURE_FLAGS },
{ I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A8P8_UNORM,
{ VA_FOURCC('A','I','8','8'), VA_MSB_FIRST, 16, },
COMMON_SUBPICTURE_FLAGS },
{ I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM,
{ VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32,
32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
COMMON_SUBPICTURE_FLAGS },
{ I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM,
{ VA_FOURCC('R','G','B','A'), VA_LSB_FIRST, 32,
32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
COMMON_SUBPICTURE_FLAGS },
};
 
static const i965_subpic_format_map_t *
get_subpic_format(const VAImageFormat *va_format)
{
unsigned int i;
for (i = 0; i965_subpic_formats_map[i].type != 0; i++) {
const i965_subpic_format_map_t * const m = &i965_subpic_formats_map[i];
if (m->va_format.fourcc == va_format->fourcc &&
(m->type == I965_SURFACETYPE_RGBA ?
(m->va_format.byte_order == va_format->byte_order &&
m->va_format.red_mask == va_format->red_mask &&
m->va_format.green_mask == va_format->green_mask &&
m->va_format.blue_mask == va_format->blue_mask &&
m->va_format.alpha_mask == va_format->alpha_mask) : 1))
return m;
}
return NULL;
}
 
extern struct hw_context *g4x_dec_hw_context_init(VADriverContextP, VAProfile);
static struct hw_codec_info g4x_hw_codec_info = {
.dec_hw_context_init = g4x_dec_hw_context_init,
.enc_hw_context_init = NULL,
.max_width = 2048,
.max_height = 2048,
};
 
extern struct hw_context *ironlake_dec_hw_context_init(VADriverContextP, VAProfile);
static struct hw_codec_info ironlake_hw_codec_info = {
.dec_hw_context_init = ironlake_dec_hw_context_init,
.enc_hw_context_init = NULL,
.max_width = 2048,
.max_height = 2048,
};
 
extern struct hw_context *gen6_dec_hw_context_init(VADriverContextP, VAProfile);
extern struct hw_context *gen6_enc_hw_context_init(VADriverContextP, VAProfile);
static struct hw_codec_info gen6_hw_codec_info = {
.dec_hw_context_init = gen6_dec_hw_context_init,
.enc_hw_context_init = gen6_enc_hw_context_init,
.max_width = 2048,
.max_height = 2048,
};
 
extern struct hw_context *gen7_dec_hw_context_init(VADriverContextP, VAProfile);
static struct hw_codec_info gen7_hw_codec_info = {
.dec_hw_context_init = gen7_dec_hw_context_init,
.enc_hw_context_init = gen6_enc_hw_context_init,
.max_width = 4096,
.max_height = 4096,
};
 
static struct hw_codec_info gen75_hw_codec_info = {
.dec_hw_context_init = gen75_dec_hw_context_init,
.enc_hw_context_init = gen75_enc_hw_context_init,
.max_width = 4096,
.max_height = 4096,
};
 
VAStatus
i965_QueryConfigProfiles(VADriverContextP ctx,
VAProfile *profile_list, /* out */
int *num_profiles) /* out */
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
int i = 0;
 
if (HAS_MPEG2(i965)) {
profile_list[i++] = VAProfileMPEG2Simple;
profile_list[i++] = VAProfileMPEG2Main;
}
 
if (HAS_H264(i965)) {
profile_list[i++] = VAProfileH264Baseline;
profile_list[i++] = VAProfileH264Main;
profile_list[i++] = VAProfileH264High;
}
 
if (HAS_VC1(i965)) {
profile_list[i++] = VAProfileVC1Simple;
profile_list[i++] = VAProfileVC1Main;
profile_list[i++] = VAProfileVC1Advanced;
}
 
#ifdef HAVE_VA_JPEG_DECODE
if (HAS_JPEG(i965)) {
profile_list[i++] = VAProfileJPEGBaseline;
}
#endif
 
/* If the assert fails then I965_MAX_PROFILES needs to be bigger */
assert(i <= I965_MAX_PROFILES);
*num_profiles = i;
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_QueryConfigEntrypoints(VADriverContextP ctx,
VAProfile profile,
VAEntrypoint *entrypoint_list, /* out */
int *num_entrypoints) /* out */
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
int n = 0;
 
printf("%s profile %d\n", __FUNCTION__, profile);
printf("devid %x gen6=%d has264=%d bsd=%d\n",
i965->intel.device_id, IS_GEN6(i965->intel.device_id),
HAS_H264(i965), i965->intel.has_bsd);
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
if (HAS_MPEG2(i965))
entrypoint_list[n++] = VAEntrypointVLD;
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
if (HAS_H264(i965))
entrypoint_list[n++] = VAEntrypointVLD;
 
if (HAS_ENCODER(i965))
entrypoint_list[n++] = VAEntrypointEncSlice;
 
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
if (HAS_VC1(i965))
entrypoint_list[n++] = VAEntrypointVLD;
break;
 
case VAProfileJPEGBaseline:
if (HAS_JPEG(i965))
entrypoint_list[n++] = VAEntrypointVLD;
break;
 
default:
break;
}
 
/* If the assert fails then I965_MAX_ENTRYPOINTS needs to be bigger */
assert(n <= I965_MAX_ENTRYPOINTS);
*num_entrypoints = n;
return n > 0 ? VA_STATUS_SUCCESS : VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
}
 
VAStatus
i965_GetConfigAttributes(VADriverContextP ctx,
VAProfile profile,
VAEntrypoint entrypoint,
VAConfigAttrib *attrib_list, /* in/out */
int num_attribs)
{
int i;
 
/* Other attributes don't seem to be defined */
/* What to do if we don't know the attribute? */
for (i = 0; i < num_attribs; i++) {
switch (attrib_list[i].type) {
case VAConfigAttribRTFormat:
attrib_list[i].value = VA_RT_FORMAT_YUV420;
break;
 
case VAConfigAttribRateControl:
attrib_list[i].value = VA_RC_VBR;
break;
 
default:
/* Do nothing */
attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
break;
}
}
 
return VA_STATUS_SUCCESS;
}
 
static void
i965_destroy_config(struct object_heap *heap, struct object_base *obj)
{
object_heap_free(heap, obj);
}
 
static VAStatus
i965_update_attribute(struct object_config *obj_config, VAConfigAttrib *attrib)
{
int i;
 
/* Check existing attrbiutes */
for (i = 0; obj_config->num_attribs < i; i++) {
if (obj_config->attrib_list[i].type == attrib->type) {
/* Update existing attribute */
obj_config->attrib_list[i].value = attrib->value;
return VA_STATUS_SUCCESS;
}
}
 
if (obj_config->num_attribs < I965_MAX_CONFIG_ATTRIBUTES) {
i = obj_config->num_attribs;
obj_config->attrib_list[i].type = attrib->type;
obj_config->attrib_list[i].value = attrib->value;
obj_config->num_attribs++;
return VA_STATUS_SUCCESS;
}
 
return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
}
 
VAStatus
i965_CreateConfig(VADriverContextP ctx,
VAProfile profile,
VAEntrypoint entrypoint,
VAConfigAttrib *attrib_list,
int num_attribs,
VAConfigID *config_id) /* out */
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
struct object_config *obj_config;
int configID;
int i;
VAStatus vaStatus;
 
printf("%s\n, profile %d", __FUNCTION__, profile );
/* Validate profile & entrypoint */
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
if (HAS_MPEG2(i965) && VAEntrypointVLD == entrypoint) {
vaStatus = VA_STATUS_SUCCESS;
} else {
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
}
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
if ((HAS_H264(i965) && VAEntrypointVLD == entrypoint) ||
(HAS_ENCODER(i965) && VAEntrypointEncSlice == entrypoint)) {
vaStatus = VA_STATUS_SUCCESS;
} else {
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
}
 
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
if (HAS_VC1(i965) && VAEntrypointVLD == entrypoint) {
vaStatus = VA_STATUS_SUCCESS;
} else {
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
}
 
break;
 
case VAProfileJPEGBaseline:
if (HAS_JPEG(i965) && VAEntrypointVLD == entrypoint) {
vaStatus = VA_STATUS_SUCCESS;
} else {
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
}
 
break;
 
default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
break;
}
 
if (VA_STATUS_SUCCESS != vaStatus) {
return vaStatus;
}
 
configID = NEW_CONFIG_ID();
obj_config = CONFIG(configID);
 
if (NULL == obj_config) {
vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
return vaStatus;
}
 
obj_config->profile = profile;
obj_config->entrypoint = entrypoint;
obj_config->attrib_list[0].type = VAConfigAttribRTFormat;
obj_config->attrib_list[0].value = VA_RT_FORMAT_YUV420;
obj_config->num_attribs = 1;
 
for(i = 0; i < num_attribs; i++) {
vaStatus = i965_update_attribute(obj_config, &(attrib_list[i]));
 
if (VA_STATUS_SUCCESS != vaStatus) {
break;
}
}
 
/* Error recovery */
if (VA_STATUS_SUCCESS != vaStatus) {
i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
} else {
*config_id = configID;
}
 
return vaStatus;
}
 
VAStatus
i965_DestroyConfig(VADriverContextP ctx, VAConfigID config_id)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_config *obj_config = CONFIG(config_id);
VAStatus vaStatus;
 
if (NULL == obj_config) {
vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
return vaStatus;
}
 
i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
return VA_STATUS_SUCCESS;
}
 
VAStatus i965_QueryConfigAttributes(VADriverContextP ctx,
VAConfigID config_id,
VAProfile *profile, /* out */
VAEntrypoint *entrypoint, /* out */
VAConfigAttrib *attrib_list, /* out */
int *num_attribs) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_config *obj_config = CONFIG(config_id);
VAStatus vaStatus = VA_STATUS_SUCCESS;
int i;
 
assert(obj_config);
*profile = obj_config->profile;
*entrypoint = obj_config->entrypoint;
*num_attribs = obj_config->num_attribs;
 
for(i = 0; i < obj_config->num_attribs; i++) {
attrib_list[i] = obj_config->attrib_list[i];
}
 
return vaStatus;
}
 
static void
i965_destroy_surface(struct object_heap *heap, struct object_base *obj)
{
struct object_surface *obj_surface = (struct object_surface *)obj;
 
dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
 
if (obj_surface->free_private_data != NULL) {
obj_surface->free_private_data(&obj_surface->private_data);
obj_surface->private_data = NULL;
}
 
object_heap_free(heap, obj);
}
 
VAStatus
i965_CreateSurfaces(VADriverContextP ctx,
int width,
int height,
int format,
int num_surfaces,
VASurfaceID *surfaces) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i,j;
VAStatus vaStatus = VA_STATUS_SUCCESS;
 
/* We only support one format */
if (VA_RT_FORMAT_YUV420 != format) {
return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
}
 
for (i = 0; i < num_surfaces; i++) {
int surfaceID = NEW_SURFACE_ID();
struct object_surface *obj_surface = SURFACE(surfaceID);
 
if (NULL == obj_surface) {
vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
break;
}
 
surfaces[i] = surfaceID;
obj_surface->status = VASurfaceReady;
obj_surface->orig_width = width;
obj_surface->orig_height = height;
 
if (IS_G4X(i965->intel.device_id) || IS_IRONLAKE(i965->intel.device_id)) {
obj_surface->width = ALIGN(width, 16);
obj_surface->height = ALIGN(height, 16);
} else {
obj_surface->width = ALIGN(width, 128);
obj_surface->height = ALIGN(height, 32);
}
 
obj_surface->subpic_render_idx = 0;
for(j = 0; j < I965_MAX_SUBPIC_SUM; j++){
obj_surface->subpic[j] = VA_INVALID_ID;
}
 
obj_surface->flags = SURFACE_REFERENCED;
obj_surface->fourcc = 0;
obj_surface->bo = NULL;
obj_surface->locked_image_id = VA_INVALID_ID;
obj_surface->private_data = NULL;
obj_surface->free_private_data = NULL;
obj_surface->subsampling = SUBSAMPLE_YUV420;
}
 
/* Error recovery */
if (VA_STATUS_SUCCESS != vaStatus) {
/* surfaces[i-1] was the last successful allocation */
for (; i--; ) {
struct object_surface *obj_surface = SURFACE(surfaces[i]);
 
surfaces[i] = VA_INVALID_SURFACE;
assert(obj_surface);
i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
}
}
 
return vaStatus;
}
 
VAStatus
i965_DestroySurfaces(VADriverContextP ctx,
VASurfaceID *surface_list,
int num_surfaces)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
for (i = num_surfaces; i--; ) {
struct object_surface *obj_surface = SURFACE(surface_list[i]);
 
assert(obj_surface);
i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
}
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_QueryImageFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
int *num_formats) /* out */
{
int n;
 
for (n = 0; i965_image_formats_map[n].va_format.fourcc != 0; n++) {
const i965_image_format_map_t * const m = &i965_image_formats_map[n];
if (format_list)
format_list[n] = m->va_format;
}
 
if (num_formats)
*num_formats = n;
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_PutImage(VADriverContextP ctx,
VASurfaceID surface,
VAImageID image,
int src_x,
int src_y,
unsigned int src_width,
unsigned int src_height,
int dest_x,
int dest_y,
unsigned int dest_width,
unsigned int dest_height)
{
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_QuerySubpictureFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
unsigned int *flags, /* out */
unsigned int *num_formats) /* out */
{
int n;
 
for (n = 0; i965_subpic_formats_map[n].va_format.fourcc != 0; n++) {
const i965_subpic_format_map_t * const m = &i965_subpic_formats_map[n];
if (format_list)
format_list[n] = m->va_format;
if (flags)
flags[n] = m->va_flags;
}
 
if (num_formats)
*num_formats = n;
 
return VA_STATUS_SUCCESS;
}
 
static void
i965_destroy_subpic(struct object_heap *heap, struct object_base *obj)
{
// struct object_subpic *obj_subpic = (struct object_subpic *)obj;
 
object_heap_free(heap, obj);
}
 
VAStatus
i965_CreateSubpicture(VADriverContextP ctx,
VAImageID image,
VASubpictureID *subpicture) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VASubpictureID subpicID = NEW_SUBPIC_ID()
struct object_subpic *obj_subpic = SUBPIC(subpicID);
 
if (!obj_subpic)
return VA_STATUS_ERROR_ALLOCATION_FAILED;
 
struct object_image *obj_image = IMAGE(image);
if (!obj_image)
return VA_STATUS_ERROR_INVALID_IMAGE;
 
const i965_subpic_format_map_t * const m = get_subpic_format(&obj_image->image.format);
if (!m)
return VA_STATUS_ERROR_UNKNOWN; /* XXX: VA_STATUS_ERROR_UNSUPPORTED_FORMAT? */
 
*subpicture = subpicID;
obj_subpic->image = image;
obj_subpic->format = m->format;
obj_subpic->width = obj_image->image.width;
obj_subpic->height = obj_image->image.height;
obj_subpic->pitch = obj_image->image.pitches[0];
obj_subpic->bo = obj_image->bo;
obj_subpic->global_alpha = 1.0;
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_DestroySubpicture(VADriverContextP ctx,
VASubpictureID subpicture)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_subpic *obj_subpic = SUBPIC(subpicture);
i965_destroy_subpic(&i965->subpic_heap, (struct object_base *)obj_subpic);
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_SetSubpictureImage(VADriverContextP ctx,
VASubpictureID subpicture,
VAImageID image)
{
/* TODO */
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
 
VAStatus
i965_SetSubpictureChromakey(VADriverContextP ctx,
VASubpictureID subpicture,
unsigned int chromakey_min,
unsigned int chromakey_max,
unsigned int chromakey_mask)
{
/* TODO */
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
 
VAStatus
i965_SetSubpictureGlobalAlpha(VADriverContextP ctx,
VASubpictureID subpicture,
float global_alpha)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_subpic *obj_subpic = SUBPIC(subpicture);
 
if(global_alpha > 1.0 || global_alpha < 0.0){
return VA_STATUS_ERROR_INVALID_PARAMETER;
}
obj_subpic->global_alpha = global_alpha;
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_AssociateSubpicture(VADriverContextP ctx,
VASubpictureID subpicture,
VASurfaceID *target_surfaces,
int num_surfaces,
short src_x, /* upper left offset in subpicture */
short src_y,
unsigned short src_width,
unsigned short src_height,
short dest_x, /* upper left offset in surface */
short dest_y,
unsigned short dest_width,
unsigned short dest_height,
/*
* whether to enable chroma-keying or global-alpha
* see VA_SUBPICTURE_XXX values
*/
unsigned int flags)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_subpic *obj_subpic = SUBPIC(subpicture);
int i, j;
 
obj_subpic->src_rect.x = src_x;
obj_subpic->src_rect.y = src_y;
obj_subpic->src_rect.width = src_width;
obj_subpic->src_rect.height = src_height;
obj_subpic->dst_rect.x = dest_x;
obj_subpic->dst_rect.y = dest_y;
obj_subpic->dst_rect.width = dest_width;
obj_subpic->dst_rect.height = dest_height;
obj_subpic->flags = flags;
 
for (i = 0; i < num_surfaces; i++) {
struct object_surface *obj_surface = SURFACE(target_surfaces[i]);
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
 
for(j = 0; j < I965_MAX_SUBPIC_SUM; j ++){
if(obj_surface->subpic[j] == VA_INVALID_ID){
obj_surface->subpic[j] = subpicture;
break;
}
}
 
if(j == I965_MAX_SUBPIC_SUM){
return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
}
 
}
return VA_STATUS_SUCCESS;
}
 
 
VAStatus
i965_DeassociateSubpicture(VADriverContextP ctx,
VASubpictureID subpicture,
VASurfaceID *target_surfaces,
int num_surfaces)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i, j;
 
for (i = 0; i < num_surfaces; i++) {
struct object_surface *obj_surface = SURFACE(target_surfaces[i]);
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
 
for(j = 0; j < I965_MAX_SUBPIC_SUM; j ++){
if(obj_surface->subpic[j] == subpicture){
obj_surface->subpic[j] = VA_INVALID_ID;
break;
}
}
 
if(j == I965_MAX_SUBPIC_SUM){
return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
}
}
return VA_STATUS_SUCCESS;
}
 
void
i965_reference_buffer_store(struct buffer_store **ptr,
struct buffer_store *buffer_store)
{
assert(*ptr == NULL);
 
if (buffer_store) {
buffer_store->ref_count++;
*ptr = buffer_store;
}
}
 
void
i965_release_buffer_store(struct buffer_store **ptr)
{
struct buffer_store *buffer_store = *ptr;
 
if (buffer_store == NULL)
return;
 
assert(buffer_store->bo || buffer_store->buffer);
assert(!(buffer_store->bo && buffer_store->buffer));
buffer_store->ref_count--;
 
if (buffer_store->ref_count == 0) {
dri_bo_unreference(buffer_store->bo);
free(buffer_store->buffer);
buffer_store->bo = NULL;
buffer_store->buffer = NULL;
free(buffer_store);
}
 
*ptr = NULL;
}
 
static void
i965_destroy_context(struct object_heap *heap, struct object_base *obj)
{
struct object_context *obj_context = (struct object_context *)obj;
int i;
 
if (obj_context->hw_context) {
obj_context->hw_context->destroy(obj_context->hw_context);
obj_context->hw_context = NULL;
}
 
if (obj_context->codec_type == CODEC_ENC) {
assert(obj_context->codec_state.encode.num_slice_params <= obj_context->codec_state.encode.max_slice_params);
i965_release_buffer_store(&obj_context->codec_state.encode.pic_param);
i965_release_buffer_store(&obj_context->codec_state.encode.seq_param);
 
for (i = 0; i < obj_context->codec_state.encode.num_slice_params; i++)
i965_release_buffer_store(&obj_context->codec_state.encode.slice_params[i]);
 
free(obj_context->codec_state.encode.slice_params);
} else {
assert(obj_context->codec_state.decode.num_slice_params <= obj_context->codec_state.decode.max_slice_params);
assert(obj_context->codec_state.decode.num_slice_datas <= obj_context->codec_state.decode.max_slice_datas);
 
i965_release_buffer_store(&obj_context->codec_state.decode.pic_param);
i965_release_buffer_store(&obj_context->codec_state.decode.iq_matrix);
i965_release_buffer_store(&obj_context->codec_state.decode.bit_plane);
 
for (i = 0; i < obj_context->codec_state.decode.num_slice_params; i++)
i965_release_buffer_store(&obj_context->codec_state.decode.slice_params[i]);
 
for (i = 0; i < obj_context->codec_state.decode.num_slice_datas; i++)
i965_release_buffer_store(&obj_context->codec_state.decode.slice_datas[i]);
 
free(obj_context->codec_state.decode.slice_params);
free(obj_context->codec_state.decode.slice_datas);
}
 
free(obj_context->render_targets);
object_heap_free(heap, obj);
}
 
VAStatus
i965_CreateContext(VADriverContextP ctx,
VAConfigID config_id,
int picture_width,
int picture_height,
int flag,
VASurfaceID *render_targets,
int num_render_targets,
VAContextID *context) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct object_config *obj_config = CONFIG(config_id);
struct object_context *obj_context = NULL;
VAStatus vaStatus = VA_STATUS_SUCCESS;
int contextID;
int i;
 
if (NULL == obj_config) {
vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
return vaStatus;
}
 
if (picture_width > i965->codec_info->max_width ||
picture_height > i965->codec_info->max_height) {
vaStatus = VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED;
return vaStatus;
}
 
/* Validate flag */
/* Validate picture dimensions */
contextID = NEW_CONTEXT_ID();
obj_context = CONTEXT(contextID);
 
if (NULL == obj_context) {
vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
return vaStatus;
}
 
render_state->inited = 1;
 
switch (obj_config->profile) {
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
if (!HAS_H264(i965))
return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
render_state->interleaved_uv = 1;
break;
default:
render_state->interleaved_uv = !!(IS_GEN6(i965->intel.device_id) || IS_GEN7(i965->intel.device_id));
break;
}
 
*context = contextID;
obj_context->flags = flag;
obj_context->context_id = contextID;
obj_context->config_id = config_id;
obj_context->picture_width = picture_width;
obj_context->picture_height = picture_height;
obj_context->num_render_targets = num_render_targets;
obj_context->render_targets =
(VASurfaceID *)calloc(num_render_targets, sizeof(VASurfaceID));
obj_context->hw_context = NULL;
 
for(i = 0; i < num_render_targets; i++) {
if (NULL == SURFACE(render_targets[i])) {
vaStatus = VA_STATUS_ERROR_INVALID_SURFACE;
break;
}
 
obj_context->render_targets[i] = render_targets[i];
}
 
if (VA_STATUS_SUCCESS == vaStatus) {
if (VAEntrypointEncSlice == obj_config->entrypoint ) { /*encode routin only*/
obj_context->codec_type = CODEC_ENC;
memset(&obj_context->codec_state.encode, 0, sizeof(obj_context->codec_state.encode));
obj_context->codec_state.encode.current_render_target = VA_INVALID_ID;
obj_context->codec_state.encode.max_slice_params = NUM_SLICES;
obj_context->codec_state.encode.slice_params = calloc(obj_context->codec_state.encode.max_slice_params,
sizeof(*obj_context->codec_state.encode.slice_params));
assert(i965->codec_info->enc_hw_context_init);
obj_context->hw_context = i965->codec_info->enc_hw_context_init(ctx, obj_config->profile);
} else {
obj_context->codec_type = CODEC_DEC;
memset(&obj_context->codec_state.decode, 0, sizeof(obj_context->codec_state.decode));
obj_context->codec_state.decode.current_render_target = -1;
obj_context->codec_state.decode.max_slice_params = NUM_SLICES;
obj_context->codec_state.decode.max_slice_datas = NUM_SLICES;
obj_context->codec_state.decode.slice_params = calloc(obj_context->codec_state.decode.max_slice_params,
sizeof(*obj_context->codec_state.decode.slice_params));
obj_context->codec_state.decode.slice_datas = calloc(obj_context->codec_state.decode.max_slice_datas,
sizeof(*obj_context->codec_state.decode.slice_datas));
 
assert(i965->codec_info->dec_hw_context_init);
obj_context->hw_context = i965->codec_info->dec_hw_context_init(ctx, obj_config->profile);
}
}
 
/* Error recovery */
if (VA_STATUS_SUCCESS != vaStatus) {
i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
}
 
return vaStatus;
}
 
VAStatus
i965_DestroyContext(VADriverContextP ctx, VAContextID context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context = CONTEXT(context);
 
assert(obj_context);
i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
 
return VA_STATUS_SUCCESS;
}
 
static void
i965_destroy_buffer(struct object_heap *heap, struct object_base *obj)
{
struct object_buffer *obj_buffer = (struct object_buffer *)obj;
 
assert(obj_buffer->buffer_store);
i965_release_buffer_store(&obj_buffer->buffer_store);
object_heap_free(heap, obj);
}
 
static VAStatus
i965_create_buffer_internal(VADriverContextP ctx,
VAContextID context,
VABufferType type,
unsigned int size,
unsigned int num_elements,
void *data,
dri_bo *store_bo,
VABufferID *buf_id)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_buffer *obj_buffer = NULL;
struct buffer_store *buffer_store = NULL;
int bufferID;
 
/* Validate type */
switch (type) {
case VAPictureParameterBufferType:
case VAIQMatrixBufferType:
case VABitPlaneBufferType:
case VASliceGroupMapBufferType:
case VASliceParameterBufferType:
case VASliceDataBufferType:
case VAMacroblockParameterBufferType:
case VAResidualDataBufferType:
case VADeblockingParameterBufferType:
case VAImageBufferType:
case VAEncCodedBufferType:
case VAEncSequenceParameterBufferType:
case VAEncPictureParameterBufferType:
case VAEncSliceParameterBufferType:
#ifdef HAVE_VA_JPEG_DECODE
case VAHuffmanTableBufferType:
#endif
/* Ok */
break;
 
default:
return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
}
 
bufferID = NEW_BUFFER_ID();
obj_buffer = BUFFER(bufferID);
 
if (NULL == obj_buffer) {
return VA_STATUS_ERROR_ALLOCATION_FAILED;
}
 
if (type == VAEncCodedBufferType) {
size += ALIGN(sizeof(VACodedBufferSegment), 64);
}
 
obj_buffer->max_num_elements = num_elements;
obj_buffer->num_elements = num_elements;
obj_buffer->size_element = size;
obj_buffer->type = type;
obj_buffer->buffer_store = NULL;
buffer_store = calloc(1, sizeof(struct buffer_store));
assert(buffer_store);
buffer_store->ref_count = 1;
 
if (store_bo != NULL) {
buffer_store->bo = store_bo;
dri_bo_reference(buffer_store->bo);
 
if (data)
dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data);
} else if (type == VASliceDataBufferType || type == VAImageBufferType || type == VAEncCodedBufferType) {
buffer_store->bo = dri_bo_alloc(i965->intel.bufmgr,
"Buffer",
size * num_elements, 64);
assert(buffer_store->bo);
 
if (type == VAEncCodedBufferType) {
VACodedBufferSegment *coded_buffer_segment;
dri_bo_map(buffer_store->bo, 1);
coded_buffer_segment = (VACodedBufferSegment *)buffer_store->bo->virtual;
coded_buffer_segment->size = size - ALIGN(sizeof(VACodedBufferSegment), 64);
coded_buffer_segment->bit_offset = 0;
coded_buffer_segment->status = 0;
coded_buffer_segment->buf = NULL;
coded_buffer_segment->next = NULL;
dri_bo_unmap(buffer_store->bo);
} else if (data) {
dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data);
}
 
} else {
buffer_store->buffer = malloc(size * num_elements);
assert(buffer_store->buffer);
 
if (data)
memcpy(buffer_store->buffer, data, size * num_elements);
}
 
buffer_store->num_elements = obj_buffer->num_elements;
i965_reference_buffer_store(&obj_buffer->buffer_store, buffer_store);
i965_release_buffer_store(&buffer_store);
*buf_id = bufferID;
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_CreateBuffer(VADriverContextP ctx,
VAContextID context, /* in */
VABufferType type, /* in */
unsigned int size, /* in */
unsigned int num_elements, /* in */
void *data, /* in */
VABufferID *buf_id) /* out */
{
return i965_create_buffer_internal(ctx, context, type, size, num_elements, data, NULL, buf_id);
}
 
 
VAStatus
i965_BufferSetNumElements(VADriverContextP ctx,
VABufferID buf_id, /* in */
unsigned int num_elements) /* in */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_buffer *obj_buffer = BUFFER(buf_id);
VAStatus vaStatus = VA_STATUS_SUCCESS;
 
assert(obj_buffer);
 
if ((num_elements < 0) ||
(num_elements > obj_buffer->max_num_elements)) {
vaStatus = VA_STATUS_ERROR_UNKNOWN;
} else {
obj_buffer->num_elements = num_elements;
if (obj_buffer->buffer_store != NULL) {
obj_buffer->buffer_store->num_elements = num_elements;
}
}
 
return vaStatus;
}
 
VAStatus
i965_MapBuffer(VADriverContextP ctx,
VABufferID buf_id, /* in */
void **pbuf) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_buffer *obj_buffer = BUFFER(buf_id);
VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
 
assert(obj_buffer && obj_buffer->buffer_store);
assert(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer);
assert(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer));
 
if (NULL != obj_buffer->buffer_store->bo) {
unsigned int tiling, swizzle;
 
dri_bo_get_tiling(obj_buffer->buffer_store->bo, &tiling, &swizzle);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_map_gtt(obj_buffer->buffer_store->bo);
else
dri_bo_map(obj_buffer->buffer_store->bo, 1);
 
assert(obj_buffer->buffer_store->bo->virtual);
*pbuf = obj_buffer->buffer_store->bo->virtual;
 
if (obj_buffer->type == VAEncCodedBufferType) {
VACodedBufferSegment *coded_buffer_segment = (VACodedBufferSegment *)(obj_buffer->buffer_store->bo->virtual);
coded_buffer_segment->buf = (unsigned char *)(obj_buffer->buffer_store->bo->virtual) + ALIGN(sizeof(VACodedBufferSegment), 64);
}
 
vaStatus = VA_STATUS_SUCCESS;
} else if (NULL != obj_buffer->buffer_store->buffer) {
*pbuf = obj_buffer->buffer_store->buffer;
vaStatus = VA_STATUS_SUCCESS;
}
 
return vaStatus;
}
 
VAStatus
i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_buffer *obj_buffer = BUFFER(buf_id);
VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
 
assert(obj_buffer && obj_buffer->buffer_store);
assert(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer);
assert(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer));
 
if (NULL != obj_buffer->buffer_store->bo) {
unsigned int tiling, swizzle;
 
dri_bo_get_tiling(obj_buffer->buffer_store->bo, &tiling, &swizzle);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_unmap_gtt(obj_buffer->buffer_store->bo);
else
dri_bo_unmap(obj_buffer->buffer_store->bo);
 
vaStatus = VA_STATUS_SUCCESS;
} else if (NULL != obj_buffer->buffer_store->buffer) {
/* Do nothing */
vaStatus = VA_STATUS_SUCCESS;
}
 
return vaStatus;
}
 
VAStatus
i965_DestroyBuffer(VADriverContextP ctx, VABufferID buffer_id)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_buffer *obj_buffer = BUFFER(buffer_id);
 
assert(obj_buffer);
i965_destroy_buffer(&i965->buffer_heap, (struct object_base *)obj_buffer);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_BeginPicture(VADriverContextP ctx,
VAContextID context,
VASurfaceID render_target)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context = CONTEXT(context);
struct object_surface *obj_surface = SURFACE(render_target);
struct object_config *obj_config;
VAContextID config;
VAStatus vaStatus;
int i;
 
assert(obj_context);
assert(obj_surface);
 
config = obj_context->config_id;
obj_config = CONFIG(config);
assert(obj_config);
 
switch (obj_config->profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
vaStatus = VA_STATUS_SUCCESS;
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
vaStatus = VA_STATUS_SUCCESS;
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
vaStatus = VA_STATUS_SUCCESS;
break;
 
case VAProfileJPEGBaseline:
vaStatus = VA_STATUS_SUCCESS;
break;
 
default:
assert(0);
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
break;
}
 
if (obj_context->codec_type == CODEC_ENC) {
i965_release_buffer_store(&obj_context->codec_state.encode.pic_param);
i965_release_buffer_store(&obj_context->codec_state.encode.seq_param);
 
for (i = 0; i < obj_context->codec_state.encode.num_slice_params; i++) {
i965_release_buffer_store(&obj_context->codec_state.encode.slice_params[i]);
}
 
obj_context->codec_state.encode.num_slice_params = 0;
obj_context->codec_state.encode.current_render_target = render_target; /*This is input new frame*/
} else {
obj_context->codec_state.decode.current_render_target = render_target;
i965_release_buffer_store(&obj_context->codec_state.decode.pic_param);
i965_release_buffer_store(&obj_context->codec_state.decode.iq_matrix);
i965_release_buffer_store(&obj_context->codec_state.decode.bit_plane);
i965_release_buffer_store(&obj_context->codec_state.decode.huffman_table);
 
for (i = 0; i < obj_context->codec_state.decode.num_slice_params; i++) {
i965_release_buffer_store(&obj_context->codec_state.decode.slice_params[i]);
i965_release_buffer_store(&obj_context->codec_state.decode.slice_datas[i]);
}
 
obj_context->codec_state.decode.num_slice_params = 0;
obj_context->codec_state.decode.num_slice_datas = 0;
}
 
return vaStatus;
}
 
#define I965_RENDER_BUFFER(category, name) i965_render_##category##_##name##_buffer(ctx, obj_context, obj_buffer)
 
#define DEF_RENDER_SINGLE_BUFFER_FUNC(category, name, member) \
static VAStatus \
i965_render_##category##_##name##_buffer(VADriverContextP ctx, \
struct object_context *obj_context, \
struct object_buffer *obj_buffer) \
{ \
struct category##_state *category = &obj_context->codec_state.category; \
assert(obj_buffer->buffer_store->bo == NULL); \
assert(obj_buffer->buffer_store->buffer); \
i965_release_buffer_store(&category->member); \
i965_reference_buffer_store(&category->member, obj_buffer->buffer_store); \
return VA_STATUS_SUCCESS; \
}
 
#define DEF_RENDER_MULTI_BUFFER_FUNC(category, name, member) \
static VAStatus \
i965_render_##category##_##name##_buffer(VADriverContextP ctx, \
struct object_context *obj_context, \
struct object_buffer *obj_buffer) \
{ \
struct category##_state *category = &obj_context->codec_state.category; \
if (category->num_##member == category->max_##member) { \
category->member = realloc(category->member, (category->max_##member + NUM_SLICES) * sizeof(*category->member)); \
memset(category->member + category->max_##member, 0, NUM_SLICES * sizeof(*category->member)); \
category->max_##member += NUM_SLICES; \
} \
i965_release_buffer_store(&category->member[category->num_##member]); \
i965_reference_buffer_store(&category->member[category->num_##member], obj_buffer->buffer_store); \
category->num_##member++; \
return VA_STATUS_SUCCESS; \
}
 
#define I965_RENDER_DECODE_BUFFER(name) I965_RENDER_BUFFER(decode, name)
 
#define DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(name, member) DEF_RENDER_SINGLE_BUFFER_FUNC(decode, name, member)
DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(picture_parameter, pic_param)
DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(iq_matrix, iq_matrix)
DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(bit_plane, bit_plane)
DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(huffman_table, huffman_table)
 
#define DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(decode, name, member)
DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params)
DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(slice_data, slice_datas)
 
static VAStatus
i965_decoder_render_picture(VADriverContextP ctx,
VAContextID context,
VABufferID *buffers,
int num_buffers)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context = CONTEXT(context);
VAStatus vaStatus = VA_STATUS_SUCCESS;
int i;
 
for (i = 0; i < num_buffers && vaStatus == VA_STATUS_SUCCESS; i++) {
struct object_buffer *obj_buffer = BUFFER(buffers[i]);
assert(obj_buffer);
 
switch (obj_buffer->type) {
case VAPictureParameterBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(picture_parameter);
break;
 
case VAIQMatrixBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(iq_matrix);
break;
 
case VABitPlaneBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(bit_plane);
break;
 
case VASliceParameterBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(slice_parameter);
break;
 
case VASliceDataBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(slice_data);
break;
 
#ifdef HAVE_VA_JPEG_DECODE
case VAHuffmanTableBufferType:
vaStatus = I965_RENDER_DECODE_BUFFER(huffman_table);
break;
#endif
 
default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
break;
}
}
 
return vaStatus;
}
 
#define I965_RENDER_ENCODE_BUFFER(name) I965_RENDER_BUFFER(encode, name)
 
#define DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(name, member) DEF_RENDER_SINGLE_BUFFER_FUNC(encode, name, member)
DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(sequence_parameter, seq_param)
DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_parameter, pic_param)
DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_control, pic_control)
DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(qmatrix, q_matrix)
DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(iqmatrix, iq_matrix)
 
#define DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(encode, name, member)
DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params)
 
static VAStatus
i965_encoder_render_picture(VADriverContextP ctx,
VAContextID context,
VABufferID *buffers,
int num_buffers)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context = CONTEXT(context);
VAStatus vaStatus = VA_STATUS_SUCCESS;
int i;
 
for (i = 0; i < num_buffers && vaStatus == VA_STATUS_SUCCESS; i++) {
struct object_buffer *obj_buffer = BUFFER(buffers[i]);
assert(obj_buffer);
 
switch (obj_buffer->type) {
case VAEncSequenceParameterBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(sequence_parameter);
break;
 
case VAEncPictureParameterBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(picture_parameter);
break;
 
case VAEncSliceParameterBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(slice_parameter);
break;
 
case VAPictureParameterBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(picture_control);
break;
 
case VAQMatrixBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(qmatrix);
break;
 
case VAIQMatrixBufferType:
vaStatus = I965_RENDER_ENCODE_BUFFER(iqmatrix);
break;
 
default:
vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
break;
}
}
 
return vaStatus;
}
 
VAStatus
i965_RenderPicture(VADriverContextP ctx,
VAContextID context,
VABufferID *buffers,
int num_buffers)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context;
struct object_config *obj_config;
VAContextID config;
VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
 
obj_context = CONTEXT(context);
assert(obj_context);
 
config = obj_context->config_id;
obj_config = CONFIG(config);
assert(obj_config);
 
if (VAEntrypointEncSlice == obj_config->entrypoint ){
vaStatus = i965_encoder_render_picture(ctx, context, buffers, num_buffers);
} else {
vaStatus = i965_decoder_render_picture(ctx, context, buffers, num_buffers);
}
 
return vaStatus;
}
 
VAStatus
i965_EndPicture(VADriverContextP ctx, VAContextID context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_context *obj_context = CONTEXT(context);
struct object_config *obj_config;
VAContextID config;
 
assert(obj_context);
config = obj_context->config_id;
obj_config = CONFIG(config);
assert(obj_config);
 
if (obj_context->codec_type == CODEC_ENC) {
assert(VAEntrypointEncSlice == obj_config->entrypoint);
 
assert(obj_context->codec_state.encode.pic_param);
assert(obj_context->codec_state.encode.seq_param);
assert(obj_context->codec_state.encode.num_slice_params >= 1);
} else {
assert(obj_context->codec_state.decode.pic_param);
assert(obj_context->codec_state.decode.num_slice_params >= 1);
assert(obj_context->codec_state.decode.num_slice_datas >= 1);
assert(obj_context->codec_state.decode.num_slice_params == obj_context->codec_state.decode.num_slice_datas);
}
 
assert(obj_context->hw_context->run);
obj_context->hw_context->run(ctx, obj_config->profile, &obj_context->codec_state, obj_context->hw_context);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_SyncSurface(VADriverContextP ctx,
VASurfaceID render_target)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(render_target);
 
assert(obj_surface);
 
if(obj_surface->bo)
drm_intel_bo_wait_rendering(obj_surface->bo);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_QuerySurfaceStatus(VADriverContextP ctx,
VASurfaceID render_target,
VASurfaceStatus *status) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(render_target);
 
assert(obj_surface);
 
if (obj_surface->bo) {
// if (drm_intel_bo_busy(obj_surface->bo)){
// *status = VASurfaceRendering;
// }
// else {
*status = VASurfaceReady;
// }
} else {
*status = VASurfaceReady;
}
 
return VA_STATUS_SUCCESS;
}
 
static VADisplayAttribute *
get_display_attribute(VADriverContextP ctx, VADisplayAttribType type)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
unsigned int i;
 
if (!i965->display_attributes)
return NULL;
 
for (i = 0; i < i965->num_display_attributes; i++) {
if (i965->display_attributes[i].type == type)
return &i965->display_attributes[i];
}
return NULL;
}
 
static bool
i965_display_attributes_init(VADriverContextP ctx)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
 
printf("%s\n", __FUNCTION__);
 
i965->num_display_attributes = ARRAY_ELEMS(i965_display_attributes);
i965->display_attributes = malloc(
i965->num_display_attributes * sizeof(i965->display_attributes[0]));
if (!i965->display_attributes)
return false;
 
memcpy(
i965->display_attributes,
i965_display_attributes,
sizeof(i965_display_attributes)
);
 
i965->rotation_attrib = get_display_attribute(ctx, VADisplayAttribRotation);
if (!i965->rotation_attrib)
return false;
return true;
}
 
static void
i965_display_attributes_terminate(VADriverContextP ctx)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
 
if (i965->display_attributes) {
free(i965->display_attributes);
i965->display_attributes = NULL;
i965->num_display_attributes = 0;
}
}
 
/*
* Query display attributes
* The caller must provide a "attr_list" array that can hold at
* least vaMaxNumDisplayAttributes() entries. The actual number of attributes
* returned in "attr_list" is returned in "num_attributes".
*/
VAStatus
i965_QueryDisplayAttributes(
VADriverContextP ctx,
VADisplayAttribute *attribs, /* out */
int *num_attribs_ptr /* out */
)
{
const int num_attribs = ARRAY_ELEMS(i965_display_attributes);
 
if (attribs && num_attribs > 0)
memcpy(attribs, i965_display_attributes, sizeof(i965_display_attributes));
 
if (num_attribs_ptr)
*num_attribs_ptr = num_attribs;
 
return VA_STATUS_SUCCESS;
}
 
/*
* Get display attributes
* This function returns the current attribute values in "attr_list".
* Only attributes returned with VA_DISPLAY_ATTRIB_GETTABLE set in the "flags" field
* from vaQueryDisplayAttributes() can have their values retrieved.
*/
VAStatus
i965_GetDisplayAttributes(
VADriverContextP ctx,
VADisplayAttribute *attribs, /* inout */
int num_attribs /* in */
)
{
int i;
 
for (i = 0; i < num_attribs; i++) {
VADisplayAttribute *src_attrib, * const dst_attrib = &attribs[i];
 
src_attrib = get_display_attribute(ctx, dst_attrib->type);
if (src_attrib && (src_attrib->flags & VA_DISPLAY_ATTRIB_GETTABLE)) {
dst_attrib->min_value = src_attrib->min_value;
dst_attrib->max_value = src_attrib->max_value;
dst_attrib->value = src_attrib->value;
}
else
dst_attrib->flags = VA_DISPLAY_ATTRIB_NOT_SUPPORTED;
}
return VA_STATUS_SUCCESS;
}
 
/*
* Set display attributes
* Only attributes returned with VA_DISPLAY_ATTRIB_SETTABLE set in the "flags" field
* from vaQueryDisplayAttributes() can be set. If the attribute is not settable or
* the value is out of range, the function returns VA_STATUS_ERROR_ATTR_NOT_SUPPORTED
*/
VAStatus
i965_SetDisplayAttributes(
VADriverContextP ctx,
VADisplayAttribute *attribs, /* in */
int num_attribs /* in */
)
{
int i;
 
for (i = 0; i < num_attribs; i++) {
VADisplayAttribute *dst_attrib, * const src_attrib = &attribs[i];
 
dst_attrib = get_display_attribute(ctx, src_attrib->type);
if (!dst_attrib)
return VA_STATUS_ERROR_ATTR_NOT_SUPPORTED;
 
if (!(dst_attrib->flags & VA_DISPLAY_ATTRIB_SETTABLE))
continue;
 
if (src_attrib->value < dst_attrib->min_value ||
src_attrib->value > dst_attrib->max_value)
return VA_STATUS_ERROR_INVALID_PARAMETER;
 
dst_attrib->value = src_attrib->value;
/* XXX: track modified attributes through timestamps */
}
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_DbgCopySurfaceToBuffer(VADriverContextP ctx,
VASurfaceID surface,
void **buffer, /* out */
unsigned int *stride) /* out */
{
/* TODO */
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
 
static VAStatus
i965_Init(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
printf("%s context %p\n", __FUNCTION__, ctx);
 
 
if (intel_driver_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
printf("set codec info\n");
if (IS_HASWELL(i965->intel.device_id))
i965->codec_info = &gen75_hw_codec_info;
else if (IS_G4X(i965->intel.device_id))
i965->codec_info = &g4x_hw_codec_info;
else if (IS_IRONLAKE(i965->intel.device_id))
i965->codec_info = &ironlake_hw_codec_info;
else if (IS_GEN6(i965->intel.device_id))
i965->codec_info = &gen6_hw_codec_info;
else if (IS_GEN7(i965->intel.device_id))
i965->codec_info = &gen7_hw_codec_info;
else
return VA_STATUS_ERROR_UNKNOWN;
 
printf("codec info %p\n", i965->codec_info);
i965->batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, 0);
 
if (!i965_display_attributes_init(ctx))
return VA_STATUS_ERROR_UNKNOWN;
 
if (i965_post_processing_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
if (i965_render_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
#ifdef HAVE_VA_WAYLAND
if (IS_VA_WAYLAND(ctx) && !i965_output_wayland_init(ctx))
return VA_STATUS_ERROR_UNKNOWN;
#endif
 
#ifdef HAVE_VA_X11
if (IS_VA_X11(ctx) && !i965_output_dri_init(ctx))
return VA_STATUS_ERROR_UNKNOWN;
#endif
 
_i965InitMutex(&i965->render_mutex);
 
printf("device_id=%x has_exec2=%d has_bsd=%d has_blt=%d\n",
i965->intel.device_id, i965->intel.has_exec2,
i965->intel.has_bsd, i965->intel.has_blt);
 
printf("%s done\n", __FUNCTION__);
return VA_STATUS_SUCCESS;
}
 
static void
i965_destroy_heap(struct object_heap *heap,
void (*func)(struct object_heap *heap, struct object_base *object))
{
struct object_base *object;
object_heap_iterator iter;
 
object = object_heap_first(heap, &iter);
 
while (object) {
if (func)
func(heap, object);
 
object = object_heap_next(heap, &iter);
}
 
object_heap_destroy(heap);
}
 
 
VAStatus
i965_DestroyImage(VADriverContextP ctx, VAImageID image);
 
VAStatus
i965_CreateImage(VADriverContextP ctx,
VAImageFormat *format,
int width,
int height,
VAImage *out_image) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_image *obj_image;
VAStatus va_status = VA_STATUS_ERROR_OPERATION_FAILED;
VAImageID image_id;
unsigned int width2, height2, size2, size;
 
out_image->image_id = VA_INVALID_ID;
out_image->buf = VA_INVALID_ID;
 
image_id = NEW_IMAGE_ID();
if (image_id == VA_INVALID_ID)
return VA_STATUS_ERROR_ALLOCATION_FAILED;
 
obj_image = IMAGE(image_id);
if (!obj_image)
return VA_STATUS_ERROR_ALLOCATION_FAILED;
obj_image->bo = NULL;
obj_image->palette = NULL;
obj_image->derived_surface = VA_INVALID_ID;
 
VAImage * const image = &obj_image->image;
image->image_id = image_id;
image->buf = VA_INVALID_ID;
 
size = width * height;
width2 = (width + 1) / 2;
height2 = (height + 1) / 2;
size2 = width2 * height2;
 
image->num_palette_entries = 0;
image->entry_bytes = 0;
memset(image->component_order, 0, sizeof(image->component_order));
 
switch (format->fourcc) {
case VA_FOURCC('I','A','4','4'):
case VA_FOURCC('A','I','4','4'):
image->num_planes = 1;
image->pitches[0] = width;
image->offsets[0] = 0;
image->data_size = image->offsets[0] + image->pitches[0] * height;
image->num_palette_entries = 16;
image->entry_bytes = 3;
image->component_order[0] = 'R';
image->component_order[1] = 'G';
image->component_order[2] = 'B';
break;
case VA_FOURCC('I','A','8','8'):
case VA_FOURCC('A','I','8','8'):
image->num_planes = 1;
image->pitches[0] = width * 2;
image->offsets[0] = 0;
image->data_size = image->offsets[0] + image->pitches[0] * height;
image->num_palette_entries = 256;
image->entry_bytes = 3;
image->component_order[0] = 'R';
image->component_order[1] = 'G';
image->component_order[2] = 'B';
break;
case VA_FOURCC('A','R','G','B'):
case VA_FOURCC('A','B','G','R'):
case VA_FOURCC('B','G','R','A'):
case VA_FOURCC('R','G','B','A'):
image->num_planes = 1;
image->pitches[0] = width * 4;
image->offsets[0] = 0;
image->data_size = image->offsets[0] + image->pitches[0] * height;
break;
case VA_FOURCC('Y','V','1','2'):
image->num_planes = 3;
image->pitches[0] = width;
image->offsets[0] = 0;
image->pitches[1] = width2;
image->offsets[1] = size + size2;
image->pitches[2] = width2;
image->offsets[2] = size;
image->data_size = size + 2 * size2;
break;
case VA_FOURCC('I','4','2','0'):
image->num_planes = 3;
image->pitches[0] = width;
image->offsets[0] = 0;
image->pitches[1] = width2;
image->offsets[1] = size;
image->pitches[2] = width2;
image->offsets[2] = size + size2;
image->data_size = size + 2 * size2;
break;
case VA_FOURCC('N','V','1','2'):
image->num_planes = 2;
image->pitches[0] = width;
image->offsets[0] = 0;
image->pitches[1] = width;
image->offsets[1] = size;
image->data_size = size + 2 * size2;
break;
default:
goto error;
}
 
va_status = i965_CreateBuffer(ctx, 0, VAImageBufferType,
image->data_size, 1, NULL, &image->buf);
if (va_status != VA_STATUS_SUCCESS)
goto error;
 
obj_image->bo = BUFFER(image->buf)->buffer_store->bo;
dri_bo_reference(obj_image->bo);
 
if (image->num_palette_entries > 0 && image->entry_bytes > 0) {
obj_image->palette = malloc(image->num_palette_entries * sizeof(*obj_image->palette));
if (!obj_image->palette)
goto error;
}
 
image->image_id = image_id;
image->format = *format;
image->width = width;
image->height = height;
 
*out_image = *image;
return VA_STATUS_SUCCESS;
 
error:
i965_DestroyImage(ctx, image_id);
return va_status;
}
 
void
i965_check_alloc_surface_bo(VADriverContextP ctx,
struct object_surface *obj_surface,
int tiled,
unsigned int fourcc,
unsigned int subsampling)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int region_width, region_height;
 
if (obj_surface->bo) {
assert(obj_surface->fourcc);
assert(obj_surface->fourcc == fourcc);
assert(obj_surface->subsampling == subsampling);
return;
}
 
obj_surface->x_cb_offset = 0; /* X offset is always 0 */
obj_surface->x_cr_offset = 0;
 
if (tiled) {
assert(fourcc == VA_FOURCC('N', 'V', '1', '2') ||
fourcc == VA_FOURCC('I', 'M', 'C', '1') ||
fourcc == VA_FOURCC('I', 'M', 'C', '3'));
 
obj_surface->width = ALIGN(obj_surface->orig_width, 128);
obj_surface->height = ALIGN(obj_surface->orig_height, 32);
obj_surface->cb_cr_pitch = obj_surface->width;
region_width = obj_surface->width;
region_height = obj_surface->height;
 
if (fourcc == VA_FOURCC('N', 'V', '1', '2')) {
assert(subsampling == SUBSAMPLE_YUV420);
obj_surface->y_cb_offset = obj_surface->height;
obj_surface->y_cr_offset = obj_surface->height;
obj_surface->cb_cr_width = obj_surface->orig_width / 2;
obj_surface->cb_cr_height = obj_surface->orig_height / 2;
region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32);
} else if (fourcc == VA_FOURCC('I', 'M', 'C', '1') ||
fourcc == VA_FOURCC('I', 'M', 'C', '3')) {
switch (subsampling) {
case SUBSAMPLE_YUV400:
obj_surface->cb_cr_width = 0;
obj_surface->cb_cr_height = 0;
break;
 
case SUBSAMPLE_YUV420:
obj_surface->cb_cr_width = obj_surface->orig_width / 2;
obj_surface->cb_cr_height = obj_surface->orig_height / 2;
break;
 
case SUBSAMPLE_YUV422H:
obj_surface->cb_cr_width = obj_surface->orig_width / 2;
obj_surface->cb_cr_height = obj_surface->orig_height;
break;
 
case SUBSAMPLE_YUV422V:
obj_surface->cb_cr_width = obj_surface->orig_width;
obj_surface->cb_cr_height = obj_surface->orig_height / 2;
break;
 
case SUBSAMPLE_YUV444:
obj_surface->cb_cr_width = obj_surface->orig_width;
obj_surface->cb_cr_height = obj_surface->orig_height;
break;
 
case SUBSAMPLE_YUV411:
obj_surface->cb_cr_width = obj_surface->orig_width / 4;
obj_surface->cb_cr_height = obj_surface->orig_height;
break;
 
default:
assert(0);
break;
}
 
region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
 
if (fourcc == VA_FOURCC('I', 'M', 'C', '1')) {
obj_surface->y_cr_offset = obj_surface->height;
obj_surface->y_cb_offset = obj_surface->y_cr_offset + ALIGN(obj_surface->cb_cr_height, 32);
} else {
obj_surface->y_cb_offset = obj_surface->height;
obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
}
}
} else {
assert(fourcc != VA_FOURCC('I', 'M', 'C', '1') &&
fourcc != VA_FOURCC('I', 'M', 'C', '3'));
assert(subsampling == SUBSAMPLE_YUV420);
 
region_width = obj_surface->width;
region_height = obj_surface->height;
 
switch (fourcc) {
case VA_FOURCC('N', 'V', '1', '2'):
obj_surface->y_cb_offset = obj_surface->height;
obj_surface->y_cr_offset = obj_surface->height;
obj_surface->cb_cr_width = obj_surface->orig_width / 2;
obj_surface->cb_cr_height = obj_surface->orig_height / 2;
obj_surface->cb_cr_pitch = obj_surface->width;
region_height = obj_surface->height + obj_surface->height / 2;
break;
 
case VA_FOURCC('Y', 'V', '1', '2'):
case VA_FOURCC('I', '4', '2', '0'):
if (fourcc == VA_FOURCC('Y', 'V', '1', '2')) {
obj_surface->y_cr_offset = obj_surface->height;
obj_surface->y_cb_offset = obj_surface->height + obj_surface->height / 4;
} else {
obj_surface->y_cb_offset = obj_surface->height;
obj_surface->y_cr_offset = obj_surface->height + obj_surface->height / 4;
}
 
obj_surface->cb_cr_width = obj_surface->orig_width / 2;
obj_surface->cb_cr_height = obj_surface->orig_height / 2;
obj_surface->cb_cr_pitch = obj_surface->width / 2;
region_height = obj_surface->height + obj_surface->height / 2;
break;
 
default:
assert(0);
break;
}
}
 
obj_surface->size = ALIGN(region_width * region_height, 0x1000);
 
#if 0
if (tiled) {
uint32_t tiling_mode = I915_TILING_Y; /* always uses Y-tiled format */
unsigned long pitch;
 
obj_surface->bo = drm_intel_bo_alloc_tiled(i965->intel.bufmgr,
"vaapi surface",
region_width,
region_height,
1,
&tiling_mode,
&pitch,
0);
assert(tiling_mode == I915_TILING_Y);
assert(pitch == obj_surface->width);
} else {
#endif
obj_surface->bo = dri_bo_alloc(i965->intel.bufmgr,
"vaapi surface",
obj_surface->size,
0x1000);
// }
 
obj_surface->fourcc = fourcc;
obj_surface->subsampling = subsampling;
assert(obj_surface->bo);
}
 
VAStatus i965_DeriveImage(VADriverContextP ctx,
VASurfaceID surface,
VAImage *out_image) /* out */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct object_image *obj_image;
struct object_surface *obj_surface;
VAImageID image_id;
unsigned int w_pitch, h_pitch;
VAStatus va_status;
 
out_image->image_id = VA_INVALID_ID;
obj_surface = SURFACE(surface);
 
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
 
w_pitch = obj_surface->width;
h_pitch = obj_surface->height;
 
image_id = NEW_IMAGE_ID();
 
if (image_id == VA_INVALID_ID)
return VA_STATUS_ERROR_ALLOCATION_FAILED;
 
obj_image = IMAGE(image_id);
 
if (!obj_image)
return VA_STATUS_ERROR_ALLOCATION_FAILED;
 
obj_image->bo = NULL;
obj_image->palette = NULL;
obj_image->derived_surface = VA_INVALID_ID;
 
VAImage * const image = &obj_image->image;
 
memset(image, 0, sizeof(*image));
image->image_id = image_id;
image->buf = VA_INVALID_ID;
image->num_palette_entries = 0;
image->entry_bytes = 0;
image->width = obj_surface->orig_width;
image->height = obj_surface->orig_height;
image->data_size = obj_surface->size;
 
if (!render_state->inited) {
image->format.fourcc = VA_FOURCC('Y','V','1','2');
image->format.byte_order = VA_LSB_FIRST;
image->format.bits_per_pixel = 12;
image->num_planes = 3;
image->pitches[0] = w_pitch;
image->offsets[0] = 0;
image->pitches[1] = w_pitch / 2;
image->offsets[1] = w_pitch * h_pitch;
image->pitches[2] = w_pitch / 2;
image->offsets[2] = w_pitch * h_pitch + (w_pitch / 2) * (h_pitch / 2);
} else {
if (render_state->interleaved_uv) {
image->format.fourcc = VA_FOURCC('N','V','1','2');
image->format.byte_order = VA_LSB_FIRST;
image->format.bits_per_pixel = 12;
image->num_planes = 2;
image->pitches[0] = w_pitch;
image->offsets[0] = 0;
image->pitches[1] = w_pitch;
image->offsets[1] = w_pitch * h_pitch;
} else {
image->format.fourcc = VA_FOURCC('I','4','2','0');
image->format.byte_order = VA_LSB_FIRST;
image->format.bits_per_pixel = 12;
image->num_planes = 3;
image->pitches[0] = w_pitch;
image->offsets[0] = 0;
image->pitches[1] = w_pitch / 2;
image->offsets[1] = w_pitch * h_pitch;
image->pitches[2] = w_pitch / 2;
image->offsets[2] = w_pitch * h_pitch + (w_pitch / 2) * (h_pitch / 2);
}
}
 
i965_check_alloc_surface_bo(ctx, obj_surface, HAS_TILED_SURFACE(i965), image->format.fourcc, SUBSAMPLE_YUV420);
va_status = i965_create_buffer_internal(ctx, 0, VAImageBufferType,
obj_surface->size, 1, NULL, obj_surface->bo, &image->buf);
if (va_status != VA_STATUS_SUCCESS)
goto error;
 
obj_image->bo = BUFFER(image->buf)->buffer_store->bo;
dri_bo_reference(obj_image->bo);
 
if (image->num_palette_entries > 0 && image->entry_bytes > 0) {
obj_image->palette = malloc(image->num_palette_entries * sizeof(obj_image->palette));
if (!obj_image->palette) {
va_status = VA_STATUS_ERROR_ALLOCATION_FAILED;
goto error;
}
}
 
*out_image = *image;
obj_surface->flags |= SURFACE_DERIVED;
obj_image->derived_surface = surface;
 
return VA_STATUS_SUCCESS;
 
error:
i965_DestroyImage(ctx, image_id);
return va_status;
}
 
static void
i965_destroy_image(struct object_heap *heap, struct object_base *obj)
{
object_heap_free(heap, obj);
}
 
 
VAStatus
i965_DestroyImage(VADriverContextP ctx, VAImageID image)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_image *obj_image = IMAGE(image);
struct object_surface *obj_surface;
 
if (!obj_image)
return VA_STATUS_SUCCESS;
 
dri_bo_unreference(obj_image->bo);
obj_image->bo = NULL;
 
if (obj_image->image.buf != VA_INVALID_ID) {
i965_DestroyBuffer(ctx, obj_image->image.buf);
obj_image->image.buf = VA_INVALID_ID;
}
 
if (obj_image->palette) {
free(obj_image->palette);
obj_image->palette = NULL;
}
 
obj_surface = SURFACE(obj_image->derived_surface);
 
if (obj_surface) {
obj_surface->flags &= ~SURFACE_DERIVED;
}
 
i965_destroy_image(&i965->image_heap, (struct object_base *)obj_image);
 
return VA_STATUS_SUCCESS;
}
 
/*
* pointer to an array holding the palette data. The size of the array is
* num_palette_entries * entry_bytes in size. The order of the components
* in the palette is described by the component_order in VASubpicture struct
*/
VAStatus
i965_SetImagePalette(VADriverContextP ctx,
VAImageID image,
unsigned char *palette)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
unsigned int i;
 
struct object_image *obj_image = IMAGE(image);
if (!obj_image)
return VA_STATUS_ERROR_INVALID_IMAGE;
 
if (!obj_image->palette)
return VA_STATUS_ERROR_ALLOCATION_FAILED; /* XXX: unpaletted/error */
 
for (i = 0; i < obj_image->image.num_palette_entries; i++)
obj_image->palette[i] = (((unsigned int)palette[3*i + 0] << 16) |
((unsigned int)palette[3*i + 1] << 8) |
(unsigned int)palette[3*i + 2]);
return VA_STATUS_SUCCESS;
}
 
static inline void
memcpy_pic(uint8_t *dst, unsigned int dst_stride,
const uint8_t *src, unsigned int src_stride,
unsigned int len, unsigned int height)
{
unsigned int i;
 
for (i = 0; i < height; i++) {
memcpy(dst, src, len);
dst += dst_stride;
src += src_stride;
}
}
 
static void
get_image_i420(struct object_image *obj_image, uint8_t *image_data,
struct object_surface *obj_surface,
const VARectangle *rect)
{
uint8_t *dst[3], *src[3];
const int Y = 0;
const int U = obj_image->image.format.fourcc == obj_surface->fourcc ? 1 : 2;
const int V = obj_image->image.format.fourcc == obj_surface->fourcc ? 2 : 1;
unsigned int tiling, swizzle;
 
if (!obj_surface->bo)
return;
 
assert(obj_surface->fourcc);
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_map_gtt(obj_surface->bo);
else
dri_bo_map(obj_surface->bo, 0);
 
if (!obj_surface->bo->virtual)
return;
 
/* Dest VA image has either I420 or YV12 format.
Source VA surface alway has I420 format */
dst[Y] = image_data + obj_image->image.offsets[Y];
src[0] = (uint8_t *)obj_surface->bo->virtual;
dst[U] = image_data + obj_image->image.offsets[U];
src[1] = src[0] + obj_surface->width * obj_surface->height;
dst[V] = image_data + obj_image->image.offsets[V];
src[2] = src[1] + (obj_surface->width / 2) * (obj_surface->height / 2);
 
/* Y plane */
dst[Y] += rect->y * obj_image->image.pitches[Y] + rect->x;
src[0] += rect->y * obj_surface->width + rect->x;
memcpy_pic(dst[Y], obj_image->image.pitches[Y],
src[0], obj_surface->width,
rect->width, rect->height);
 
/* U plane */
dst[U] += (rect->y / 2) * obj_image->image.pitches[U] + rect->x / 2;
src[1] += (rect->y / 2) * obj_surface->width / 2 + rect->x / 2;
memcpy_pic(dst[U], obj_image->image.pitches[U],
src[1], obj_surface->width / 2,
rect->width / 2, rect->height / 2);
 
/* V plane */
dst[V] += (rect->y / 2) * obj_image->image.pitches[V] + rect->x / 2;
src[2] += (rect->y / 2) * obj_surface->width / 2 + rect->x / 2;
memcpy_pic(dst[V], obj_image->image.pitches[V],
src[2], obj_surface->width / 2,
rect->width / 2, rect->height / 2);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
else
dri_bo_unmap(obj_surface->bo);
}
 
static void
get_image_nv12(struct object_image *obj_image, uint8_t *image_data,
struct object_surface *obj_surface,
const VARectangle *rect)
{
uint8_t *dst[2], *src[2];
unsigned int tiling, swizzle;
 
if (!obj_surface->bo)
return;
 
assert(obj_surface->fourcc);
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_map_gtt(obj_surface->bo);
else
dri_bo_map(obj_surface->bo, 0);
 
if (!obj_surface->bo->virtual)
return;
 
/* Both dest VA image and source surface have NV12 format */
dst[0] = image_data + obj_image->image.offsets[0];
src[0] = (uint8_t *)obj_surface->bo->virtual;
dst[1] = image_data + obj_image->image.offsets[1];
src[1] = src[0] + obj_surface->width * obj_surface->height;
 
/* Y plane */
dst[0] += rect->y * obj_image->image.pitches[0] + rect->x;
src[0] += rect->y * obj_surface->width + rect->x;
memcpy_pic(dst[0], obj_image->image.pitches[0],
src[0], obj_surface->width,
rect->width, rect->height);
 
/* UV plane */
dst[1] += (rect->y / 2) * obj_image->image.pitches[1] + (rect->x & -2);
src[1] += (rect->y / 2) * obj_surface->width + (rect->x & -2);
memcpy_pic(dst[1], obj_image->image.pitches[1],
src[1], obj_surface->width,
rect->width, rect->height / 2);
 
if (tiling != I915_TILING_NONE)
drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
else
dri_bo_unmap(obj_surface->bo);
}
 
VAStatus
i965_GetImage(VADriverContextP ctx,
VASurfaceID surface,
int x, /* coordinates of the upper left source pixel */
int y,
unsigned int width, /* width and height of the region */
unsigned int height,
VAImageID image)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
 
struct object_surface *obj_surface = SURFACE(surface);
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
 
struct object_image *obj_image = IMAGE(image);
if (!obj_image)
return VA_STATUS_ERROR_INVALID_IMAGE;
 
if (x < 0 || y < 0)
return VA_STATUS_ERROR_INVALID_PARAMETER;
if (x + width > obj_surface->orig_width ||
y + height > obj_surface->orig_height)
return VA_STATUS_ERROR_INVALID_PARAMETER;
if (x + width > obj_image->image.width ||
y + height > obj_image->image.height)
return VA_STATUS_ERROR_INVALID_PARAMETER;
 
VAStatus va_status;
void *image_data = NULL;
 
va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
if (va_status != VA_STATUS_SUCCESS)
return va_status;
 
VARectangle rect;
rect.x = x;
rect.y = y;
rect.width = width;
rect.height = height;
 
switch (obj_image->image.format.fourcc) {
case VA_FOURCC('Y','V','1','2'):
case VA_FOURCC('I','4','2','0'):
/* I420 is native format for MPEG-2 decoded surfaces */
if (render_state->interleaved_uv)
goto operation_failed;
get_image_i420(obj_image, image_data, obj_surface, &rect);
break;
case VA_FOURCC('N','V','1','2'):
/* NV12 is native format for H.264 decoded surfaces */
if (!render_state->interleaved_uv)
goto operation_failed;
get_image_nv12(obj_image, image_data, obj_surface, &rect);
break;
default:
operation_failed:
va_status = VA_STATUS_ERROR_OPERATION_FAILED;
break;
}
 
i965_UnmapBuffer(ctx, obj_image->image.buf);
return va_status;
}
 
VAStatus
i965_PutSurface(VADriverContextP ctx,
VASurfaceID surface,
void *draw, /* X Drawable */
short srcx,
short srcy,
unsigned short srcw,
unsigned short srch,
short destx,
short desty,
unsigned short destw,
unsigned short desth,
VARectangle *cliprects, /* client supplied clip list */
unsigned int number_cliprects, /* number of clip rects in the clip list */
unsigned int flags) /* de-interlacing flags */
{
#ifdef HAVE_VA_X11
if (IS_VA_X11(ctx)) {
VARectangle src_rect, dst_rect;
 
src_rect.x = srcx;
src_rect.y = srcy;
src_rect.width = srcw;
src_rect.height = srch;
 
dst_rect.x = destx;
dst_rect.y = desty;
dst_rect.width = destw;
dst_rect.height = desth;
 
return i965_put_surface_dri(ctx, surface, draw, &src_rect, &dst_rect,
cliprects, number_cliprects, flags);
}
#endif
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
 
VAStatus
i965_Terminate(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (i965->batch)
intel_batchbuffer_free(i965->batch);
 
_i965DestroyMutex(&i965->render_mutex);
 
#ifdef HAVE_VA_X11
if (IS_VA_X11(ctx))
i965_output_dri_terminate(ctx);
#endif
 
#ifdef HAVE_VA_WAYLAND
if (IS_VA_WAYLAND(ctx))
i965_output_wayland_terminate(ctx);
#endif
 
if (i965_render_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
if (i965_post_processing_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
i965_display_attributes_terminate(ctx);
 
i965_destroy_heap(&i965->buffer_heap, i965_destroy_buffer);
i965_destroy_heap(&i965->image_heap, i965_destroy_image);
i965_destroy_heap(&i965->subpic_heap, i965_destroy_subpic);
i965_destroy_heap(&i965->surface_heap, i965_destroy_surface);
i965_destroy_heap(&i965->context_heap, i965_destroy_context);
i965_destroy_heap(&i965->config_heap, i965_destroy_config);
 
if (intel_driver_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
 
free(ctx->pDriverData);
ctx->pDriverData = NULL;
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
i965_BufferInfo(
VADriverContextP ctx, /* in */
VABufferID buf_id, /* in */
VABufferType *type, /* out */
unsigned int *size, /* out */
unsigned int *num_elements /* out */
)
{
struct i965_driver_data *i965 = NULL;
struct object_buffer *obj_buffer = NULL;
 
i965 = i965_driver_data(ctx);
obj_buffer = BUFFER(buf_id);
 
*type = obj_buffer->type;
*size = obj_buffer->size_element;
*num_elements = obj_buffer->num_elements;
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
i965_LockSurface(
VADriverContextP ctx, /* in */
VASurfaceID surface, /* in */
unsigned int *fourcc, /* out */
unsigned int *luma_stride, /* out */
unsigned int *chroma_u_stride, /* out */
unsigned int *chroma_v_stride, /* out */
unsigned int *luma_offset, /* out */
unsigned int *chroma_u_offset, /* out */
unsigned int *chroma_v_offset, /* out */
unsigned int *buffer_name, /* out */
void **buffer /* out */
)
{
VAStatus vaStatus = VA_STATUS_SUCCESS;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = NULL;
VAImage tmpImage;
 
assert(fourcc);
assert(luma_stride);
assert(chroma_u_stride);
assert(chroma_v_stride);
assert(luma_offset);
assert(chroma_u_offset);
assert(chroma_v_offset);
assert(buffer_name);
assert(buffer);
 
tmpImage.image_id = VA_INVALID_ID;
 
obj_surface = SURFACE(surface);
if (obj_surface == NULL) {
// Surface is absent.
vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
goto error;
}
 
// Lock functionality is absent now.
if (obj_surface->locked_image_id != VA_INVALID_ID) {
// Surface is locked already.
vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
goto error;
}
 
vaStatus = i965_DeriveImage(
ctx,
surface,
&tmpImage);
if (vaStatus != VA_STATUS_SUCCESS) {
goto error;
}
 
obj_surface->locked_image_id = tmpImage.image_id;
 
vaStatus = i965_MapBuffer(
ctx,
tmpImage.buf,
buffer);
if (vaStatus != VA_STATUS_SUCCESS) {
goto error;
}
 
*fourcc = tmpImage.format.fourcc;
*luma_offset = tmpImage.offsets[0];
*luma_stride = tmpImage.pitches[0];
*chroma_u_offset = tmpImage.offsets[1];
*chroma_u_stride = tmpImage.pitches[1];
*chroma_v_offset = tmpImage.offsets[2];
*chroma_v_stride = tmpImage.pitches[2];
*buffer_name = tmpImage.buf;
 
error:
if (vaStatus != VA_STATUS_SUCCESS) {
buffer = NULL;
}
 
return vaStatus;
}
 
static VAStatus
i965_UnlockSurface(
VADriverContextP ctx, /* in */
VASurfaceID surface /* in */
)
{
VAStatus vaStatus = VA_STATUS_SUCCESS;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_image *locked_img = NULL;
struct object_surface *obj_surface = NULL;
 
obj_surface = SURFACE(surface);
 
if (obj_surface == NULL) {
vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER; // Surface is absent
return vaStatus;
}
if (obj_surface->locked_image_id == VA_INVALID_ID) {
vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER; // Surface is not locked
return vaStatus;
}
 
locked_img = IMAGE(obj_surface->locked_image_id);
if (locked_img == NULL || (locked_img->image.image_id == VA_INVALID_ID)) {
// Work image was deallocated before i965_UnlockSurface()
vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
goto error;
}
 
vaStatus = i965_UnmapBuffer(
ctx,
locked_img->image.buf);
if (vaStatus != VA_STATUS_SUCCESS) {
goto error;
}
 
vaStatus = i965_DestroyImage(
ctx,
locked_img->image.image_id);
if (vaStatus != VA_STATUS_SUCCESS) {
goto error;
}
 
locked_img->image.image_id = VA_INVALID_ID;
 
error:
obj_surface->locked_image_id = VA_INVALID_ID;
 
return vaStatus;
}
 
 
 
VAStatus DLL_EXPORT
VA_DRIVER_INIT_FUNC(VADriverContextP ctx);
 
VAStatus
VA_DRIVER_INIT_FUNC( VADriverContextP ctx )
{
struct VADriverVTable * const vtable = ctx->vtable;
struct i965_driver_data *i965;
int result;
 
printf("%s context %p\n", __FUNCTION__, ctx);
ctx->version_major = VA_MAJOR_VERSION;
ctx->version_minor = VA_MINOR_VERSION;
ctx->max_profiles = I965_MAX_PROFILES;
ctx->max_entrypoints = I965_MAX_ENTRYPOINTS;
ctx->max_attributes = I965_MAX_CONFIG_ATTRIBUTES;
ctx->max_image_formats = I965_MAX_IMAGE_FORMATS;
ctx->max_subpic_formats = I965_MAX_SUBPIC_FORMATS;
ctx->max_display_attributes = 1 + ARRAY_ELEMS(i965_display_attributes);
 
vtable->vaTerminate = i965_Terminate;
vtable->vaQueryConfigEntrypoints = i965_QueryConfigEntrypoints;
vtable->vaQueryConfigProfiles = i965_QueryConfigProfiles;
vtable->vaQueryConfigEntrypoints = i965_QueryConfigEntrypoints;
vtable->vaQueryConfigAttributes = i965_QueryConfigAttributes;
vtable->vaCreateConfig = i965_CreateConfig;
vtable->vaDestroyConfig = i965_DestroyConfig;
vtable->vaGetConfigAttributes = i965_GetConfigAttributes;
vtable->vaCreateSurfaces = i965_CreateSurfaces;
vtable->vaDestroySurfaces = i965_DestroySurfaces;
vtable->vaCreateContext = i965_CreateContext;
vtable->vaDestroyContext = i965_DestroyContext;
vtable->vaCreateBuffer = i965_CreateBuffer;
vtable->vaBufferSetNumElements = i965_BufferSetNumElements;
vtable->vaMapBuffer = i965_MapBuffer;
vtable->vaUnmapBuffer = i965_UnmapBuffer;
vtable->vaDestroyBuffer = i965_DestroyBuffer;
vtable->vaBeginPicture = i965_BeginPicture;
vtable->vaRenderPicture = i965_RenderPicture;
vtable->vaEndPicture = i965_EndPicture;
vtable->vaSyncSurface = i965_SyncSurface;
vtable->vaQuerySurfaceStatus = i965_QuerySurfaceStatus;
vtable->vaPutSurface = i965_PutSurface;
vtable->vaQueryImageFormats = i965_QueryImageFormats;
vtable->vaCreateImage = i965_CreateImage;
vtable->vaDeriveImage = i965_DeriveImage;
vtable->vaDestroyImage = i965_DestroyImage;
vtable->vaSetImagePalette = i965_SetImagePalette;
vtable->vaGetImage = i965_GetImage;
vtable->vaPutImage = i965_PutImage;
vtable->vaQuerySubpictureFormats = i965_QuerySubpictureFormats;
vtable->vaCreateSubpicture = i965_CreateSubpicture;
vtable->vaDestroySubpicture = i965_DestroySubpicture;
vtable->vaSetSubpictureImage = i965_SetSubpictureImage;
vtable->vaSetSubpictureChromakey = i965_SetSubpictureChromakey;
vtable->vaSetSubpictureGlobalAlpha = i965_SetSubpictureGlobalAlpha;
vtable->vaAssociateSubpicture = i965_AssociateSubpicture;
vtable->vaDeassociateSubpicture = i965_DeassociateSubpicture;
vtable->vaQueryDisplayAttributes = i965_QueryDisplayAttributes;
vtable->vaGetDisplayAttributes = i965_GetDisplayAttributes;
vtable->vaSetDisplayAttributes = i965_SetDisplayAttributes;
vtable->vaBufferInfo = i965_BufferInfo;
vtable->vaLockSurface = i965_LockSurface;
vtable->vaUnlockSurface = i965_UnlockSurface;
// vtable->vaDbgCopySurfaceToBuffer = i965_DbgCopySurfaceToBuffer;
 
i965 = (struct i965_driver_data *)calloc(1, sizeof(*i965));
assert(i965);
ctx->pDriverData = (void *)i965;
 
result = object_heap_init(&i965->config_heap,
sizeof(struct object_config),
CONFIG_ID_OFFSET);
assert(result == 0);
 
result = object_heap_init(&i965->context_heap,
sizeof(struct object_context),
CONTEXT_ID_OFFSET);
assert(result == 0);
 
result = object_heap_init(&i965->surface_heap,
sizeof(struct object_surface),
SURFACE_ID_OFFSET);
assert(result == 0);
 
result = object_heap_init(&i965->buffer_heap,
sizeof(struct object_buffer),
BUFFER_ID_OFFSET);
assert(result == 0);
 
result = object_heap_init(&i965->image_heap,
sizeof(struct object_image),
IMAGE_ID_OFFSET);
assert(result == 0);
 
result = object_heap_init(&i965->subpic_heap,
sizeof(struct object_subpic),
SUBPIC_ID_OFFSET);
assert(result == 0);
 
sprintf(i965->va_vendor, "%s %s driver - %d.%d.%d",
INTEL_STR_DRIVER_VENDOR,
INTEL_STR_DRIVER_NAME,
INTEL_DRIVER_MAJOR_VERSION,
INTEL_DRIVER_MINOR_VERSION,
INTEL_DRIVER_MICRO_VERSION);
 
if (INTEL_DRIVER_PRE_VERSION > 0) {
const int len = strlen(i965->va_vendor);
sprintf(&i965->va_vendor[len], ".pre%d", INTEL_DRIVER_PRE_VERSION);
}
ctx->str_vendor = i965->va_vendor;
 
return i965_Init(ctx);
}
/drivers/video/i965/i965_drv_video.h
0,0 → 1,304
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#ifndef _I965_DRV_VIDEO_H_
#define _I965_DRV_VIDEO_H_
 
#include <va/va.h>
#include <va/va_backend.h>
 
#include "i965_mutext.h"
#include "object_heap.h"
#include "intel_driver.h"
 
#define I965_MAX_PROFILES 11
#define I965_MAX_ENTRYPOINTS 5
#define I965_MAX_CONFIG_ATTRIBUTES 10
#define I965_MAX_IMAGE_FORMATS 3
#define I965_MAX_SUBPIC_FORMATS 6
#define I965_MAX_SUBPIC_SUM 4
 
#define INTEL_STR_DRIVER_VENDOR "Intel"
#define INTEL_STR_DRIVER_NAME "i965"
 
#define I965_SURFACE_TYPE_IMAGE 0
#define I965_SURFACE_TYPE_SURFACE 1
 
#define I965_SURFACE_FLAG_FRAME 0x00000000
#define I965_SURFACE_FLAG_TOP_FIELD_FIRST 0x00000001
#define I965_SURFACE_FLAG_BOTTOM_FIELD_FIRST 0x00000002
 
struct i965_surface
{
VAGenericID id;
int type;
int flags;
};
 
struct i965_kernel
{
char *name;
int interface;
const uint32_t (*bin)[4];
int size;
dri_bo *bo;
};
 
struct buffer_store
{
unsigned char *buffer;
dri_bo *bo;
int ref_count;
int num_elements;
};
struct object_config
{
struct object_base base;
VAProfile profile;
VAEntrypoint entrypoint;
VAConfigAttrib attrib_list[I965_MAX_CONFIG_ATTRIBUTES];
int num_attribs;
};
 
#define NUM_SLICES 10
 
struct decode_state
{
struct buffer_store *pic_param;
struct buffer_store **slice_params;
struct buffer_store *iq_matrix;
struct buffer_store *bit_plane;
struct buffer_store *huffman_table;
struct buffer_store **slice_datas;
VASurfaceID current_render_target;
int max_slice_params;
int max_slice_datas;
int num_slice_params;
int num_slice_datas;
};
 
struct encode_state
{
struct buffer_store *seq_param;
struct buffer_store *pic_param;
struct buffer_store *pic_control;
struct buffer_store *iq_matrix;
struct buffer_store *q_matrix;
struct buffer_store **slice_params;
VASurfaceID current_render_target;
int max_slice_params;
int num_slice_params;
};
 
#define CODEC_DEC 0
#define CODEC_ENC 1
 
union codec_state
{
struct decode_state decode;
struct encode_state encode;
};
 
struct hw_context
{
void (*run)(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context);
void (*destroy)(void *);
struct intel_batchbuffer *batch;
};
 
struct object_context
{
struct object_base base;
VAContextID context_id;
VAConfigID config_id;
VASurfaceID *render_targets; //input->encode, output->decode
int num_render_targets;
int picture_width;
int picture_height;
int flags;
int codec_type;
union codec_state codec_state;
struct hw_context *hw_context;
};
 
#define SURFACE_REFERENCED (1 << 0)
#define SURFACE_DISPLAYED (1 << 1)
#define SURFACE_DERIVED (1 << 2)
#define SURFACE_REF_DIS_MASK ((SURFACE_REFERENCED) | \
(SURFACE_DISPLAYED))
#define SURFACE_ALL_MASK ((SURFACE_REFERENCED) | \
(SURFACE_DISPLAYED) | \
(SURFACE_DERIVED))
 
struct object_surface
{
struct object_base base;
VASurfaceStatus status;
VASubpictureID subpic[I965_MAX_SUBPIC_SUM];
unsigned int subpic_render_idx;
 
int width;
int height;
int size;
int orig_width;
int orig_height;
int flags;
unsigned int fourcc;
dri_bo *bo;
VAImageID locked_image_id;
void (*free_private_data)(void **data);
void *private_data;
unsigned int subsampling;
int x_cb_offset;
int y_cb_offset;
int x_cr_offset;
int y_cr_offset;
int cb_cr_width;
int cb_cr_height;
int cb_cr_pitch;
};
 
struct object_buffer
{
struct object_base base;
struct buffer_store *buffer_store;
int max_num_elements;
int num_elements;
int size_element;
VABufferType type;
};
 
struct object_image
{
struct object_base base;
VAImage image;
dri_bo *bo;
unsigned int *palette;
VASurfaceID derived_surface;
};
 
struct object_subpic
{
struct object_base base;
VAImageID image;
VARectangle src_rect;
VARectangle dst_rect;
unsigned int format;
int width;
int height;
int pitch;
float global_alpha;
dri_bo *bo;
unsigned int flags;
};
 
struct hw_codec_info
{
struct hw_context *(*dec_hw_context_init)(VADriverContextP, VAProfile);
struct hw_context *(*enc_hw_context_init)(VADriverContextP, VAProfile);
int max_width;
int max_height;
};
 
 
#include "i965_render.h"
 
struct i965_driver_data
{
struct intel_driver_data intel;
struct object_heap config_heap;
struct object_heap context_heap;
struct object_heap surface_heap;
struct object_heap buffer_heap;
struct object_heap image_heap;
struct object_heap subpic_heap;
struct hw_codec_info *codec_info;
 
_I965Mutex render_mutex;
struct intel_batchbuffer *batch;
struct i965_render_state render_state;
void *pp_context;
char va_vendor[256];
VADisplayAttribute *display_attributes;
unsigned int num_display_attributes;
VADisplayAttribute *rotation_attrib;
 
/* VA/DRI (X11) specific data */
struct va_dri_output *dri_output;
 
/* VA/Wayland specific data */
struct va_wl_output *wl_output;
};
 
#define NEW_CONFIG_ID() object_heap_allocate(&i965->config_heap);
#define NEW_CONTEXT_ID() object_heap_allocate(&i965->context_heap);
#define NEW_SURFACE_ID() object_heap_allocate(&i965->surface_heap);
#define NEW_BUFFER_ID() object_heap_allocate(&i965->buffer_heap);
#define NEW_IMAGE_ID() object_heap_allocate(&i965->image_heap);
#define NEW_SUBPIC_ID() object_heap_allocate(&i965->subpic_heap);
 
#define CONFIG(id) ((struct object_config *)object_heap_lookup(&i965->config_heap, id))
#define CONTEXT(id) ((struct object_context *)object_heap_lookup(&i965->context_heap, id))
#define SURFACE(id) ((struct object_surface *)object_heap_lookup(&i965->surface_heap, id))
#define BUFFER(id) ((struct object_buffer *)object_heap_lookup(&i965->buffer_heap, id))
#define IMAGE(id) ((struct object_image *)object_heap_lookup(&i965->image_heap, id))
#define SUBPIC(id) ((struct object_subpic *)object_heap_lookup(&i965->subpic_heap, id))
 
#define FOURCC_IA44 0x34344149
#define FOURCC_AI44 0x34344941
 
#define STRIDE(w) (((w) + 0xf) & ~0xf)
#define SIZE_YUV420(w, h) (h * (STRIDE(w) + STRIDE(w >> 1)))
 
static INLINE struct i965_driver_data *
i965_driver_data(VADriverContextP ctx)
{
return (struct i965_driver_data *)(ctx->pDriverData);
}
 
void
i965_check_alloc_surface_bo(VADriverContextP ctx,
struct object_surface *obj_surface,
int tiled,
unsigned int fourcc,
unsigned int subsampling);
 
 
extern VAStatus i965_MapBuffer(VADriverContextP ctx,
VABufferID buf_id, /* in */
void **pbuf); /* out */
 
extern VAStatus i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id);
 
#endif /* _I965_DRV_VIDEO_H_ */
/drivers/video/i965/i965_encoder.c
0,0 → 1,126
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhou Chang <chang.zhou@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_encoder.h"
#include "gen6_vme.h"
#include "gen6_mfc.h"
 
static void
gen6_encoder_end_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
{
struct gen6_encoder_context *gen6_encoder_context = (struct gen6_encoder_context *)hw_context;
struct encode_state *encode_state = &codec_state->encode;
VAStatus vaStatus;
 
vaStatus = gen6_vme_pipeline(ctx, profile, encode_state, gen6_encoder_context);
 
if (vaStatus == VA_STATUS_SUCCESS)
gen6_mfc_pipeline(ctx, profile, encode_state, gen6_encoder_context);
}
static void
gen6_encoder_context_destroy(void *hw_context)
{
struct gen6_encoder_context *gen6_encoder_context = (struct gen6_encoder_context *)hw_context;
 
gen6_mfc_context_destroy(&gen6_encoder_context->mfc_context);
gen6_vme_context_destroy(&gen6_encoder_context->vme_context);
intel_batchbuffer_free(gen6_encoder_context->base.batch);
free(gen6_encoder_context);
}
 
struct hw_context *
gen6_enc_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct gen6_encoder_context *gen6_encoder_context = calloc(1, sizeof(struct gen6_encoder_context));
 
gen6_encoder_context->base.destroy = gen6_encoder_context_destroy;
gen6_encoder_context->base.run = gen6_encoder_end_picture;
gen6_encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
gen6_vme_context_init(ctx, &gen6_encoder_context->vme_context);
gen6_mfc_context_init(ctx, &gen6_encoder_context->mfc_context);
 
return (struct hw_context *)gen6_encoder_context;
}
 
static void
gen75_encoder_end_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
{
struct gen6_encoder_context *gen6_encoder_context = (struct gen6_encoder_context *)hw_context;
struct encode_state *encode_state = &codec_state->encode;
VAStatus vaStatus;
 
vaStatus = gen75_vme_pipeline(ctx, profile, encode_state, gen6_encoder_context);
 
if (vaStatus == VA_STATUS_SUCCESS)
gen75_mfc_pipeline(ctx, profile, encode_state, gen6_encoder_context);
}
static void
gen75_encoder_context_destroy(void *hw_context)
{
struct gen6_encoder_context *gen6_encoder_context = (struct gen6_encoder_context *)hw_context;
 
gen75_mfc_context_destroy(&gen6_encoder_context->mfc_context);
gen75_vme_context_destroy(&gen6_encoder_context->vme_context);
intel_batchbuffer_free(gen6_encoder_context->base.batch);
free(gen6_encoder_context);
}
 
 
struct hw_context *
gen75_enc_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct gen6_encoder_context *gen6_encoder_context = calloc(1, sizeof(struct gen6_encoder_context));
 
gen6_encoder_context->base.destroy = gen75_encoder_context_destroy;
gen6_encoder_context->base.run = gen75_encoder_end_picture;
gen6_encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
gen75_vme_context_init(ctx, &gen6_encoder_context->vme_context);
gen75_mfc_context_init(ctx, &gen6_encoder_context->mfc_context);
 
return (struct hw_context *)gen6_encoder_context;
}
/drivers/video/i965/i965_encoder.h
0,0 → 1,54
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Zhou chang <chang.zhou@intel.com>
*
*/
 
#ifndef _I965_ENCODER_H_
#define _I965_ENCODER_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
#include "i965_structs.h"
#include "i965_drv_video.h"
 
#include "gen6_vme.h"
#include "gen6_mfc.h"
 
struct gen6_encoder_context
{
struct hw_context base;
struct gen6_vme_context vme_context;
struct gen6_mfc_context mfc_context;
};
 
extern struct hw_context *
gen75_enc_hw_context_init(VADriverContextP ctx, VAProfile profile);
 
#endif /* _I965_ENCODER_H_ */
 
 
/drivers/video/i965/i965_media.c
0,0 → 1,384
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
 
#include "i965_media.h"
#include "i965_media_mpeg2.h"
#include "i965_media_h264.h"
 
static void
i965_media_pipeline_select(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void
i965_media_urb_layout(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = media_context->base.batch;
unsigned int vfe_fence, cs_fence;
 
vfe_fence = media_context->urb.cs_start;
cs_fence = URB_SIZE((&i965->intel));
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
(cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
ADVANCE_BATCH(batch);
}
 
static void
i965_media_state_base_address(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = media_context->base.batch;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
if (media_context->indirect_object.bo) {
OUT_RELOC(batch, media_context->indirect_object.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
media_context->indirect_object.offset | BASE_ADDRESS_MODIFY);
} else {
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
}
 
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
} else {
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
 
if (media_context->indirect_object.bo) {
OUT_RELOC(batch, media_context->indirect_object.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
media_context->indirect_object.offset | BASE_ADDRESS_MODIFY);
} else {
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
}
 
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
}
 
static void
i965_media_state_pointers(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
 
if (media_context->extended_state.enabled)
OUT_RELOC(batch, media_context->extended_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
else
OUT_BATCH(batch, 0);
 
OUT_RELOC(batch, media_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_media_cs_urb_layout(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
OUT_BATCH(batch,
((media_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
(media_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
ADVANCE_BATCH(batch);
}
 
static void
i965_media_pipeline_state(VADriverContextP ctx, struct i965_media_context *media_context)
{
i965_media_state_base_address(ctx, media_context);
i965_media_state_pointers(ctx, media_context);
i965_media_cs_urb_layout(ctx, media_context);
}
 
static void
i965_media_constant_buffer(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
OUT_RELOC(batch, media_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
media_context->urb.size_cs_entry - 1);
ADVANCE_BATCH(batch);
}
 
static void
i965_media_depth_buffer(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_DEPTH_BUFFER | 4);
OUT_BATCH(batch, (I965_DEPTHFORMAT_D32_FLOAT << 18) |
(I965_SURFACE_NULL << 29));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_media_pipeline_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch); /* step 1 */
i965_media_depth_buffer(ctx, media_context);
i965_media_pipeline_select(ctx, media_context); /* step 2 */
i965_media_urb_layout(ctx, media_context); /* step 3 */
i965_media_pipeline_state(ctx, media_context); /* step 4 */
i965_media_constant_buffer(ctx, decode_state, media_context); /* step 5 */
assert(media_context->media_objects);
media_context->media_objects(ctx, decode_state, media_context); /* step 6 */
intel_batchbuffer_end_atomic(batch);
}
 
static void
i965_media_decode_init(VADriverContextP ctx,
VAProfile profile,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
int i;
struct i965_driver_data *i965 = i965_driver_data(ctx);
dri_bo *bo;
 
/* constant buffer */
dri_bo_unreference(media_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096, 64);
assert(bo);
media_context->curbe.bo = bo;
 
/* surface state */
for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
dri_bo_unreference(media_context->surface_state[i].bo);
media_context->surface_state[i].bo = NULL;
}
 
/* binding table */
dri_bo_unreference(media_context->binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"binding table",
MAX_MEDIA_SURFACES * sizeof(unsigned int), 32);
assert(bo);
media_context->binding_table.bo = bo;
 
/* interface descriptor remapping table */
dri_bo_unreference(media_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"interface discriptor",
MAX_INTERFACE_DESC * sizeof(struct i965_interface_descriptor), 16);
assert(bo);
media_context->idrt.bo = bo;
 
/* vfe state */
dri_bo_unreference(media_context->vfe_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vfe state",
sizeof(struct i965_vfe_state), 32);
assert(bo);
media_context->vfe_state.bo = bo;
 
/* extended state */
media_context->extended_state.enabled = 0;
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
i965_media_mpeg2_decode_init(ctx, decode_state, media_context);
break;
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
i965_media_h264_decode_init(ctx, decode_state, media_context);
break;
 
default:
assert(0);
break;
}
}
 
static void
i965_media_decode_picture(VADriverContextP ctx,
VAProfile profile,
union codec_state *codec_state,
struct hw_context *hw_context)
{
struct i965_media_context *media_context = (struct i965_media_context *)hw_context;
struct decode_state *decode_state = &codec_state->decode;
 
i965_media_decode_init(ctx, profile, decode_state, media_context);
assert(media_context->media_states_setup);
media_context->media_states_setup(ctx, decode_state, media_context);
i965_media_pipeline_setup(ctx, decode_state, media_context);
intel_batchbuffer_flush(hw_context->batch);
}
 
static void
i965_media_context_destroy(void *hw_context)
{
struct i965_media_context *media_context = (struct i965_media_context *)hw_context;
int i;
 
if (media_context->free_private_context)
media_context->free_private_context(&media_context->private_context);
 
for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
dri_bo_unreference(media_context->surface_state[i].bo);
media_context->surface_state[i].bo = NULL;
}
dri_bo_unreference(media_context->extended_state.bo);
media_context->extended_state.bo = NULL;
 
dri_bo_unreference(media_context->vfe_state.bo);
media_context->vfe_state.bo = NULL;
 
dri_bo_unreference(media_context->idrt.bo);
media_context->idrt.bo = NULL;
 
dri_bo_unreference(media_context->binding_table.bo);
media_context->binding_table.bo = NULL;
 
dri_bo_unreference(media_context->curbe.bo);
media_context->curbe.bo = NULL;
 
dri_bo_unreference(media_context->indirect_object.bo);
media_context->indirect_object.bo = NULL;
 
intel_batchbuffer_free(media_context->base.batch);
free(media_context);
}
 
struct hw_context *
g4x_dec_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct i965_media_context *media_context = calloc(1, sizeof(struct i965_media_context));
 
media_context->base.destroy = i965_media_context_destroy;
media_context->base.run = i965_media_decode_picture;
media_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
i965_media_mpeg2_dec_context_init(ctx, media_context);
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
default:
assert(0);
break;
}
 
return (struct hw_context *)media_context;
}
 
struct hw_context *
ironlake_dec_hw_context_init(VADriverContextP ctx, VAProfile profile)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct i965_media_context *media_context = calloc(1, sizeof(struct i965_media_context));
 
media_context->base.destroy = i965_media_context_destroy;
media_context->base.run = i965_media_decode_picture;
media_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
 
switch (profile) {
case VAProfileMPEG2Simple:
case VAProfileMPEG2Main:
i965_media_mpeg2_dec_context_init(ctx, media_context);
break;
 
case VAProfileH264Baseline:
case VAProfileH264Main:
case VAProfileH264High:
i965_media_h264_dec_context_init(ctx, media_context);
break;
 
case VAProfileVC1Simple:
case VAProfileVC1Main:
case VAProfileVC1Advanced:
default:
assert(0);
break;
}
 
return (struct hw_context *)media_context;
}
/drivers/video/i965/i965_media.h
0,0 → 1,96
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#ifndef _I965_MEDIA_H_
#define _I965_MEDIA_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
#include "i965_structs.h"
 
#define MAX_INTERFACE_DESC 16
#define MAX_MEDIA_SURFACES 34
 
struct decode_state;
 
struct i965_media_context
{
struct hw_context base;
 
struct {
dri_bo *bo;
} surface_state[MAX_MEDIA_SURFACES];
 
struct {
dri_bo *bo;
} binding_table;
 
struct {
dri_bo *bo;
} idrt; /* interface descriptor remap table */
 
struct {
dri_bo *bo;
int enabled;
} extended_state;
 
struct {
dri_bo *bo;
} vfe_state;
 
struct {
dri_bo *bo;
} curbe;
 
struct {
dri_bo *bo;
unsigned long offset;
} indirect_object;
 
struct {
unsigned int vfe_start;
unsigned int cs_start;
 
unsigned int num_vfe_entries;
unsigned int num_cs_entries;
 
unsigned int size_vfe_entry;
unsigned int size_cs_entry;
} urb;
 
void *private_context;
void (*media_states_setup)(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
void (*media_objects)(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
void (*free_private_context)(void **data);
};
 
#endif /* _I965_MEDIA_H_ */
/drivers/video/i965/i965_media_h264.c
0,0 → 1,912
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
 
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_media.h"
#include "i965_media_h264.h"
 
enum {
INTRA_16X16 = 0,
INTRA_8X8,
INTRA_4X4,
INTRA_PCM,
FRAMEMB_MOTION,
FIELDMB_MOTION,
MBAFF_MOTION,
};
 
struct intra_kernel_header
{
/* R1.0 */
unsigned char intra_4x4_luma_mode_0_offset;
unsigned char intra_4x4_luma_mode_1_offset;
unsigned char intra_4x4_luma_mode_2_offset;
unsigned char intra_4x4_luma_mode_3_offset;
/* R1.1 */
unsigned char intra_4x4_luma_mode_4_offset;
unsigned char intra_4x4_luma_mode_5_offset;
unsigned char intra_4x4_luma_mode_6_offset;
unsigned char intra_4x4_luma_mode_7_offset;
/* R1.2 */
unsigned char intra_4x4_luma_mode_8_offset;
unsigned char pad0;
unsigned short top_reference_offset;
/* R1.3 */
unsigned char intra_8x8_luma_mode_0_offset;
unsigned char intra_8x8_luma_mode_1_offset;
unsigned char intra_8x8_luma_mode_2_offset;
unsigned char intra_8x8_luma_mode_3_offset;
/* R1.4 */
unsigned char intra_8x8_luma_mode_4_offset;
unsigned char intra_8x8_luma_mode_5_offset;
unsigned char intra_8x8_luma_mode_6_offset;
unsigned char intra_8x8_luma_mode_7_offset;
/* R1.5 */
unsigned char intra_8x8_luma_mode_8_offset;
unsigned char pad1;
unsigned short const_reverse_data_transfer_intra_8x8;
/* R1.6 */
unsigned char intra_16x16_luma_mode_0_offset;
unsigned char intra_16x16_luma_mode_1_offset;
unsigned char intra_16x16_luma_mode_2_offset;
unsigned char intra_16x16_luma_mode_3_offset;
/* R1.7 */
unsigned char intra_chroma_mode_0_offset;
unsigned char intra_chroma_mode_1_offset;
unsigned char intra_chroma_mode_2_offset;
unsigned char intra_chroma_mode_3_offset;
/* R2.0 */
unsigned int const_intra_16x16_plane_0;
/* R2.1 */
unsigned int const_intra_16x16_chroma_plane_0;
/* R2.2 */
unsigned int const_intra_16x16_chroma_plane_1;
/* R2.3 */
unsigned int const_intra_16x16_plane_1;
/* R2.4 */
unsigned int left_shift_count_reverse_dw_ordering;
/* R2.5 */
unsigned int const_reverse_data_transfer_intra_4x4;
/* R2.6 */
unsigned int intra_4x4_pred_mode_offset;
};
 
struct inter_kernel_header
{
unsigned short weight_offset;
unsigned char weight_offset_flag;
unsigned char pad0;
};
 
#include "shaders/h264/mc/export.inc"
static unsigned long avc_mc_kernel_offset_gen4[] = {
INTRA_16x16_IP * INST_UNIT_GEN4,
INTRA_8x8_IP * INST_UNIT_GEN4,
INTRA_4x4_IP * INST_UNIT_GEN4,
INTRA_PCM_IP * INST_UNIT_GEN4,
FRAME_MB_IP * INST_UNIT_GEN4,
FIELD_MB_IP * INST_UNIT_GEN4,
MBAFF_MB_IP * INST_UNIT_GEN4
};
 
struct intra_kernel_header intra_kernel_header_gen4 = {
0,
(INTRA_4X4_HORIZONTAL_IP - INTRA_4X4_VERTICAL_IP),
(INTRA_4X4_DC_IP - INTRA_4X4_VERTICAL_IP),
(INTRA_4X4_DIAG_DOWN_LEFT_IP - INTRA_4X4_VERTICAL_IP),
 
(INTRA_4X4_DIAG_DOWN_RIGHT_IP - INTRA_4X4_VERTICAL_IP),
(INTRA_4X4_VERT_RIGHT_IP - INTRA_4X4_VERTICAL_IP),
(INTRA_4X4_HOR_DOWN_IP - INTRA_4X4_VERTICAL_IP),
(INTRA_4X4_VERT_LEFT_IP - INTRA_4X4_VERTICAL_IP),
 
(INTRA_4X4_HOR_UP_IP - INTRA_4X4_VERTICAL_IP),
0,
0xFFFC,
 
0,
(INTRA_8X8_HORIZONTAL_IP - INTRA_8X8_VERTICAL_IP),
(INTRA_8X8_DC_IP - INTRA_8X8_VERTICAL_IP),
(INTRA_8X8_DIAG_DOWN_LEFT_IP - INTRA_8X8_VERTICAL_IP),
 
(INTRA_8X8_DIAG_DOWN_RIGHT_IP - INTRA_8X8_VERTICAL_IP),
(INTRA_8X8_VERT_RIGHT_IP - INTRA_8X8_VERTICAL_IP),
(INTRA_8X8_HOR_DOWN_IP - INTRA_8X8_VERTICAL_IP),
(INTRA_8X8_VERT_LEFT_IP - INTRA_8X8_VERTICAL_IP),
 
(INTRA_8X8_HOR_UP_IP - INTRA_8X8_VERTICAL_IP),
0,
0x0001,
 
0,
(INTRA_16x16_HORIZONTAL_IP - INTRA_16x16_VERTICAL_IP),
(INTRA_16x16_DC_IP - INTRA_16x16_VERTICAL_IP),
(INTRA_16x16_PLANE_IP - INTRA_16x16_VERTICAL_IP),
 
0,
(INTRA_CHROMA_HORIZONTAL_IP - INTRA_CHROMA_DC_IP),
(INTRA_CHROMA_VERTICAL_IP - INTRA_CHROMA_DC_IP),
(INTRA_Chroma_PLANE_IP - INTRA_CHROMA_DC_IP),
 
0xFCFBFAF9,
 
0x00FFFEFD,
 
0x04030201,
 
0x08070605,
 
0x18100800,
 
0x00020406,
 
(intra_Pred_4x4_Y_IP - ADD_ERROR_SB3_IP) * 0x1000000 +
(intra_Pred_4x4_Y_IP - ADD_ERROR_SB2_IP) * 0x10000 +
(intra_Pred_4x4_Y_IP - ADD_ERROR_SB1_IP) * 0x100 +
(intra_Pred_4x4_Y_IP - ADD_ERROR_SB0_IP)
};
 
static const uint32_t h264_avc_combined_gen4[][4] = {
#include "shaders/h264/mc/avc_mc.g4b"
};
 
static const uint32_t h264_avc_null_gen4[][4] = {
#include "shaders/h264/mc/null.g4b"
};
 
static struct i965_kernel h264_avc_kernels_gen4[] = {
{
"AVC combined kernel",
H264_AVC_COMBINED,
h264_avc_combined_gen4,
sizeof(h264_avc_combined_gen4),
NULL
},
 
{
"NULL kernel",
H264_AVC_NULL,
h264_avc_null_gen4,
sizeof(h264_avc_null_gen4),
NULL
}
};
 
/* On Ironlake */
#include "shaders/h264/mc/export.inc.gen5"
static unsigned long avc_mc_kernel_offset_gen5[] = {
INTRA_16x16_IP_GEN5 * INST_UNIT_GEN5,
INTRA_8x8_IP_GEN5 * INST_UNIT_GEN5,
INTRA_4x4_IP_GEN5 * INST_UNIT_GEN5,
INTRA_PCM_IP_GEN5 * INST_UNIT_GEN5,
FRAME_MB_IP_GEN5 * INST_UNIT_GEN5,
FIELD_MB_IP_GEN5 * INST_UNIT_GEN5,
MBAFF_MB_IP_GEN5 * INST_UNIT_GEN5
};
 
struct intra_kernel_header intra_kernel_header_gen5 = {
0,
(INTRA_4X4_HORIZONTAL_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
(INTRA_4X4_DC_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
(INTRA_4X4_DIAG_DOWN_LEFT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
 
(INTRA_4X4_DIAG_DOWN_RIGHT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
(INTRA_4X4_VERT_RIGHT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
(INTRA_4X4_HOR_DOWN_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
(INTRA_4X4_VERT_LEFT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
 
(INTRA_4X4_HOR_UP_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
0,
0xFFFC,
 
0,
(INTRA_8X8_HORIZONTAL_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
(INTRA_8X8_DC_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
(INTRA_8X8_DIAG_DOWN_LEFT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
 
(INTRA_8X8_DIAG_DOWN_RIGHT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
(INTRA_8X8_VERT_RIGHT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
(INTRA_8X8_HOR_DOWN_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
(INTRA_8X8_VERT_LEFT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
 
(INTRA_8X8_HOR_UP_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
0,
0x0001,
 
0,
(INTRA_16x16_HORIZONTAL_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
(INTRA_16x16_DC_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
(INTRA_16x16_PLANE_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
 
0,
(INTRA_CHROMA_HORIZONTAL_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
(INTRA_CHROMA_VERTICAL_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
(INTRA_Chroma_PLANE_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
 
0xFCFBFAF9,
 
0x00FFFEFD,
 
0x04030201,
 
0x08070605,
 
0x18100800,
 
0x00020406,
 
(intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB3_IP_GEN5) * 0x1000000 +
(intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB2_IP_GEN5) * 0x10000 +
(intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB1_IP_GEN5) * 0x100 +
(intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB0_IP_GEN5)
};
 
static const uint32_t h264_avc_combined_gen5[][4] = {
#include "shaders/h264/mc/avc_mc.g4b.gen5"
};
 
static const uint32_t h264_avc_null_gen5[][4] = {
#include "shaders/h264/mc/null.g4b.gen5"
};
 
static struct i965_kernel h264_avc_kernels_gen5[] = {
{
"AVC combined kernel",
H264_AVC_COMBINED,
h264_avc_combined_gen5,
sizeof(h264_avc_combined_gen5),
NULL
},
 
{
"NULL kernel",
H264_AVC_NULL,
h264_avc_null_gen5,
sizeof(h264_avc_null_gen5),
NULL
}
};
 
#define NUM_AVC_MC_INTERFACES (sizeof(avc_mc_kernel_offset_gen4) / sizeof(avc_mc_kernel_offset_gen4[0]))
static unsigned long *avc_mc_kernel_offset = NULL;
 
static struct intra_kernel_header *intra_kernel_header = NULL;
 
static void
i965_media_h264_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
unsigned long offset,
int w, int h, int pitch,
Bool is_dst,
int vert_line_stride,
int vert_line_stride_ofs,
int format,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_surface_state *ss;
dri_bo *bo;
uint32_t write_domain, read_domain;
 
assert(obj_surface->bo);
 
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state",
sizeof(struct i965_surface_state), 32);
assert(bo);
dri_bo_map(bo, 1);
assert(bo->virtual);
ss = bo->virtual;
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = format;
ss->ss0.vert_line_stride = vert_line_stride;
ss->ss0.vert_line_stride_ofs = vert_line_stride_ofs;
ss->ss1.base_addr = obj_surface->bo->offset + offset;
ss->ss2.width = w - 1;
ss->ss2.height = h - 1;
ss->ss3.pitch = pitch - 1;
 
if (is_dst) {
write_domain = I915_GEM_DOMAIN_RENDER;
read_domain = I915_GEM_DOMAIN_RENDER;
} else {
write_domain = 0;
read_domain = I915_GEM_DOMAIN_SAMPLER;
}
 
dri_bo_emit_reloc(bo,
read_domain, write_domain,
offset,
offsetof(struct i965_surface_state, ss1),
obj_surface->bo);
dri_bo_unmap(bo);
 
assert(index < MAX_MEDIA_SURFACES);
media_context->surface_state[index].bo = bo;
}
 
static void
i965_media_h264_surfaces_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context;
struct object_surface *obj_surface;
VAPictureParameterBufferH264 *pic_param;
VAPictureH264 *va_pic;
int i, j, w, h;
int field_picture;
 
assert(media_context->private_context);
i965_h264_context = (struct i965_h264_context *)media_context->private_context;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
 
/* Target Picture */
va_pic = &pic_param->CurrPic;
assert(!(va_pic->flags & VA_PICTURE_H264_INVALID));
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
w = obj_surface->width;
h = obj_surface->height;
field_picture = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
i965_media_h264_surface_state(ctx, 0, obj_surface,
0, w / 4, h / (1 + field_picture), w,
1,
field_picture,
!!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
I965_SURFACEFORMAT_R8_SINT, /* Y */
media_context);
i965_media_h264_surface_state(ctx, 1, obj_surface,
w * h, w / 4, h / 2 / (1 + field_picture), w,
1,
field_picture,
!!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
I965_SURFACEFORMAT_R8G8_SINT, /* INTERLEAVED U/V */
media_context);
 
/* Reference Pictures */
for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
if (i965_h264_context->fsid_list[i].surface_id != VA_INVALID_ID) {
int found = 0;
for (j = 0; j < ARRAY_ELEMS(pic_param->ReferenceFrames); j++) {
va_pic = &pic_param->ReferenceFrames[j];
if (va_pic->flags & VA_PICTURE_H264_INVALID)
continue;
 
if (va_pic->picture_id == i965_h264_context->fsid_list[i].surface_id) {
found = 1;
break;
}
}
 
assert(found == 1);
 
obj_surface = SURFACE(va_pic->picture_id);
assert(obj_surface);
w = obj_surface->width;
h = obj_surface->height;
field_picture = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
i965_media_h264_surface_state(ctx, 2 + i, obj_surface,
0, w / 4, h / (1 + field_picture), w,
0,
field_picture,
!!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
I965_SURFACEFORMAT_R8_SINT, /* Y */
media_context);
i965_media_h264_surface_state(ctx, 18 + i, obj_surface,
w * h, w / 4, h / 2 / (1 + field_picture), w,
0,
field_picture,
!!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
I965_SURFACEFORMAT_R8G8_SINT, /* INTERLEAVED U/V */
media_context);
}
}
}
 
static void
i965_media_h264_binding_table(VADriverContextP ctx, struct i965_media_context *media_context)
{
int i;
unsigned int *binding_table;
dri_bo *bo = media_context->binding_table.bo;
 
dri_bo_map(bo, 1);
assert(bo->virtual);
binding_table = bo->virtual;
memset(binding_table, 0, bo->size);
 
for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
if (media_context->surface_state[i].bo) {
binding_table[i] = media_context->surface_state[i].bo->offset;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
i * sizeof(*binding_table),
media_context->surface_state[i].bo);
}
}
 
dri_bo_unmap(media_context->binding_table.bo);
}
 
static void
i965_media_h264_interface_descriptor_remap_table(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)media_context->private_context;
struct i965_interface_descriptor *desc;
int i;
dri_bo *bo;
 
bo = media_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
 
for (i = 0; i < NUM_AVC_MC_INTERFACES; i++) {
int kernel_offset = avc_mc_kernel_offset[i];
memset(desc, 0, sizeof(*desc));
desc->desc0.grf_reg_blocks = 7;
desc->desc0.kernel_start_pointer = (i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo->offset + kernel_offset) >> 6; /* reloc */
desc->desc1.const_urb_entry_read_offset = 0;
desc->desc1.const_urb_entry_read_len = 2;
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer =
media_context->binding_table.bo->offset >> 5; /*reloc */
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc0.grf_reg_blocks + kernel_offset,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc3.binding_table_entry_count,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
media_context->binding_table.bo);
desc++;
}
 
dri_bo_unmap(bo);
}
 
static void
i965_media_h264_vfe_state(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_vfe_state *vfe_state;
dri_bo *bo;
 
bo = media_context->vfe_state.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
vfe_state = bo->virtual;
memset(vfe_state, 0, sizeof(*vfe_state));
vfe_state->vfe0.extend_vfe_state_present = 1;
vfe_state->vfe1.max_threads = media_context->urb.num_vfe_entries - 1;
vfe_state->vfe1.urb_entry_alloc_size = media_context->urb.size_vfe_entry - 1;
vfe_state->vfe1.num_urb_entries = media_context->urb.num_vfe_entries;
vfe_state->vfe1.vfe_mode = VFE_AVC_IT_MODE;
vfe_state->vfe1.children_present = 0;
vfe_state->vfe2.interface_descriptor_base =
media_context->idrt.bo->offset >> 4; /* reloc */
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_vfe_state, vfe2),
media_context->idrt.bo);
dri_bo_unmap(bo);
}
 
static void
i965_media_h264_vfe_state_extension(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_h264_context *i965_h264_context;
struct i965_vfe_state_ex *vfe_state_ex;
VAPictureParameterBufferH264 *pic_param;
int mbaff_frame_flag;
 
assert(media_context->private_context);
i965_h264_context = (struct i965_h264_context *)media_context->private_context;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
 
assert(media_context->extended_state.bo);
dri_bo_map(media_context->extended_state.bo, 1);
assert(media_context->extended_state.bo->virtual);
vfe_state_ex = media_context->extended_state.bo->virtual;
memset(vfe_state_ex, 0, sizeof(*vfe_state_ex));
 
/*
* Indirect data buffer:
* --------------------------------------------------------
* | Motion Vectors | Weight/Offset data | Residual data |
* --------------------------------------------------------
* R4-R7: Motion Vectors
* R8-R9: Weight/Offset
* R10-R33: Residual data
*/
vfe_state_ex->vfex1.avc.residual_data_fix_offset_flag = !!RESIDUAL_DATA_OFFSET;
vfe_state_ex->vfex1.avc.residual_data_offset = RESIDUAL_DATA_OFFSET;
 
if (i965_h264_context->picture.i_flag) {
vfe_state_ex->vfex1.avc.sub_field_present_flag = PRESENT_NOMV; /* NoMV */
vfe_state_ex->vfex1.avc.weight_grf_offset = 0;
vfe_state_ex->vfex1.avc.residual_grf_offset = 0;
} else {
vfe_state_ex->vfex1.avc.sub_field_present_flag = PRESENT_MV_WO; /* Both MV and W/O */
vfe_state_ex->vfex1.avc.weight_grf_offset = 4;
vfe_state_ex->vfex1.avc.residual_grf_offset = 6;
}
 
if (!pic_param->pic_fields.bits.field_pic_flag) {
if (mbaff_frame_flag) {
vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
vfe_state_ex->remap_table0.remap_index_4 = MBAFF_MOTION;
vfe_state_ex->remap_table0.remap_index_5 = MBAFF_MOTION;
vfe_state_ex->remap_table0.remap_index_6 = MBAFF_MOTION;
vfe_state_ex->remap_table0.remap_index_7 = MBAFF_MOTION;
 
vfe_state_ex->remap_table1.remap_index_8 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_9 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_10 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_11 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_12 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_13 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_14 = MBAFF_MOTION;
vfe_state_ex->remap_table1.remap_index_15 = MBAFF_MOTION;
} else {
vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
vfe_state_ex->remap_table0.remap_index_4 = FRAMEMB_MOTION;
vfe_state_ex->remap_table0.remap_index_5 = FRAMEMB_MOTION;
vfe_state_ex->remap_table0.remap_index_6 = FRAMEMB_MOTION;
vfe_state_ex->remap_table0.remap_index_7 = FRAMEMB_MOTION;
 
vfe_state_ex->remap_table1.remap_index_8 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_9 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_10 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_11 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_12 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_13 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_14 = FRAMEMB_MOTION;
vfe_state_ex->remap_table1.remap_index_15 = FRAMEMB_MOTION;
}
} else {
vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
vfe_state_ex->remap_table0.remap_index_4 = FIELDMB_MOTION;
vfe_state_ex->remap_table0.remap_index_5 = FIELDMB_MOTION;
vfe_state_ex->remap_table0.remap_index_6 = FIELDMB_MOTION;
vfe_state_ex->remap_table0.remap_index_7 = FIELDMB_MOTION;
 
vfe_state_ex->remap_table1.remap_index_8 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_9 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_10 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_11 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_12 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_13 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_14 = FIELDMB_MOTION;
vfe_state_ex->remap_table1.remap_index_15 = FIELDMB_MOTION;
}
 
if (i965_h264_context->use_avc_hw_scoreboard) {
vfe_state_ex->scoreboard0.enable = 1;
vfe_state_ex->scoreboard0.type = SCOREBOARD_STALLING;
vfe_state_ex->scoreboard0.mask = 0xff;
 
vfe_state_ex->scoreboard1.delta_x0 = -1;
vfe_state_ex->scoreboard1.delta_y0 = 0;
vfe_state_ex->scoreboard1.delta_x1 = 0;
vfe_state_ex->scoreboard1.delta_y1 = -1;
vfe_state_ex->scoreboard1.delta_x2 = 1;
vfe_state_ex->scoreboard1.delta_y2 = -1;
vfe_state_ex->scoreboard1.delta_x3 = -1;
vfe_state_ex->scoreboard1.delta_y3 = -1;
 
vfe_state_ex->scoreboard2.delta_x4 = -1;
vfe_state_ex->scoreboard2.delta_y4 = 1;
vfe_state_ex->scoreboard2.delta_x5 = 0;
vfe_state_ex->scoreboard2.delta_y5 = -2;
vfe_state_ex->scoreboard2.delta_x6 = 1;
vfe_state_ex->scoreboard2.delta_y6 = -2;
vfe_state_ex->scoreboard2.delta_x7 = -1;
vfe_state_ex->scoreboard2.delta_y7 = -2;
}
 
dri_bo_unmap(media_context->extended_state.bo);
}
 
static void
i965_media_h264_upload_constants(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_h264_context *i965_h264_context;
unsigned char *constant_buffer;
VASliceParameterBufferH264 *slice_param;
 
assert(media_context->private_context);
i965_h264_context = (struct i965_h264_context *)media_context->private_context;
 
assert(decode_state->slice_params[0] && decode_state->slice_params[0]->buffer);
slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[0]->buffer;
 
dri_bo_map(media_context->curbe.bo, 1);
assert(media_context->curbe.bo->virtual);
constant_buffer = media_context->curbe.bo->virtual;
 
/* HW solution for W=128 */
if (i965_h264_context->use_hw_w128) {
memcpy(constant_buffer, intra_kernel_header, sizeof(*intra_kernel_header));
} else {
if (slice_param->slice_type == SLICE_TYPE_I ||
slice_param->slice_type == SLICE_TYPE_SI) {
memcpy(constant_buffer, intra_kernel_header, sizeof(*intra_kernel_header));
} else {
/* FIXME: Need to upload CURBE data to inter kernel interface
* to support weighted prediction work-around
*/
*(short *)constant_buffer = i965_h264_context->weight128_offset0;
constant_buffer += 2;
*(char *)constant_buffer = i965_h264_context->weight128_offset0_flag;
constant_buffer++;
*constant_buffer = 0;
}
}
 
dri_bo_unmap(media_context->curbe.bo);
}
 
static void
i965_media_h264_states_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_h264_context *i965_h264_context;
 
assert(media_context->private_context);
i965_h264_context = (struct i965_h264_context *)media_context->private_context;
 
i965_avc_bsd_pipeline(ctx, decode_state, i965_h264_context);
 
if (i965_h264_context->use_avc_hw_scoreboard)
i965_avc_hw_scoreboard(ctx, decode_state, i965_h264_context);
 
i965_media_h264_surfaces_setup(ctx, decode_state, media_context);
i965_media_h264_binding_table(ctx, media_context);
i965_media_h264_interface_descriptor_remap_table(ctx, media_context);
i965_media_h264_vfe_state_extension(ctx, decode_state, media_context);
i965_media_h264_vfe_state(ctx, media_context);
i965_media_h264_upload_constants(ctx, decode_state, media_context);
}
 
static void
i965_media_h264_objects(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct intel_batchbuffer *batch = media_context->base.batch;
struct i965_h264_context *i965_h264_context;
unsigned int *object_command;
 
assert(media_context->private_context);
i965_h264_context = (struct i965_h264_context *)media_context->private_context;
 
dri_bo_map(i965_h264_context->avc_it_command_mb_info.bo, True);
assert(i965_h264_context->avc_it_command_mb_info.bo->virtual);
object_command = i965_h264_context->avc_it_command_mb_info.bo->virtual;
memset(object_command, 0, i965_h264_context->avc_it_command_mb_info.mbs * i965_h264_context->use_avc_hw_scoreboard * MB_CMD_IN_BYTES);
object_command += i965_h264_context->avc_it_command_mb_info.mbs * (1 + i965_h264_context->use_avc_hw_scoreboard) * MB_CMD_IN_DWS;
*object_command++ = 0;
*object_command = MI_BATCH_BUFFER_END;
dri_bo_unmap(i965_h264_context->avc_it_command_mb_info.bo);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, MI_BATCH_BUFFER_START | (2 << 6));
OUT_RELOC(batch, i965_h264_context->avc_it_command_mb_info.bo,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BATCH(batch);
 
/* Have to execute the batch buffer here becuase MI_BATCH_BUFFER_END
* will cause control to pass back to ring buffer
*/
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
intel_batchbuffer_start_atomic(batch, 0x1000);
i965_avc_ildb(ctx, decode_state, i965_h264_context);
}
 
static void
i965_media_h264_free_private_context(void **data)
{
struct i965_h264_context *i965_h264_context = *data;
int i;
 
if (i965_h264_context == NULL)
return;
 
i965_avc_ildb_ternimate(&i965_h264_context->avc_ildb_context);
i965_avc_hw_scoreboard_ternimate(&i965_h264_context->avc_hw_scoreboard_context);
i965_avc_bsd_ternimate(&i965_h264_context->i965_avc_bsd_context);
dri_bo_unreference(i965_h264_context->avc_it_command_mb_info.bo);
dri_bo_unreference(i965_h264_context->avc_it_data.bo);
dri_bo_unreference(i965_h264_context->avc_ildb_data.bo);
 
for (i = 0; i < NUM_H264_AVC_KERNELS; i++) {
struct i965_kernel *kernel = &i965_h264_context->avc_kernels[i];
 
dri_bo_unreference(kernel->bo);
kernel->bo = NULL;
}
 
free(i965_h264_context);
*data = NULL;
}
 
void
i965_media_h264_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context = media_context->private_context;
dri_bo *bo;
VAPictureParameterBufferH264 *pic_param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
i965_h264_context->picture.width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
i965_h264_context->picture.height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff) /
(1 + !!pic_param->pic_fields.bits.field_pic_flag); /* picture height */
i965_h264_context->picture.mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
!pic_param->pic_fields.bits.field_pic_flag);
i965_h264_context->avc_it_command_mb_info.mbs = (i965_h264_context->picture.width_in_mbs *
i965_h264_context->picture.height_in_mbs);
 
dri_bo_unreference(i965_h264_context->avc_it_command_mb_info.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"avc it command mb info",
i965_h264_context->avc_it_command_mb_info.mbs * MB_CMD_IN_BYTES * (1 + i965_h264_context->use_avc_hw_scoreboard) + 8,
0x1000);
assert(bo);
i965_h264_context->avc_it_command_mb_info.bo = bo;
 
dri_bo_unreference(i965_h264_context->avc_it_data.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"avc it data",
i965_h264_context->avc_it_command_mb_info.mbs *
0x800 *
(1 + !!pic_param->pic_fields.bits.field_pic_flag),
0x1000);
assert(bo);
i965_h264_context->avc_it_data.bo = bo;
i965_h264_context->avc_it_data.write_offset = 0;
dri_bo_unreference(media_context->indirect_object.bo);
media_context->indirect_object.bo = bo;
dri_bo_reference(media_context->indirect_object.bo);
media_context->indirect_object.offset = i965_h264_context->avc_it_data.write_offset;
 
dri_bo_unreference(i965_h264_context->avc_ildb_data.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"AVC-ILDB Data Buffer",
i965_h264_context->avc_it_command_mb_info.mbs * 64 * 2,
0x1000);
assert(bo);
i965_h264_context->avc_ildb_data.bo = bo;
 
/* bsd pipeline */
i965_avc_bsd_decode_init(ctx, i965_h264_context);
 
/* HW scoreboard */
if (i965_h264_context->use_avc_hw_scoreboard)
i965_avc_hw_scoreboard_decode_init(ctx, i965_h264_context);
 
/* ILDB */
i965_avc_ildb_decode_init(ctx, i965_h264_context);
 
/* for Media pipeline */
media_context->extended_state.enabled = 1;
dri_bo_unreference(media_context->extended_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"extened vfe state",
sizeof(struct i965_vfe_state_ex), 32);
assert(bo);
media_context->extended_state.bo = bo;
}
 
void
i965_media_h264_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_h264_context *i965_h264_context;
int i;
 
i965_h264_context = calloc(1, sizeof(struct i965_h264_context));
 
/* kernel */
assert(NUM_H264_AVC_KERNELS == (sizeof(h264_avc_kernels_gen5) /
sizeof(h264_avc_kernels_gen5[0])));
assert(NUM_AVC_MC_INTERFACES == (sizeof(avc_mc_kernel_offset_gen5) /
sizeof(avc_mc_kernel_offset_gen5[0])));
if (IS_IRONLAKE(i965->intel.device_id)) {
memcpy(i965_h264_context->avc_kernels, h264_avc_kernels_gen5, sizeof(i965_h264_context->avc_kernels));
avc_mc_kernel_offset = avc_mc_kernel_offset_gen5;
intra_kernel_header = &intra_kernel_header_gen5;
i965_h264_context->use_avc_hw_scoreboard = 1;
i965_h264_context->use_hw_w128 = 1;
} else {
memcpy(i965_h264_context->avc_kernels, h264_avc_kernels_gen4, sizeof(i965_h264_context->avc_kernels));
avc_mc_kernel_offset = avc_mc_kernel_offset_gen4;
intra_kernel_header = &intra_kernel_header_gen4;
i965_h264_context->use_avc_hw_scoreboard = 0;
i965_h264_context->use_hw_w128 = 0;
}
 
for (i = 0; i < NUM_H264_AVC_KERNELS; i++) {
struct i965_kernel *kernel = &i965_h264_context->avc_kernels[i];
kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
kernel->name,
kernel->size, 0x1000);
assert(kernel->bo);
dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
}
 
for (i = 0; i < 16; i++) {
i965_h264_context->fsid_list[i].surface_id = VA_INVALID_ID;
i965_h264_context->fsid_list[i].frame_store_id = -1;
}
 
i965_h264_context->batch = media_context->base.batch;
 
media_context->private_context = i965_h264_context;
media_context->free_private_context = i965_media_h264_free_private_context;
 
/* URB */
if (IS_IRONLAKE(i965->intel.device_id)) {
media_context->urb.num_vfe_entries = 63;
} else {
media_context->urb.num_vfe_entries = 23;
}
 
media_context->urb.size_vfe_entry = 16;
 
media_context->urb.num_cs_entries = 1;
media_context->urb.size_cs_entry = 1;
 
media_context->urb.vfe_start = 0;
media_context->urb.cs_start = media_context->urb.vfe_start +
media_context->urb.num_vfe_entries * media_context->urb.size_vfe_entry;
assert(media_context->urb.cs_start +
media_context->urb.num_cs_entries * media_context->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
 
/* hook functions */
media_context->media_states_setup = i965_media_h264_states_setup;
media_context->media_objects = i965_media_h264_objects;
}
/drivers/video/i965/i965_media_h264.h
0,0 → 1,73
#ifndef _I965_MEDIA_H264_H_
#define _I965_MEDIA_H264_H_
 
#include "i965_avc_bsd.h"
#include "i965_avc_hw_scoreboard.h"
#include "i965_avc_ildb.h"
#include "i965_decoder.h"
 
struct decode_state;
struct i965_media_context;
 
#define INST_UNIT_GEN4 16
#define INST_UNIT_GEN5 8
 
#define MB_CMD_IN_BYTES 64
#define MB_CMD_IN_DWS 16
#define MB_CMD_IN_OWS 4
 
enum {
H264_AVC_COMBINED = 0,
H264_AVC_NULL
};
 
#define NUM_H264_AVC_KERNELS 2
 
struct i965_h264_context
{
struct {
dri_bo *bo;
unsigned int mbs;
} avc_it_command_mb_info;
 
struct {
dri_bo *bo;
long write_offset;
} avc_it_data;
 
struct {
dri_bo *bo;
} avc_ildb_data;
 
struct {
unsigned int width_in_mbs;
unsigned int height_in_mbs;
int mbaff_frame_flag;
int i_flag;
} picture;
 
int enable_avc_ildb;
int use_avc_hw_scoreboard;
 
int use_hw_w128;
unsigned int weight128_luma_l0;
unsigned int weight128_luma_l1;
unsigned int weight128_chroma_l0;
unsigned int weight128_chroma_l1;
char weight128_offset0_flag;
short weight128_offset0;
 
struct i965_avc_bsd_context i965_avc_bsd_context;
struct i965_avc_hw_scoreboard_context avc_hw_scoreboard_context;
struct i965_avc_ildb_context avc_ildb_context;
 
GenFrameStore fsid_list[MAX_GEN_REFERENCE_FRAMES];
 
struct i965_kernel avc_kernels[NUM_H264_AVC_KERNELS];
struct intel_batchbuffer *batch;
};
 
void i965_media_h264_decode_init(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
void i965_media_h264_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context);
 
#endif /* _I965_MEDIA_H264_H_ */
/drivers/video/i965/i965_media_mpeg2.c
0,0 → 1,1021
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_decoder_utils.h"
 
#include "i965_media.h"
#include "i965_media_mpeg2.h"
 
#define SURFACE_TARGET 0
#define SURFACE_FORWARD 1
#define SURFACE_BACKWARD 2
#define SURFACE_BIDIRECT 3
 
enum interface {
FRAME_INTRA = 0,
FRAME_FRAME_PRED_FORWARD,
FRAME_FRAME_PRED_BACKWARD,
FRAME_FRAME_PRED_BIDIRECT,
FRAME_FIELD_PRED_FORWARD,
FRAME_FIELD_PRED_BACKWARD,
FRAME_FIELD_PRED_BIDIRECT,
LIB_INTERFACE,
FIELD_INTRA,
FIELD_FORWARD,
FIELD_FORWARD_16X8,
FIELD_BACKWARD,
FIELD_BACKWARD_16X8,
FIELD_BIDIRECT,
FIELD_BIDIRECT_16X8
};
 
/* idct table */
#define C0 23170
#define C1 22725
#define C2 21407
#define C3 19266
#define C4 16383
#define C5 12873
#define C6 8867
#define C7 4520
const uint32_t idct_table[] = {
C4, C1, C2, C3, C4, C5, C6, C7, //g5
C4, C1, C2, C3, C4, C5, C6, C7,
C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
C4, C5,-C6,-C1,-C4, C7, C2, C3,
C4, C5,-C6,-C1,-C4, C7, C2, C3,
C4, C7,-C2,-C5, C4, C3,-C6,-C1,
C4, C7,-C2,-C5, C4, C3,-C6,-C1,
C4,-C7,-C2, C5, C4,-C3,-C6, C1,
C4,-C7,-C2, C5, C4,-C3,-C6, C1,
C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
C4,-C3, C6, C7,-C4, C1,-C2, C5,
C4,-C3, C6, C7,-C4, C1,-C2, C5,
C4,-C1, C2,-C3, C4,-C5, C6,-C7,
C4,-C1, C2,-C3, C4,-C5, C6,-C7 //g20
};
#undef C0
#undef C1
#undef C2
#undef C3
#undef C4
#undef C5
#undef C6
#undef C7
 
const uint32_t zigzag_direct[64] = {
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
 
static const uint32_t frame_intra_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_intra.g4b"
};
static const uint32_t frame_frame_pred_forward_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b"
};
static const uint32_t frame_frame_pred_backward_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b"
};
static const uint32_t frame_frame_pred_bidirect_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b"
};
static const uint32_t frame_field_pred_forward_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_forward.g4b"
};
static const uint32_t frame_field_pred_backward_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_backward.g4b"
};
static const uint32_t frame_field_pred_bidirect_kernel[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b"
};
static const uint32_t lib_kernel[][4] = {
#include "shaders/mpeg2/vld/lib.g4b"
};
/*field picture*/
static const uint32_t field_intra_kernel[][4] = {
#include "shaders/mpeg2/vld/field_intra.g4b"
};
static const uint32_t field_forward_kernel[][4] = {
#include "shaders/mpeg2/vld/field_forward.g4b"
};
static const uint32_t field_forward_16x8_kernel[][4] = {
#include "shaders/mpeg2/vld/field_forward_16x8.g4b"
};
static const uint32_t field_backward_kernel[][4] = {
#include "shaders/mpeg2/vld/field_backward.g4b"
};
static const uint32_t field_backward_16x8_kernel[][4] = {
#include "shaders/mpeg2/vld/field_backward_16x8.g4b"
};
static const uint32_t field_bidirect_kernel[][4] = {
#include "shaders/mpeg2/vld/field_bidirect.g4b"
};
static const uint32_t field_bidirect_16x8_kernel[][4] = {
#include "shaders/mpeg2/vld/field_bidirect_16x8.g4b"
};
 
static struct i965_kernel mpeg2_vld_kernels_gen4[] = {
{
"FRAME_INTRA",
FRAME_INTRA,
frame_intra_kernel,
sizeof(frame_intra_kernel),
NULL
},
 
{
"FRAME_FRAME_PRED_FORWARD",
FRAME_FRAME_PRED_FORWARD,
frame_frame_pred_forward_kernel,
sizeof(frame_frame_pred_forward_kernel),
NULL
},
 
{
"FRAME_FRAME_PRED_BACKWARD",
FRAME_FRAME_PRED_BACKWARD,
frame_frame_pred_backward_kernel,
sizeof(frame_frame_pred_backward_kernel),
NULL
},
 
{
"FRAME_FRAME_PRED_BIDIRECT",
FRAME_FRAME_PRED_BIDIRECT,
frame_frame_pred_bidirect_kernel,
sizeof(frame_frame_pred_bidirect_kernel),
NULL
},
 
{
"FRAME_FIELD_PRED_FORWARD",
FRAME_FIELD_PRED_FORWARD,
frame_field_pred_forward_kernel,
sizeof(frame_field_pred_forward_kernel),
NULL
},
 
{
"FRAME_FIELD_PRED_BACKWARD",
FRAME_FIELD_PRED_BACKWARD,
frame_field_pred_backward_kernel,
sizeof(frame_field_pred_backward_kernel),
NULL
},
 
{
"FRAME_FIELD_PRED_BIDIRECT",
FRAME_FIELD_PRED_BIDIRECT,
frame_field_pred_bidirect_kernel,
sizeof(frame_field_pred_bidirect_kernel),
NULL
},
{
"LIB",
LIB_INTERFACE,
lib_kernel,
sizeof(lib_kernel),
NULL
},
 
{
"FIELD_INTRA",
FIELD_INTRA,
field_intra_kernel,
sizeof(field_intra_kernel),
NULL
},
 
{
"FIELD_FORWARD",
FIELD_FORWARD,
field_forward_kernel,
sizeof(field_forward_kernel),
NULL
},
 
{
"FIELD_FORWARD_16X8",
FIELD_FORWARD_16X8,
field_forward_16x8_kernel,
sizeof(field_forward_16x8_kernel),
NULL
},
 
{
"FIELD_BACKWARD",
FIELD_BACKWARD,
field_backward_kernel,
sizeof(field_backward_kernel),
NULL
},
 
{
"FIELD_BACKWARD_16X8",
FIELD_BACKWARD_16X8,
field_backward_16x8_kernel,
sizeof(field_backward_16x8_kernel),
NULL
},
 
{
"FIELD_BIDIRECT",
FIELD_BIDIRECT,
field_bidirect_kernel,
sizeof(field_bidirect_kernel),
NULL
},
 
{
"FIELD_BIDIRECT_16X8",
FIELD_BIDIRECT_16X8,
field_bidirect_16x8_kernel,
sizeof(field_bidirect_16x8_kernel),
NULL
}
};
 
/* On IRONLAKE */
static const uint32_t frame_intra_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_intra.g4b.gen5"
};
static const uint32_t frame_frame_pred_forward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5"
};
static const uint32_t frame_frame_pred_backward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5"
};
static const uint32_t frame_frame_pred_bidirect_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5"
};
static const uint32_t frame_field_pred_forward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5"
};
static const uint32_t frame_field_pred_backward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5"
};
static const uint32_t frame_field_pred_bidirect_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5"
};
static const uint32_t lib_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/lib.g4b.gen5"
};
/*field picture*/
static const uint32_t field_intra_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_intra.g4b.gen5"
};
static const uint32_t field_forward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_forward.g4b.gen5"
};
static const uint32_t field_forward_16x8_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_forward_16x8.g4b.gen5"
};
static const uint32_t field_backward_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_backward.g4b.gen5"
};
static const uint32_t field_backward_16x8_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_backward_16x8.g4b.gen5"
};
static const uint32_t field_bidirect_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_bidirect.g4b.gen5"
};
static const uint32_t field_bidirect_16x8_kernel_gen5[][4] = {
#include "shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5"
};
 
static struct i965_kernel mpeg2_vld_kernels_gen5[] = {
{
"FRAME_INTRA",
FRAME_INTRA,
frame_intra_kernel_gen5,
sizeof(frame_intra_kernel_gen5),
NULL
},
 
{
"FRAME_FRAME_PRED_FORWARD",
FRAME_FRAME_PRED_FORWARD,
frame_frame_pred_forward_kernel_gen5,
sizeof(frame_frame_pred_forward_kernel_gen5),
NULL
},
 
{
"FRAME_FRAME_PRED_BACKWARD",
FRAME_FRAME_PRED_BACKWARD,
frame_frame_pred_backward_kernel_gen5,
sizeof(frame_frame_pred_backward_kernel_gen5),
NULL
},
 
{
"FRAME_FRAME_PRED_BIDIRECT",
FRAME_FRAME_PRED_BIDIRECT,
frame_frame_pred_bidirect_kernel_gen5,
sizeof(frame_frame_pred_bidirect_kernel_gen5),
NULL
},
 
{
"FRAME_FIELD_PRED_FORWARD",
FRAME_FIELD_PRED_FORWARD,
frame_field_pred_forward_kernel_gen5,
sizeof(frame_field_pred_forward_kernel_gen5),
NULL
},
 
{
"FRAME_FIELD_PRED_BACKWARD",
FRAME_FIELD_PRED_BACKWARD,
frame_field_pred_backward_kernel_gen5,
sizeof(frame_field_pred_backward_kernel_gen5),
NULL
},
 
{
"FRAME_FIELD_PRED_BIDIRECT",
FRAME_FIELD_PRED_BIDIRECT,
frame_field_pred_bidirect_kernel_gen5,
sizeof(frame_field_pred_bidirect_kernel_gen5),
NULL
},
{
"LIB",
LIB_INTERFACE,
lib_kernel_gen5,
sizeof(lib_kernel_gen5),
NULL
},
 
{
"FIELD_INTRA",
FIELD_INTRA,
field_intra_kernel_gen5,
sizeof(field_intra_kernel_gen5),
NULL
},
 
{
"FIELD_FORWARD",
FIELD_FORWARD,
field_forward_kernel_gen5,
sizeof(field_forward_kernel_gen5),
NULL
},
 
{
"FIELD_FORWARD_16X8",
FIELD_FORWARD_16X8,
field_forward_16x8_kernel_gen5,
sizeof(field_forward_16x8_kernel_gen5),
NULL
},
 
{
"FIELD_BACKWARD",
FIELD_BACKWARD,
field_backward_kernel_gen5,
sizeof(field_backward_kernel_gen5),
NULL
},
 
{
"FIELD_BACKWARD_16X8",
FIELD_BACKWARD_16X8,
field_backward_16x8_kernel_gen5,
sizeof(field_backward_16x8_kernel_gen5),
NULL
},
 
{
"FIELD_BIDIRECT",
FIELD_BIDIRECT,
field_bidirect_kernel_gen5,
sizeof(field_bidirect_kernel_gen5),
NULL
},
 
{
"FIELD_BIDIRECT_16X8",
FIELD_BIDIRECT_16X8,
field_bidirect_16x8_kernel_gen5,
sizeof(field_bidirect_16x8_kernel_gen5),
NULL
}
};
 
static void
i965_media_mpeg2_surface_state(VADriverContextP ctx,
int index,
struct object_surface *obj_surface,
unsigned long offset,
int w, int h,
Bool is_dst,
int vert_line_stride,
int vert_line_stride_ofs,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_surface_state *ss;
dri_bo *bo;
uint32_t write_domain, read_domain;
 
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state",
sizeof(struct i965_surface_state), 32);
assert(bo);
dri_bo_map(bo, 1);
assert(bo->virtual);
ss = bo->virtual;
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = I965_SURFACEFORMAT_R8_SINT;
ss->ss0.vert_line_stride = vert_line_stride;
ss->ss0.vert_line_stride_ofs = vert_line_stride_ofs;
ss->ss1.base_addr = obj_surface->bo->offset + offset;
ss->ss2.width = w - 1;
ss->ss2.height = h - 1;
ss->ss3.pitch = w - 1;
 
if (is_dst) {
write_domain = I915_GEM_DOMAIN_RENDER;
read_domain = I915_GEM_DOMAIN_RENDER;
} else {
write_domain = 0;
read_domain = I915_GEM_DOMAIN_SAMPLER;
}
 
dri_bo_emit_reloc(bo,
read_domain, write_domain,
offset,
offsetof(struct i965_surface_state, ss1),
obj_surface->bo);
dri_bo_unmap(bo);
 
assert(index < MAX_MEDIA_SURFACES);
// assert(media_context->surface_state[index].bo == NULL);
media_context->surface_state[index].bo = bo;
}
 
static void
i965_media_mpeg2_surface_setup(VADriverContextP ctx,
int base_index,
struct object_surface *obj_surface,
Bool is_dst,
int picture_structure,
int surface,
struct i965_media_context *media_context)
{
int w = obj_surface->width;
int h = obj_surface->height;
 
i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC('I','4','2','0'), SUBSAMPLE_YUV420);
 
if (picture_structure == MPEG_FRAME) {
i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
0, w, h,
is_dst, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
w * h, w / 2, h / 2,
is_dst, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
w * h + w * h / 4, w / 2, h / 2,
is_dst, 0, 0,
media_context);
} else {
if (surface == SURFACE_TARGET) {
i965_media_mpeg2_surface_state(ctx, 3, obj_surface,
0, w, h,
False, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, 10, obj_surface,
w * h, w / 2, h / 2,
False, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, 11, obj_surface,
w * h + w * h / 4, w / 2, h / 2,
False, 0, 0,
media_context);
if (picture_structure == MPEG_TOP_FIELD) {
i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
0, w, h,
True, 1, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
w * h, w / 2, h / 2,
True, 1, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
w * h + w * h / 4, w / 2, h / 2,
True, 1, 0,
media_context);
} else {
assert(picture_structure == MPEG_BOTTOM_FIELD);
i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
0, w, h,
True, 1, 1,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
w * h, w / 2, h / 2,
True, 1, 1,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
w * h + w * h / 4, w / 2, h / 2,
True, 1, 1,
media_context);
}
} else {
i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
0, w, h,
is_dst, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
w * h, w / 2, h / 2,
is_dst, 0, 0,
media_context);
i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
w * h + w * h / 4, w / 2, h / 2,
is_dst, 0, 0,
media_context);
}
}
}
 
void
i965_media_mpeg2_surfaces_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
VAPictureParameterBufferMPEG2 *param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
obj_surface = SURFACE(decode_state->current_render_target);
assert(obj_surface);
i965_media_mpeg2_surface_setup(ctx, 0, obj_surface, True,
param->picture_coding_extension.bits.picture_structure,
SURFACE_TARGET,
media_context);
 
obj_surface = SURFACE(param->forward_reference_picture);
if (!obj_surface) {
// assert(param->picture_coding_type == 1); /* I-picture */
} else {
i965_media_mpeg2_surface_setup(ctx, 4, obj_surface, False,
param->picture_coding_extension.bits.picture_structure,
SURFACE_FORWARD,
media_context);
obj_surface = SURFACE(param->backward_reference_picture);
if (!obj_surface) {
assert(param->picture_coding_type == 2); /* P-picture */
 
obj_surface = SURFACE(param->forward_reference_picture);
i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
param->picture_coding_extension.bits.picture_structure,
SURFACE_BACKWARD,
media_context);
} else {
assert(param->picture_coding_type == 3); /* B-picture */
i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
param->picture_coding_extension.bits.picture_structure,
SURFACE_BIDIRECT,
media_context);
}
}
}
 
static void
i965_media_mpeg2_binding_table(VADriverContextP ctx, struct i965_media_context *media_context)
{
int i;
unsigned int *binding_table;
dri_bo *bo = media_context->binding_table.bo;
 
dri_bo_map(bo, 1);
assert(bo->virtual);
binding_table = bo->virtual;
memset(binding_table, 0, bo->size);
 
for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
if (media_context->surface_state[i].bo) {
binding_table[i] = media_context->surface_state[i].bo->offset;
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
i * sizeof(*binding_table),
media_context->surface_state[i].bo);
}
}
 
dri_bo_unmap(media_context->binding_table.bo);
}
 
static void
i965_media_mpeg2_vfe_state(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_vfe_state *vfe_state;
dri_bo *bo;
 
bo = media_context->vfe_state.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
vfe_state = bo->virtual;
memset(vfe_state, 0, sizeof(*vfe_state));
vfe_state->vfe0.extend_vfe_state_present = 1;
vfe_state->vfe1.vfe_mode = VFE_VLD_MODE;
vfe_state->vfe1.num_urb_entries = media_context->urb.num_vfe_entries;
vfe_state->vfe1.children_present = 0;
vfe_state->vfe1.urb_entry_alloc_size = media_context->urb.size_vfe_entry - 1;
vfe_state->vfe1.max_threads = media_context->urb.num_vfe_entries - 1;
vfe_state->vfe2.interface_descriptor_base =
media_context->idrt.bo->offset >> 4; /* reloc */
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_vfe_state, vfe2),
media_context->idrt.bo);
dri_bo_unmap(bo);
}
 
static void
i965_media_mpeg2_interface_descriptor_remap_table(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_mpeg2_context *i965_mpeg2_context = (struct i965_mpeg2_context *)media_context->private_context;
struct i965_interface_descriptor *desc;
int i;
dri_bo *bo;
 
bo = media_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
 
for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
memset(desc, 0, sizeof(*desc));
desc->desc0.grf_reg_blocks = 15;
desc->desc0.kernel_start_pointer = i965_mpeg2_context->vld_kernels[i].bo->offset >> 6; /* reloc */
desc->desc1.const_urb_entry_read_offset = 0;
desc->desc1.const_urb_entry_read_len = 30;
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer =
media_context->binding_table.bo->offset >> 5; /*reloc */
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc0.grf_reg_blocks,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
i965_mpeg2_context->vld_kernels[i].bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc3.binding_table_entry_count,
i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
media_context->binding_table.bo);
desc++;
}
 
dri_bo_unmap(bo);
}
 
void
i965_media_mpeg2_vld_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_vld_state *vld_state;
VAPictureParameterBufferMPEG2 *param;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
assert(media_context->extended_state.bo);
dri_bo_map(media_context->extended_state.bo, 1);
assert(media_context->extended_state.bo->virtual);
vld_state = media_context->extended_state.bo->virtual;
memset(vld_state, 0, sizeof(*vld_state));
 
vld_state->vld0.f_code_0_0 = ((param->f_code >> 12) & 0xf);
vld_state->vld0.f_code_0_1 = ((param->f_code >> 8) & 0xf);
vld_state->vld0.f_code_1_0 = ((param->f_code >> 4) & 0xf);
vld_state->vld0.f_code_1_1 = (param->f_code & 0xf);
vld_state->vld0.intra_dc_precision = param->picture_coding_extension.bits.intra_dc_precision;
vld_state->vld0.picture_structure = param->picture_coding_extension.bits.picture_structure;
vld_state->vld0.top_field_first = param->picture_coding_extension.bits.top_field_first;
vld_state->vld0.frame_predict_frame_dct = param->picture_coding_extension.bits.frame_pred_frame_dct;
vld_state->vld0.concealment_motion_vector = param->picture_coding_extension.bits.concealment_motion_vectors;
vld_state->vld0.quantizer_scale_type = param->picture_coding_extension.bits.q_scale_type;
vld_state->vld0.intra_vlc_format = param->picture_coding_extension.bits.intra_vlc_format;
vld_state->vld0.scan_order = param->picture_coding_extension.bits.alternate_scan;
 
vld_state->vld1.picture_coding_type = param->picture_coding_type;
 
if (vld_state->vld0.picture_structure == MPEG_FRAME) {
/*frame picture*/
vld_state->desc_remap_table0.index_0 = FRAME_INTRA;
vld_state->desc_remap_table0.index_1 = FRAME_FRAME_PRED_FORWARD;
vld_state->desc_remap_table0.index_2 = FRAME_FIELD_PRED_FORWARD;
vld_state->desc_remap_table0.index_3 = FRAME_FIELD_PRED_BIDIRECT; /* dual prime */
vld_state->desc_remap_table0.index_4 = FRAME_FRAME_PRED_BACKWARD;
vld_state->desc_remap_table0.index_5 = FRAME_FIELD_PRED_BACKWARD;
vld_state->desc_remap_table0.index_6 = FRAME_FRAME_PRED_BIDIRECT;
vld_state->desc_remap_table0.index_7 = FRAME_FIELD_PRED_BIDIRECT;
 
vld_state->desc_remap_table1.index_8 = FRAME_INTRA;
vld_state->desc_remap_table1.index_9 = FRAME_FRAME_PRED_FORWARD;
vld_state->desc_remap_table1.index_10 = FRAME_FIELD_PRED_FORWARD;
vld_state->desc_remap_table1.index_11 = FRAME_FIELD_PRED_BIDIRECT;
vld_state->desc_remap_table1.index_12 = FRAME_FRAME_PRED_BACKWARD;
vld_state->desc_remap_table1.index_13 = FRAME_FIELD_PRED_BACKWARD;
vld_state->desc_remap_table1.index_14 = FRAME_FRAME_PRED_BIDIRECT;
vld_state->desc_remap_table1.index_15 = FRAME_FIELD_PRED_BIDIRECT;
} else {
/*field picture*/
vld_state->desc_remap_table0.index_0 = FIELD_INTRA;
vld_state->desc_remap_table0.index_1 = FIELD_FORWARD;
vld_state->desc_remap_table0.index_2 = FIELD_FORWARD_16X8;
vld_state->desc_remap_table0.index_3 = FIELD_BIDIRECT; /* dual prime */
vld_state->desc_remap_table0.index_4 = FIELD_BACKWARD;
vld_state->desc_remap_table0.index_5 = FIELD_BACKWARD_16X8;
vld_state->desc_remap_table0.index_6 = FIELD_BIDIRECT;
vld_state->desc_remap_table0.index_7 = FIELD_BIDIRECT_16X8;
}
 
dri_bo_unmap(media_context->extended_state.bo);
}
 
static void
i965_media_mpeg2_upload_constants(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_mpeg2_context *i965_mpeg2_context = (struct i965_mpeg2_context *)media_context->private_context;
VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &i965_mpeg2_context->iq_matrix;
int i;
unsigned char *constant_buffer;
unsigned int *lib_reloc;
int lib_reloc_offset = 0;
 
dri_bo_map(media_context->curbe.bo, 1);
assert(media_context->curbe.bo->virtual);
constant_buffer = media_context->curbe.bo->virtual;
 
/* iq_matrix */
if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
VAIQMatrixBufferMPEG2 * const iq_matrix =
(VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
 
gen_iq_matrix->load_intra_quantiser_matrix =
iq_matrix->load_intra_quantiser_matrix;
if (iq_matrix->load_intra_quantiser_matrix) {
for (i = 0; i < 64; i++)
gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[i]] =
iq_matrix->intra_quantiser_matrix[i];
}
 
gen_iq_matrix->load_non_intra_quantiser_matrix =
iq_matrix->load_non_intra_quantiser_matrix;
if (iq_matrix->load_non_intra_quantiser_matrix) {
for (i = 0; i < 64; i++)
gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[i]] =
iq_matrix->non_intra_quantiser_matrix[i];
}
 
/* no chroma quantisation matrices for 4:2:0 data */
}
 
if (gen_iq_matrix->load_intra_quantiser_matrix) {
unsigned char * const qm = constant_buffer;
memcpy(qm, gen_iq_matrix->intra_quantiser_matrix, 64);
}
 
if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
unsigned char * const qm = constant_buffer + 64;
memcpy(qm, gen_iq_matrix->non_intra_quantiser_matrix, 64);
}
 
/* idct table */
memcpy(constant_buffer + 128, idct_table, sizeof(idct_table));
 
/* idct lib reloc */
lib_reloc_offset = 128 + sizeof(idct_table);
lib_reloc = (unsigned int *)(constant_buffer + lib_reloc_offset);
for (i = 0; i < 8; i++) {
lib_reloc[i] = i965_mpeg2_context->vld_kernels[LIB_INTERFACE].bo->offset;
dri_bo_emit_reloc(media_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
lib_reloc_offset + i * sizeof(unsigned int),
i965_mpeg2_context->vld_kernels[LIB_INTERFACE].bo);
}
 
dri_bo_unmap(media_context->curbe.bo);
}
 
static void
i965_media_mpeg2_states_setup(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
i965_media_mpeg2_surfaces_setup(ctx, decode_state, media_context);
i965_media_mpeg2_binding_table(ctx, media_context);
i965_media_mpeg2_interface_descriptor_remap_table(ctx, media_context);
i965_media_mpeg2_vld_state(ctx, decode_state, media_context);
i965_media_mpeg2_vfe_state(ctx, media_context);
i965_media_mpeg2_upload_constants(ctx, decode_state, media_context);
}
 
static void
i965_media_mpeg2_objects(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_mpeg2_context * const i965_mpeg2_context = media_context->private_context;
struct intel_batchbuffer *batch = media_context->base.batch;
VASliceParameterBufferMPEG2 *slice_param;
VAPictureParameterBufferMPEG2 *pic_param;
int i, j;
 
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
 
if (i965_mpeg2_context->wa_slice_vertical_position < 0)
i965_mpeg2_context->wa_slice_vertical_position =
mpeg2_wa_slice_vertical_position(decode_state, pic_param);
 
for (j = 0; j < decode_state->num_slice_params; j++) {
assert(decode_state->slice_params[j] && decode_state->slice_params[j]->buffer);
assert(decode_state->slice_datas[j] && decode_state->slice_datas[j]->bo);
slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
 
for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
int vpos, hpos, is_field_pic = 0;
 
if (i965_mpeg2_context->wa_slice_vertical_position > 0 &&
(pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD))
is_field_pic = 1;
 
assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
vpos = slice_param->slice_vertical_position / (1 + is_field_pic);
hpos = slice_param->slice_horizontal_position;
 
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
OUT_RELOC(batch, decode_state->slice_datas[j]->bo,
I915_GEM_DOMAIN_SAMPLER, 0,
slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
OUT_BATCH(batch,
((hpos << 24) |
(vpos << 16) |
(127 << 8) |
(slice_param->macroblock_offset & 0x7)));
OUT_BATCH(batch, slice_param->quantiser_scale_code << 24);
ADVANCE_BATCH(batch);
slice_param++;
}
}
}
 
static void
i965_media_mpeg2_free_private_context(void **data)
{
struct i965_mpeg2_context *i965_mpeg2_context = *data;
int i;
 
if (i965_mpeg2_context == NULL)
return;
 
for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
struct i965_kernel *kernel = &i965_mpeg2_context->vld_kernels[i];
 
dri_bo_unreference(kernel->bo);
kernel->bo = NULL;
}
 
free(i965_mpeg2_context);
*data = NULL;
}
 
void
i965_media_mpeg2_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
dri_bo *bo;
 
dri_bo_unreference(media_context->indirect_object.bo);
media_context->indirect_object.bo = NULL;
 
media_context->extended_state.enabled = 1;
dri_bo_unreference(media_context->extended_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vld state",
sizeof(struct i965_vld_state), 32);
assert(bo);
media_context->extended_state.bo = bo;
}
 
void
i965_media_mpeg2_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_mpeg2_context *i965_mpeg2_context;
int i;
 
i965_mpeg2_context = calloc(1, sizeof(struct i965_mpeg2_context));
i965_mpeg2_context->wa_slice_vertical_position = -1;
 
/* kernel */
assert(NUM_MPEG2_VLD_KERNELS == (sizeof(mpeg2_vld_kernels_gen4) /
sizeof(mpeg2_vld_kernels_gen4[0])));
assert(NUM_MPEG2_VLD_KERNELS == (sizeof(mpeg2_vld_kernels_gen5) /
sizeof(mpeg2_vld_kernels_gen5[0])));
assert(NUM_MPEG2_VLD_KERNELS <= MAX_INTERFACE_DESC);
 
if (IS_IRONLAKE(i965->intel.device_id))
memcpy(i965_mpeg2_context->vld_kernels, mpeg2_vld_kernels_gen5, sizeof(i965_mpeg2_context->vld_kernels));
else
memcpy(i965_mpeg2_context->vld_kernels, mpeg2_vld_kernels_gen4, sizeof(i965_mpeg2_context->vld_kernels));
 
for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
struct i965_kernel *kernel = &i965_mpeg2_context->vld_kernels[i];
kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
kernel->name,
kernel->size, 64);
assert(kernel->bo);
dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
}
 
/* URB */
media_context->urb.num_vfe_entries = 28;
media_context->urb.size_vfe_entry = 13;
 
media_context->urb.num_cs_entries = 1;
media_context->urb.size_cs_entry = 16;
 
media_context->urb.vfe_start = 0;
media_context->urb.cs_start = media_context->urb.vfe_start +
media_context->urb.num_vfe_entries * media_context->urb.size_vfe_entry;
assert(media_context->urb.cs_start +
media_context->urb.num_cs_entries * media_context->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
 
/* hook functions */
media_context->media_states_setup = i965_media_mpeg2_states_setup;
media_context->media_objects = i965_media_mpeg2_objects;
media_context->private_context = i965_mpeg2_context;
media_context->free_private_context = i965_media_mpeg2_free_private_context;
}
/drivers/video/i965/i965_media_mpeg2.h
0,0 → 1,53
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#ifndef _I965_MEDIA_MPEG2_H_
#define _I965_MEDIA_MPEG2_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
struct decode_state;
struct i965_media_context;
 
#define NUM_MPEG2_VLD_KERNELS 15
 
struct i965_mpeg2_context
{
struct i965_kernel vld_kernels[NUM_MPEG2_VLD_KERNELS];
VAIQMatrixBufferMPEG2 iq_matrix;
int wa_slice_vertical_position;
};
 
void i965_media_mpeg2_decode_init(VADriverContextP ctx, struct decode_state * decode_state, struct i965_media_context *media_context);
void i965_media_mpeg2_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context);
 
#endif /* _I965_MEDIA_MPEG2_H_ */
/drivers/video/i965/i965_mutext.h
0,0 → 1,52
#ifndef _I965_MUTEX_H_
#define _I965_MUTEX_H_
 
#include "intel_compiler.h"
 
#if defined PTHREADS
#include <pthread.h>
 
typedef pthread_mutex_t _I965Mutex;
 
static INLINE void _i965InitMutex(_I965Mutex *m)
{
pthread_mutex_init(m, NULL);
}
 
static INLINE void
_i965DestroyMutex(_I965Mutex *m)
{
pthread_mutex_destroy(m);
}
 
static INLINE void
_i965LockMutex(_I965Mutex *m)
{
pthread_mutex_lock(m);
}
 
static INLINE void
_i965UnlockMutex(_I965Mutex *m)
{
pthread_mutex_unlock(m);
}
 
#define _I965_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
#define _I965_DECLARE_MUTEX(m) \
_I965Mutex m = _I965_MUTEX_INITIALIZER
 
#else
 
typedef int _I965Mutex;
static INLINE void _i965InitMutex(_I965Mutex *m) { (void) m; }
static INLINE void _i965DestroyMutex(_I965Mutex *m) { (void) m; }
static INLINE void _i965LockMutex(_I965Mutex *m) { (void) m; }
static INLINE void _i965UnlockMutex(_I965Mutex *m) { (void) m; }
 
#define _I965_MUTEX_INITIALIZER 0
#define _I965_DECLARE_MUTEX(m) \
_I965Mutex m = _I965_MUTEX_INITIALIZER
 
#endif
 
#endif /* _I965_MUTEX_H_ */
/drivers/video/i965/i965_post_processing.c
0,0 → 1,4599
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_structs.h"
#include "i965_drv_video.h"
#include "gen75_vpp_vebox.h"
#include "i965_post_processing.h"
#include "i965_render.h"
 
#define HAS_PP(ctx) (IS_IRONLAKE((ctx)->intel.device_id) || \
IS_GEN6((ctx)->intel.device_id) || \
IS_GEN7((ctx)->intel.device_id))
 
#define SURFACE_STATE_PADDED_SIZE_0_I965 ALIGN(sizeof(struct i965_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_I965 ALIGN(sizeof(struct i965_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_I965 MAX(SURFACE_STATE_PADDED_SIZE_0_I965, SURFACE_STATE_PADDED_SIZE_1_I965)
 
#define SURFACE_STATE_PADDED_SIZE_0_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_1_GEN7 ALIGN(sizeof(struct gen7_surface_state2), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN7 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN7, SURFACE_STATE_PADDED_SIZE_1_GEN7)
 
#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_I965, SURFACE_STATE_PADDED_SIZE_GEN7)
#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_PP_SURFACES)
 
#define GPU_ASM_BLOCK_WIDTH 16
#define GPU_ASM_BLOCK_HEIGHT 8
#define GPU_ASM_X_OFFSET_ALIGNMENT 4
 
static const uint32_t pp_null_gen5[][4] = {
#include "shaders/post_processing/gen5_6/null.g4b.gen5"
};
 
static const uint32_t pp_nv12_load_save_nv12_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5"
};
 
static const uint32_t pp_nv12_load_save_pl3_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5"
};
 
static const uint32_t pp_pl3_load_save_nv12_gen5[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5"
};
 
static const uint32_t pp_pl3_load_save_pl3_gen5[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5"
};
 
static const uint32_t pp_nv12_scaling_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5"
};
 
static const uint32_t pp_nv12_avs_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5"
};
 
static const uint32_t pp_nv12_dndi_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5"
};
 
static const uint32_t pp_nv12_dn_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5"
};
 
static const uint32_t pp_nv12_load_save_pa_gen5[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5"
};
 
static const uint32_t pp_pl3_load_save_pa_gen5[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5"
};
 
static const uint32_t pp_pa_load_save_nv12_gen5[][4] = {
#include "shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5"
};
 
static VAStatus pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus pp_nv12_avs_initialize_nlas(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus pp_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus gen6_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus pp_plx_load_save_plx_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
 
static VAStatus pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
 
static struct pp_module pp_modules_gen5[] = {
{
{
"NULL module (for testing)",
PP_NULL,
pp_null_gen5,
sizeof(pp_null_gen5),
NULL,
},
 
pp_null_initialize,
},
 
{
{
"NV12_NV12",
PP_NV12_LOAD_SAVE_N12,
pp_nv12_load_save_nv12_gen5,
sizeof(pp_nv12_load_save_nv12_gen5),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"NV12_PL3",
PP_NV12_LOAD_SAVE_PL3,
pp_nv12_load_save_pl3_gen5,
sizeof(pp_nv12_load_save_pl3_gen5),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"PL3_NV12",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_nv12_gen5,
sizeof(pp_pl3_load_save_nv12_gen5),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"PL3_PL3",
PP_PL3_LOAD_SAVE_PL3,
pp_pl3_load_save_pl3_gen5,
sizeof(pp_pl3_load_save_pl3_gen5),
NULL,
},
 
pp_plx_load_save_plx_initialize
},
 
{
{
"NV12 Scaling module",
PP_NV12_SCALING,
pp_nv12_scaling_gen5,
sizeof(pp_nv12_scaling_gen5),
NULL,
},
 
pp_nv12_scaling_initialize,
},
 
{
{
"NV12 AVS module",
PP_NV12_AVS,
pp_nv12_avs_gen5,
sizeof(pp_nv12_avs_gen5),
NULL,
},
 
pp_nv12_avs_initialize_nlas,
},
 
{
{
"NV12 DNDI module",
PP_NV12_DNDI,
pp_nv12_dndi_gen5,
sizeof(pp_nv12_dndi_gen5),
NULL,
},
 
pp_nv12_dndi_initialize,
},
 
{
{
"NV12 DN module",
PP_NV12_DN,
pp_nv12_dn_gen5,
sizeof(pp_nv12_dn_gen5),
NULL,
},
 
pp_nv12_dn_initialize,
},
 
{
{
"NV12_PA module",
PP_NV12_LOAD_SAVE_PA,
pp_nv12_load_save_pa_gen5,
sizeof(pp_nv12_load_save_pa_gen5),
NULL,
},
pp_plx_load_save_plx_initialize,
},
{
{
"PL3_PA module",
PP_PL3_LOAD_SAVE_PA,
pp_pl3_load_save_pa_gen5,
sizeof(pp_pl3_load_save_pa_gen5),
NULL,
},
pp_plx_load_save_plx_initialize,
},
{
{
"PA_NV12 module",
PP_PA_LOAD_SAVE_NV12,
pp_pa_load_save_nv12_gen5,
sizeof(pp_pa_load_save_nv12_gen5),
NULL,
},
pp_plx_load_save_plx_initialize,
},
};
 
static const uint32_t pp_null_gen6[][4] = {
#include "shaders/post_processing/gen5_6/null.g6b"
};
 
static const uint32_t pp_nv12_load_save_nv12_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b"
};
 
static const uint32_t pp_nv12_load_save_pl3_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b"
};
 
static const uint32_t pp_pl3_load_save_nv12_gen6[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b"
};
 
static const uint32_t pp_pl3_load_save_pl3_gen6[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b"
};
 
static const uint32_t pp_nv12_scaling_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g6b"
};
 
static const uint32_t pp_nv12_avs_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g6b"
};
 
static const uint32_t pp_nv12_dndi_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b"
};
 
static const uint32_t pp_nv12_dn_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_dn_nv12.g6b"
};
 
static const uint32_t pp_nv12_load_save_pa_gen6[][4] = {
#include "shaders/post_processing/gen5_6/nv12_load_save_pa.g6b"
};
 
static const uint32_t pp_pa_load_save_nv12_gen6[][4] = {
#include "shaders/post_processing/gen5_6/pa_load_save_nv12.g6b"
};
 
static const uint32_t pp_pl3_load_save_pa_gen6[][4] = {
#include "shaders/post_processing/gen5_6/pl3_load_save_pa.g6b"
};
 
static struct pp_module pp_modules_gen6[] = {
{
{
"NULL module (for testing)",
PP_NULL,
pp_null_gen6,
sizeof(pp_null_gen6),
NULL,
},
 
pp_null_initialize,
},
 
{
{
"NV12_NV12",
PP_NV12_LOAD_SAVE_N12,
pp_nv12_load_save_nv12_gen6,
sizeof(pp_nv12_load_save_nv12_gen6),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"NV12_PL3",
PP_NV12_LOAD_SAVE_PL3,
pp_nv12_load_save_pl3_gen6,
sizeof(pp_nv12_load_save_pl3_gen6),
NULL,
},
pp_plx_load_save_plx_initialize,
},
 
{
{
"PL3_NV12",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_nv12_gen6,
sizeof(pp_pl3_load_save_nv12_gen6),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"PL3_PL3",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_pl3_gen6,
sizeof(pp_pl3_load_save_pl3_gen6),
NULL,
},
 
pp_plx_load_save_plx_initialize,
},
 
{
{
"NV12 Scaling module",
PP_NV12_SCALING,
pp_nv12_scaling_gen6,
sizeof(pp_nv12_scaling_gen6),
NULL,
},
 
gen6_nv12_scaling_initialize,
},
 
{
{
"NV12 AVS module",
PP_NV12_AVS,
pp_nv12_avs_gen6,
sizeof(pp_nv12_avs_gen6),
NULL,
},
 
pp_nv12_avs_initialize_nlas,
},
 
{
{
"NV12 DNDI module",
PP_NV12_DNDI,
pp_nv12_dndi_gen6,
sizeof(pp_nv12_dndi_gen6),
NULL,
},
 
pp_nv12_dndi_initialize,
},
 
{
{
"NV12 DN module",
PP_NV12_DN,
pp_nv12_dn_gen6,
sizeof(pp_nv12_dn_gen6),
NULL,
},
 
pp_nv12_dn_initialize,
},
{
{
"NV12_PA module",
PP_NV12_LOAD_SAVE_PA,
pp_nv12_load_save_pa_gen6,
sizeof(pp_nv12_load_save_pa_gen6),
NULL,
},
pp_plx_load_save_plx_initialize,
},
{
{
"PL3_PA module",
PP_PL3_LOAD_SAVE_PA,
pp_pl3_load_save_pa_gen6,
sizeof(pp_pl3_load_save_pa_gen6),
NULL,
},
pp_plx_load_save_plx_initialize,
},
{
{
"PA_NV12 module",
PP_PA_LOAD_SAVE_NV12,
pp_pa_load_save_nv12_gen6,
sizeof(pp_pa_load_save_nv12_gen6),
NULL,
},
pp_plx_load_save_plx_initialize,
},
 
};
 
static const uint32_t pp_null_gen7[][4] = {
};
 
static const uint32_t pp_nv12_load_save_nv12_gen7[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pl2.g7b"
};
 
static const uint32_t pp_nv12_load_save_pl3_gen7[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pl3.g7b"
};
 
static const uint32_t pp_pl3_load_save_nv12_gen7[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pl2.g7b"
};
 
static const uint32_t pp_pl3_load_save_pl3_gen7[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pl3.g7b"
};
 
static const uint32_t pp_nv12_scaling_gen7[][4] = {
#include "shaders/post_processing/gen7/avs.g7b"
};
 
static const uint32_t pp_nv12_avs_gen7[][4] = {
#include "shaders/post_processing/gen7/avs.g7b"
};
 
static const uint32_t pp_nv12_dndi_gen7[][4] = {
#include "shaders/post_processing/gen7/dndi.g7b"
};
 
static const uint32_t pp_nv12_dn_gen7[][4] = {
#include "shaders/post_processing/gen7/nv12_dn_nv12.g7b"
};
 
static const uint32_t pp_nv12_load_save_pa_gen7[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pa.g7b"
};
 
static const uint32_t pp_pl3_load_save_pa_gen7[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pa.g7b"
};
 
static const uint32_t pp_pa_load_save_nv12_gen7[][4] = {
#include "shaders/post_processing/gen7/pa_to_pl2.g7b"
};
 
static VAStatus gen7_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
static VAStatus gen7_pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
 
static struct pp_module pp_modules_gen7[] = {
{
{
"NULL module (for testing)",
PP_NULL,
pp_null_gen7,
sizeof(pp_null_gen7),
NULL,
},
 
pp_null_initialize,
},
 
{
{
"NV12_NV12",
PP_NV12_LOAD_SAVE_N12,
pp_nv12_load_save_nv12_gen7,
sizeof(pp_nv12_load_save_nv12_gen7),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12_PL3",
PP_NV12_LOAD_SAVE_PL3,
pp_nv12_load_save_pl3_gen7,
sizeof(pp_nv12_load_save_pl3_gen7),
NULL,
},
gen7_pp_plx_avs_initialize,
},
 
{
{
"PL3_NV12",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_nv12_gen7,
sizeof(pp_pl3_load_save_nv12_gen7),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"PL3_PL3",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_pl3_gen7,
sizeof(pp_pl3_load_save_pl3_gen7),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 Scaling module",
PP_NV12_SCALING,
pp_nv12_scaling_gen7,
sizeof(pp_nv12_scaling_gen7),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 AVS module",
PP_NV12_AVS,
pp_nv12_avs_gen7,
sizeof(pp_nv12_avs_gen7),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 DNDI module",
PP_NV12_DNDI,
pp_nv12_dndi_gen7,
sizeof(pp_nv12_dndi_gen7),
NULL,
},
 
gen7_pp_nv12_dndi_initialize,
},
 
{
{
"NV12 DN module",
PP_NV12_DN,
pp_nv12_dn_gen7,
sizeof(pp_nv12_dn_gen7),
NULL,
},
 
gen7_pp_nv12_dn_initialize,
},
{
{
"NV12_PA module",
PP_NV12_LOAD_SAVE_PA,
pp_nv12_load_save_pa_gen7,
sizeof(pp_nv12_load_save_pa_gen7),
NULL,
},
gen7_pp_plx_avs_initialize,
},
{
{
"PL3_PA module",
PP_PL3_LOAD_SAVE_PA,
pp_pl3_load_save_pa_gen7,
sizeof(pp_pl3_load_save_pa_gen7),
NULL,
},
gen7_pp_plx_avs_initialize,
},
{
{
"PA_NV12 module",
PP_PA_LOAD_SAVE_NV12,
pp_pa_load_save_nv12_gen7,
sizeof(pp_pa_load_save_nv12_gen7),
NULL,
},
gen7_pp_plx_avs_initialize,
},
};
 
static const uint32_t pp_null_gen75[][4] = {
};
 
static const uint32_t pp_nv12_load_save_nv12_gen75[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pl2.g75b"
};
 
static const uint32_t pp_nv12_load_save_pl3_gen75[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pl3.g75b"
};
 
static const uint32_t pp_pl3_load_save_nv12_gen75[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pl2.g75b"
};
 
static const uint32_t pp_pl3_load_save_pl3_gen75[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pl3.g75b"
};
 
static const uint32_t pp_nv12_scaling_gen75[][4] = {
#include "shaders/post_processing/gen7/avs.g75b"
};
 
static const uint32_t pp_nv12_avs_gen75[][4] = {
#include "shaders/post_processing/gen7/avs.g75b"
};
 
static const uint32_t pp_nv12_dndi_gen75[][4] = {
// #include "shaders/post_processing/gen7/dndi.g75b"
};
 
static const uint32_t pp_nv12_dn_gen75[][4] = {
// #include "shaders/post_processing/gen7/nv12_dn_nv12.g75b"
};
static const uint32_t pp_nv12_load_save_pa_gen75[][4] = {
#include "shaders/post_processing/gen7/pl2_to_pa.g75b"
};
 
static const uint32_t pp_pl3_load_save_pa_gen75[][4] = {
#include "shaders/post_processing/gen7/pl3_to_pa.g75b"
};
 
static const uint32_t pp_pa_load_save_nv12_gen75[][4] = {
#include "shaders/post_processing/gen7/pa_to_pl2.g75b"
};
 
static struct pp_module pp_modules_gen75[] = {
{
{
"NULL module (for testing)",
PP_NULL,
pp_null_gen75,
sizeof(pp_null_gen75),
NULL,
},
 
pp_null_initialize,
},
 
{
{
"NV12_NV12",
PP_NV12_LOAD_SAVE_N12,
pp_nv12_load_save_nv12_gen75,
sizeof(pp_nv12_load_save_nv12_gen75),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12_PL3",
PP_NV12_LOAD_SAVE_PL3,
pp_nv12_load_save_pl3_gen75,
sizeof(pp_nv12_load_save_pl3_gen75),
NULL,
},
gen7_pp_plx_avs_initialize,
},
 
{
{
"PL3_NV12",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_nv12_gen75,
sizeof(pp_pl3_load_save_nv12_gen75),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"PL3_PL3",
PP_PL3_LOAD_SAVE_N12,
pp_pl3_load_save_pl3_gen75,
sizeof(pp_pl3_load_save_pl3_gen75),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 Scaling module",
PP_NV12_SCALING,
pp_nv12_scaling_gen75,
sizeof(pp_nv12_scaling_gen75),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 AVS module",
PP_NV12_AVS,
pp_nv12_avs_gen75,
sizeof(pp_nv12_avs_gen75),
NULL,
},
 
gen7_pp_plx_avs_initialize,
},
 
{
{
"NV12 DNDI module",
PP_NV12_DNDI,
pp_nv12_dndi_gen75,
sizeof(pp_nv12_dndi_gen75),
NULL,
},
 
gen7_pp_nv12_dndi_initialize,
},
 
{
{
"NV12 DN module",
PP_NV12_DN,
pp_nv12_dn_gen75,
sizeof(pp_nv12_dn_gen75),
NULL,
},
 
gen7_pp_nv12_dn_initialize,
},
{
{
"NV12_PA module",
PP_NV12_LOAD_SAVE_PA,
pp_nv12_load_save_pa_gen75,
sizeof(pp_nv12_load_save_pa_gen75),
NULL,
},
gen7_pp_plx_avs_initialize,
},
 
{
{
"PL3_PA module",
PP_PL3_LOAD_SAVE_PA,
pp_pl3_load_save_pa_gen75,
sizeof(pp_pl3_load_save_pa_gen75),
NULL,
},
gen7_pp_plx_avs_initialize,
},
 
{
{
"PA_NV12 module",
PP_PA_LOAD_SAVE_NV12,
pp_pa_load_save_nv12_gen75,
sizeof(pp_pa_load_save_nv12_gen75),
NULL,
},
gen7_pp_plx_avs_initialize,
},
};
 
static int
pp_get_surface_fourcc(VADriverContextP ctx, const struct i965_surface *surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int fourcc;
 
if (surface->type == I965_SURFACE_TYPE_IMAGE) {
struct object_image *obj_image = IMAGE(surface->id);
fourcc = obj_image->image.format.fourcc;
} else {
struct object_surface *obj_surface = SURFACE(surface->id);
fourcc = obj_surface->fourcc;
}
 
return fourcc;
}
 
static void
pp_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss3.tiled_surface = 0;
ss->ss3.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
pp_set_surface2_tiling(struct i965_surface_state2 *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss2.tiled_surface = 0;
ss->ss2.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
gen7_pp_set_surface_tiling(struct gen7_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss0.tiled_surface = 0;
ss->ss0.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
gen7_pp_set_surface2_tiling(struct gen7_surface_state2 *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss2.tiled_surface = 0;
ss->ss2.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss2.tiled_surface = 1;
ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
 
static void
ironlake_pp_interface_descriptor_table(struct i965_post_processing_context *pp_context)
{
struct i965_interface_descriptor *desc;
dri_bo *bo;
int pp_index = pp_context->current_pp;
 
bo = pp_context->idrt.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
desc = bo->virtual;
memset(desc, 0, sizeof(*desc));
desc->desc0.grf_reg_blocks = 10;
desc->desc0.kernel_start_pointer = pp_context->pp_modules[pp_index].kernel.bo->offset >> 6; /* reloc */
desc->desc1.const_urb_entry_read_offset = 0;
desc->desc1.const_urb_entry_read_len = 4; /* grf 1-4 */
desc->desc2.sampler_state_pointer = pp_context->sampler_state_table.bo->offset >> 5;
desc->desc2.sampler_count = 0;
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc0.grf_reg_blocks,
offsetof(struct i965_interface_descriptor, desc0),
pp_context->pp_modules[pp_index].kernel.bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc2.sampler_count << 2,
offsetof(struct i965_interface_descriptor, desc2),
pp_context->sampler_state_table.bo);
 
dri_bo_unmap(bo);
pp_context->idrt.num_interface_descriptors++;
}
 
static void
ironlake_pp_vfe_state(struct i965_post_processing_context *pp_context)
{
struct i965_vfe_state *vfe_state;
dri_bo *bo;
 
bo = pp_context->vfe_state.bo;
dri_bo_map(bo, 1);
assert(bo->virtual);
vfe_state = bo->virtual;
memset(vfe_state, 0, sizeof(*vfe_state));
vfe_state->vfe1.max_threads = pp_context->urb.num_vfe_entries - 1;
vfe_state->vfe1.urb_entry_alloc_size = pp_context->urb.size_vfe_entry - 1;
vfe_state->vfe1.num_urb_entries = pp_context->urb.num_vfe_entries;
vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
vfe_state->vfe1.children_present = 0;
vfe_state->vfe2.interface_descriptor_base =
pp_context->idrt.bo->offset >> 4; /* reloc */
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_vfe_state, vfe2),
pp_context->idrt.bo);
dri_bo_unmap(bo);
}
 
static void
ironlake_pp_upload_constants(struct i965_post_processing_context *pp_context)
{
unsigned char *constant_buffer;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
 
assert(sizeof(*pp_static_parameter) == 128);
dri_bo_map(pp_context->curbe.bo, 1);
assert(pp_context->curbe.bo->virtual);
constant_buffer = pp_context->curbe.bo->virtual;
memcpy(constant_buffer, pp_static_parameter, sizeof(*pp_static_parameter));
dri_bo_unmap(pp_context->curbe.bo);
}
 
static void
ironlake_pp_states_setup(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
ironlake_pp_interface_descriptor_table(pp_context);
ironlake_pp_vfe_state(pp_context);
ironlake_pp_upload_constants(pp_context);
}
 
static void
ironlake_pp_pipeline_select(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_urb_layout(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
unsigned int vfe_fence, cs_fence;
 
vfe_fence = pp_context->urb.cs_start;
cs_fence = pp_context->urb.size;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
(cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_state_base_address(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_RELOC(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_state_pointers(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
OUT_BATCH(batch, 0);
OUT_RELOC(batch, pp_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_cs_urb_layout(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
OUT_BATCH(batch,
((pp_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
(pp_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_constant_buffer(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
OUT_RELOC(batch, pp_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
pp_context->urb.size_cs_entry - 1);
ADVANCE_BATCH(batch);
}
 
static void
ironlake_pp_object_walker(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
int x, x_steps, y, y_steps;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
x_steps = pp_context->pp_x_steps(&pp_context->private_context);
y_steps = pp_context->pp_y_steps(&pp_context->private_context);
 
for (y = 0; y < y_steps; y++) {
for (x = 0; x < x_steps; x++) {
if (!pp_context->pp_set_block_parameter(pp_context, x, y)) {
BEGIN_BATCH(batch, 20);
OUT_BATCH(batch, CMD_MEDIA_OBJECT | 18);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* no indirect data */
OUT_BATCH(batch, 0);
 
/* inline data grf 5-6 */
assert(sizeof(*pp_inline_parameter) == 64);
intel_batchbuffer_data(batch, pp_inline_parameter, sizeof(*pp_inline_parameter));
 
ADVANCE_BATCH(batch);
}
}
}
}
 
static void
ironlake_pp_pipeline_setup(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
ironlake_pp_pipeline_select(ctx, pp_context);
ironlake_pp_state_base_address(ctx, pp_context);
ironlake_pp_state_pointers(ctx, pp_context);
ironlake_pp_urb_layout(ctx, pp_context);
ironlake_pp_cs_urb_layout(ctx, pp_context);
ironlake_pp_constant_buffer(ctx, pp_context);
ironlake_pp_object_walker(ctx, pp_context);
intel_batchbuffer_end_atomic(batch);
}
 
// update u/v offset when the surface format are packed yuv
static void i965_update_src_surface_uv_offset(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *surface)
{
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
int fourcc = pp_get_surface_fourcc(ctx, surface);
if (fourcc == VA_FOURCC('Y', 'U', 'Y', '2')) {
pp_static_parameter->grf1.source_packed_u_offset = 1;
pp_static_parameter->grf1.source_packed_v_offset = 3;
}
else if (fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')) {
pp_static_parameter->grf1.source_packed_y_offset = 1;
pp_static_parameter->grf1.source_packed_v_offset = 2;
}
}
 
static void i965_update_dst_surface_uv_offset(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *surface)
{
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
int fourcc = pp_get_surface_fourcc(ctx, surface);
if (fourcc == VA_FOURCC('Y', 'U', 'Y', '2')) {
pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_u_offset = 1;
pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_v_offset = 3;
}
else if (fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')) {
pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_y_offset = 1;
pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_v_offset = 2;
}
}
 
static void
i965_pp_set_surface_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
dri_bo *surf_bo, unsigned long surf_bo_offset,
int width, int height, int pitch, int format,
int index, int is_target)
{
struct i965_surface_state *ss;
dri_bo *ss_bo;
unsigned int tiling;
unsigned int swizzle;
 
dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
ss_bo = pp_context->surface_state_binding_table.bo;
assert(ss_bo);
 
dri_bo_map(ss_bo, True);
assert(ss_bo->virtual);
ss = (struct i965_surface_state *)((char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = format;
ss->ss1.base_addr = surf_bo->offset + surf_bo_offset;
ss->ss2.width = width - 1;
ss->ss2.height = height - 1;
ss->ss3.pitch = pitch - 1;
pp_set_surface_tiling(ss, tiling);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_RENDER, is_target ? I915_GEM_DOMAIN_RENDER : 0,
surf_bo_offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
surf_bo);
((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss_bo);
}
 
static void
i965_pp_set_surface2_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
dri_bo *surf_bo, unsigned long surf_bo_offset,
int width, int height, int wpitch,
int xoffset, int yoffset,
int format, int interleave_chroma,
int index)
{
struct i965_surface_state2 *ss2;
dri_bo *ss2_bo;
unsigned int tiling;
unsigned int swizzle;
 
dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
ss2_bo = pp_context->surface_state_binding_table.bo;
assert(ss2_bo);
 
dri_bo_map(ss2_bo, True);
assert(ss2_bo->virtual);
ss2 = (struct i965_surface_state2 *)((char *)ss2_bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss2, 0, sizeof(*ss2));
ss2->ss0.surface_base_address = surf_bo->offset + surf_bo_offset;
ss2->ss1.cbcr_pixel_offset_v_direction = 0;
ss2->ss1.width = width - 1;
ss2->ss1.height = height - 1;
ss2->ss2.pitch = wpitch - 1;
ss2->ss2.interleave_chroma = interleave_chroma;
ss2->ss2.surface_format = format;
ss2->ss3.x_offset_for_cb = xoffset;
ss2->ss3.y_offset_for_cb = yoffset;
pp_set_surface2_tiling(ss2, tiling);
dri_bo_emit_reloc(ss2_bo,
I915_GEM_DOMAIN_RENDER, 0,
surf_bo_offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state2, ss0),
surf_bo);
((unsigned int *)((char *)ss2_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss2_bo);
}
 
static void
gen7_pp_set_surface_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
dri_bo *surf_bo, unsigned long surf_bo_offset,
int width, int height, int pitch, int format,
int index, int is_target)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
struct gen7_surface_state *ss;
dri_bo *ss_bo;
unsigned int tiling;
unsigned int swizzle;
 
dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
ss_bo = pp_context->surface_state_binding_table.bo;
assert(ss_bo);
 
dri_bo_map(ss_bo, True);
assert(ss_bo->virtual);
ss = (struct gen7_surface_state *)((char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss, 0, sizeof(*ss));
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = format;
ss->ss1.base_addr = surf_bo->offset + surf_bo_offset;
ss->ss2.width = width - 1;
ss->ss2.height = height - 1;
ss->ss3.pitch = pitch - 1;
gen7_pp_set_surface_tiling(ss, tiling);
if (IS_HASWELL(i965->intel.device_id))
gen7_render_set_surface_scs(ss);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_RENDER, is_target ? I915_GEM_DOMAIN_RENDER : 0,
surf_bo_offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
surf_bo);
((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss_bo);
}
 
static void
gen7_pp_set_surface2_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
dri_bo *surf_bo, unsigned long surf_bo_offset,
int width, int height, int wpitch,
int xoffset, int yoffset,
int format, int interleave_chroma,
int index)
{
struct gen7_surface_state2 *ss2;
dri_bo *ss2_bo;
unsigned int tiling;
unsigned int swizzle;
 
dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
ss2_bo = pp_context->surface_state_binding_table.bo;
assert(ss2_bo);
 
dri_bo_map(ss2_bo, True);
assert(ss2_bo->virtual);
ss2 = (struct gen7_surface_state2 *)((char *)ss2_bo->virtual + SURFACE_STATE_OFFSET(index));
memset(ss2, 0, sizeof(*ss2));
ss2->ss0.surface_base_address = surf_bo->offset + surf_bo_offset;
ss2->ss1.cbcr_pixel_offset_v_direction = 0;
ss2->ss1.width = width - 1;
ss2->ss1.height = height - 1;
ss2->ss2.pitch = wpitch - 1;
ss2->ss2.interleave_chroma = interleave_chroma;
ss2->ss2.surface_format = format;
ss2->ss3.x_offset_for_cb = xoffset;
ss2->ss3.y_offset_for_cb = yoffset;
gen7_pp_set_surface2_tiling(ss2, tiling);
dri_bo_emit_reloc(ss2_bo,
I915_GEM_DOMAIN_RENDER, 0,
surf_bo_offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state2, ss0),
surf_bo);
((unsigned int *)((char *)ss2_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss2_bo);
}
 
 
static void
pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *surface,
int base_index, int is_target,
int *width, int *height, int *pitch, int *offset)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
struct object_image *obj_image;
dri_bo *bo;
int fourcc = pp_get_surface_fourcc(ctx, surface);
const int Y = 0;
const int U = fourcc == VA_FOURCC('Y', 'V', '1', '2') ? 2 : 1;
const int V = fourcc == VA_FOURCC('Y', 'V', '1', '2') ? 1 : 2;
const int UV = 1;
int interleaved_uv = fourcc == VA_FOURCC('N', 'V', '1', '2');
int packed_yuv = (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') || fourcc == VA_FOURCC('U', 'Y', 'V', 'Y'));
int full_packed_format = (fourcc == VA_FOURCC('R', 'G', 'B', 'A') ||
fourcc == VA_FOURCC('R', 'G', 'B', 'X') ||
fourcc == VA_FOURCC('B', 'G', 'R', 'A') ||
fourcc == VA_FOURCC('B', 'G', 'R', 'X'));
int scale_factor_of_1st_plane_width_in_byte = 1;
if (surface->type == I965_SURFACE_TYPE_SURFACE) {
obj_surface = SURFACE(surface->id);
bo = obj_surface->bo;
width[0] = obj_surface->orig_width;
height[0] = obj_surface->orig_height;
pitch[0] = obj_surface->width;
offset[0] = 0;
 
if (full_packed_format) {
scale_factor_of_1st_plane_width_in_byte = 4;
pitch[0] = obj_surface->width * 4;
}
else if (packed_yuv ) {
scale_factor_of_1st_plane_width_in_byte = 2;
pitch[0] = obj_surface->width * 2;
}
else if (interleaved_uv) {
width[1] = obj_surface->orig_width;
height[1] = obj_surface->orig_height / 2;
pitch[1] = obj_surface->width;
offset[1] = offset[0] + obj_surface->width * obj_surface->height;
} else {
width[1] = obj_surface->orig_width / 2;
height[1] = obj_surface->orig_height / 2;
pitch[1] = obj_surface->width / 2;
offset[1] = offset[0] + obj_surface->width * obj_surface->height;
width[2] = obj_surface->orig_width / 2;
height[2] = obj_surface->orig_height / 2;
pitch[2] = obj_surface->width / 2;
offset[2] = offset[1] + (obj_surface->width / 2) * (obj_surface->height / 2);
}
} else {
obj_image = IMAGE(surface->id);
bo = obj_image->bo;
width[0] = obj_image->image.width;
height[0] = obj_image->image.height;
pitch[0] = obj_image->image.pitches[0];
offset[0] = obj_image->image.offsets[0];
 
if (full_packed_format) {
scale_factor_of_1st_plane_width_in_byte = 4;
}
else if (packed_yuv ) {
scale_factor_of_1st_plane_width_in_byte = 2;
}
else if (interleaved_uv) {
width[1] = obj_image->image.width;
height[1] = obj_image->image.height / 2;
pitch[1] = obj_image->image.pitches[1];
offset[1] = obj_image->image.offsets[1];
} else {
width[1] = obj_image->image.width / 2;
height[1] = obj_image->image.height / 2;
pitch[1] = obj_image->image.pitches[1];
offset[1] = obj_image->image.offsets[1];
width[2] = obj_image->image.width / 2;
height[2] = obj_image->image.height / 2;
pitch[2] = obj_image->image.pitches[2];
offset[2] = obj_image->image.offsets[2];
}
}
 
/* Y surface */
i965_pp_set_surface_state(ctx, pp_context,
bo, offset[Y],
width[Y] *scale_factor_of_1st_plane_width_in_byte / 4, height[Y], pitch[Y], I965_SURFACEFORMAT_R8_UNORM,
base_index, is_target);
 
if (!packed_yuv && !full_packed_format) {
if (interleaved_uv) {
i965_pp_set_surface_state(ctx, pp_context,
bo, offset[UV],
width[UV] / 4, height[UV], pitch[UV], I965_SURFACEFORMAT_R8_UNORM,
base_index + 1, is_target);
} else {
/* U surface */
i965_pp_set_surface_state(ctx, pp_context,
bo, offset[U],
width[U] / 4, height[U], pitch[U], I965_SURFACEFORMAT_R8_UNORM,
base_index + 1, is_target);
 
/* V surface */
i965_pp_set_surface_state(ctx, pp_context,
bo, offset[V],
width[V] / 4, height[V], pitch[V], I965_SURFACEFORMAT_R8_UNORM,
base_index + 2, is_target);
}
}
 
}
 
static void
gen7_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *surface,
int base_index, int is_target,
int *width, int *height, int *pitch, int *offset)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
struct object_image *obj_image;
dri_bo *bo;
int fourcc = pp_get_surface_fourcc(ctx, surface);
const int U = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 2 : 1;
const int V = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 1 : 2;
int interleaved_uv = fourcc == VA_FOURCC('N', 'V', '1', '2');
int packed_yuv = (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') || fourcc == VA_FOURCC('U', 'Y', 'V', 'Y'));
 
if (surface->type == I965_SURFACE_TYPE_SURFACE) {
obj_surface = SURFACE(surface->id);
bo = obj_surface->bo;
width[0] = obj_surface->orig_width;
height[0] = obj_surface->orig_height;
pitch[0] = obj_surface->width;
offset[0] = 0;
 
if (packed_yuv) {
if (is_target)
width[0] = obj_surface->orig_width * 2; /* surface format is R8, so double the width */
else
width[0] = obj_surface->orig_width; /* surface foramt is YCBCR, width is specified in units of pixels */
 
pitch[0] = obj_surface->width * 2;
}
 
width[1] = obj_surface->cb_cr_width;
height[1] = obj_surface->cb_cr_height;
pitch[1] = obj_surface->cb_cr_pitch;
offset[1] = obj_surface->y_cb_offset * obj_surface->width;
 
width[2] = obj_surface->cb_cr_width;
height[2] = obj_surface->cb_cr_height;
pitch[2] = obj_surface->cb_cr_pitch;
offset[2] = obj_surface->y_cr_offset * obj_surface->width;
} else {
obj_image = IMAGE(surface->id);
bo = obj_image->bo;
width[0] = obj_image->image.width;
height[0] = obj_image->image.height;
pitch[0] = obj_image->image.pitches[0];
offset[0] = obj_image->image.offsets[0];
 
if (packed_yuv) {
if (is_target)
width[0] = obj_image->image.width * 2; /* surface format is R8, so double the width */
else
width[0] = obj_image->image.width; /* surface foramt is YCBCR, width is specified in units of pixels */
} else if (interleaved_uv) {
width[1] = obj_image->image.width / 2;
height[1] = obj_image->image.height / 2;
pitch[1] = obj_image->image.pitches[1];
offset[1] = obj_image->image.offsets[1];
} else {
width[1] = obj_image->image.width / 2;
height[1] = obj_image->image.height / 2;
pitch[1] = obj_image->image.pitches[U];
offset[1] = obj_image->image.offsets[U];
width[2] = obj_image->image.width / 2;
height[2] = obj_image->image.height / 2;
pitch[2] = obj_image->image.pitches[V];
offset[2] = obj_image->image.offsets[V];
}
}
 
if (is_target) {
gen7_pp_set_surface_state(ctx, pp_context,
bo, 0,
width[0] / 4, height[0], pitch[0],
I965_SURFACEFORMAT_R8_SINT,
base_index, 1);
 
if (!packed_yuv) {
if (interleaved_uv) {
gen7_pp_set_surface_state(ctx, pp_context,
bo, offset[1],
width[1] / 2, height[1], pitch[1],
I965_SURFACEFORMAT_R8G8_SINT,
base_index + 1, 1);
} else {
gen7_pp_set_surface_state(ctx, pp_context,
bo, offset[1],
width[1] / 4, height[1], pitch[1],
I965_SURFACEFORMAT_R8_SINT,
base_index + 1, 1);
gen7_pp_set_surface_state(ctx, pp_context,
bo, offset[2],
width[2] / 4, height[2], pitch[2],
I965_SURFACEFORMAT_R8_SINT,
base_index + 2, 1);
}
}
} else {
int format0 = SURFACE_FORMAT_Y8_UNORM;
 
switch (fourcc) {
case VA_FOURCC('Y', 'U', 'Y', '2'):
format0 = SURFACE_FORMAT_YCRCB_NORMAL;
break;
 
case VA_FOURCC('U', 'Y', 'V', 'Y'):
format0 = SURFACE_FORMAT_YCRCB_SWAPY;
break;
 
default:
break;
}
 
gen7_pp_set_surface2_state(ctx, pp_context,
bo, offset[0],
width[0], height[0], pitch[0],
0, 0,
format0, 0,
base_index);
 
if (!packed_yuv) {
if (interleaved_uv) {
gen7_pp_set_surface2_state(ctx, pp_context,
bo, offset[1],
width[1], height[1], pitch[1],
0, 0,
SURFACE_FORMAT_R8B8_UNORM, 0,
base_index + 1);
} else {
gen7_pp_set_surface2_state(ctx, pp_context,
bo, offset[1],
width[1], height[1], pitch[1],
0, 0,
SURFACE_FORMAT_R8_UNORM, 0,
base_index + 1);
gen7_pp_set_surface2_state(ctx, pp_context,
bo, offset[2],
width[2], height[2], pitch[2],
0, 0,
SURFACE_FORMAT_R8_UNORM, 0,
base_index + 2);
}
}
}
}
 
static int
pp_null_x_steps(void *private_context)
{
return 1;
}
 
static int
pp_null_y_steps(void *private_context)
{
return 1;
}
 
static int
pp_null_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
return 0;
}
 
static VAStatus
pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
/* private function & data */
pp_context->pp_x_steps = pp_null_x_steps;
pp_context->pp_y_steps = pp_null_y_steps;
pp_context->pp_set_block_parameter = pp_null_set_block_parameter;
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
static int
pp_load_save_x_steps(void *private_context)
{
return 1;
}
 
static int
pp_load_save_y_steps(void *private_context)
{
struct pp_load_save_context *pp_load_save_context = private_context;
 
return pp_load_save_context->dest_h / 8;
}
 
static int
pp_load_save_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)&pp_context->private_context;
 
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_load_save_context->dest_x;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_load_save_context->dest_y;
 
return 0;
}
 
static void calculate_boundary_block_mask(struct i965_post_processing_context *pp_context, const VARectangle *dst_rect)
{
int i;
/* x offset of dest surface must be dword aligned.
* so we have to extend dst surface on left edge, and mask out pixels not interested
*/
if (dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT) {
pp_context->block_horizontal_mask_left = 0;
for (i=dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT; i<GPU_ASM_BLOCK_WIDTH; i++)
{
pp_context->block_horizontal_mask_left |= 1<<i;
}
}
else {
pp_context->block_horizontal_mask_left = 0xffff;
}
int dst_width_adjust = dst_rect->width + dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
if (dst_width_adjust%GPU_ASM_BLOCK_WIDTH){
pp_context->block_horizontal_mask_right = (1 << (dst_width_adjust%GPU_ASM_BLOCK_WIDTH)) - 1;
}
else {
pp_context->block_horizontal_mask_right = 0xffff;
}
if (dst_rect->height%GPU_ASM_BLOCK_HEIGHT){
pp_context->block_vertical_mask_bottom = (1 << (dst_rect->height%GPU_ASM_BLOCK_HEIGHT)) - 1;
}
else {
pp_context->block_vertical_mask_bottom = 0xff;
}
 
}
static VAStatus
pp_plx_load_save_plx_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)&pp_context->private_context;
int width[3], height[3], pitch[3], offset[3];
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
 
/* source surface */
pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 1, 0,
width, height, pitch, offset);
 
/* destination surface */
pp_set_media_rw_message_surface(ctx, pp_context, dst_surface, 7, 1,
width, height, pitch, offset);
 
/* private function & data */
pp_context->pp_x_steps = pp_load_save_x_steps;
pp_context->pp_y_steps = pp_load_save_y_steps;
pp_context->pp_set_block_parameter = pp_load_save_set_block_parameter;
 
int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;;
pp_load_save_context->dest_x = dst_rect->x - dst_left_edge_extend;
pp_load_save_context->dest_y = dst_rect->y;
pp_load_save_context->dest_h = ALIGN(dst_rect->height, 8);
pp_load_save_context->dest_w = ALIGN(dst_rect->width+dst_left_edge_extend, 16);
 
pp_inline_parameter->grf5.block_count_x = pp_load_save_context->dest_w / 16; /* 1 x N */
pp_inline_parameter->grf5.number_blocks = pp_load_save_context->dest_w / 16;
 
pp_static_parameter->grf3.horizontal_origin_offset = src_rect->x;
pp_static_parameter->grf3.vertical_origin_offset = src_rect->y;
 
// update u/v offset for packed yuv
i965_update_src_surface_uv_offset (ctx, pp_context, src_surface);
i965_update_dst_surface_uv_offset (ctx, pp_context, dst_surface);
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
static int
pp_scaling_x_steps(void *private_context)
{
return 1;
}
 
static int
pp_scaling_y_steps(void *private_context)
{
struct pp_scaling_context *pp_scaling_context = private_context;
 
return pp_scaling_context->dest_h / 8;
}
 
static int
pp_scaling_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)&pp_context->private_context;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
float src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
float src_y_steping = pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step;
 
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = src_x_steping * x * 16 + pp_scaling_context->src_normalized_x;
pp_inline_parameter->grf5.source_surface_block_normalized_vertical_origin = src_y_steping * y * 8 + pp_scaling_context->src_normalized_y;
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_scaling_context->dest_x;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_scaling_context->dest_y;
return 0;
}
 
static VAStatus
pp_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)&pp_context->private_context;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct object_surface *obj_surface;
struct i965_sampler_state *sampler_state;
int in_w, in_h, in_wpitch, in_hpitch;
int out_w, out_h, out_wpitch, out_hpitch;
 
/* source surface */
obj_surface = SURFACE(src_surface->id);
in_w = obj_surface->orig_width;
in_h = obj_surface->orig_height;
in_wpitch = obj_surface->width;
in_hpitch = obj_surface->height;
 
/* source Y surface index 1 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
in_w, in_h, in_wpitch, I965_SURFACEFORMAT_R8_UNORM,
1, 0);
 
/* source UV surface index 2 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, in_wpitch * in_hpitch,
in_w / 2, in_h / 2, in_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
2, 0);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
out_w = obj_surface->orig_width;
out_h = obj_surface->orig_height;
out_wpitch = obj_surface->width;
out_hpitch = obj_surface->height;
 
/* destination Y surface index 7 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
out_w / 4, out_h, out_wpitch, I965_SURFACEFORMAT_R8_UNORM,
7, 1);
 
/* destination UV surface index 8 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, out_wpitch * out_hpitch,
out_w / 4, out_h / 2, out_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
8, 1);
 
/* sampler state */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
sampler_state = pp_context->sampler_state_table.bo->virtual;
 
/* SIMD16 Y index 1 */
sampler_state[1].ss0.min_filter = I965_MAPFILTER_LINEAR;
sampler_state[1].ss0.mag_filter = I965_MAPFILTER_LINEAR;
sampler_state[1].ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state[1].ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state[1].ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
 
/* SIMD16 UV index 2 */
sampler_state[2].ss0.min_filter = I965_MAPFILTER_LINEAR;
sampler_state[2].ss0.mag_filter = I965_MAPFILTER_LINEAR;
sampler_state[2].ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state[2].ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state[2].ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = pp_scaling_x_steps;
pp_context->pp_y_steps = pp_scaling_y_steps;
pp_context->pp_set_block_parameter = pp_scaling_set_block_parameter;
 
int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
float src_left_edge_extend = (float)dst_left_edge_extend*src_rect->width/dst_rect->width;
pp_scaling_context->dest_x = dst_rect->x - dst_left_edge_extend;
pp_scaling_context->dest_y = dst_rect->y;
pp_scaling_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
pp_scaling_context->dest_h = ALIGN(dst_rect->height, 8);
pp_scaling_context->src_normalized_x = (float)(src_rect->x - src_left_edge_extend)/ in_w;
pp_scaling_context->src_normalized_y = (float)src_rect->y / in_h;
 
pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step = (float) src_rect->height / in_h / dst_rect->height;
 
pp_inline_parameter->grf5.normalized_video_x_scaling_step = (float) (src_rect->width + src_left_edge_extend)/ in_w / (dst_rect->width + dst_left_edge_extend);
pp_inline_parameter->grf5.block_count_x = pp_scaling_context->dest_w / 16; /* 1 x N */
pp_inline_parameter->grf5.number_blocks = pp_scaling_context->dest_w / 16;
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
static int
pp_avs_x_steps(void *private_context)
{
struct pp_avs_context *pp_avs_context = private_context;
 
return pp_avs_context->dest_w / 16;
}
 
static int
pp_avs_y_steps(void *private_context)
{
return 1;
}
 
static int
pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
float src_x_steping, src_y_steping, video_step_delta;
int tmp_w = ALIGN(pp_avs_context->dest_h * pp_avs_context->src_w / pp_avs_context->src_h, 16);
 
if (pp_static_parameter->grf4.r4_2.avs.nlas == 0) {
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = src_x_steping * x * 16 + pp_avs_context->src_normalized_x;
} else if (tmp_w >= pp_avs_context->dest_w) {
pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / tmp_w;
pp_inline_parameter->grf6.video_step_delta = 0;
if (x == 0) {
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = (float)(tmp_w - pp_avs_context->dest_w) / tmp_w / 2 +
pp_avs_context->src_normalized_x;
} else {
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
video_step_delta = pp_inline_parameter->grf6.video_step_delta;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
16 * 15 * video_step_delta / 2;
}
} else {
int n0, n1, n2, nls_left, nls_right;
int factor_a = 5, factor_b = 4;
float f;
 
n0 = (pp_avs_context->dest_w - tmp_w) / (16 * 2);
n1 = (pp_avs_context->dest_w - tmp_w) / 16 - n0;
n2 = tmp_w / (16 * factor_a);
nls_left = n0 + n2;
nls_right = n1 + n2;
f = (float) n2 * 16 / tmp_w;
if (n0 < 5) {
pp_inline_parameter->grf6.video_step_delta = 0.0;
 
if (x == 0) {
pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / pp_avs_context->dest_w;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = pp_avs_context->src_normalized_x;
} else {
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
video_step_delta = pp_inline_parameter->grf6.video_step_delta;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
16 * 15 * video_step_delta / 2;
}
} else {
if (x < nls_left) {
/* f = a * nls_left * 16 + b * nls_left * 16 * (nls_left * 16 - 1) / 2 */
float a = f / (nls_left * 16 * factor_b);
float b = (f - nls_left * 16 * a) * 2 / (nls_left * 16 * (nls_left * 16 - 1));
pp_inline_parameter->grf6.video_step_delta = b;
 
if (x == 0) {
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = pp_avs_context->src_normalized_x;
pp_inline_parameter->grf5.normalized_video_x_scaling_step = a;
} else {
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
video_step_delta = pp_inline_parameter->grf6.video_step_delta;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
16 * 15 * video_step_delta / 2;
pp_inline_parameter->grf5.normalized_video_x_scaling_step += 16 * b;
}
} else if (x < (pp_avs_context->dest_w / 16 - nls_right)) {
/* scale the center linearly */
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
video_step_delta = pp_inline_parameter->grf6.video_step_delta;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
16 * 15 * video_step_delta / 2;
pp_inline_parameter->grf6.video_step_delta = 0.0;
pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / tmp_w;
} else {
float a = f / (nls_right * 16 * factor_b);
float b = (f - nls_right * 16 * a) * 2 / (nls_right * 16 * (nls_right * 16 - 1));
 
src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
video_step_delta = pp_inline_parameter->grf6.video_step_delta;
pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
16 * 15 * video_step_delta / 2;
pp_inline_parameter->grf6.video_step_delta = -b;
 
if (x == (pp_avs_context->dest_w / 16 - nls_right))
pp_inline_parameter->grf5.normalized_video_x_scaling_step = a + (nls_right * 16 - 1) * b;
else
pp_inline_parameter->grf5.normalized_video_x_scaling_step -= b * 16;
}
}
}
 
src_y_steping = pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step;
pp_inline_parameter->grf5.source_surface_block_normalized_vertical_origin = src_y_steping * y * 8 + pp_avs_context->src_normalized_y;
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_avs_context->dest_y;
 
return 0;
}
 
static VAStatus
pp_nv12_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param,
int nlas)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct object_surface *obj_surface;
struct i965_sampler_8x8 *sampler_8x8;
struct i965_sampler_8x8_state *sampler_8x8_state;
int index;
int in_w, in_h, in_wpitch, in_hpitch;
int out_w, out_h, out_wpitch, out_hpitch;
int i;
 
/* surface */
obj_surface = SURFACE(src_surface->id);
in_w = obj_surface->orig_width;
in_h = obj_surface->orig_height;
in_wpitch = obj_surface->width;
in_hpitch = obj_surface->height;
 
/* source Y surface index 1 */
i965_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
in_w, in_h, in_wpitch,
0, 0,
SURFACE_FORMAT_Y8_UNORM, 0,
1);
 
/* source UV surface index 2 */
i965_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, in_wpitch * in_hpitch,
in_w / 2, in_h / 2, in_wpitch,
0, 0,
SURFACE_FORMAT_R8B8_UNORM, 0,
2);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
out_w = obj_surface->orig_width;
out_h = obj_surface->orig_height;
out_wpitch = obj_surface->width;
out_hpitch = obj_surface->height;
assert(out_w <= out_wpitch && out_h <= out_hpitch);
 
/* destination Y surface index 7 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
out_w / 4, out_h, out_wpitch, I965_SURFACEFORMAT_R8_UNORM,
7, 1);
 
/* destination UV surface index 8 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, out_wpitch * out_hpitch,
out_w / 4, out_h / 2, out_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
8, 1);
 
/* sampler 8x8 state */
dri_bo_map(pp_context->sampler_state_table.bo_8x8, True);
assert(pp_context->sampler_state_table.bo_8x8->virtual);
assert(sizeof(*sampler_8x8_state) == sizeof(int) * 138);
sampler_8x8_state = pp_context->sampler_state_table.bo_8x8->virtual;
memset(sampler_8x8_state, 0, sizeof(*sampler_8x8_state));
 
for (i = 0; i < 17; i++) {
/* for Y channel, currently ignore */
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c0 = 0x00;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c1 = 0x00;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c2 = 0x08;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c3 = 0x18;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c4 = 0x18;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c5 = 0x08;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c6 = 0x00;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c7 = 0x00;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c0 = 0x00;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c1 = 0x00;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c2 = 0x10;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c3 = 0x10;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c4 = 0x10;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c5 = 0x10;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c6 = 0x00;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c7 = 0x00;
/* for U/V channel, 0.25 */
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c2 = 0x10;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c3 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c4 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c5 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c7 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c2 = 0x10;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c3 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c4 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c5 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c7 = 0x0;
}
 
sampler_8x8_state->dw136.default_sharpness_level = 0;
sampler_8x8_state->dw137.adaptive_filter_for_all_channel = 1;
sampler_8x8_state->dw137.bypass_y_adaptive_filtering = 1;
sampler_8x8_state->dw137.bypass_x_adaptive_filtering = 1;
dri_bo_unmap(pp_context->sampler_state_table.bo_8x8);
 
/* sampler 8x8 */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_8x8) == sizeof(int) * 16);
sampler_8x8 = pp_context->sampler_state_table.bo->virtual;
 
/* sample_8x8 Y index 1 */
index = 1;
memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
sampler_8x8[index].dw0.avs_filter_type = AVS_FILTER_ADAPTIVE_8_TAP;
sampler_8x8[index].dw0.ief_bypass = 1;
sampler_8x8[index].dw0.ief_filter_type = IEF_FILTER_DETAIL;
sampler_8x8[index].dw0.ief_filter_size = IEF_FILTER_SIZE_5X5;
sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
sampler_8x8[index].dw2.global_noise_estimation = 22;
sampler_8x8[index].dw2.strong_edge_threshold = 8;
sampler_8x8[index].dw2.weak_edge_threshold = 1;
sampler_8x8[index].dw3.strong_edge_weight = 7;
sampler_8x8[index].dw3.regular_weight = 2;
sampler_8x8[index].dw3.non_edge_weight = 0;
sampler_8x8[index].dw3.gain_factor = 40;
sampler_8x8[index].dw4.steepness_boost = 0;
sampler_8x8[index].dw4.steepness_threshold = 0;
sampler_8x8[index].dw4.mr_boost = 0;
sampler_8x8[index].dw4.mr_threshold = 5;
sampler_8x8[index].dw5.pwl1_point_1 = 4;
sampler_8x8[index].dw5.pwl1_point_2 = 12;
sampler_8x8[index].dw5.pwl1_point_3 = 16;
sampler_8x8[index].dw5.pwl1_point_4 = 26;
sampler_8x8[index].dw6.pwl1_point_5 = 40;
sampler_8x8[index].dw6.pwl1_point_6 = 160;
sampler_8x8[index].dw6.pwl1_r3_bias_0 = 127;
sampler_8x8[index].dw6.pwl1_r3_bias_1 = 98;
sampler_8x8[index].dw7.pwl1_r3_bias_2 = 88;
sampler_8x8[index].dw7.pwl1_r3_bias_3 = 64;
sampler_8x8[index].dw7.pwl1_r3_bias_4 = 44;
sampler_8x8[index].dw7.pwl1_r3_bias_5 = 0;
sampler_8x8[index].dw8.pwl1_r3_bias_6 = 0;
sampler_8x8[index].dw8.pwl1_r5_bias_0 = 3;
sampler_8x8[index].dw8.pwl1_r5_bias_1 = 32;
sampler_8x8[index].dw8.pwl1_r5_bias_2 = 32;
sampler_8x8[index].dw9.pwl1_r5_bias_3 = 58;
sampler_8x8[index].dw9.pwl1_r5_bias_4 = 100;
sampler_8x8[index].dw9.pwl1_r5_bias_5 = 108;
sampler_8x8[index].dw9.pwl1_r5_bias_6 = 88;
sampler_8x8[index].dw10.pwl1_r3_slope_0 = -116;
sampler_8x8[index].dw10.pwl1_r3_slope_1 = -20;
sampler_8x8[index].dw10.pwl1_r3_slope_2 = -96;
sampler_8x8[index].dw10.pwl1_r3_slope_3 = -32;
sampler_8x8[index].dw11.pwl1_r3_slope_4 = -50;
sampler_8x8[index].dw11.pwl1_r3_slope_5 = 0;
sampler_8x8[index].dw11.pwl1_r3_slope_6 = 0;
sampler_8x8[index].dw11.pwl1_r5_slope_0 = 116;
sampler_8x8[index].dw12.pwl1_r5_slope_1 = 0;
sampler_8x8[index].dw12.pwl1_r5_slope_2 = 114;
sampler_8x8[index].dw12.pwl1_r5_slope_3 = 67;
sampler_8x8[index].dw12.pwl1_r5_slope_4 = 9;
sampler_8x8[index].dw13.pwl1_r5_slope_5 = -3;
sampler_8x8[index].dw13.pwl1_r5_slope_6 = -15;
sampler_8x8[index].dw13.limiter_boost = 0;
sampler_8x8[index].dw13.minimum_limiter = 10;
sampler_8x8[index].dw13.maximum_limiter = 11;
sampler_8x8[index].dw14.clip_limiter = 130;
dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
pp_context->sampler_state_table.bo_8x8);
 
/* sample_8x8 UV index 2 */
index = 2;
memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
sampler_8x8[index].dw0.avs_filter_type = AVS_FILTER_ADAPTIVE_8_TAP;
sampler_8x8[index].dw0.ief_bypass = 1;
sampler_8x8[index].dw0.ief_filter_type = IEF_FILTER_DETAIL;
sampler_8x8[index].dw0.ief_filter_size = IEF_FILTER_SIZE_5X5;
sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
sampler_8x8[index].dw2.global_noise_estimation = 22;
sampler_8x8[index].dw2.strong_edge_threshold = 8;
sampler_8x8[index].dw2.weak_edge_threshold = 1;
sampler_8x8[index].dw3.strong_edge_weight = 7;
sampler_8x8[index].dw3.regular_weight = 2;
sampler_8x8[index].dw3.non_edge_weight = 0;
sampler_8x8[index].dw3.gain_factor = 40;
sampler_8x8[index].dw4.steepness_boost = 0;
sampler_8x8[index].dw4.steepness_threshold = 0;
sampler_8x8[index].dw4.mr_boost = 0;
sampler_8x8[index].dw4.mr_threshold = 5;
sampler_8x8[index].dw5.pwl1_point_1 = 4;
sampler_8x8[index].dw5.pwl1_point_2 = 12;
sampler_8x8[index].dw5.pwl1_point_3 = 16;
sampler_8x8[index].dw5.pwl1_point_4 = 26;
sampler_8x8[index].dw6.pwl1_point_5 = 40;
sampler_8x8[index].dw6.pwl1_point_6 = 160;
sampler_8x8[index].dw6.pwl1_r3_bias_0 = 127;
sampler_8x8[index].dw6.pwl1_r3_bias_1 = 98;
sampler_8x8[index].dw7.pwl1_r3_bias_2 = 88;
sampler_8x8[index].dw7.pwl1_r3_bias_3 = 64;
sampler_8x8[index].dw7.pwl1_r3_bias_4 = 44;
sampler_8x8[index].dw7.pwl1_r3_bias_5 = 0;
sampler_8x8[index].dw8.pwl1_r3_bias_6 = 0;
sampler_8x8[index].dw8.pwl1_r5_bias_0 = 3;
sampler_8x8[index].dw8.pwl1_r5_bias_1 = 32;
sampler_8x8[index].dw8.pwl1_r5_bias_2 = 32;
sampler_8x8[index].dw9.pwl1_r5_bias_3 = 58;
sampler_8x8[index].dw9.pwl1_r5_bias_4 = 100;
sampler_8x8[index].dw9.pwl1_r5_bias_5 = 108;
sampler_8x8[index].dw9.pwl1_r5_bias_6 = 88;
sampler_8x8[index].dw10.pwl1_r3_slope_0 = -116;
sampler_8x8[index].dw10.pwl1_r3_slope_1 = -20;
sampler_8x8[index].dw10.pwl1_r3_slope_2 = -96;
sampler_8x8[index].dw10.pwl1_r3_slope_3 = -32;
sampler_8x8[index].dw11.pwl1_r3_slope_4 = -50;
sampler_8x8[index].dw11.pwl1_r3_slope_5 = 0;
sampler_8x8[index].dw11.pwl1_r3_slope_6 = 0;
sampler_8x8[index].dw11.pwl1_r5_slope_0 = 116;
sampler_8x8[index].dw12.pwl1_r5_slope_1 = 0;
sampler_8x8[index].dw12.pwl1_r5_slope_2 = 114;
sampler_8x8[index].dw12.pwl1_r5_slope_3 = 67;
sampler_8x8[index].dw12.pwl1_r5_slope_4 = 9;
sampler_8x8[index].dw13.pwl1_r5_slope_5 = -3;
sampler_8x8[index].dw13.pwl1_r5_slope_6 = -15;
sampler_8x8[index].dw13.limiter_boost = 0;
sampler_8x8[index].dw13.minimum_limiter = 10;
sampler_8x8[index].dw13.maximum_limiter = 11;
sampler_8x8[index].dw14.clip_limiter = 130;
dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
pp_context->sampler_state_table.bo_8x8);
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = pp_avs_x_steps;
pp_context->pp_y_steps = pp_avs_y_steps;
pp_context->pp_set_block_parameter = pp_avs_set_block_parameter;
 
int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
float src_left_edge_extend = (float)dst_left_edge_extend*src_rect->width/dst_rect->width;
pp_avs_context->dest_x = dst_rect->x - dst_left_edge_extend;
pp_avs_context->dest_y = dst_rect->y;
pp_avs_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
pp_avs_context->dest_h = ALIGN(dst_rect->height, 8);
pp_avs_context->src_normalized_x = (float)(src_rect->x - src_left_edge_extend)/ in_w;
pp_avs_context->src_normalized_y = (float)src_rect->y / in_h;
pp_avs_context->src_w = src_rect->width + src_left_edge_extend;
pp_avs_context->src_h = src_rect->height;
 
pp_static_parameter->grf4.r4_2.avs.nlas = nlas;
pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step = (float) src_rect->height / in_h / dst_rect->height;
 
pp_inline_parameter->grf5.normalized_video_x_scaling_step = (float) (src_rect->width + src_left_edge_extend)/ in_w / (dst_rect->width + dst_left_edge_extend);
pp_inline_parameter->grf5.block_count_x = 1; /* M x 1 */
pp_inline_parameter->grf5.number_blocks = pp_avs_context->dest_h / 8;
pp_inline_parameter->grf6.video_step_delta = 0.0;
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
pp_nv12_avs_initialize_nlas(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
return pp_nv12_avs_initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
filter_param,
1);
}
 
static VAStatus
gen6_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
return pp_nv12_avs_initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
filter_param,
0);
}
 
static int
gen7_pp_avs_x_steps(void *private_context)
{
struct pp_avs_context *pp_avs_context = private_context;
 
return pp_avs_context->dest_w / 16;
}
 
static int
gen7_pp_avs_y_steps(void *private_context)
{
struct pp_avs_context *pp_avs_context = private_context;
 
return pp_avs_context->dest_h / 16;
}
 
static int
gen7_pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context;
struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf7.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
pp_inline_parameter->grf7.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
pp_inline_parameter->grf7.constant_0 = 0xffffffff;
pp_inline_parameter->grf7.sampler_load_main_video_x_scaling_step = 1.0 / pp_avs_context->src_w;
 
return 0;
}
 
static void gen7_update_src_surface_uv_offset(VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *surface)
{
struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
int fourcc = pp_get_surface_fourcc(ctx, surface);
if (fourcc == VA_FOURCC('Y', 'U', 'Y', '2')) {
pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
} else if (fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')) {
pp_static_parameter->grf2.di_destination_packed_y_component_offset = 1;
pp_static_parameter->grf2.di_destination_packed_u_component_offset = 0;
pp_static_parameter->grf2.di_destination_packed_v_component_offset = 2;
}
}
 
static VAStatus
gen7_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context;
struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct gen7_sampler_8x8 *sampler_8x8;
struct i965_sampler_8x8_state *sampler_8x8_state;
int index, i;
int width[3], height[3], pitch[3], offset[3];
int src_height;
 
/* source surface */
gen7_pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 0, 0,
width, height, pitch, offset);
src_height = height[0];
 
/* destination surface */
gen7_pp_set_media_rw_message_surface(ctx, pp_context, dst_surface, 24, 1,
width, height, pitch, offset);
 
/* sampler 8x8 state */
dri_bo_map(pp_context->sampler_state_table.bo_8x8, True);
assert(pp_context->sampler_state_table.bo_8x8->virtual);
assert(sizeof(*sampler_8x8_state) == sizeof(int) * 138);
sampler_8x8_state = pp_context->sampler_state_table.bo_8x8->virtual;
memset(sampler_8x8_state, 0, sizeof(*sampler_8x8_state));
 
for (i = 0; i < 17; i++) {
/* for Y channel, currently ignore */
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c2 = 0x0;
sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c3 = 0x0;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c4 = 0x0;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c5 = 0x0;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c7 = 0x0;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c2 = 0x0;
sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c3 = 0x0;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c4 = 0x0;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c5 = 0x0;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c7 = 0x0;
/* for U/V channel, 0.25 */
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c2 = 0x10;
sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c3 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c4 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c5 = 0x10;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c7 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c0 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c1 = 0x0;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c2 = 0x10;
sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c3 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c4 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c5 = 0x10;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c6 = 0x0;
sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c7 = 0x0;
}
 
sampler_8x8_state->dw136.default_sharpness_level = 0;
sampler_8x8_state->dw137.adaptive_filter_for_all_channel = 1;
sampler_8x8_state->dw137.bypass_y_adaptive_filtering = 1;
sampler_8x8_state->dw137.bypass_x_adaptive_filtering = 1;
dri_bo_unmap(pp_context->sampler_state_table.bo_8x8);
 
/* sampler 8x8 */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_8x8) == sizeof(int) * 4);
sampler_8x8 = pp_context->sampler_state_table.bo->virtual;
 
/* sample_8x8 Y index 4 */
index = 4;
memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
sampler_8x8[index].dw0.global_noise_estimation = 255;
sampler_8x8[index].dw0.ief_bypass = 1;
 
sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
 
sampler_8x8[index].dw2.weak_edge_threshold = 1;
sampler_8x8[index].dw2.strong_edge_threshold = 8;
sampler_8x8[index].dw2.r5x_coefficient = 9;
sampler_8x8[index].dw2.r5cx_coefficient = 8;
sampler_8x8[index].dw2.r5c_coefficient = 3;
 
sampler_8x8[index].dw3.r3x_coefficient = 27;
sampler_8x8[index].dw3.r3c_coefficient = 5;
sampler_8x8[index].dw3.gain_factor = 40;
sampler_8x8[index].dw3.non_edge_weight = 1;
sampler_8x8[index].dw3.regular_weight = 2;
sampler_8x8[index].dw3.strong_edge_weight = 7;
sampler_8x8[index].dw3.ief4_smooth_enable = 0;
 
dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
pp_context->sampler_state_table.bo_8x8);
 
/* sample_8x8 UV index 8 */
index = 8;
memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
sampler_8x8[index].dw0.disable_8x8_filter = 0;
sampler_8x8[index].dw0.global_noise_estimation = 255;
sampler_8x8[index].dw0.ief_bypass = 1;
sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
sampler_8x8[index].dw2.weak_edge_threshold = 1;
sampler_8x8[index].dw2.strong_edge_threshold = 8;
sampler_8x8[index].dw2.r5x_coefficient = 9;
sampler_8x8[index].dw2.r5cx_coefficient = 8;
sampler_8x8[index].dw2.r5c_coefficient = 3;
sampler_8x8[index].dw3.r3x_coefficient = 27;
sampler_8x8[index].dw3.r3c_coefficient = 5;
sampler_8x8[index].dw3.gain_factor = 40;
sampler_8x8[index].dw3.non_edge_weight = 1;
sampler_8x8[index].dw3.regular_weight = 2;
sampler_8x8[index].dw3.strong_edge_weight = 7;
sampler_8x8[index].dw3.ief4_smooth_enable = 0;
 
dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
pp_context->sampler_state_table.bo_8x8);
 
/* sampler_8x8 V, index 12 */
index = 12;
memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
sampler_8x8[index].dw0.disable_8x8_filter = 0;
sampler_8x8[index].dw0.global_noise_estimation = 255;
sampler_8x8[index].dw0.ief_bypass = 1;
sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
sampler_8x8[index].dw2.weak_edge_threshold = 1;
sampler_8x8[index].dw2.strong_edge_threshold = 8;
sampler_8x8[index].dw2.r5x_coefficient = 9;
sampler_8x8[index].dw2.r5cx_coefficient = 8;
sampler_8x8[index].dw2.r5c_coefficient = 3;
sampler_8x8[index].dw3.r3x_coefficient = 27;
sampler_8x8[index].dw3.r3c_coefficient = 5;
sampler_8x8[index].dw3.gain_factor = 40;
sampler_8x8[index].dw3.non_edge_weight = 1;
sampler_8x8[index].dw3.regular_weight = 2;
sampler_8x8[index].dw3.strong_edge_weight = 7;
sampler_8x8[index].dw3.ief4_smooth_enable = 0;
 
dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
I915_GEM_DOMAIN_RENDER,
0,
0,
sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
pp_context->sampler_state_table.bo_8x8);
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = gen7_pp_avs_x_steps;
pp_context->pp_y_steps = gen7_pp_avs_y_steps;
pp_context->pp_set_block_parameter = gen7_pp_avs_set_block_parameter;
 
pp_avs_context->dest_x = dst_rect->x;
pp_avs_context->dest_y = dst_rect->y;
pp_avs_context->dest_w = ALIGN(dst_rect->width, 16);
pp_avs_context->dest_h = ALIGN(dst_rect->height, 16);
pp_avs_context->src_w = src_rect->width;
pp_avs_context->src_h = src_rect->height;
 
int dw = (pp_avs_context->src_w - 1) / 16 + 1;
dw = MAX(dw, pp_avs_context->dest_w);
 
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
pp_static_parameter->grf2.avs_wa_enable = 1; /* must be set for GEN7 */
pp_static_parameter->grf2.avs_wa_width = dw;
pp_static_parameter->grf2.avs_wa_one_div_256_width = (float) 1.0 / (256 * dw);
pp_static_parameter->grf2.avs_wa_five_div_256_width = (float) 5.0 / (256 * dw);
 
pp_static_parameter->grf3.sampler_load_horizontal_scaling_step_ratio = (float) pp_avs_context->src_w / pp_avs_context->dest_w;
pp_static_parameter->grf4.sampler_load_vertical_scaling_step = (float) src_rect->height / src_height / pp_avs_context->dest_h;
pp_static_parameter->grf5.sampler_load_vertical_frame_origin = -(float)pp_avs_context->dest_y / pp_avs_context->dest_h;
pp_static_parameter->grf6.sampler_load_horizontal_frame_origin = -(float)pp_avs_context->dest_x / pp_avs_context->dest_w;
 
gen7_update_src_surface_uv_offset(ctx, pp_context, dst_surface);
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
 
static int
pp_dndi_x_steps(void *private_context)
{
return 1;
}
 
static int
pp_dndi_y_steps(void *private_context)
{
struct pp_dndi_context *pp_dndi_context = private_context;
 
return pp_dndi_context->dest_h / 4;
}
 
static int
pp_dndi_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 4;
 
return 0;
}
 
static
VAStatus pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_dndi_context *pp_dndi_context = (struct pp_dndi_context *)&pp_context->private_context;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct object_surface *obj_surface;
struct i965_sampler_dndi *sampler_dndi;
int index;
int w, h;
int orig_w, orig_h;
int dndi_top_first = 1;
 
if (src_surface->flags == I965_SURFACE_FLAG_FRAME)
return VA_STATUS_ERROR_FLAG_NOT_SUPPORTED;
 
if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST)
dndi_top_first = 1;
else
dndi_top_first = 0;
 
/* surface */
obj_surface = SURFACE(src_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
if (pp_context->stmm.bo == NULL) {
pp_context->stmm.bo = dri_bo_alloc(i965->intel.bufmgr,
"STMM surface",
w * h,
4096);
assert(pp_context->stmm.bo);
}
 
/* source UV surface index 2 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
2, 0);
 
/* source YUV surface index 4 */
i965_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
4);
 
/* source STMM surface index 20 */
i965_pp_set_surface_state(ctx, pp_context,
pp_context->stmm.bo, 0,
orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
20, 1);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
/* destination Y surface index 7 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
7, 1);
 
/* destination UV surface index 8 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
8, 1);
/* sampler dndi */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
sampler_dndi = pp_context->sampler_state_table.bo->virtual;
 
/* sample dndi index 1 */
index = 0;
sampler_dndi[index].dw0.denoise_asd_threshold = 0;
sampler_dndi[index].dw0.denoise_history_delta = 8; // 0-15, default is 8
sampler_dndi[index].dw0.denoise_maximum_history = 128; // 128-240
sampler_dndi[index].dw0.denoise_stad_threshold = 0;
 
sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 4;
sampler_dndi[index].dw1.stmm_c2 = 1;
sampler_dndi[index].dw1.low_temporal_difference_threshold = 8;
sampler_dndi[index].dw1.temporal_difference_threshold = 16;
 
sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = 15; // 0-31
sampler_dndi[index].dw2.block_noise_estimate_edge_threshold = 7; // 0-15
sampler_dndi[index].dw2.denoise_edge_threshold = 7; // 0-15
sampler_dndi[index].dw2.good_neighbor_threshold = 4; // 0-63
 
sampler_dndi[index].dw3.maximum_stmm = 128;
sampler_dndi[index].dw3.multipler_for_vecm = 2;
sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
 
sampler_dndi[index].dw4.sdi_delta = 8;
sampler_dndi[index].dw4.sdi_threshold = 128;
sampler_dndi[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
sampler_dndi[index].dw4.stmm_shift_up = 0;
sampler_dndi[index].dw4.stmm_shift_down = 0;
sampler_dndi[index].dw4.minimum_stmm = 0;
 
sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 8;
sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 32;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 64;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 32;
 
sampler_dndi[index].dw6.dn_enable = 1;
sampler_dndi[index].dw6.di_enable = 1;
sampler_dndi[index].dw6.di_partial = 0;
sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
sampler_dndi[index].dw6.dndi_stream_id = 0;
sampler_dndi[index].dw6.dndi_first_frame = 1;
sampler_dndi[index].dw6.progressive_dn = 0;
sampler_dndi[index].dw6.fmd_tear_threshold = 63;
sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 32;
sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 32;
 
sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 0;
sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 0;
sampler_dndi[index].dw7.vdi_walker_enable = 0;
sampler_dndi[index].dw7.column_width_minus1 = 0;
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = pp_dndi_x_steps;
pp_context->pp_y_steps = pp_dndi_y_steps;
pp_context->pp_set_block_parameter = pp_dndi_set_block_parameter;
 
pp_static_parameter->grf1.statistics_surface_picth = w / 2;
pp_static_parameter->grf1.r1_6.di.top_field_first = dndi_top_first;
pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m2 = 0;
pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m1 = 0;
 
pp_inline_parameter->grf5.block_count_x = w / 16; /* 1 x N */
pp_inline_parameter->grf5.number_blocks = w / 16;
pp_inline_parameter->grf5.block_vertical_mask = 0xff;
pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
 
pp_dndi_context->dest_w = w;
pp_dndi_context->dest_h = h;
 
dst_surface->flags = I965_SURFACE_FLAG_FRAME;
 
return VA_STATUS_SUCCESS;
}
 
static int
pp_dn_x_steps(void *private_context)
{
return 1;
}
 
static int
pp_dn_y_steps(void *private_context)
{
struct pp_dn_context *pp_dn_context = private_context;
 
return pp_dn_context->dest_h / 8;
}
 
static int
pp_dn_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8;
 
return 0;
}
 
static
VAStatus pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_dn_context *pp_dn_context = (struct pp_dn_context *)&pp_context->private_context;
struct object_surface *obj_surface;
struct i965_sampler_dndi *sampler_dndi;
struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
int index;
int w, h;
int orig_w, orig_h;
int dn_strength = 15;
int dndi_top_first = 1;
int dn_progressive = 0;
 
if (src_surface->flags == I965_SURFACE_FLAG_FRAME) {
dndi_top_first = 1;
dn_progressive = 1;
} else if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST) {
dndi_top_first = 1;
dn_progressive = 0;
} else {
dndi_top_first = 0;
dn_progressive = 0;
}
 
/* surface */
obj_surface = SURFACE(src_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
if (pp_context->stmm.bo == NULL) {
pp_context->stmm.bo = dri_bo_alloc(i965->intel.bufmgr,
"STMM surface",
w * h,
4096);
assert(pp_context->stmm.bo);
}
 
/* source UV surface index 2 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
2, 0);
 
/* source YUV surface index 4 */
i965_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
4);
 
/* source STMM surface index 20 */
i965_pp_set_surface_state(ctx, pp_context,
pp_context->stmm.bo, 0,
orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
20, 1);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
/* destination Y surface index 7 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
7, 1);
 
/* destination UV surface index 8 */
i965_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
8, 1);
/* sampler dn */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
sampler_dndi = pp_context->sampler_state_table.bo->virtual;
 
/* sample dndi index 1 */
index = 0;
sampler_dndi[index].dw0.denoise_asd_threshold = 0;
sampler_dndi[index].dw0.denoise_history_delta = 8; // 0-15, default is 8
sampler_dndi[index].dw0.denoise_maximum_history = 128; // 128-240
sampler_dndi[index].dw0.denoise_stad_threshold = 0;
 
sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 0;
sampler_dndi[index].dw1.stmm_c2 = 0;
sampler_dndi[index].dw1.low_temporal_difference_threshold = 8;
sampler_dndi[index].dw1.temporal_difference_threshold = 16;
 
sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = dn_strength; // 0-31
sampler_dndi[index].dw2.block_noise_estimate_edge_threshold = 7; // 0-15
sampler_dndi[index].dw2.denoise_edge_threshold = 7; // 0-15
sampler_dndi[index].dw2.good_neighbor_threshold = 7; // 0-63
 
sampler_dndi[index].dw3.maximum_stmm = 128;
sampler_dndi[index].dw3.multipler_for_vecm = 2;
sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
 
sampler_dndi[index].dw4.sdi_delta = 8;
sampler_dndi[index].dw4.sdi_threshold = 128;
sampler_dndi[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
sampler_dndi[index].dw4.stmm_shift_up = 0;
sampler_dndi[index].dw4.stmm_shift_down = 0;
sampler_dndi[index].dw4.minimum_stmm = 0;
 
sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 0;
 
sampler_dndi[index].dw6.dn_enable = 1;
sampler_dndi[index].dw6.di_enable = 0;
sampler_dndi[index].dw6.di_partial = 0;
sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
sampler_dndi[index].dw6.dndi_stream_id = 1;
sampler_dndi[index].dw6.dndi_first_frame = 1;
sampler_dndi[index].dw6.progressive_dn = dn_progressive;
sampler_dndi[index].dw6.fmd_tear_threshold = 32;
sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 32;
sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 32;
 
sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 2;
sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 1;
sampler_dndi[index].dw7.vdi_walker_enable = 0;
sampler_dndi[index].dw7.column_width_minus1 = w / 16;
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = pp_dn_x_steps;
pp_context->pp_y_steps = pp_dn_y_steps;
pp_context->pp_set_block_parameter = pp_dn_set_block_parameter;
 
pp_static_parameter->grf1.statistics_surface_picth = w / 2;
pp_static_parameter->grf1.r1_6.di.top_field_first = 0;
pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m2 = 64;
pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m1 = 192;
 
pp_inline_parameter->grf5.block_count_x = w / 16; /* 1 x N */
pp_inline_parameter->grf5.number_blocks = w / 16;
pp_inline_parameter->grf5.block_vertical_mask = 0xff;
pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
 
pp_dn_context->dest_w = w;
pp_dn_context->dest_h = h;
return VA_STATUS_SUCCESS;
}
 
static int
gen7_pp_dndi_x_steps(void *private_context)
{
struct pp_dndi_context *pp_dndi_context = private_context;
 
return pp_dndi_context->dest_w / 16;
}
 
static int
gen7_pp_dndi_y_steps(void *private_context)
{
struct pp_dndi_context *pp_dndi_context = private_context;
 
return pp_dndi_context->dest_h / 4;
}
 
static int
gen7_pp_dndi_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf7.destination_block_horizontal_origin = x * 16;
pp_inline_parameter->grf7.destination_block_vertical_origin = y * 4;
 
return 0;
}
 
static VAStatus
gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_dndi_context *pp_dndi_context = (struct pp_dndi_context *)&pp_context->private_context;
struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct object_surface *obj_surface;
struct gen7_sampler_dndi *sampler_dndi;
int index;
int w, h;
int orig_w, orig_h;
int dndi_top_first = 1;
 
if (src_surface->flags == I965_SURFACE_FLAG_FRAME)
return VA_STATUS_ERROR_FLAG_NOT_SUPPORTED;
 
if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST)
dndi_top_first = 1;
else
dndi_top_first = 0;
 
/* surface */
obj_surface = SURFACE(src_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
if (pp_context->stmm.bo == NULL) {
pp_context->stmm.bo = dri_bo_alloc(i965->intel.bufmgr,
"STMM surface",
w * h,
4096);
assert(pp_context->stmm.bo);
}
 
/* source UV surface index 1 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
1, 0);
 
/* source YUV surface index 3 */
gen7_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
3);
 
/* source (temporal reference) YUV surface index 4 */
gen7_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
4);
 
/* STMM / History Statistics input surface, index 5 */
gen7_pp_set_surface_state(ctx, pp_context,
pp_context->stmm.bo, 0,
orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
5, 1);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
/* destination(Previous frame) Y surface index 27 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
27, 1);
 
/* destination(Previous frame) UV surface index 28 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
28, 1);
 
/* destination(Current frame) Y surface index 30 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
30, 1);
 
/* destination(Current frame) UV surface index 31 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
31, 1);
 
/* STMM output surface, index 33 */
gen7_pp_set_surface_state(ctx, pp_context,
pp_context->stmm.bo, 0,
orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
33, 1);
 
 
/* sampler dndi */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
sampler_dndi = pp_context->sampler_state_table.bo->virtual;
 
/* sample dndi index 0 */
index = 0;
sampler_dndi[index].dw0.denoise_asd_threshold = 0;
sampler_dndi[index].dw0.dnmh_delt = 8;
sampler_dndi[index].dw0.vdi_walker_y_stride = 0;
sampler_dndi[index].dw0.vdi_walker_frame_sharing_enable = 0;
sampler_dndi[index].dw0.denoise_maximum_history = 128; // 128-240
sampler_dndi[index].dw0.denoise_stad_threshold = 0;
 
sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 0;
sampler_dndi[index].dw1.stmm_c2 = 0;
sampler_dndi[index].dw1.low_temporal_difference_threshold = 8;
sampler_dndi[index].dw1.temporal_difference_threshold = 16;
 
sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = 15; // 0-31
sampler_dndi[index].dw2.bne_edge_th = 1;
sampler_dndi[index].dw2.smooth_mv_th = 0;
sampler_dndi[index].dw2.sad_tight_th = 5;
sampler_dndi[index].dw2.cat_slope_minus1 = 9;
sampler_dndi[index].dw2.good_neighbor_th = 4;
 
sampler_dndi[index].dw3.maximum_stmm = 128;
sampler_dndi[index].dw3.multipler_for_vecm = 2;
sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
 
sampler_dndi[index].dw4.sdi_delta = 8;
sampler_dndi[index].dw4.sdi_threshold = 128;
sampler_dndi[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
sampler_dndi[index].dw4.stmm_shift_up = 0;
sampler_dndi[index].dw4.stmm_shift_down = 0;
sampler_dndi[index].dw4.minimum_stmm = 0;
 
sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 0;
sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 0;
 
sampler_dndi[index].dw6.dn_enable = 0;
sampler_dndi[index].dw6.di_enable = 1;
sampler_dndi[index].dw6.di_partial = 0;
sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
sampler_dndi[index].dw6.dndi_stream_id = 1;
sampler_dndi[index].dw6.dndi_first_frame = 1;
sampler_dndi[index].dw6.progressive_dn = 0;
sampler_dndi[index].dw6.mcdi_enable = 0;
sampler_dndi[index].dw6.fmd_tear_threshold = 32;
sampler_dndi[index].dw6.cat_th1 = 0;
sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 32;
sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 32;
 
sampler_dndi[index].dw7.sad_tha = 5;
sampler_dndi[index].dw7.sad_thb = 10;
sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 0;
sampler_dndi[index].dw7.mc_pixel_consistency_th = 25;
sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 0;
sampler_dndi[index].dw7.vdi_walker_enable = 0;
sampler_dndi[index].dw7.neighborpixel_th = 10;
sampler_dndi[index].dw7.column_width_minus1 = w / 16;
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = gen7_pp_dndi_x_steps;
pp_context->pp_y_steps = gen7_pp_dndi_y_steps;
pp_context->pp_set_block_parameter = gen7_pp_dndi_set_block_parameter;
 
pp_static_parameter->grf1.di_statistics_surface_pitch_div2 = w / 2;
pp_static_parameter->grf1.di_statistics_surface_height_div4 = h / 4;
pp_static_parameter->grf1.di_top_field_first = 0;
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
 
pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
 
pp_static_parameter->grf4.di_hoffset_svf_from_dvf = 0;
pp_static_parameter->grf4.di_voffset_svf_from_dvf = 0;
 
pp_dndi_context->dest_w = w;
pp_dndi_context->dest_h = h;
 
dst_surface->flags = I965_SURFACE_FLAG_FRAME;
 
return VA_STATUS_SUCCESS;
}
 
static int
gen7_pp_dn_x_steps(void *private_context)
{
struct pp_dn_context *pp_dn_context = private_context;
 
return pp_dn_context->dest_w / 16;
}
 
static int
gen7_pp_dn_y_steps(void *private_context)
{
struct pp_dn_context *pp_dn_context = private_context;
 
return pp_dn_context->dest_h / 4;
}
 
static int
gen7_pp_dn_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
{
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
pp_inline_parameter->grf5.destination_block_vertical_origin = y * 4;
 
return 0;
}
 
static VAStatus
gen7_pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_dn_context *pp_dn_context = (struct pp_dn_context *)&pp_context->private_context;
struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
struct object_surface *obj_surface;
struct gen7_sampler_dndi *sampler_dn;
 
int index;
int w, h;
int orig_w, orig_h;
int dn_strength = 15;
int dndi_top_first = 1;
int dn_progressive = 0;
 
if (src_surface->flags == I965_SURFACE_FLAG_FRAME) {
dndi_top_first = 1;
dn_progressive = 1;
} else if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST) {
dndi_top_first = 1;
dn_progressive = 0;
} else {
dndi_top_first = 0;
dn_progressive = 0;
}
 
/* surface */
obj_surface = SURFACE(src_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
if (pp_context->stmm.bo == NULL) {
pp_context->stmm.bo = dri_bo_alloc(i965->intel.bufmgr,
"STMM surface",
w * h,
4096);
assert(pp_context->stmm.bo);
}
 
/* source UV surface index 1 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
1, 0);
 
/* source YUV surface index 3 */
gen7_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
3);
 
/* source (temporal reference) YUV surface index 4 */
gen7_pp_set_surface2_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w, orig_h, w,
0, h,
SURFACE_FORMAT_PLANAR_420_8, 1,
4);
 
/* STMM / History Statistics input surface, index 5 */
gen7_pp_set_surface_state(ctx, pp_context,
pp_context->stmm.bo, 0,
orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
5, 1);
 
/* destination surface */
obj_surface = SURFACE(dst_surface->id);
orig_w = obj_surface->orig_width;
orig_h = obj_surface->orig_height;
w = obj_surface->width;
h = obj_surface->height;
 
/* destination Y surface index 24 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, 0,
orig_w / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
24, 1);
 
/* destination UV surface index 25 */
gen7_pp_set_surface_state(ctx, pp_context,
obj_surface->bo, w * h,
orig_w / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
25, 1);
 
/* sampler dn */
dri_bo_map(pp_context->sampler_state_table.bo, True);
assert(pp_context->sampler_state_table.bo->virtual);
assert(sizeof(*sampler_dn) == sizeof(int) * 8);
sampler_dn = pp_context->sampler_state_table.bo->virtual;
 
/* sample dn index 1 */
index = 0;
sampler_dn[index].dw0.denoise_asd_threshold = 0;
sampler_dn[index].dw0.dnmh_delt = 8;
sampler_dn[index].dw0.vdi_walker_y_stride = 0;
sampler_dn[index].dw0.vdi_walker_frame_sharing_enable = 0;
sampler_dn[index].dw0.denoise_maximum_history = 128; // 128-240
sampler_dn[index].dw0.denoise_stad_threshold = 0;
 
sampler_dn[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
sampler_dn[index].dw1.denoise_moving_pixel_threshold = 0;
sampler_dn[index].dw1.stmm_c2 = 0;
sampler_dn[index].dw1.low_temporal_difference_threshold = 8;
sampler_dn[index].dw1.temporal_difference_threshold = 16;
 
sampler_dn[index].dw2.block_noise_estimate_noise_threshold = dn_strength; // 0-31
sampler_dn[index].dw2.bne_edge_th = 1;
sampler_dn[index].dw2.smooth_mv_th = 0;
sampler_dn[index].dw2.sad_tight_th = 5;
sampler_dn[index].dw2.cat_slope_minus1 = 9;
sampler_dn[index].dw2.good_neighbor_th = 4;
 
sampler_dn[index].dw3.maximum_stmm = 128;
sampler_dn[index].dw3.multipler_for_vecm = 2;
sampler_dn[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
sampler_dn[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
sampler_dn[index].dw3.stmm_blending_constant_select = 0;
 
sampler_dn[index].dw4.sdi_delta = 8;
sampler_dn[index].dw4.sdi_threshold = 128;
sampler_dn[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
sampler_dn[index].dw4.stmm_shift_up = 0;
sampler_dn[index].dw4.stmm_shift_down = 0;
sampler_dn[index].dw4.minimum_stmm = 0;
 
sampler_dn[index].dw5.fmd_temporal_difference_threshold = 0;
sampler_dn[index].dw5.sdi_fallback_mode_2_constant = 0;
sampler_dn[index].dw5.sdi_fallback_mode_1_t2_constant = 0;
sampler_dn[index].dw5.sdi_fallback_mode_1_t1_constant = 0;
 
sampler_dn[index].dw6.dn_enable = 1;
sampler_dn[index].dw6.di_enable = 0;
sampler_dn[index].dw6.di_partial = 0;
sampler_dn[index].dw6.dndi_top_first = dndi_top_first;
sampler_dn[index].dw6.dndi_stream_id = 1;
sampler_dn[index].dw6.dndi_first_frame = 1;
sampler_dn[index].dw6.progressive_dn = dn_progressive;
sampler_dn[index].dw6.mcdi_enable = 0;
sampler_dn[index].dw6.fmd_tear_threshold = 32;
sampler_dn[index].dw6.cat_th1 = 0;
sampler_dn[index].dw6.fmd2_vertical_difference_threshold = 32;
sampler_dn[index].dw6.fmd1_vertical_difference_threshold = 32;
 
sampler_dn[index].dw7.sad_tha = 5;
sampler_dn[index].dw7.sad_thb = 10;
sampler_dn[index].dw7.fmd_for_1st_field_of_current_frame = 2;
sampler_dn[index].dw7.mc_pixel_consistency_th = 25;
sampler_dn[index].dw7.fmd_for_2nd_field_of_previous_frame = 1;
sampler_dn[index].dw7.vdi_walker_enable = 0;
sampler_dn[index].dw7.neighborpixel_th = 10;
sampler_dn[index].dw7.column_width_minus1 = w / 16;
 
dri_bo_unmap(pp_context->sampler_state_table.bo);
 
/* private function & data */
pp_context->pp_x_steps = gen7_pp_dn_x_steps;
pp_context->pp_y_steps = gen7_pp_dn_y_steps;
pp_context->pp_set_block_parameter = gen7_pp_dn_set_block_parameter;
 
pp_static_parameter->grf1.di_statistics_surface_pitch_div2 = w / 2;
pp_static_parameter->grf1.di_statistics_surface_height_div4 = h / 4;
pp_static_parameter->grf1.di_top_field_first = 0;
pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
 
pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
 
pp_static_parameter->grf4.di_hoffset_svf_from_dvf = 0;
pp_static_parameter->grf4.di_voffset_svf_from_dvf = 0;
 
pp_dn_context->dest_w = w;
pp_dn_context->dest_h = h;
 
dst_surface->flags = src_surface->flags;
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
ironlake_pp_initialize(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void *filter_param
)
{
VAStatus va_status;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_module *pp_module;
dri_bo *bo;
int static_param_size, inline_param_size;
 
dri_bo_unreference(pp_context->surface_state_binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_PP_SURFACES,
4096);
assert(bo);
pp_context->surface_state_binding_table.bo = bo;
 
dri_bo_unreference(pp_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096,
4096);
assert(bo);
pp_context->curbe.bo = bo;
 
dri_bo_unreference(pp_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"interface discriptor",
sizeof(struct i965_interface_descriptor),
4096);
assert(bo);
pp_context->idrt.bo = bo;
pp_context->idrt.num_interface_descriptors = 0;
 
dri_bo_unreference(pp_context->sampler_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler state table",
4096,
4096);
assert(bo);
dri_bo_map(bo, True);
memset(bo->virtual, 0, bo->size);
dri_bo_unmap(bo);
pp_context->sampler_state_table.bo = bo;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler 8x8 state ",
4096,
4096);
assert(bo);
pp_context->sampler_state_table.bo_8x8 = bo;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler 8x8 state ",
4096,
4096);
assert(bo);
pp_context->sampler_state_table.bo_8x8_uv = bo;
 
dri_bo_unreference(pp_context->vfe_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vfe state",
sizeof(struct i965_vfe_state),
4096);
assert(bo);
pp_context->vfe_state.bo = bo;
 
static_param_size = sizeof(struct pp_static_parameter);
inline_param_size = sizeof(struct pp_inline_parameter);
memset(pp_context->pp_static_parameter, 0, static_param_size);
memset(pp_context->pp_inline_parameter, 0, inline_param_size);
assert(pp_index >= PP_NULL && pp_index < NUM_PP_MODULES);
pp_context->current_pp = pp_index;
pp_module = &pp_context->pp_modules[pp_index];
if (pp_module->initialize)
va_status = pp_module->initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
filter_param);
else
va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
return va_status;
}
 
static VAStatus
ironlake_post_processing(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void *filter_param
)
{
VAStatus va_status;
 
va_status = ironlake_pp_initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
pp_index,
filter_param);
 
if (va_status == VA_STATUS_SUCCESS) {
ironlake_pp_states_setup(ctx, pp_context);
ironlake_pp_pipeline_setup(ctx, pp_context);
}
 
return va_status;
}
 
static VAStatus
gen6_pp_initialize(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void * filter_param
)
{
VAStatus va_status;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct pp_module *pp_module;
dri_bo *bo;
int static_param_size, inline_param_size;
 
dri_bo_unreference(pp_context->surface_state_binding_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_PP_SURFACES,
4096);
assert(bo);
pp_context->surface_state_binding_table.bo = bo;
 
dri_bo_unreference(pp_context->curbe.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096,
4096);
assert(bo);
pp_context->curbe.bo = bo;
 
dri_bo_unreference(pp_context->idrt.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"interface discriptor",
sizeof(struct gen6_interface_descriptor_data),
4096);
assert(bo);
pp_context->idrt.bo = bo;
pp_context->idrt.num_interface_descriptors = 0;
 
dri_bo_unreference(pp_context->sampler_state_table.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler state table",
4096,
4096);
assert(bo);
dri_bo_map(bo, True);
memset(bo->virtual, 0, bo->size);
dri_bo_unmap(bo);
pp_context->sampler_state_table.bo = bo;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler 8x8 state ",
4096,
4096);
assert(bo);
pp_context->sampler_state_table.bo_8x8 = bo;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler 8x8 state ",
4096,
4096);
assert(bo);
pp_context->sampler_state_table.bo_8x8_uv = bo;
 
dri_bo_unreference(pp_context->vfe_state.bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vfe state",
sizeof(struct i965_vfe_state),
4096);
assert(bo);
pp_context->vfe_state.bo = bo;
if (IS_GEN7(i965->intel.device_id)) {
static_param_size = sizeof(struct gen7_pp_static_parameter);
inline_param_size = sizeof(struct gen7_pp_inline_parameter);
} else {
static_param_size = sizeof(struct pp_static_parameter);
inline_param_size = sizeof(struct pp_inline_parameter);
}
 
memset(pp_context->pp_static_parameter, 0, static_param_size);
memset(pp_context->pp_inline_parameter, 0, inline_param_size);
 
assert(pp_index >= PP_NULL && pp_index < NUM_PP_MODULES);
pp_context->current_pp = pp_index;
pp_module = &pp_context->pp_modules[pp_index];
if (pp_module->initialize)
va_status = pp_module->initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
filter_param);
else
va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
calculate_boundary_block_mask(pp_context, dst_rect);
 
return va_status;
}
 
static void
gen6_pp_interface_descriptor_table(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct gen6_interface_descriptor_data *desc;
dri_bo *bo;
int pp_index = pp_context->current_pp;
 
bo = pp_context->idrt.bo;
dri_bo_map(bo, True);
assert(bo->virtual);
desc = bo->virtual;
memset(desc, 0, sizeof(*desc));
desc->desc0.kernel_start_pointer =
pp_context->pp_modules[pp_index].kernel.bo->offset >> 6; /* reloc */
desc->desc1.single_program_flow = 1;
desc->desc1.floating_point_mode = FLOATING_POINT_IEEE_754;
desc->desc2.sampler_count = 1; /* 1 - 4 samplers used */
desc->desc2.sampler_state_pointer =
pp_context->sampler_state_table.bo->offset >> 5;
desc->desc3.binding_table_entry_count = 0;
desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
desc->desc4.constant_urb_entry_read_offset = 0;
if (IS_GEN7(i965->intel.device_id))
desc->desc4.constant_urb_entry_read_length = 6; /* grf 1-6 */
else
desc->desc4.constant_urb_entry_read_length = 4; /* grf 1-4 */
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct gen6_interface_descriptor_data, desc0),
pp_context->pp_modules[pp_index].kernel.bo);
 
dri_bo_emit_reloc(bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
desc->desc2.sampler_count << 2,
offsetof(struct gen6_interface_descriptor_data, desc2),
pp_context->sampler_state_table.bo);
 
dri_bo_unmap(bo);
pp_context->idrt.num_interface_descriptors++;
}
 
static void
gen6_pp_upload_constants(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
unsigned char *constant_buffer;
int param_size;
 
assert(sizeof(struct pp_static_parameter) == 128);
assert(sizeof(struct gen7_pp_static_parameter) == 192);
 
if (IS_GEN7(i965->intel.device_id))
param_size = sizeof(struct gen7_pp_static_parameter);
else
param_size = sizeof(struct pp_static_parameter);
 
dri_bo_map(pp_context->curbe.bo, 1);
assert(pp_context->curbe.bo->virtual);
constant_buffer = pp_context->curbe.bo->virtual;
memcpy(constant_buffer, pp_context->pp_static_parameter, param_size);
dri_bo_unmap(pp_context->curbe.bo);
}
 
static void
gen6_pp_states_setup(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
gen6_pp_interface_descriptor_table(ctx, pp_context);
gen6_pp_upload_constants(ctx, pp_context);
}
 
static void
gen6_pp_pipeline_select(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
ADVANCE_BATCH(batch);
}
 
static void
gen6_pp_state_base_address(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 10);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_RELOC(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
 
static void
gen6_pp_vfe_state(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | (8 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(pp_context->urb.num_vfe_entries - 1) << 16 |
pp_context->urb.num_vfe_entries << 8);
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
(pp_context->urb.size_vfe_entry * 2) << 16 | /* URB Entry Allocation Size, in 256 bits unit */
(pp_context->urb.size_cs_entry * pp_context->urb.num_cs_entries * 2)); /* CURBE Allocation Size, in 256 bits unit */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen6_pp_curbe_load(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
assert(pp_context->urb.size_cs_entry * pp_context->urb.num_cs_entries * 2 * 32 <= pp_context->curbe.bo->size);
 
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | (4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
pp_context->urb.size_cs_entry * pp_context->urb.num_cs_entries * 2 * 32);
OUT_RELOC(batch,
pp_context->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
ADVANCE_BATCH(batch);
}
 
static void
gen6_interface_descriptor_load(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, CMD_MEDIA_INTERFACE_DESCRIPTOR_LOAD | (4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch,
pp_context->idrt.num_interface_descriptors * sizeof(struct gen6_interface_descriptor_data));
OUT_RELOC(batch,
pp_context->idrt.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
ADVANCE_BATCH(batch);
}
 
static void update_block_mask_parameter(struct i965_post_processing_context *pp_context, int x, int y, int x_steps, int y_steps)
{
struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
 
pp_inline_parameter->grf5.block_vertical_mask = 0xff;
pp_inline_parameter->grf6.block_vertical_mask_bottom = pp_context->block_vertical_mask_bottom;
// for the first block, it always on the left edge. the second block will reload horizontal_mask from grf6.block_horizontal_mask_middle
pp_inline_parameter->grf5.block_horizontal_mask = pp_context->block_horizontal_mask_left;
pp_inline_parameter->grf6.block_horizontal_mask_middle = 0xffff;
pp_inline_parameter->grf6.block_horizontal_mask_right = pp_context->block_horizontal_mask_right;
 
/* 1 x N */
if (x_steps == 1) {
if (y == y_steps-1) {
pp_inline_parameter->grf5.block_vertical_mask = pp_context->block_vertical_mask_bottom;
}
else {
pp_inline_parameter->grf6.block_vertical_mask_bottom = 0xff;
}
}
 
/* M x 1 */
if (y_steps == 1) {
if (x == 0) { // all blocks in this group are on the left edge
pp_inline_parameter->grf6.block_horizontal_mask_middle = pp_context->block_horizontal_mask_left;
pp_inline_parameter->grf6.block_horizontal_mask_right = pp_context->block_horizontal_mask_left;
}
else if (x == x_steps-1) {
pp_inline_parameter->grf5.block_horizontal_mask = pp_context->block_horizontal_mask_right;
pp_inline_parameter->grf6.block_horizontal_mask_middle = pp_context->block_horizontal_mask_right;
}
else {
pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
pp_inline_parameter->grf6.block_horizontal_mask_middle = 0xffff;
pp_inline_parameter->grf6.block_horizontal_mask_right = 0xffff;
}
}
 
}
 
static void
gen6_pp_object_walker(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = pp_context->batch;
int x, x_steps, y, y_steps;
int param_size, command_length_in_dws;
dri_bo *command_buffer;
unsigned int *command_ptr;
 
if (IS_GEN7(i965->intel.device_id))
param_size = sizeof(struct gen7_pp_inline_parameter);
else
param_size = sizeof(struct pp_inline_parameter);
 
x_steps = pp_context->pp_x_steps(&pp_context->private_context);
y_steps = pp_context->pp_y_steps(&pp_context->private_context);
command_length_in_dws = 6 + (param_size >> 2);
command_buffer = dri_bo_alloc(i965->intel.bufmgr,
"command objects buffer",
command_length_in_dws * 4 * x_steps * y_steps + 8,
4096);
 
dri_bo_map(command_buffer, 1);
command_ptr = command_buffer->virtual;
 
for (y = 0; y < y_steps; y++) {
for (x = 0; x < x_steps; x++) {
if (!pp_context->pp_set_block_parameter(pp_context, x, y)) {
// some common block parameter update goes here, apply to all pp functions
if (IS_GEN6(i965->intel.device_id))
update_block_mask_parameter (pp_context, x, y, x_steps, y_steps);
*command_ptr++ = (CMD_MEDIA_OBJECT | (command_length_in_dws - 2));
*command_ptr++ = 0;
*command_ptr++ = 0;
*command_ptr++ = 0;
*command_ptr++ = 0;
*command_ptr++ = 0;
memcpy(command_ptr, pp_context->pp_inline_parameter, param_size);
command_ptr += (param_size >> 2);
}
}
}
 
if (command_length_in_dws * x_steps * y_steps % 2 == 0)
*command_ptr++ = 0;
 
*command_ptr = MI_BATCH_BUFFER_END;
 
dri_bo_unmap(command_buffer);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, MI_BATCH_BUFFER_START | (2 << 6));
OUT_RELOC(batch, command_buffer,
I915_GEM_DOMAIN_COMMAND, 0,
0);
ADVANCE_BATCH(batch);
dri_bo_unreference(command_buffer);
 
/* Have to execute the batch buffer here becuase MI_BATCH_BUFFER_END
* will cause control to pass back to ring buffer
*/
intel_batchbuffer_end_atomic(batch);
intel_batchbuffer_flush(batch);
intel_batchbuffer_start_atomic(batch, 0x1000);
}
static void
gen6_pp_pipeline_setup(VADriverContextP ctx,
struct i965_post_processing_context *pp_context)
{
struct intel_batchbuffer *batch = pp_context->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen6_pp_pipeline_select(ctx, pp_context);
gen6_pp_state_base_address(ctx, pp_context);
gen6_pp_vfe_state(ctx, pp_context);
gen6_pp_curbe_load(ctx, pp_context);
gen6_interface_descriptor_load(ctx, pp_context);
gen6_pp_vfe_state(ctx, pp_context);
gen6_pp_object_walker(ctx, pp_context);
intel_batchbuffer_end_atomic(batch);
}
 
static VAStatus
gen6_post_processing(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void *filter_param
)
{
VAStatus va_status;
va_status = gen6_pp_initialize(ctx, pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
pp_index,
filter_param);
 
if (va_status == VA_STATUS_SUCCESS) {
gen6_pp_states_setup(ctx, pp_context);
gen6_pp_pipeline_setup(ctx, pp_context);
}
 
return va_status;
}
 
static VAStatus
gen75_post_processing(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void *filter_param
)
{
VAStatus va_status;
struct intel_vebox_context * vebox_ctx = pp_context->pp_vebox_context;
 
assert(pp_index == PP_NV12_DNDI);
vebox_ctx->filters_mask = VPP_DNDI_DI;
vebox_ctx->surface_input = src_surface->id;
vebox_ctx->surface_output = dst_surface->id;
va_status = gen75_vebox_process_picture(ctx, vebox_ctx);
return va_status;
}
 
static VAStatus
i965_post_processing_internal(
VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
int pp_index,
void *filter_param
)
{
VAStatus va_status;
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if(IS_HASWELL(i965->intel.device_id) &&
pp_index == PP_NV12_DNDI){
va_status = gen75_post_processing(ctx, pp_context, src_surface, src_rect, dst_surface, dst_rect, pp_index, filter_param);
}else if (IS_GEN6(i965->intel.device_id) ||
IS_GEN7(i965->intel.device_id)){
va_status = gen6_post_processing(ctx, pp_context, src_surface, src_rect, dst_surface, dst_rect, pp_index, filter_param);
}else{
va_status = ironlake_post_processing(ctx, pp_context, src_surface, src_rect, dst_surface, dst_rect, pp_index, filter_param);
}
 
return va_status;
}
 
VAStatus
i965_DestroySurfaces(VADriverContextP ctx,
VASurfaceID *surface_list,
int num_surfaces);
VAStatus
i965_CreateSurfaces(VADriverContextP ctx,
int width,
int height,
int format,
int num_surfaces,
VASurfaceID *surfaces);
 
static void
rgb_to_yuv(unsigned int argb,
unsigned char *y,
unsigned char *u,
unsigned char *v,
unsigned char *a)
{
int r = ((argb >> 16) & 0xff);
int g = ((argb >> 8) & 0xff);
int b = ((argb >> 0) & 0xff);
*y = (257 * r + 504 * g + 98 * b) / 1000 + 16;
*v = (439 * r - 368 * g - 71 * b) / 1000 + 128;
*u = (-148 * r - 291 * g + 439 * b) / 1000 + 128;
*a = ((argb >> 24) & 0xff);
}
 
static void
i965_vpp_clear_surface(VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
VASurfaceID surface,
unsigned int color)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = pp_context->batch;
struct object_surface *obj_surface = SURFACE(surface);
unsigned int blt_cmd, br13;
unsigned int tiling = 0, swizzle = 0;
int pitch;
unsigned char y, u, v, a = 0;
 
/* Currently only support NV12 surface */
if (!obj_surface || obj_surface->fourcc != VA_FOURCC('N', 'V', '1', '2'))
return;
 
rgb_to_yuv(color, &y, &u, &v, &a);
 
if (a == 0)
return;
 
dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
blt_cmd = XY_COLOR_BLT_CMD;
pitch = obj_surface->width;
 
if (tiling != I915_TILING_NONE) {
blt_cmd |= XY_COLOR_BLT_DST_TILED;
pitch >>= 2;
}
 
br13 = 0xf0 << 16;
br13 |= BR13_8;
br13 |= pitch;
 
if (IS_GEN6(i965->intel.device_id) ||
IS_GEN7(i965->intel.device_id)) {
intel_batchbuffer_start_atomic_blt(batch, 48);
BEGIN_BLT_BATCH(batch, 12);
} else {
intel_batchbuffer_start_atomic(batch, 48);
BEGIN_BATCH(batch, 12);
}
 
OUT_BATCH(batch, blt_cmd);
OUT_BATCH(batch, br13);
OUT_BATCH(batch,
0 << 16 |
0);
OUT_BATCH(batch,
obj_surface->height << 16 |
obj_surface->width);
OUT_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0);
OUT_BATCH(batch, y);
 
br13 = 0xf0 << 16;
br13 |= BR13_565;
br13 |= pitch;
 
OUT_BATCH(batch, blt_cmd);
OUT_BATCH(batch, br13);
OUT_BATCH(batch,
0 << 16 |
0);
OUT_BATCH(batch,
obj_surface->height / 2 << 16 |
obj_surface->width / 2);
OUT_RELOC(batch, obj_surface->bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
obj_surface->width * obj_surface->y_cb_offset);
OUT_BATCH(batch, v << 8 | u);
 
ADVANCE_BATCH(batch);
intel_batchbuffer_end_atomic(batch);
}
 
VASurfaceID
i965_post_processing(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags,
int *has_done_scaling
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VASurfaceID in_surface_id = surface;
VASurfaceID out_surface_id = VA_INVALID_ID;
 
if (HAS_PP(i965)) {
/* Currently only support post processing for NV12 surface */
if (i965->render_state.interleaved_uv) {
struct object_surface *obj_surface;
VAStatus status;
struct i965_surface src_surface;
struct i965_surface dst_surface;
 
if (flags & I965_PP_FLAG_DEINTERLACING) {
obj_surface = SURFACE(in_surface_id);
status = i965_CreateSurfaces(ctx,
obj_surface->orig_width,
obj_surface->orig_height,
VA_RT_FORMAT_YUV420,
1,
&out_surface_id);
assert(status == VA_STATUS_SUCCESS);
obj_surface = SURFACE(out_surface_id);
i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
 
i965_vpp_clear_surface(ctx, i965->pp_context, out_surface_id, 0);
 
src_surface.id = in_surface_id;
src_surface.type = I965_SURFACE_TYPE_SURFACE;
src_surface.flags = (flags & I965_PP_FLAG_TOP_FIELD) ?
I965_SURFACE_FLAG_TOP_FIELD_FIRST : I965_SURFACE_FLAG_BOTTOM_FIELD_FIRST;
dst_surface.id = out_surface_id;
dst_surface.type = I965_SURFACE_TYPE_SURFACE;
dst_surface.flags = I965_SURFACE_FLAG_FRAME;
 
i965_post_processing_internal(ctx, i965->pp_context,
&src_surface,
src_rect,
&dst_surface,
dst_rect,
PP_NV12_DNDI,
NULL);
printf("Deinterlace is executed here\n");
}
 
if (flags & I965_PP_FLAG_AVS) {
struct i965_render_state *render_state = &i965->render_state;
struct intel_region *dest_region = render_state->draw_region;
 
if (out_surface_id != VA_INVALID_ID)
in_surface_id = out_surface_id;
 
status = i965_CreateSurfaces(ctx,
dest_region->width,
dest_region->height,
VA_RT_FORMAT_YUV420,
1,
&out_surface_id);
assert(status == VA_STATUS_SUCCESS);
obj_surface = SURFACE(out_surface_id);
i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
i965_vpp_clear_surface(ctx, i965->pp_context, out_surface_id, 0);
 
src_surface.id = in_surface_id;
src_surface.type = I965_SURFACE_TYPE_SURFACE;
src_surface.flags = I965_SURFACE_FLAG_FRAME;
dst_surface.id = out_surface_id;
dst_surface.type = I965_SURFACE_TYPE_SURFACE;
dst_surface.flags = I965_SURFACE_FLAG_FRAME;
 
i965_post_processing_internal(ctx, i965->pp_context,
&src_surface,
src_rect,
&dst_surface,
dst_rect,
PP_NV12_AVS,
NULL);
 
if (in_surface_id != surface)
i965_DestroySurfaces(ctx, &in_surface_id, 1);
*has_done_scaling = 1;
}
}
}
 
return out_surface_id;
}
 
static VAStatus
i965_image_pl3_processing(VADriverContextP ctx,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
 
if (fourcc == VA_FOURCC('N', 'V', '1', '2')) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_PL3_LOAD_SAVE_N12,
NULL);
} else if (fourcc == VA_FOURCC('I', 'M', 'C', '1') ||
fourcc == VA_FOURCC('I', 'M', 'C', '3') ||
fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
fourcc == VA_FOURCC('I', '4', '2', '0') ) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_PL3_LOAD_SAVE_PL3,
NULL);
} else if (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') ||
fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_PL3_LOAD_SAVE_PA,
NULL);
 
}
else {
assert(0);
}
 
intel_batchbuffer_flush(pp_context->batch);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
i965_image_pl2_processing(VADriverContextP ctx,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
 
if (fourcc == VA_FOURCC('N', 'V', '1', '2')) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_NV12_LOAD_SAVE_N12,
NULL);
} else if (fourcc == VA_FOURCC('I', 'M', 'C', '1') ||
fourcc == VA_FOURCC('I', 'M', 'C', '3') ||
fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
fourcc == VA_FOURCC('I', '4', '2', '0') ) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_NV12_LOAD_SAVE_PL3,
NULL);
} else if (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') ||
fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_NV12_LOAD_SAVE_PA,
NULL);
}
 
intel_batchbuffer_flush(pp_context->batch);
 
return VA_STATUS_SUCCESS;
}
 
static VAStatus
i965_image_pl1_processing(VADriverContextP ctx,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
 
if (fourcc == VA_FOURCC('N', 'V', '1', '2')) {
i965_post_processing_internal(ctx, i965->pp_context,
src_surface,
src_rect,
dst_surface,
dst_rect,
PP_PA_LOAD_SAVE_NV12,
NULL);
}
else {
return VA_STATUS_ERROR_UNKNOWN;
}
 
intel_batchbuffer_flush(pp_context->batch);
 
return VA_STATUS_SUCCESS;
}
 
VAStatus
i965_image_processing(VADriverContextP ctx,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
VAStatus status = VA_STATUS_ERROR_UNIMPLEMENTED;
 
if (HAS_PP(i965)) {
int fourcc = pp_get_surface_fourcc(ctx, src_surface);
 
switch (fourcc) {
case VA_FOURCC('Y', 'V', '1', '2'):
case VA_FOURCC('I', '4', '2', '0'):
case VA_FOURCC('I', 'M', 'C', '1'):
case VA_FOURCC('I', 'M', 'C', '3'):
status = i965_image_pl3_processing(ctx,
src_surface,
src_rect,
dst_surface,
dst_rect);
break;
 
case VA_FOURCC('N', 'V', '1', '2'):
status = i965_image_pl2_processing(ctx,
src_surface,
src_rect,
dst_surface,
dst_rect);
break;
case VA_FOURCC('Y', 'U', 'Y', '2'):
case VA_FOURCC('U', 'Y', 'V', 'Y'):
status = i965_image_pl1_processing(ctx,
src_surface,
src_rect,
dst_surface,
dst_rect);
break;
 
default:
status = VA_STATUS_ERROR_UNIMPLEMENTED;
break;
}
}
 
return status;
}
 
 
static void
i965_post_processing_context_finalize(struct i965_post_processing_context *pp_context)
{
int i;
 
dri_bo_unreference(pp_context->surface_state_binding_table.bo);
pp_context->surface_state_binding_table.bo = NULL;
 
dri_bo_unreference(pp_context->curbe.bo);
pp_context->curbe.bo = NULL;
 
dri_bo_unreference(pp_context->sampler_state_table.bo);
pp_context->sampler_state_table.bo = NULL;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
pp_context->sampler_state_table.bo_8x8 = NULL;
 
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
pp_context->sampler_state_table.bo_8x8_uv = NULL;
 
dri_bo_unreference(pp_context->idrt.bo);
pp_context->idrt.bo = NULL;
pp_context->idrt.num_interface_descriptors = 0;
 
dri_bo_unreference(pp_context->vfe_state.bo);
pp_context->vfe_state.bo = NULL;
 
dri_bo_unreference(pp_context->stmm.bo);
pp_context->stmm.bo = NULL;
 
for (i = 0; i < NUM_PP_MODULES; i++) {
struct pp_module *pp_module = &pp_context->pp_modules[i];
 
dri_bo_unreference(pp_module->kernel.bo);
pp_module->kernel.bo = NULL;
}
 
free(pp_context->pp_static_parameter);
free(pp_context->pp_inline_parameter);
pp_context->pp_static_parameter = NULL;
pp_context->pp_inline_parameter = NULL;
}
 
Bool
i965_post_processing_terminate(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
 
if (pp_context) {
if(IS_HASWELL(i965->intel.device_id)){
gen75_vebox_context_destroy(ctx, pp_context->pp_vebox_context);
}
i965_post_processing_context_finalize(pp_context);
free(pp_context);
}
 
i965->pp_context = NULL;
 
return True;
}
 
static void
i965_post_processing_context_init(VADriverContextP ctx,
struct i965_post_processing_context *pp_context,
struct intel_batchbuffer *batch)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int i;
 
printf("%s\n", __FUNCTION__);
 
pp_context->urb.size = URB_SIZE((&i965->intel));
pp_context->urb.num_vfe_entries = 32;
pp_context->urb.size_vfe_entry = 1; /* in 512 bits unit */
pp_context->urb.num_cs_entries = 1;
 
if (IS_GEN7(i965->intel.device_id))
pp_context->urb.size_cs_entry = 4; /* in 512 bits unit */
else
pp_context->urb.size_cs_entry = 2;
 
pp_context->urb.vfe_start = 0;
pp_context->urb.cs_start = pp_context->urb.vfe_start +
pp_context->urb.num_vfe_entries * pp_context->urb.size_vfe_entry;
assert(pp_context->urb.cs_start +
pp_context->urb.num_cs_entries * pp_context->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
 
assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen5));
assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen6));
assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen7));
assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen75));
 
if (IS_HASWELL(i965->intel.device_id))
memcpy(pp_context->pp_modules, pp_modules_gen75, sizeof(pp_context->pp_modules));
else if (IS_GEN7(i965->intel.device_id))
memcpy(pp_context->pp_modules, pp_modules_gen7, sizeof(pp_context->pp_modules));
else if (IS_GEN6(i965->intel.device_id))
memcpy(pp_context->pp_modules, pp_modules_gen6, sizeof(pp_context->pp_modules));
else if (IS_IRONLAKE(i965->intel.device_id))
memcpy(pp_context->pp_modules, pp_modules_gen5, sizeof(pp_context->pp_modules));
 
for (i = 0; i < NUM_PP_MODULES; i++) {
struct pp_module *pp_module = &pp_context->pp_modules[i];
dri_bo_unreference(pp_module->kernel.bo);
if (pp_module->kernel.bin && pp_module->kernel.size) {
pp_module->kernel.bo = dri_bo_alloc(i965->intel.bufmgr,
pp_module->kernel.name,
pp_module->kernel.size,
4096);
assert(pp_module->kernel.bo);
dri_bo_subdata(pp_module->kernel.bo, 0, pp_module->kernel.size, pp_module->kernel.bin);
} else {
pp_module->kernel.bo = NULL;
}
}
 
/* static & inline parameters */
if (IS_GEN7(i965->intel.device_id)) {
pp_context->pp_static_parameter = calloc(sizeof(struct gen7_pp_static_parameter), 1);
pp_context->pp_inline_parameter = calloc(sizeof(struct gen7_pp_inline_parameter), 1);
} else {
pp_context->pp_static_parameter = calloc(sizeof(struct pp_static_parameter), 1);
pp_context->pp_inline_parameter = calloc(sizeof(struct pp_inline_parameter), 1);
}
 
pp_context->batch = batch;
}
 
Bool
i965_post_processing_init(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
 
printf("%s\n", __FUNCTION__);
 
if (HAS_PP(i965)) {
if (pp_context == NULL) {
pp_context = calloc(1, sizeof(*pp_context));
i965_post_processing_context_init(ctx, pp_context, i965->batch);
i965->pp_context = pp_context;
 
if(IS_HASWELL(i965->intel.device_id)){
pp_context->pp_vebox_context = gen75_vebox_context_init(ctx);
}
}
}
printf("%s done\n", __FUNCTION__);
 
return True;
}
 
 
/drivers/video/i965/i965_post_processing.h
0,0 → 1,511
/*
* Copyright © 2010 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef __I965_POST_PROCESSING_H__
#define __I965_POST_PROCESSING_H__
 
#define MAX_PP_SURFACES 48
 
#define I965_PP_FLAG_TOP_FIELD 1
#define I965_PP_FLAG_BOTTOM_FIELD 2
 
#define I965_PP_FLAG_AVS 4
#define I965_PP_FLAG_DEINTERLACING 8
 
enum
{
PP_NULL = 0,
PP_NV12_LOAD_SAVE_N12,
PP_NV12_LOAD_SAVE_PL3,
PP_PL3_LOAD_SAVE_N12,
PP_PL3_LOAD_SAVE_PL3,
PP_NV12_SCALING,
PP_NV12_AVS,
PP_NV12_DNDI,
PP_NV12_DN,
PP_NV12_LOAD_SAVE_PA,
PP_PL3_LOAD_SAVE_PA,
PP_PA_LOAD_SAVE_NV12,
NUM_PP_MODULES,
};
 
struct pp_load_save_context
{
int dest_x;
int dest_y;
int dest_w;
int dest_h;
};
 
struct pp_scaling_context
{
int dest_x; /* in pixel */
int dest_y; /* in pixel */
int dest_w;
int dest_h;
int src_normalized_x;
int src_normalized_y;
};
 
struct pp_avs_context
{
int dest_x; /* in pixel */
int dest_y; /* in pixel */
int dest_w;
int dest_h;
int src_normalized_x;
int src_normalized_y;
int src_w;
int src_h;
};
 
struct pp_dndi_context
{
int dest_w;
int dest_h;
};
 
struct pp_dn_context
{
int dest_w;
int dest_h;
};
 
struct i965_post_processing_context;
struct pp_module
{
struct i965_kernel kernel;
/* others */
VAStatus (*initialize)(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect,
void *filter_param);
};
 
struct pp_static_parameter
{
struct {
/* Procamp r1.0 */
float procamp_constant_c0;
/* Load and Same r1.1 */
unsigned int source_packed_y_offset:8;
unsigned int source_packed_u_offset:8;
unsigned int source_packed_v_offset:8;
unsigned int pad0:8;
 
union {
/* Load and Save r1.2 */
struct {
unsigned int destination_packed_y_offset:8;
unsigned int destination_packed_u_offset:8;
unsigned int destination_packed_v_offset:8;
unsigned int pad0:8;
} load_and_save;
 
/* CSC r1.2 */
struct {
unsigned int destination_rgb_format:8;
unsigned int pad0:24;
} csc;
} r1_2;
/* Procamp r1.3 */
float procamp_constant_c1;
 
/* Procamp r1.4 */
float procamp_constant_c2;
 
/* DI r1.5 */
unsigned int statistics_surface_picth:16; /* Devided by 2 */
unsigned int pad1:16;
 
union {
/* DI r1.6 */
struct {
unsigned int pad0:24;
unsigned int top_field_first:8;
} di;
 
/* AVS/Scaling r1.6 */
float normalized_video_y_scaling_step;
} r1_6;
 
/* Procamp r1.7 */
float procamp_constant_c5;
} grf1;
struct {
/* Procamp r2.0 */
float procamp_constant_c3;
 
/* MBZ r2.1*/
unsigned int pad0;
 
/* WG+CSC r2.2 */
float wg_csc_constant_c4;
 
/* WG+CSC r2.3 */
float wg_csc_constant_c8;
 
/* Procamp r2.4 */
float procamp_constant_c4;
 
/* MBZ r2.5 */
unsigned int pad1;
 
/* MBZ r2.6 */
unsigned int pad2;
 
/* WG+CSC r2.7 */
float wg_csc_constant_c9;
} grf2;
 
struct {
/* WG+CSC r3.0 */
float wg_csc_constant_c0;
 
/* Blending r3.1 */
float scaling_step_ratio;
 
/* Blending r3.2 */
float normalized_alpha_y_scaling;
/* WG+CSC r3.3 */
float wg_csc_constant_c4;
 
/* WG+CSC r3.4 */
float wg_csc_constant_c1;
 
/* ALL r3.5 */
int horizontal_origin_offset:16;
int vertical_origin_offset:16;
 
/* Shared r3.6*/
union {
/* Color filll */
unsigned int color_pixel;
 
/* WG+CSC */
float wg_csc_constant_c2;
} r3_6;
 
/* WG+CSC r3.7 */
float wg_csc_constant_c3;
} grf3;
 
struct {
/* WG+CSC r4.0 */
float wg_csc_constant_c6;
 
/* ALL r4.1 MBZ ???*/
unsigned int pad0;
 
/* Shared r4.2 */
union {
/* AVS */
struct {
unsigned int pad1:15;
unsigned int nlas:1;
unsigned int pad2:16;
} avs;
 
/* DI */
struct {
unsigned int motion_history_coefficient_m2:8;
unsigned int motion_history_coefficient_m1:8;
unsigned int pad0:16;
} di;
} r4_2;
 
/* WG+CSC r4.3 */
float wg_csc_constant_c7;
 
/* WG+CSC r4.4 */
float wg_csc_constant_c10;
 
/* AVS r4.5 */
float source_video_frame_normalized_horizontal_origin;
 
/* MBZ r4.6 */
unsigned int pad1;
 
/* WG+CSC r4.7 */
float wg_csc_constant_c11;
} grf4;
};
 
struct pp_inline_parameter
{
struct {
/* ALL r5.0 */
int destination_block_horizontal_origin:16;
int destination_block_vertical_origin:16;
 
/* Shared r5.1 */
union {
/* AVS/Scaling */
float source_surface_block_normalized_horizontal_origin;
 
/* FMD */
struct {
unsigned int variance_surface_vertical_origin:16;
unsigned int pad0:16;
} fmd;
} r5_1;
 
/* AVS/Scaling r5.2 */
float source_surface_block_normalized_vertical_origin;
 
/* Alpha r5.3 */
float alpha_surface_block_normalized_horizontal_origin;
 
/* Alpha r5.4 */
float alpha_surface_block_normalized_vertical_origin;
 
/* Alpha r5.5 */
unsigned int alpha_mask_x:16;
unsigned int alpha_mask_y:8;
unsigned int block_count_x:8;
 
/* r5.6 */
/* we only support M*1 or 1*N block partitation now.
* -- it means asm code only need update this mask from grf6 for the last block
*/
unsigned int block_horizontal_mask:16;
unsigned int block_vertical_mask:8;
unsigned int number_blocks:8;
 
/* AVS/Scaling r5.7 */
float normalized_video_x_scaling_step;
} grf5;
 
struct {
/* AVS r6.0 */
float video_step_delta;
 
/* r6.1 */ // sizeof(int) == 4?
unsigned int block_horizontal_mask_right:16;
unsigned int block_vertical_mask_bottom:8;
unsigned int pad1:8;
 
/* r6.2 */
unsigned int block_horizontal_mask_middle:16;
unsigned int pad2:16;
 
/* r6.3-r6.7 */
unsigned int padx[5];
} grf6;
};
 
struct gen7_pp_static_parameter
{
struct {
/* r1.0-r1.5 */
unsigned int padx[6];
/* r1.6 */
unsigned int di_statistics_surface_pitch_div2:16;
unsigned int di_statistics_surface_height_div4:16;
/* r1.7 */
unsigned int di_top_field_first:8;
unsigned int pad0:16;
unsigned int pointer_to_inline_parameter:8; /* value: 7 */
} grf1;
 
struct {
/* r2.0 */
unsigned int pad3;
 
/* r2.1 */
unsigned int pad2:16;
unsigned int save_avs_rgb_swap:1; /* 0: RGB, 1: BGR */
unsigned int avs_wa_enable:1; /* must enabled for GEN7 */
unsigned int pad1:1;
unsigned int avs_wa_width:13;
 
/* 2.2 */
float avs_wa_one_div_256_width;
 
/* 2.3 */
float avs_wa_five_div_256_width;
/* 2.4 - 2.6 */
unsigned int padx[3];
 
/* r2.7 */
unsigned int di_destination_packed_y_component_offset:8;
unsigned int di_destination_packed_u_component_offset:8;
unsigned int di_destination_packed_v_component_offset:8;
unsigned int pad0:8;
} grf2;
 
struct {
float sampler_load_horizontal_scaling_step_ratio;
unsigned int padx[7];
} grf3;
 
struct {
float sampler_load_vertical_scaling_step;
unsigned int pad0;
unsigned int di_hoffset_svf_from_dvf:16;
unsigned int di_voffset_svf_from_dvf:16;
unsigned int padx[5];
} grf4;
 
struct {
float sampler_load_vertical_frame_origin;
unsigned int padx[7];
} grf5;
 
struct {
float sampler_load_horizontal_frame_origin;
unsigned int padx[7];
} grf6;
};
 
struct gen7_pp_inline_parameter
{
struct {
/* r7.0 */
unsigned int destination_block_horizontal_origin:16;
unsigned int destination_block_vertical_origin:16;
/* r7.1: 0xffffffff */
unsigned int constant_0;
/* r7.2 */
unsigned int pad0;
/* r7.3 */
unsigned int pad1;
/* r7.4 */
float sampler_load_main_video_x_scaling_step;
/* r7.5 */
unsigned int pad2;
/* r7.6: must be zero */
unsigned int avs_vertical_block_number;
/* r7.7: 0 */
unsigned int group_id_number;
} grf7;
 
struct {
unsigned int padx[8];
} grf8;
};
 
struct i965_post_processing_context
{
int current_pp;
struct pp_module pp_modules[NUM_PP_MODULES];
void *pp_static_parameter;
void *pp_inline_parameter;
 
struct {
dri_bo *bo;
} surface_state_binding_table;
 
struct {
dri_bo *bo;
} curbe;
 
struct {
dri_bo *bo;
int num_interface_descriptors;
} idrt;
 
struct {
dri_bo *bo;
} vfe_state;
 
struct {
dri_bo *bo;
dri_bo *bo_8x8;
dri_bo *bo_8x8_uv;
} sampler_state_table;
 
struct {
unsigned int size;
 
unsigned int vfe_start;
unsigned int cs_start;
 
unsigned int num_vfe_entries;
unsigned int num_cs_entries;
 
unsigned int size_vfe_entry;
unsigned int size_cs_entry;
} urb;
 
struct {
dri_bo *bo;
} stmm;
 
union {
struct pp_load_save_context pp_load_save_context;
struct pp_scaling_context pp_scaling_context;
struct pp_avs_context pp_avs_context;
struct pp_dndi_context pp_dndi_context;
struct pp_dn_context pp_dn_context;
} private_context;
 
int (*pp_x_steps)(void *private_context);
int (*pp_y_steps)(void *private_context);
int (*pp_set_block_parameter)(struct i965_post_processing_context *pp_context, int x, int y);
struct intel_batchbuffer *batch;
unsigned int block_horizontal_mask_left:16;
unsigned int block_horizontal_mask_right:16;
unsigned int block_vertical_mask_bottom:8;
/* video process based on hsw vebox */
struct intel_vebox_context *pp_vebox_context;
};
 
VASurfaceID
i965_post_processing(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags,
int *has_done_scaling
);
 
VAStatus
i965_image_processing(VADriverContextP ctx,
const struct i965_surface *src_surface,
const VARectangle *src_rect,
struct i965_surface *dst_surface,
const VARectangle *dst_rect);
 
Bool
i965_post_processing_terminate(VADriverContextP ctx);
Bool
i965_post_processing_init(VADriverContextP ctx);
 
#endif /* __I965_POST_PROCESSING_H__ */
/drivers/video/i965/i965_render.c
0,0 → 1,3197
/*
* Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* Authors:
* Eric Anholt <eric@anholt.net>
* Keith Packard <keithp@keithp.com>
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
/*
* Most of rendering codes are ported from xf86-video-intel/src/i965_video.c
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
#include "intel_driver.h"
#include "i965_defines.h"
#include "i965_drv_video.h"
#include "i965_structs.h"
 
#include "i965_render.h"
 
#define SF_KERNEL_NUM_GRF 16
#define SF_MAX_THREADS 1
 
static const uint32_t sf_kernel_static[][4] =
{
#include "shaders/render/exa_sf.g4b"
};
 
#define PS_KERNEL_NUM_GRF 32
#define PS_MAX_THREADS 32
 
#define I965_GRF_BLOCKS(nreg) ((nreg + 15) / 16 - 1)
 
static const uint32_t ps_kernel_static[][4] =
{
#include "shaders/render/exa_wm_xy.g4b"
#include "shaders/render/exa_wm_src_affine.g4b"
#include "shaders/render/exa_wm_src_sample_planar.g4b"
#include "shaders/render/exa_wm_yuv_rgb.g4b"
#include "shaders/render/exa_wm_write.g4b"
};
static const uint32_t ps_subpic_kernel_static[][4] =
{
#include "shaders/render/exa_wm_xy.g4b"
#include "shaders/render/exa_wm_src_affine.g4b"
#include "shaders/render/exa_wm_src_sample_argb.g4b"
#include "shaders/render/exa_wm_write.g4b"
};
 
/* On IRONLAKE */
static const uint32_t sf_kernel_static_gen5[][4] =
{
#include "shaders/render/exa_sf.g4b.gen5"
};
 
static const uint32_t ps_kernel_static_gen5[][4] =
{
#include "shaders/render/exa_wm_xy.g4b.gen5"
#include "shaders/render/exa_wm_src_affine.g4b.gen5"
#include "shaders/render/exa_wm_src_sample_planar.g4b.gen5"
#include "shaders/render/exa_wm_yuv_rgb.g4b.gen5"
#include "shaders/render/exa_wm_write.g4b.gen5"
};
static const uint32_t ps_subpic_kernel_static_gen5[][4] =
{
#include "shaders/render/exa_wm_xy.g4b.gen5"
#include "shaders/render/exa_wm_src_affine.g4b.gen5"
#include "shaders/render/exa_wm_src_sample_argb.g4b.gen5"
#include "shaders/render/exa_wm_write.g4b.gen5"
};
 
/* programs for Sandybridge */
static const uint32_t sf_kernel_static_gen6[][4] =
{
};
 
static const uint32_t ps_kernel_static_gen6[][4] = {
#include "shaders/render/exa_wm_src_affine.g6b"
#include "shaders/render/exa_wm_src_sample_planar.g6b"
#include "shaders/render/exa_wm_yuv_rgb.g6b"
#include "shaders/render/exa_wm_write.g6b"
};
 
static const uint32_t ps_subpic_kernel_static_gen6[][4] = {
#include "shaders/render/exa_wm_src_affine.g6b"
#include "shaders/render/exa_wm_src_sample_argb.g6b"
#include "shaders/render/exa_wm_write.g6b"
};
 
/* programs for Ivybridge */
static const uint32_t sf_kernel_static_gen7[][4] =
{
};
 
static const uint32_t ps_kernel_static_gen7[][4] = {
#include "shaders/render/exa_wm_src_affine.g7b"
#include "shaders/render/exa_wm_src_sample_planar.g7b"
#include "shaders/render/exa_wm_yuv_rgb.g7b"
#include "shaders/render/exa_wm_write.g7b"
};
 
static const uint32_t ps_subpic_kernel_static_gen7[][4] = {
#include "shaders/render/exa_wm_src_affine.g7b"
#include "shaders/render/exa_wm_src_sample_argb.g7b"
#include "shaders/render/exa_wm_write.g7b"
};
 
/* Programs for Haswell */
static const uint32_t ps_kernel_static_gen7_haswell[][4] = {
#include "shaders/render/exa_wm_src_affine.g7b"
#include "shaders/render/exa_wm_src_sample_planar.g7b.haswell"
#include "shaders/render/exa_wm_yuv_rgb.g7b"
#include "shaders/render/exa_wm_write.g7b"
};
 
#define SURFACE_STATE_PADDED_SIZE_I965 ALIGN(sizeof(struct i965_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32)
#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_I965, SURFACE_STATE_PADDED_SIZE_GEN7)
#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_RENDER_SURFACES)
 
static uint32_t float_to_uint (float f)
{
union {
uint32_t i;
float f;
} x;
 
x.f = f;
return x.i;
}
 
enum
{
SF_KERNEL = 0,
PS_KERNEL,
PS_SUBPIC_KERNEL
};
 
static struct i965_kernel render_kernels_gen4[] = {
{
"SF",
SF_KERNEL,
sf_kernel_static,
sizeof(sf_kernel_static),
NULL
},
{
"PS",
PS_KERNEL,
ps_kernel_static,
sizeof(ps_kernel_static),
NULL
},
 
{
"PS_SUBPIC",
PS_SUBPIC_KERNEL,
ps_subpic_kernel_static,
sizeof(ps_subpic_kernel_static),
NULL
}
};
 
static struct i965_kernel render_kernels_gen5[] = {
{
"SF",
SF_KERNEL,
sf_kernel_static_gen5,
sizeof(sf_kernel_static_gen5),
NULL
},
{
"PS",
PS_KERNEL,
ps_kernel_static_gen5,
sizeof(ps_kernel_static_gen5),
NULL
},
 
{
"PS_SUBPIC",
PS_SUBPIC_KERNEL,
ps_subpic_kernel_static_gen5,
sizeof(ps_subpic_kernel_static_gen5),
NULL
}
};
 
static struct i965_kernel render_kernels_gen6[] = {
{
"SF",
SF_KERNEL,
sf_kernel_static_gen6,
sizeof(sf_kernel_static_gen6),
NULL
},
{
"PS",
PS_KERNEL,
ps_kernel_static_gen6,
sizeof(ps_kernel_static_gen6),
NULL
},
 
{
"PS_SUBPIC",
PS_SUBPIC_KERNEL,
ps_subpic_kernel_static_gen6,
sizeof(ps_subpic_kernel_static_gen6),
NULL
}
};
 
static struct i965_kernel render_kernels_gen7[] = {
{
"SF",
SF_KERNEL,
sf_kernel_static_gen7,
sizeof(sf_kernel_static_gen7),
NULL
},
{
"PS",
PS_KERNEL,
ps_kernel_static_gen7,
sizeof(ps_kernel_static_gen7),
NULL
},
 
{
"PS_SUBPIC",
PS_SUBPIC_KERNEL,
ps_subpic_kernel_static_gen7,
sizeof(ps_subpic_kernel_static_gen7),
NULL
}
};
 
static struct i965_kernel render_kernels_gen7_haswell[] = {
{
"SF",
SF_KERNEL,
sf_kernel_static_gen7,
sizeof(sf_kernel_static_gen7),
NULL
},
{
"PS",
PS_KERNEL,
ps_kernel_static_gen7_haswell,
sizeof(ps_kernel_static_gen7_haswell),
NULL
},
 
{
"PS_SUBPIC",
PS_SUBPIC_KERNEL,
ps_subpic_kernel_static_gen7,
sizeof(ps_subpic_kernel_static_gen7),
NULL
}
};
 
#define URB_VS_ENTRIES 8
#define URB_VS_ENTRY_SIZE 1
 
#define URB_GS_ENTRIES 0
#define URB_GS_ENTRY_SIZE 0
 
#define URB_CLIP_ENTRIES 0
#define URB_CLIP_ENTRY_SIZE 0
 
#define URB_SF_ENTRIES 1
#define URB_SF_ENTRY_SIZE 2
 
#define URB_CS_ENTRIES 1
#define URB_CS_ENTRY_SIZE 1
 
static void
i965_render_vs_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_vs_unit_state *vs_state;
 
dri_bo_map(render_state->vs.state, 1);
assert(render_state->vs.state->virtual);
vs_state = render_state->vs.state->virtual;
memset(vs_state, 0, sizeof(*vs_state));
 
if (IS_IRONLAKE(i965->intel.device_id))
vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES >> 2;
else
vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES;
 
vs_state->thread4.urb_entry_allocation_size = URB_VS_ENTRY_SIZE - 1;
vs_state->vs6.vs_enable = 0;
vs_state->vs6.vert_cache_disable = 1;
dri_bo_unmap(render_state->vs.state);
}
 
static void
i965_render_sf_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_sf_unit_state *sf_state;
 
dri_bo_map(render_state->sf.state, 1);
assert(render_state->sf.state->virtual);
sf_state = render_state->sf.state->virtual;
memset(sf_state, 0, sizeof(*sf_state));
 
sf_state->thread0.grf_reg_count = I965_GRF_BLOCKS(SF_KERNEL_NUM_GRF);
sf_state->thread0.kernel_start_pointer = render_state->render_kernels[SF_KERNEL].bo->offset >> 6;
 
sf_state->sf1.single_program_flow = 1; /* XXX */
sf_state->sf1.binding_table_entry_count = 0;
sf_state->sf1.thread_priority = 0;
sf_state->sf1.floating_point_mode = 0; /* Mesa does this */
sf_state->sf1.illegal_op_exception_enable = 1;
sf_state->sf1.mask_stack_exception_enable = 1;
sf_state->sf1.sw_exception_enable = 1;
 
/* scratch space is not used in our kernel */
sf_state->thread2.per_thread_scratch_space = 0;
sf_state->thread2.scratch_space_base_pointer = 0;
 
sf_state->thread3.const_urb_entry_read_length = 0; /* no const URBs */
sf_state->thread3.const_urb_entry_read_offset = 0; /* no const URBs */
sf_state->thread3.urb_entry_read_length = 1; /* 1 URB per vertex */
sf_state->thread3.urb_entry_read_offset = 0;
sf_state->thread3.dispatch_grf_start_reg = 3;
 
sf_state->thread4.max_threads = SF_MAX_THREADS - 1;
sf_state->thread4.urb_entry_allocation_size = URB_SF_ENTRY_SIZE - 1;
sf_state->thread4.nr_urb_entries = URB_SF_ENTRIES;
sf_state->thread4.stats_enable = 1;
 
sf_state->sf5.viewport_transform = 0; /* skip viewport */
 
sf_state->sf6.cull_mode = I965_CULLMODE_NONE;
sf_state->sf6.scissor = 0;
 
sf_state->sf7.trifan_pv = 2;
 
sf_state->sf6.dest_org_vbias = 0x8;
sf_state->sf6.dest_org_hbias = 0x8;
 
dri_bo_emit_reloc(render_state->sf.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
sf_state->thread0.grf_reg_count << 1,
offsetof(struct i965_sf_unit_state, thread0),
render_state->render_kernels[SF_KERNEL].bo);
 
dri_bo_unmap(render_state->sf.state);
}
 
static void
i965_render_sampler(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_sampler_state *sampler_state;
int i;
assert(render_state->wm.sampler_count > 0);
assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
 
dri_bo_map(render_state->wm.sampler, 1);
assert(render_state->wm.sampler->virtual);
sampler_state = render_state->wm.sampler->virtual;
for (i = 0; i < render_state->wm.sampler_count; i++) {
memset(sampler_state, 0, sizeof(*sampler_state));
sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
sampler_state->ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state->ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state->ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state++;
}
 
dri_bo_unmap(render_state->wm.sampler);
}
static void
i965_subpic_render_wm_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_wm_unit_state *wm_state;
 
assert(render_state->wm.sampler);
 
dri_bo_map(render_state->wm.state, 1);
assert(render_state->wm.state->virtual);
wm_state = render_state->wm.state->virtual;
memset(wm_state, 0, sizeof(*wm_state));
 
wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
wm_state->thread0.kernel_start_pointer = render_state->render_kernels[PS_SUBPIC_KERNEL].bo->offset >> 6;
 
wm_state->thread1.single_program_flow = 1; /* XXX */
 
if (IS_IRONLAKE(i965->intel.device_id))
wm_state->thread1.binding_table_entry_count = 0; /* hardware requirement */
else
wm_state->thread1.binding_table_entry_count = 7;
 
wm_state->thread2.scratch_space_base_pointer = 0;
wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
 
wm_state->thread3.dispatch_grf_start_reg = 3; /* XXX */
wm_state->thread3.const_urb_entry_read_length = 0;
wm_state->thread3.const_urb_entry_read_offset = 0;
wm_state->thread3.urb_entry_read_length = 1; /* XXX */
wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
 
wm_state->wm4.stats_enable = 0;
wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
wm_state->wm4.sampler_count = 0; /* hardware requirement */
} else {
wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
}
 
wm_state->wm5.max_threads = render_state->max_wm_threads - 1;
wm_state->wm5.thread_dispatch_enable = 1;
wm_state->wm5.enable_16_pix = 1;
wm_state->wm5.enable_8_pix = 0;
wm_state->wm5.early_depth_test = 1;
 
dri_bo_emit_reloc(render_state->wm.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
wm_state->thread0.grf_reg_count << 1,
offsetof(struct i965_wm_unit_state, thread0),
render_state->render_kernels[PS_SUBPIC_KERNEL].bo);
 
dri_bo_emit_reloc(render_state->wm.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
wm_state->wm4.sampler_count << 2,
offsetof(struct i965_wm_unit_state, wm4),
render_state->wm.sampler);
 
dri_bo_unmap(render_state->wm.state);
}
 
 
static void
i965_render_wm_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_wm_unit_state *wm_state;
 
assert(render_state->wm.sampler);
 
dri_bo_map(render_state->wm.state, 1);
assert(render_state->wm.state->virtual);
wm_state = render_state->wm.state->virtual;
memset(wm_state, 0, sizeof(*wm_state));
 
wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
wm_state->thread0.kernel_start_pointer = render_state->render_kernels[PS_KERNEL].bo->offset >> 6;
 
wm_state->thread1.single_program_flow = 1; /* XXX */
 
if (IS_IRONLAKE(i965->intel.device_id))
wm_state->thread1.binding_table_entry_count = 0; /* hardware requirement */
else
wm_state->thread1.binding_table_entry_count = 7;
 
wm_state->thread2.scratch_space_base_pointer = 0;
wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
 
wm_state->thread3.dispatch_grf_start_reg = 2; /* XXX */
wm_state->thread3.const_urb_entry_read_length = 1;
wm_state->thread3.const_urb_entry_read_offset = 0;
wm_state->thread3.urb_entry_read_length = 1; /* XXX */
wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
 
wm_state->wm4.stats_enable = 0;
wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
wm_state->wm4.sampler_count = 0; /* hardware requirement */
} else {
wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
}
 
wm_state->wm5.max_threads = render_state->max_wm_threads - 1;
wm_state->wm5.thread_dispatch_enable = 1;
wm_state->wm5.enable_16_pix = 1;
wm_state->wm5.enable_8_pix = 0;
wm_state->wm5.early_depth_test = 1;
 
dri_bo_emit_reloc(render_state->wm.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
wm_state->thread0.grf_reg_count << 1,
offsetof(struct i965_wm_unit_state, thread0),
render_state->render_kernels[PS_KERNEL].bo);
 
dri_bo_emit_reloc(render_state->wm.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
wm_state->wm4.sampler_count << 2,
offsetof(struct i965_wm_unit_state, wm4),
render_state->wm.sampler);
 
dri_bo_unmap(render_state->wm.state);
}
 
static void
i965_render_cc_viewport(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_cc_viewport *cc_viewport;
 
dri_bo_map(render_state->cc.viewport, 1);
assert(render_state->cc.viewport->virtual);
cc_viewport = render_state->cc.viewport->virtual;
memset(cc_viewport, 0, sizeof(*cc_viewport));
cc_viewport->min_depth = -1.e35;
cc_viewport->max_depth = 1.e35;
 
dri_bo_unmap(render_state->cc.viewport);
}
 
static void
i965_subpic_render_cc_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_cc_unit_state *cc_state;
 
assert(render_state->cc.viewport);
 
dri_bo_map(render_state->cc.state, 1);
assert(render_state->cc.state->virtual);
cc_state = render_state->cc.state->virtual;
memset(cc_state, 0, sizeof(*cc_state));
 
cc_state->cc0.stencil_enable = 0; /* disable stencil */
cc_state->cc2.depth_test = 0; /* disable depth test */
cc_state->cc2.logicop_enable = 0; /* disable logic op */
cc_state->cc3.ia_blend_enable = 0 ; /* blend alpha just like colors */
cc_state->cc3.blend_enable = 1; /* enable color blend */
cc_state->cc3.alpha_test = 0; /* disable alpha test */
cc_state->cc3.alpha_test_format = 0;//0:ALPHATEST_UNORM8; /*store alpha value with UNORM8 */
cc_state->cc3.alpha_test_func = 5;//COMPAREFUNCTION_LESS; /*pass if less than the reference */
cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
 
cc_state->cc5.dither_enable = 0; /* disable dither */
cc_state->cc5.logicop_func = 0xc; /* WHITE */
cc_state->cc5.statistics_enable = 1;
cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
 
cc_state->cc6.clamp_post_alpha_blend = 0;
cc_state->cc6.clamp_pre_alpha_blend =0;
/*final color = src_color*src_blend_factor +/- dst_color*dest_color_blend_factor*/
cc_state->cc6.blend_function = I965_BLENDFUNCTION_ADD;
cc_state->cc6.src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
cc_state->cc6.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
/*alpha test reference*/
cc_state->cc7.alpha_ref.f =0.0 ;
 
 
dri_bo_emit_reloc(render_state->cc.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_cc_unit_state, cc4),
render_state->cc.viewport);
 
dri_bo_unmap(render_state->cc.state);
}
 
 
static void
i965_render_cc_unit(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct i965_cc_unit_state *cc_state;
 
assert(render_state->cc.viewport);
 
dri_bo_map(render_state->cc.state, 1);
assert(render_state->cc.state->virtual);
cc_state = render_state->cc.state->virtual;
memset(cc_state, 0, sizeof(*cc_state));
 
cc_state->cc0.stencil_enable = 0; /* disable stencil */
cc_state->cc2.depth_test = 0; /* disable depth test */
cc_state->cc2.logicop_enable = 1; /* enable logic op */
cc_state->cc3.ia_blend_enable = 0; /* blend alpha just like colors */
cc_state->cc3.blend_enable = 0; /* disable color blend */
cc_state->cc3.alpha_test = 0; /* disable alpha test */
cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
 
cc_state->cc5.dither_enable = 0; /* disable dither */
cc_state->cc5.logicop_func = 0xc; /* WHITE */
cc_state->cc5.statistics_enable = 1;
cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_ONE;
cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_ONE;
 
dri_bo_emit_reloc(render_state->cc.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0,
offsetof(struct i965_cc_unit_state, cc4),
render_state->cc.viewport);
 
dri_bo_unmap(render_state->cc.state);
}
 
static void
i965_render_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss3.tiled_surface = 0;
ss->ss3.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss3.tiled_surface = 1;
ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
static void
i965_render_set_surface_state(
struct i965_surface_state *ss,
dri_bo *bo,
unsigned long offset,
unsigned int width,
unsigned int height,
unsigned int pitch,
unsigned int format,
unsigned int flags
)
{
unsigned int tiling;
unsigned int swizzle;
 
memset(ss, 0, sizeof(*ss));
 
switch (flags & (I965_PP_FLAG_TOP_FIELD|I965_PP_FLAG_BOTTOM_FIELD)) {
case I965_PP_FLAG_BOTTOM_FIELD:
ss->ss0.vert_line_stride_ofs = 1;
/* fall-through */
case I965_PP_FLAG_TOP_FIELD:
ss->ss0.vert_line_stride = 1;
height /= 2;
break;
}
 
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = format;
ss->ss0.color_blend = 1;
 
ss->ss1.base_addr = bo->offset + offset;
 
ss->ss2.width = width - 1;
ss->ss2.height = height - 1;
 
ss->ss3.pitch = pitch - 1;
 
dri_bo_get_tiling(bo, &tiling, &swizzle);
i965_render_set_surface_tiling(ss, tiling);
}
 
static void
gen7_render_set_surface_tiling(struct gen7_surface_state *ss, uint32_t tiling)
{
switch (tiling) {
case I915_TILING_NONE:
ss->ss0.tiled_surface = 0;
ss->ss0.tile_walk = 0;
break;
case I915_TILING_X:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
break;
case I915_TILING_Y:
ss->ss0.tiled_surface = 1;
ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
break;
}
}
 
/* Set "Shader Channel Select" */
void
gen7_render_set_surface_scs(struct gen7_surface_state *ss)
{
ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
}
 
static void
gen7_render_set_surface_state(
struct gen7_surface_state *ss,
dri_bo *bo,
unsigned long offset,
int width,
int height,
int pitch,
int format,
unsigned int flags
)
{
unsigned int tiling;
unsigned int swizzle;
 
memset(ss, 0, sizeof(*ss));
 
switch (flags & (I965_PP_FLAG_TOP_FIELD|I965_PP_FLAG_BOTTOM_FIELD)) {
case I965_PP_FLAG_BOTTOM_FIELD:
ss->ss0.vert_line_stride_ofs = 1;
/* fall-through */
case I965_PP_FLAG_TOP_FIELD:
ss->ss0.vert_line_stride = 1;
height /= 2;
break;
}
 
ss->ss0.surface_type = I965_SURFACE_2D;
ss->ss0.surface_format = format;
 
ss->ss1.base_addr = bo->offset + offset;
 
ss->ss2.width = width - 1;
ss->ss2.height = height - 1;
 
ss->ss3.pitch = pitch - 1;
 
dri_bo_get_tiling(bo, &tiling, &swizzle);
gen7_render_set_surface_tiling(ss, tiling);
}
 
static void
i965_render_src_surface_state(
VADriverContextP ctx,
int index,
dri_bo *region,
unsigned long offset,
int w,
int h,
int pitch,
int format,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
void *ss;
dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
 
assert(index < MAX_RENDER_SURFACES);
 
dri_bo_map(ss_bo, 1);
assert(ss_bo->virtual);
ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
 
if (IS_GEN7(i965->intel.device_id)) {
gen7_render_set_surface_state(ss,
region, offset,
w, h,
pitch, format, flags);
if (IS_HASWELL(i965->intel.device_id))
gen7_render_set_surface_scs(ss);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_SAMPLER, 0,
offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
region);
} else {
i965_render_set_surface_state(ss,
region, offset,
w, h,
pitch, format, flags);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_SAMPLER, 0,
offset,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
region);
}
 
((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss_bo);
render_state->wm.sampler_count++;
}
 
static void
i965_render_src_surfaces_state(
VADriverContextP ctx,
VASurfaceID surface,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface;
int region_pitch;
int rw, rh;
dri_bo *region;
 
obj_surface = SURFACE(surface);
assert(obj_surface);
 
region_pitch = obj_surface->width;
rw = obj_surface->orig_width;
rh = obj_surface->orig_height;
region = obj_surface->bo;
 
i965_render_src_surface_state(ctx, 1, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags); /* Y */
i965_render_src_surface_state(ctx, 2, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags);
 
if (obj_surface->fourcc == VA_FOURCC('N', 'V', '1', '2')) {
i965_render_src_surface_state(ctx, 3, region,
region_pitch * obj_surface->y_cb_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8G8_UNORM, flags); /* UV */
i965_render_src_surface_state(ctx, 4, region,
region_pitch * obj_surface->y_cb_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8G8_UNORM, flags);
} else {
i965_render_src_surface_state(ctx, 3, region,
region_pitch * obj_surface->y_cb_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8_UNORM, flags); /* U */
i965_render_src_surface_state(ctx, 4, region,
region_pitch * obj_surface->y_cb_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8_UNORM, flags);
i965_render_src_surface_state(ctx, 5, region,
region_pitch * obj_surface->y_cr_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8_UNORM, flags); /* V */
i965_render_src_surface_state(ctx, 6, region,
region_pitch * obj_surface->y_cr_offset,
obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
I965_SURFACEFORMAT_R8_UNORM, flags);
}
}
 
static void
i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
VASurfaceID surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(surface);
dri_bo *subpic_region;
unsigned int index = obj_surface->subpic_render_idx;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic[index]);
struct object_image *obj_image = IMAGE(obj_subpic->image);
assert(obj_surface);
assert(obj_surface->bo);
subpic_region = obj_image->bo;
/*subpicture surface*/
i965_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
i965_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
}
 
static void
i965_render_dest_surface_state(VADriverContextP ctx, int index)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct intel_region *dest_region = render_state->draw_region;
void *ss;
dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
int format;
assert(index < MAX_RENDER_SURFACES);
 
if (dest_region->cpp == 2) {
format = I965_SURFACEFORMAT_B5G6R5_UNORM;
} else {
format = I965_SURFACEFORMAT_B8G8R8A8_UNORM;
}
 
dri_bo_map(ss_bo, 1);
assert(ss_bo->virtual);
ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
 
if (IS_GEN7(i965->intel.device_id)) {
gen7_render_set_surface_state(ss,
dest_region->bo, 0,
dest_region->width, dest_region->height,
dest_region->pitch, format, 0);
if (IS_HASWELL(i965->intel.device_id))
gen7_render_set_surface_scs(ss);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
dest_region->bo);
} else {
i965_render_set_surface_state(ss,
dest_region->bo, 0,
dest_region->width, dest_region->height,
dest_region->pitch, format, 0);
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0,
SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
dest_region->bo);
}
 
((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
dri_bo_unmap(ss_bo);
}
 
static void
i965_fill_vertex_buffer(
VADriverContextP ctx,
float tex_coords[4], /* [(u1,v1);(u2,v2)] */
float vid_coords[4] /* [(x1,y1);(x2,y2)] */
)
{
struct i965_driver_data * const i965 = i965_driver_data(ctx);
float vb[12];
 
enum { X1, Y1, X2, Y2 };
 
static const unsigned int g_rotation_indices[][6] = {
[VA_ROTATION_NONE] = { X2, Y2, X1, Y2, X1, Y1 },
[VA_ROTATION_90] = { X2, Y1, X2, Y2, X1, Y2 },
[VA_ROTATION_180] = { X1, Y1, X2, Y1, X2, Y2 },
[VA_ROTATION_270] = { X1, Y2, X1, Y1, X2, Y1 },
};
 
const unsigned int * const rotation_indices =
g_rotation_indices[i965->rotation_attrib->value];
 
vb[0] = tex_coords[rotation_indices[0]]; /* bottom-right corner */
vb[1] = tex_coords[rotation_indices[1]];
vb[2] = vid_coords[X2];
vb[3] = vid_coords[Y2];
 
vb[4] = tex_coords[rotation_indices[2]]; /* bottom-left corner */
vb[5] = tex_coords[rotation_indices[3]];
vb[6] = vid_coords[X1];
vb[7] = vid_coords[Y2];
 
vb[8] = tex_coords[rotation_indices[4]]; /* top-left corner */
vb[9] = tex_coords[rotation_indices[5]];
vb[10] = vid_coords[X1];
vb[11] = vid_coords[Y1];
 
dri_bo_subdata(i965->render_state.vb.vertex_buffer, 0, sizeof(vb), vb);
}
 
static void
i965_subpic_render_upload_vertex(VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *output_rect)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(surface);
unsigned int index = obj_surface->subpic_render_idx;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic[index]);
float tex_coords[4], vid_coords[4];
VARectangle dst_rect;
 
if (obj_subpic->flags & VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD)
dst_rect = obj_subpic->dst_rect;
else {
const float sx = (float)output_rect->width / obj_surface->orig_width;
const float sy = (float)output_rect->height / obj_surface->orig_height;
dst_rect.x = output_rect->x + sx * obj_subpic->dst_rect.x;
dst_rect.y = output_rect->y + sy * obj_subpic->dst_rect.y;
dst_rect.width = sx * obj_subpic->dst_rect.width;
dst_rect.height = sy * obj_subpic->dst_rect.height;
}
 
tex_coords[0] = (float)obj_subpic->src_rect.x / obj_subpic->width;
tex_coords[1] = (float)obj_subpic->src_rect.y / obj_subpic->height;
tex_coords[2] = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / obj_subpic->width;
tex_coords[3] = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / obj_subpic->height;
 
vid_coords[0] = dst_rect.x;
vid_coords[1] = dst_rect.y;
vid_coords[2] = (float)(dst_rect.x + dst_rect.width);
vid_coords[3] = (float)(dst_rect.y + dst_rect.height);
 
i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
}
 
static void
i965_render_upload_vertex(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct intel_region *dest_region = render_state->draw_region;
struct object_surface *obj_surface;
float tex_coords[4], vid_coords[4];
int width, height;
 
obj_surface = SURFACE(surface);
assert(surface);
 
width = obj_surface->orig_width;
height = obj_surface->orig_height;
 
tex_coords[0] = (float)src_rect->x / width;
tex_coords[1] = (float)src_rect->y / height;
tex_coords[2] = (float)(src_rect->x + src_rect->width) / width;
tex_coords[3] = (float)(src_rect->y + src_rect->height) / height;
 
vid_coords[0] = dest_region->x + dst_rect->x;
vid_coords[1] = dest_region->y + dst_rect->y;
vid_coords[2] = vid_coords[0] + dst_rect->width;
vid_coords[3] = vid_coords[1] + dst_rect->height;
 
i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
}
 
static void
i965_render_upload_constants(VADriverContextP ctx,
VASurfaceID surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
unsigned short *constant_buffer;
struct object_surface *obj_surface = SURFACE(surface);
 
dri_bo_map(render_state->curbe.bo, 1);
assert(render_state->curbe.bo->virtual);
constant_buffer = render_state->curbe.bo->virtual;
 
if (obj_surface->subsampling == SUBSAMPLE_YUV400) {
assert(obj_surface->fourcc == VA_FOURCC('I', 'M', 'C', '1') ||
obj_surface->fourcc == VA_FOURCC('I', 'M', 'C', '3'));
*constant_buffer = 2;
} else {
if (obj_surface->fourcc == VA_FOURCC('N', 'V', '1', '2'))
*constant_buffer = 1;
else
*constant_buffer = 0;
}
 
dri_bo_unmap(render_state->curbe.bo);
}
 
static void
i965_subpic_render_upload_constants(VADriverContextP ctx,
VASurfaceID surface)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
float *constant_buffer;
float global_alpha = 1.0;
struct object_surface *obj_surface = SURFACE(surface);
unsigned int index = obj_surface->subpic_render_idx;
 
if(obj_surface->subpic[index] != VA_INVALID_ID){
struct object_subpic *obj_subpic= SUBPIC(obj_surface->subpic[index]);
if(obj_subpic->flags & VA_SUBPICTURE_GLOBAL_ALPHA){
global_alpha = obj_subpic->global_alpha;
}
}
 
dri_bo_map(render_state->curbe.bo, 1);
 
assert(render_state->curbe.bo->virtual);
constant_buffer = render_state->curbe.bo->virtual;
*constant_buffer = global_alpha;
 
dri_bo_unmap(render_state->curbe.bo);
}
static void
i965_surface_render_state_setup(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
i965_render_dest_surface_state(ctx, 0);
i965_render_src_surfaces_state(ctx, surface, flags);
i965_render_sampler(ctx);
i965_render_wm_unit(ctx);
i965_render_cc_viewport(ctx);
i965_render_cc_unit(ctx);
i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
i965_render_upload_constants(ctx, surface);
}
 
static void
i965_subpic_render_state_setup(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
i965_render_dest_surface_state(ctx, 0);
i965_subpic_render_src_surfaces_state(ctx, surface);
i965_render_sampler(ctx);
i965_subpic_render_wm_unit(ctx);
i965_render_cc_viewport(ctx);
i965_subpic_render_cc_unit(ctx);
i965_subpic_render_upload_constants(ctx, surface);
i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
 
 
static void
i965_render_pipeline_select(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_state_sip(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_STATE_SIP | 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_state_base_address(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
} else {
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
ADVANCE_BATCH(batch);
}
}
 
static void
i965_render_binding_table_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, CMD_BINDING_TABLE_POINTERS | 4);
OUT_BATCH(batch, 0); /* vs */
OUT_BATCH(batch, 0); /* gs */
OUT_BATCH(batch, 0); /* clip */
OUT_BATCH(batch, 0); /* sf */
OUT_BATCH(batch, BINDING_TABLE_OFFSET);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_constant_color(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 5);
OUT_BATCH(batch, CMD_CONSTANT_COLOR | 3);
OUT_BATCH(batch, float_to_uint(1.0));
OUT_BATCH(batch, float_to_uint(0.0));
OUT_BATCH(batch, float_to_uint(1.0));
OUT_BATCH(batch, float_to_uint(1.0));
ADVANCE_BATCH(batch);
}
 
static void
i965_render_pipelined_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, CMD_PIPELINED_POINTERS | 5);
OUT_RELOC(batch, render_state->vs.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BATCH(batch, 0); /* disable GS */
OUT_BATCH(batch, 0); /* disable CLIP */
OUT_RELOC(batch, render_state->sf.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_RELOC(batch, render_state->wm.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_RELOC(batch, render_state->cc.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_urb_layout(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
int urb_vs_start, urb_vs_size;
int urb_gs_start, urb_gs_size;
int urb_clip_start, urb_clip_size;
int urb_sf_start, urb_sf_size;
int urb_cs_start, urb_cs_size;
 
urb_vs_start = 0;
urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE;
urb_gs_start = urb_vs_start + urb_vs_size;
urb_gs_size = URB_GS_ENTRIES * URB_GS_ENTRY_SIZE;
urb_clip_start = urb_gs_start + urb_gs_size;
urb_clip_size = URB_CLIP_ENTRIES * URB_CLIP_ENTRY_SIZE;
urb_sf_start = urb_clip_start + urb_clip_size;
urb_sf_size = URB_SF_ENTRIES * URB_SF_ENTRY_SIZE;
urb_cs_start = urb_sf_start + urb_sf_size;
urb_cs_size = URB_CS_ENTRIES * URB_CS_ENTRY_SIZE;
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch,
CMD_URB_FENCE |
UF0_CS_REALLOC |
UF0_SF_REALLOC |
UF0_CLIP_REALLOC |
UF0_GS_REALLOC |
UF0_VS_REALLOC |
1);
OUT_BATCH(batch,
((urb_clip_start + urb_clip_size) << UF1_CLIP_FENCE_SHIFT) |
((urb_gs_start + urb_gs_size) << UF1_GS_FENCE_SHIFT) |
((urb_vs_start + urb_vs_size) << UF1_VS_FENCE_SHIFT));
OUT_BATCH(batch,
((urb_cs_start + urb_cs_size) << UF2_CS_FENCE_SHIFT) |
((urb_sf_start + urb_sf_size) << UF2_SF_FENCE_SHIFT));
ADVANCE_BATCH(batch);
}
 
static void
i965_render_cs_urb_layout(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
OUT_BATCH(batch,
((URB_CS_ENTRY_SIZE - 1) << 4) | /* URB Entry Allocation Size */
(URB_CS_ENTRIES << 0)); /* Number of URB Entries */
ADVANCE_BATCH(batch);
}
 
static void
i965_render_constant_buffer(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
OUT_RELOC(batch, render_state->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
URB_CS_ENTRY_SIZE - 1);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_drawing_rectangle(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
struct intel_region *dest_region = render_state->draw_region;
 
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, CMD_DRAWING_RECTANGLE | 2);
OUT_BATCH(batch, 0x00000000);
OUT_BATCH(batch, (dest_region->width - 1) | (dest_region->height - 1) << 16);
OUT_BATCH(batch, 0x00000000);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_vertex_elements(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
if (IS_IRONLAKE(i965->intel.device_id)) {
BEGIN_BATCH(batch, 5);
OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | 3);
/* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(0 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
/* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(8 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
ADVANCE_BATCH(batch);
} else {
BEGIN_BATCH(batch, 5);
OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | 3);
/* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(0 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
(0 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
/* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(8 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
(4 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
ADVANCE_BATCH(batch);
}
}
 
static void
i965_render_upload_image_palette(
VADriverContextP ctx,
VAImageID image_id,
unsigned int alpha
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
unsigned int i;
 
struct object_image *obj_image = IMAGE(image_id);
assert(obj_image);
 
if (obj_image->image.num_palette_entries == 0)
return;
 
BEGIN_BATCH(batch, 1 + obj_image->image.num_palette_entries);
OUT_BATCH(batch, CMD_SAMPLER_PALETTE_LOAD | (obj_image->image.num_palette_entries - 1));
/*fill palette*/
//int32_t out[16]; //0-23:color 23-31:alpha
for (i = 0; i < obj_image->image.num_palette_entries; i++)
OUT_BATCH(batch, (alpha << 24) | obj_image->palette[i]);
ADVANCE_BATCH(batch);
}
 
static void
i965_render_startup(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 11);
OUT_BATCH(batch, CMD_VERTEX_BUFFERS | 3);
OUT_BATCH(batch,
(0 << VB0_BUFFER_INDEX_SHIFT) |
VB0_VERTEXDATA |
((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
 
if (IS_IRONLAKE(i965->intel.device_id))
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
else
OUT_BATCH(batch, 3);
 
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch,
CMD_3DPRIMITIVE |
_3DPRIMITIVE_VERTEX_SEQUENTIAL |
(_3DPRIM_RECTLIST << _3DPRIMITIVE_TOPOLOGY_SHIFT) |
(0 << 9) |
4);
OUT_BATCH(batch, 3); /* vertex count per instance */
OUT_BATCH(batch, 0); /* start vertex offset */
OUT_BATCH(batch, 1); /* single instance */
OUT_BATCH(batch, 0); /* start instance location */
OUT_BATCH(batch, 0); /* index buffer offset, ignored */
ADVANCE_BATCH(batch);
}
 
static void
i965_clear_dest_region(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
struct intel_region *dest_region = render_state->draw_region;
unsigned int blt_cmd, br13;
int pitch;
 
blt_cmd = XY_COLOR_BLT_CMD;
br13 = 0xf0 << 16;
pitch = dest_region->pitch;
 
if (dest_region->cpp == 4) {
br13 |= BR13_8888;
blt_cmd |= (XY_COLOR_BLT_WRITE_RGB | XY_COLOR_BLT_WRITE_ALPHA);
} else {
assert(dest_region->cpp == 2);
br13 |= BR13_565;
}
 
if (dest_region->tiling != I915_TILING_NONE) {
blt_cmd |= XY_COLOR_BLT_DST_TILED;
pitch /= 4;
}
 
br13 |= pitch;
 
if (IS_GEN6(i965->intel.device_id) ||
IS_GEN7(i965->intel.device_id)) {
intel_batchbuffer_start_atomic_blt(batch, 24);
BEGIN_BLT_BATCH(batch, 6);
} else {
intel_batchbuffer_start_atomic(batch, 24);
BEGIN_BATCH(batch, 6);
}
 
OUT_BATCH(batch, blt_cmd);
OUT_BATCH(batch, br13);
OUT_BATCH(batch, (dest_region->y << 16) | (dest_region->x));
OUT_BATCH(batch, ((dest_region->y + dest_region->height) << 16) |
(dest_region->x + dest_region->width));
OUT_RELOC(batch, dest_region->bo,
I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
0);
OUT_BATCH(batch, 0x0);
ADVANCE_BATCH(batch);
intel_batchbuffer_end_atomic(batch);
}
 
static void
i965_surface_render_pipeline_setup(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
i965_clear_dest_region(ctx);
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
i965_render_pipeline_select(ctx);
i965_render_state_sip(ctx);
i965_render_state_base_address(ctx);
i965_render_binding_table_pointers(ctx);
i965_render_constant_color(ctx);
i965_render_pipelined_pointers(ctx);
i965_render_urb_layout(ctx);
i965_render_cs_urb_layout(ctx);
i965_render_constant_buffer(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
i965_render_startup(ctx);
intel_batchbuffer_end_atomic(batch);
}
 
static void
i965_subpic_render_pipeline_setup(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
i965_render_pipeline_select(ctx);
i965_render_state_sip(ctx);
i965_render_state_base_address(ctx);
i965_render_binding_table_pointers(ctx);
i965_render_constant_color(ctx);
i965_render_pipelined_pointers(ctx);
i965_render_urb_layout(ctx);
i965_render_cs_urb_layout(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
i965_render_startup(ctx);
intel_batchbuffer_end_atomic(batch);
}
 
 
static void
i965_render_initialize(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
dri_bo *bo;
 
/* VERTEX BUFFER */
dri_bo_unreference(render_state->vb.vertex_buffer);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vertex buffer",
4096,
4096);
assert(bo);
render_state->vb.vertex_buffer = bo;
 
/* VS */
dri_bo_unreference(render_state->vs.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vs state",
sizeof(struct i965_vs_unit_state),
64);
assert(bo);
render_state->vs.state = bo;
 
/* GS */
/* CLIP */
/* SF */
dri_bo_unreference(render_state->sf.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sf state",
sizeof(struct i965_sf_unit_state),
64);
assert(bo);
render_state->sf.state = bo;
 
/* WM */
dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
4096);
assert(bo);
render_state->wm.surface_state_binding_table_bo = bo;
 
dri_bo_unreference(render_state->wm.sampler);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler state",
MAX_SAMPLERS * sizeof(struct i965_sampler_state),
64);
assert(bo);
render_state->wm.sampler = bo;
render_state->wm.sampler_count = 0;
 
dri_bo_unreference(render_state->wm.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"wm state",
sizeof(struct i965_wm_unit_state),
64);
assert(bo);
render_state->wm.state = bo;
 
/* COLOR CALCULATOR */
dri_bo_unreference(render_state->cc.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"color calc state",
sizeof(struct i965_cc_unit_state),
64);
assert(bo);
render_state->cc.state = bo;
 
dri_bo_unreference(render_state->cc.viewport);
bo = dri_bo_alloc(i965->intel.bufmgr,
"cc viewport",
sizeof(struct i965_cc_viewport),
64);
assert(bo);
render_state->cc.viewport = bo;
}
 
static void
i965_render_put_surface(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
i965_render_initialize(ctx);
i965_surface_render_state_setup(ctx, surface, src_rect, dst_rect, flags);
i965_surface_render_pipeline_setup(ctx);
intel_batchbuffer_flush(batch);
}
 
static void
i965_render_put_subpicture(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct object_surface *obj_surface = SURFACE(surface);
unsigned int index = obj_surface->subpic_render_idx;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic[index]);
 
assert(obj_subpic);
 
i965_render_initialize(ctx);
i965_subpic_render_state_setup(ctx, surface, src_rect, dst_rect);
i965_subpic_render_pipeline_setup(ctx);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
}
 
/*
* for GEN6+
*/
static void
gen6_render_initialize(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
dri_bo *bo;
 
/* VERTEX BUFFER */
dri_bo_unreference(render_state->vb.vertex_buffer);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vertex buffer",
4096,
4096);
assert(bo);
render_state->vb.vertex_buffer = bo;
 
/* WM */
dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
4096);
assert(bo);
render_state->wm.surface_state_binding_table_bo = bo;
 
dri_bo_unreference(render_state->wm.sampler);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler state",
MAX_SAMPLERS * sizeof(struct i965_sampler_state),
4096);
assert(bo);
render_state->wm.sampler = bo;
render_state->wm.sampler_count = 0;
 
/* COLOR CALCULATOR */
dri_bo_unreference(render_state->cc.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"color calc state",
sizeof(struct gen6_color_calc_state),
4096);
assert(bo);
render_state->cc.state = bo;
 
/* CC VIEWPORT */
dri_bo_unreference(render_state->cc.viewport);
bo = dri_bo_alloc(i965->intel.bufmgr,
"cc viewport",
sizeof(struct i965_cc_viewport),
4096);
assert(bo);
render_state->cc.viewport = bo;
 
/* BLEND STATE */
dri_bo_unreference(render_state->cc.blend);
bo = dri_bo_alloc(i965->intel.bufmgr,
"blend state",
sizeof(struct gen6_blend_state),
4096);
assert(bo);
render_state->cc.blend = bo;
 
/* DEPTH & STENCIL STATE */
dri_bo_unreference(render_state->cc.depth_stencil);
bo = dri_bo_alloc(i965->intel.bufmgr,
"depth & stencil state",
sizeof(struct gen6_depth_stencil_state),
4096);
assert(bo);
render_state->cc.depth_stencil = bo;
}
 
static void
gen6_render_color_calc_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_color_calc_state *color_calc_state;
dri_bo_map(render_state->cc.state, 1);
assert(render_state->cc.state->virtual);
color_calc_state = render_state->cc.state->virtual;
memset(color_calc_state, 0, sizeof(*color_calc_state));
color_calc_state->constant_r = 1.0;
color_calc_state->constant_g = 0.0;
color_calc_state->constant_b = 1.0;
color_calc_state->constant_a = 1.0;
dri_bo_unmap(render_state->cc.state);
}
 
static void
gen6_render_blend_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_blend_state *blend_state;
dri_bo_map(render_state->cc.blend, 1);
assert(render_state->cc.blend->virtual);
blend_state = render_state->cc.blend->virtual;
memset(blend_state, 0, sizeof(*blend_state));
blend_state->blend1.logic_op_enable = 1;
blend_state->blend1.logic_op_func = 0xc;
dri_bo_unmap(render_state->cc.blend);
}
 
static void
gen6_render_depth_stencil_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_depth_stencil_state *depth_stencil_state;
dri_bo_map(render_state->cc.depth_stencil, 1);
assert(render_state->cc.depth_stencil->virtual);
depth_stencil_state = render_state->cc.depth_stencil->virtual;
memset(depth_stencil_state, 0, sizeof(*depth_stencil_state));
dri_bo_unmap(render_state->cc.depth_stencil);
}
 
static void
gen6_render_setup_states(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
i965_render_dest_surface_state(ctx, 0);
i965_render_src_surfaces_state(ctx, surface, flags);
i965_render_sampler(ctx);
i965_render_cc_viewport(ctx);
gen6_render_color_calc_state(ctx);
gen6_render_blend_state(ctx);
gen6_render_depth_stencil_state(ctx);
i965_render_upload_constants(ctx, surface);
i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
}
 
static void
gen6_emit_invarient_states(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
 
OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE | (3 - 2));
OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
OUT_BATCH(batch, 1);
 
/* Set system instruction pointer */
OUT_BATCH(batch, CMD_STATE_SIP | 0);
OUT_BATCH(batch, 0);
}
 
static void
gen6_emit_state_base_address(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
}
 
static void
gen6_emit_viewport_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, GEN6_3DSTATE_VIEWPORT_STATE_POINTERS |
GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC |
(4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_RELOC(batch, render_state->cc.viewport, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
}
 
static void
gen6_emit_urb(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, GEN6_3DSTATE_URB | (3 - 2));
OUT_BATCH(batch, ((1 - 1) << GEN6_3DSTATE_URB_VS_SIZE_SHIFT) |
(24 << GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT)); /* at least 24 on GEN6 */
OUT_BATCH(batch, (0 << GEN6_3DSTATE_URB_GS_SIZE_SHIFT) |
(0 << GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT)); /* no GS thread */
}
 
static void
gen6_emit_cc_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (4 - 2));
OUT_RELOC(batch, render_state->cc.blend, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
OUT_RELOC(batch, render_state->cc.depth_stencil, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
OUT_RELOC(batch, render_state->cc.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
}
 
static void
gen6_emit_sampler_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, GEN6_3DSTATE_SAMPLER_STATE_POINTERS |
GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS |
(4 - 2));
OUT_BATCH(batch, 0); /* VS */
OUT_BATCH(batch, 0); /* GS */
OUT_RELOC(batch,render_state->wm.sampler, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
}
 
static void
gen6_emit_binding_table(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* Binding table pointers */
OUT_BATCH(batch, CMD_BINDING_TABLE_POINTERS |
GEN6_BINDING_TABLE_MODIFY_PS |
(4 - 2));
OUT_BATCH(batch, 0); /* vs */
OUT_BATCH(batch, 0); /* gs */
/* Only the PS uses the binding table */
OUT_BATCH(batch, BINDING_TABLE_OFFSET);
}
 
static void
gen6_emit_depth_buffer_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, CMD_DEPTH_BUFFER | (7 - 2));
OUT_BATCH(batch, (I965_SURFACE_NULL << CMD_DEPTH_BUFFER_TYPE_SHIFT) |
(I965_DEPTHFORMAT_D32_FLOAT << CMD_DEPTH_BUFFER_FORMAT_SHIFT));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch, CMD_CLEAR_PARAMS | (2 - 2));
OUT_BATCH(batch, 0);
}
 
static void
gen6_emit_drawing_rectangle(VADriverContextP ctx)
{
i965_render_drawing_rectangle(ctx);
}
 
static void
gen6_emit_vs_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* disable VS constant buffer */
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (5 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_3DSTATE_VS | (6 - 2));
OUT_BATCH(batch, 0); /* without VS kernel */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
}
 
static void
gen6_emit_gs_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* disable GS constant buffer */
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (5 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_3DSTATE_GS | (7 - 2));
OUT_BATCH(batch, 0); /* without GS kernel */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
}
 
static void
gen6_emit_clip_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
OUT_BATCH(batch, 0);
}
 
static void
gen6_emit_sf_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, GEN6_3DSTATE_SF | (20 - 2));
OUT_BATCH(batch, (1 << GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT) |
(1 << GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT) |
(0 << GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_3DSTATE_SF_CULL_NONE);
OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT); /* DW4 */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* DW9 */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* DW14 */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* DW19 */
}
 
static void
gen6_emit_wm_state(VADriverContextP ctx, int kernel)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS |
GEN6_3DSTATE_CONSTANT_BUFFER_0_ENABLE |
(5 - 2));
OUT_RELOC(batch,
render_state->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch, GEN6_3DSTATE_WM | (9 - 2));
OUT_RELOC(batch, render_state->render_kernels[kernel].bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BATCH(batch, (1 << GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF) |
(5 << GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, (6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT)); /* DW4 */
OUT_BATCH(batch, ((render_state->max_wm_threads - 1) << GEN6_3DSTATE_WM_MAX_THREADS_SHIFT) |
GEN6_3DSTATE_WM_DISPATCH_ENABLE |
GEN6_3DSTATE_WM_16_DISPATCH_ENABLE);
OUT_BATCH(batch, (1 << GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT) |
GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
}
 
static void
gen6_emit_vertex_element_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* Set up our vertex elements, sourced from the single vertex buffer. */
OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (5 - 2));
/* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
GEN6_VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(0 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
/* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
GEN6_VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(8 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
}
 
static void
gen6_emit_vertices(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 11);
OUT_BATCH(batch, CMD_VERTEX_BUFFERS | 3);
OUT_BATCH(batch,
(0 << GEN6_VB0_BUFFER_INDEX_SHIFT) |
GEN6_VB0_VERTEXDATA |
((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
OUT_BATCH(batch, 0);
 
OUT_BATCH(batch,
CMD_3DPRIMITIVE |
_3DPRIMITIVE_VERTEX_SEQUENTIAL |
(_3DPRIM_RECTLIST << _3DPRIMITIVE_TOPOLOGY_SHIFT) |
(0 << 9) |
4);
OUT_BATCH(batch, 3); /* vertex count per instance */
OUT_BATCH(batch, 0); /* start vertex offset */
OUT_BATCH(batch, 1); /* single instance */
OUT_BATCH(batch, 0); /* start instance location */
OUT_BATCH(batch, 0); /* index buffer offset, ignored */
ADVANCE_BATCH(batch);
}
 
static void
gen6_render_emit_states(VADriverContextP ctx, int kernel)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen6_emit_invarient_states(ctx);
gen6_emit_state_base_address(ctx);
gen6_emit_viewport_state_pointers(ctx);
gen6_emit_urb(ctx);
gen6_emit_cc_state_pointers(ctx);
gen6_emit_sampler_state_pointers(ctx);
gen6_emit_vs_state(ctx);
gen6_emit_gs_state(ctx);
gen6_emit_clip_state(ctx);
gen6_emit_sf_state(ctx);
gen6_emit_wm_state(ctx, kernel);
gen6_emit_binding_table(ctx);
gen6_emit_depth_buffer_state(ctx);
gen6_emit_drawing_rectangle(ctx);
gen6_emit_vertex_element_state(ctx);
gen6_emit_vertices(ctx);
intel_batchbuffer_end_atomic(batch);
}
 
static void
gen6_render_put_surface(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
gen6_render_initialize(ctx);
gen6_render_setup_states(ctx, surface, src_rect, dst_rect, flags);
i965_clear_dest_region(ctx);
gen6_render_emit_states(ctx, PS_KERNEL);
intel_batchbuffer_flush(batch);
}
 
static void
gen6_subpicture_render_blend_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_blend_state *blend_state;
 
dri_bo_unmap(render_state->cc.state);
dri_bo_map(render_state->cc.blend, 1);
assert(render_state->cc.blend->virtual);
blend_state = render_state->cc.blend->virtual;
memset(blend_state, 0, sizeof(*blend_state));
blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
blend_state->blend0.source_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
blend_state->blend0.blend_func = I965_BLENDFUNCTION_ADD;
blend_state->blend0.blend_enable = 1;
blend_state->blend1.post_blend_clamp_enable = 1;
blend_state->blend1.pre_blend_clamp_enable = 1;
blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
dri_bo_unmap(render_state->cc.blend);
}
 
static void
gen6_subpicture_render_setup_states(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
i965_render_dest_surface_state(ctx, 0);
i965_subpic_render_src_surfaces_state(ctx, surface);
i965_render_sampler(ctx);
i965_render_cc_viewport(ctx);
gen6_render_color_calc_state(ctx);
gen6_subpicture_render_blend_state(ctx);
gen6_render_depth_stencil_state(ctx);
i965_subpic_render_upload_constants(ctx, surface);
i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
 
static void
gen6_render_put_subpicture(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct object_surface *obj_surface = SURFACE(surface);
unsigned int index = obj_surface->subpic_render_idx;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic[index]);
 
assert(obj_subpic);
gen6_render_initialize(ctx);
gen6_subpicture_render_setup_states(ctx, surface, src_rect, dst_rect);
gen6_render_emit_states(ctx, PS_SUBPIC_KERNEL);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
}
 
/*
* for GEN7
*/
static void
gen7_render_initialize(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
dri_bo *bo;
 
/* VERTEX BUFFER */
dri_bo_unreference(render_state->vb.vertex_buffer);
bo = dri_bo_alloc(i965->intel.bufmgr,
"vertex buffer",
4096,
4096);
assert(bo);
render_state->vb.vertex_buffer = bo;
 
/* WM */
dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
bo = dri_bo_alloc(i965->intel.bufmgr,
"surface state & binding table",
(SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
4096);
assert(bo);
render_state->wm.surface_state_binding_table_bo = bo;
 
dri_bo_unreference(render_state->wm.sampler);
bo = dri_bo_alloc(i965->intel.bufmgr,
"sampler state",
MAX_SAMPLERS * sizeof(struct gen7_sampler_state),
4096);
assert(bo);
render_state->wm.sampler = bo;
render_state->wm.sampler_count = 0;
 
/* COLOR CALCULATOR */
dri_bo_unreference(render_state->cc.state);
bo = dri_bo_alloc(i965->intel.bufmgr,
"color calc state",
sizeof(struct gen6_color_calc_state),
4096);
assert(bo);
render_state->cc.state = bo;
 
/* CC VIEWPORT */
dri_bo_unreference(render_state->cc.viewport);
bo = dri_bo_alloc(i965->intel.bufmgr,
"cc viewport",
sizeof(struct i965_cc_viewport),
4096);
assert(bo);
render_state->cc.viewport = bo;
 
/* BLEND STATE */
dri_bo_unreference(render_state->cc.blend);
bo = dri_bo_alloc(i965->intel.bufmgr,
"blend state",
sizeof(struct gen6_blend_state),
4096);
assert(bo);
render_state->cc.blend = bo;
 
/* DEPTH & STENCIL STATE */
dri_bo_unreference(render_state->cc.depth_stencil);
bo = dri_bo_alloc(i965->intel.bufmgr,
"depth & stencil state",
sizeof(struct gen6_depth_stencil_state),
4096);
assert(bo);
render_state->cc.depth_stencil = bo;
}
 
static void
gen7_render_color_calc_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_color_calc_state *color_calc_state;
dri_bo_map(render_state->cc.state, 1);
assert(render_state->cc.state->virtual);
color_calc_state = render_state->cc.state->virtual;
memset(color_calc_state, 0, sizeof(*color_calc_state));
color_calc_state->constant_r = 1.0;
color_calc_state->constant_g = 0.0;
color_calc_state->constant_b = 1.0;
color_calc_state->constant_a = 1.0;
dri_bo_unmap(render_state->cc.state);
}
 
static void
gen7_render_blend_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_blend_state *blend_state;
dri_bo_map(render_state->cc.blend, 1);
assert(render_state->cc.blend->virtual);
blend_state = render_state->cc.blend->virtual;
memset(blend_state, 0, sizeof(*blend_state));
blend_state->blend1.logic_op_enable = 1;
blend_state->blend1.logic_op_func = 0xc;
blend_state->blend1.pre_blend_clamp_enable = 1;
dri_bo_unmap(render_state->cc.blend);
}
 
static void
gen7_render_depth_stencil_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_depth_stencil_state *depth_stencil_state;
dri_bo_map(render_state->cc.depth_stencil, 1);
assert(render_state->cc.depth_stencil->virtual);
depth_stencil_state = render_state->cc.depth_stencil->virtual;
memset(depth_stencil_state, 0, sizeof(*depth_stencil_state));
dri_bo_unmap(render_state->cc.depth_stencil);
}
 
static void
gen7_render_sampler(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen7_sampler_state *sampler_state;
int i;
assert(render_state->wm.sampler_count > 0);
assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
 
dri_bo_map(render_state->wm.sampler, 1);
assert(render_state->wm.sampler->virtual);
sampler_state = render_state->wm.sampler->virtual;
for (i = 0; i < render_state->wm.sampler_count; i++) {
memset(sampler_state, 0, sizeof(*sampler_state));
sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
sampler_state->ss3.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state->ss3.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state->ss3.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
sampler_state++;
}
 
dri_bo_unmap(render_state->wm.sampler);
}
 
static void
gen7_render_setup_states(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
i965_render_dest_surface_state(ctx, 0);
i965_render_src_surfaces_state(ctx, surface, flags);
gen7_render_sampler(ctx);
i965_render_cc_viewport(ctx);
gen7_render_color_calc_state(ctx);
gen7_render_blend_state(ctx);
gen7_render_depth_stencil_state(ctx);
i965_render_upload_constants(ctx, surface);
i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
}
 
static void
gen7_emit_invarient_states(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE | (4 - 2));
OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
OUT_BATCH(batch, 1);
ADVANCE_BATCH(batch);
 
/* Set system instruction pointer */
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, CMD_STATE_SIP | 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_state_base_address(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction base address */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
}
 
static void
gen7_emit_viewport_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC | (2 - 2));
OUT_RELOC(batch,
render_state->cc.viewport,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL | (2 - 2));
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
/*
* URB layout on GEN7
* ----------------------------------------
* | PS Push Constants (8KB) | VS entries |
* ----------------------------------------
*/
static void
gen7_emit_urb(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
unsigned int num_urb_entries = 32;
 
if (IS_HASWELL(i965->intel.device_id))
num_urb_entries = 64;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS | (2 - 2));
OUT_BATCH(batch, 8); /* in 1KBs */
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_URB_VS | (2 - 2));
OUT_BATCH(batch,
(num_urb_entries << GEN7_URB_ENTRY_NUMBER_SHIFT) |
(2 - 1) << GEN7_URB_ENTRY_SIZE_SHIFT |
(1 << GEN7_URB_STARTING_ADDRESS_SHIFT));
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_URB_GS | (2 - 2));
OUT_BATCH(batch,
(0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
(1 << GEN7_URB_STARTING_ADDRESS_SHIFT));
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_URB_HS | (2 - 2));
OUT_BATCH(batch,
(0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
(2 << GEN7_URB_STARTING_ADDRESS_SHIFT));
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_URB_DS | (2 - 2));
OUT_BATCH(batch,
(0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
(2 << GEN7_URB_STARTING_ADDRESS_SHIFT));
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_cc_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (2 - 2));
OUT_RELOC(batch,
render_state->cc.state,
I915_GEM_DOMAIN_INSTRUCTION, 0,
1);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_BLEND_STATE_POINTERS | (2 - 2));
OUT_RELOC(batch,
render_state->cc.blend,
I915_GEM_DOMAIN_INSTRUCTION, 0,
1);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS | (2 - 2));
OUT_RELOC(batch,
render_state->cc.depth_stencil,
I915_GEM_DOMAIN_INSTRUCTION, 0,
1);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_sampler_state_pointers(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS | (2 - 2));
OUT_RELOC(batch,
render_state->wm.sampler,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_binding_table(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS | (2 - 2));
OUT_BATCH(batch, BINDING_TABLE_OFFSET);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_depth_buffer_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_BUFFER | (7 - 2));
OUT_BATCH(batch,
(I965_DEPTHFORMAT_D32_FLOAT << 18) |
(I965_SURFACE_NULL << 29));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, GEN7_3DSTATE_CLEAR_PARAMS | (3 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_drawing_rectangle(VADriverContextP ctx)
{
i965_render_drawing_rectangle(ctx);
}
 
static void
gen7_emit_vs_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* disable VS constant buffer */
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_3DSTATE_VS | (6 - 2));
OUT_BATCH(batch, 0); /* without VS kernel */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
}
 
static void
gen7_emit_bypass_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* bypass GS */
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN6_3DSTATE_GS | (7 - 2));
OUT_BATCH(batch, 0); /* without GS kernel */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS | (2 - 2));
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
/* disable HS */
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_HS | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN7_3DSTATE_HS | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS | (2 - 2));
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
/* Disable TE */
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, GEN7_3DSTATE_TE | (4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
/* Disable DS */
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_DS | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 6);
OUT_BATCH(batch, GEN7_3DSTATE_DS | (6 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 2);
OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS | (2 - 2));
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
/* Disable STREAMOUT */
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, GEN7_3DSTATE_STREAMOUT | (3 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_clip_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* pass-through */
OUT_BATCH(batch, 0);
}
 
static void
gen7_emit_sf_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
BEGIN_BATCH(batch, 14);
OUT_BATCH(batch, GEN7_3DSTATE_SBE | (14 - 2));
OUT_BATCH(batch,
(1 << GEN7_SBE_NUM_OUTPUTS_SHIFT) |
(1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT) |
(0 << GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* DW4 */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0); /* DW9 */
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN6_3DSTATE_SF | (7 - 2));
OUT_BATCH(batch, 0);
OUT_BATCH(batch, GEN6_3DSTATE_SF_CULL_NONE);
OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_wm_state(VADriverContextP ctx, int kernel)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
unsigned int max_threads_shift = GEN7_PS_MAX_THREADS_SHIFT_IVB;
unsigned int num_samples = 0;
 
if (IS_HASWELL(i965->intel.device_id)) {
max_threads_shift = GEN7_PS_MAX_THREADS_SHIFT_HSW;
num_samples = 1 << GEN7_PS_SAMPLE_MASK_SHIFT_HSW;
}
 
BEGIN_BATCH(batch, 3);
OUT_BATCH(batch, GEN6_3DSTATE_WM | (3 - 2));
OUT_BATCH(batch,
GEN7_WM_DISPATCH_ENABLE |
GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS | (7 - 2));
OUT_BATCH(batch, 1);
OUT_BATCH(batch, 0);
OUT_RELOC(batch,
render_state->curbe.bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 8);
OUT_BATCH(batch, GEN7_3DSTATE_PS | (8 - 2));
OUT_RELOC(batch,
render_state->render_kernels[kernel].bo,
I915_GEM_DOMAIN_INSTRUCTION, 0,
0);
OUT_BATCH(batch,
(1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
(5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
OUT_BATCH(batch, 0); /* scratch space base offset */
OUT_BATCH(batch,
((render_state->max_wm_threads - 1) << max_threads_shift) | num_samples |
GEN7_PS_PUSH_CONSTANT_ENABLE |
GEN7_PS_ATTRIBUTE_ENABLE |
GEN7_PS_16_DISPATCH_ENABLE);
OUT_BATCH(batch,
(6 << GEN7_PS_DISPATCH_START_GRF_SHIFT_0));
OUT_BATCH(batch, 0); /* kernel 1 pointer */
OUT_BATCH(batch, 0); /* kernel 2 pointer */
ADVANCE_BATCH(batch);
}
 
static void
gen7_emit_vertex_element_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
/* Set up our vertex elements, sourced from the single vertex buffer. */
OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (5 - 2));
/* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
GEN6_VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(0 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
/* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
GEN6_VE0_VALID |
(I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
(8 << VE0_OFFSET_SHIFT));
OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
(I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
(I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
}
 
static void
gen7_emit_vertices(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct i965_render_state *render_state = &i965->render_state;
 
BEGIN_BATCH(batch, 5);
OUT_BATCH(batch, CMD_VERTEX_BUFFERS | (5 - 2));
OUT_BATCH(batch,
(0 << GEN6_VB0_BUFFER_INDEX_SHIFT) |
GEN6_VB0_VERTEXDATA |
GEN7_VB0_ADDRESS_MODIFYENABLE |
((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
 
BEGIN_BATCH(batch, 7);
OUT_BATCH(batch, CMD_3DPRIMITIVE | (7 - 2));
OUT_BATCH(batch,
_3DPRIM_RECTLIST |
GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL);
OUT_BATCH(batch, 3); /* vertex count per instance */
OUT_BATCH(batch, 0); /* start vertex offset */
OUT_BATCH(batch, 1); /* single instance */
OUT_BATCH(batch, 0); /* start instance location */
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
}
 
static void
gen7_render_emit_states(VADriverContextP ctx, int kernel)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
intel_batchbuffer_start_atomic(batch, 0x1000);
intel_batchbuffer_emit_mi_flush(batch);
gen7_emit_invarient_states(ctx);
gen7_emit_state_base_address(ctx);
gen7_emit_viewport_state_pointers(ctx);
gen7_emit_urb(ctx);
gen7_emit_cc_state_pointers(ctx);
gen7_emit_sampler_state_pointers(ctx);
gen7_emit_bypass_state(ctx);
gen7_emit_vs_state(ctx);
gen7_emit_clip_state(ctx);
gen7_emit_sf_state(ctx);
gen7_emit_wm_state(ctx, kernel);
gen7_emit_binding_table(ctx);
gen7_emit_depth_buffer_state(ctx);
gen7_emit_drawing_rectangle(ctx);
gen7_emit_vertex_element_state(ctx);
gen7_emit_vertices(ctx);
intel_batchbuffer_end_atomic(batch);
}
 
static void
gen7_render_put_surface(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
 
gen7_render_initialize(ctx);
gen7_render_setup_states(ctx, surface, src_rect, dst_rect, flags);
i965_clear_dest_region(ctx);
gen7_render_emit_states(ctx, PS_KERNEL);
intel_batchbuffer_flush(batch);
}
 
static void
gen7_subpicture_render_blend_state(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
struct gen6_blend_state *blend_state;
 
dri_bo_unmap(render_state->cc.state);
dri_bo_map(render_state->cc.blend, 1);
assert(render_state->cc.blend->virtual);
blend_state = render_state->cc.blend->virtual;
memset(blend_state, 0, sizeof(*blend_state));
blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
blend_state->blend0.source_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
blend_state->blend0.blend_func = I965_BLENDFUNCTION_ADD;
blend_state->blend0.blend_enable = 1;
blend_state->blend1.post_blend_clamp_enable = 1;
blend_state->blend1.pre_blend_clamp_enable = 1;
blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
dri_bo_unmap(render_state->cc.blend);
}
 
static void
gen7_subpicture_render_setup_states(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
i965_render_dest_surface_state(ctx, 0);
i965_subpic_render_src_surfaces_state(ctx, surface);
i965_render_sampler(ctx);
i965_render_cc_viewport(ctx);
gen7_render_color_calc_state(ctx);
gen7_subpicture_render_blend_state(ctx);
gen7_render_depth_stencil_state(ctx);
i965_subpic_render_upload_constants(ctx, surface);
i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
 
static void
gen7_render_put_subpicture(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
struct object_surface *obj_surface = SURFACE(surface);
unsigned int index = obj_surface->subpic_render_idx;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic[index]);
 
assert(obj_subpic);
gen7_render_initialize(ctx);
gen7_subpicture_render_setup_states(ctx, surface, src_rect, dst_rect);
gen7_render_emit_states(ctx, PS_SUBPIC_KERNEL);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
}
 
 
/*
* global functions
*/
VAStatus
i965_DestroySurfaces(VADriverContextP ctx,
VASurfaceID *surface_list,
int num_surfaces);
void
intel_render_put_surface(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
int has_done_scaling = 0;
VASurfaceID in_surface_id = surface;
VASurfaceID out_surface_id = i965_post_processing(ctx, surface, src_rect, dst_rect, flags, &has_done_scaling);
 
assert((!has_done_scaling) || (out_surface_id != VA_INVALID_ID));
 
if (out_surface_id != VA_INVALID_ID)
in_surface_id = out_surface_id;
 
if (IS_GEN7(i965->intel.device_id))
gen7_render_put_surface(ctx, in_surface_id, has_done_scaling ? dst_rect : src_rect, dst_rect, flags);
else if (IS_GEN6(i965->intel.device_id))
gen6_render_put_surface(ctx, in_surface_id, has_done_scaling ? dst_rect : src_rect, dst_rect, flags);
else
i965_render_put_surface(ctx, in_surface_id, has_done_scaling ? dst_rect : src_rect, dst_rect, flags);
 
if (in_surface_id != surface)
i965_DestroySurfaces(ctx, &in_surface_id, 1);
}
 
void
intel_render_put_subpicture(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
 
if (IS_GEN7(i965->intel.device_id))
gen7_render_put_subpicture(ctx, surface, src_rect, dst_rect);
else if (IS_GEN6(i965->intel.device_id))
gen6_render_put_subpicture(ctx, surface, src_rect, dst_rect);
else
i965_render_put_subpicture(ctx, surface, src_rect, dst_rect);
}
 
Bool
i965_render_init(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
int i;
 
printf("%s\n", __FUNCTION__);
 
/* kernel */
assert(NUM_RENDER_KERNEL == (sizeof(render_kernels_gen5) /
sizeof(render_kernels_gen5[0])));
assert(NUM_RENDER_KERNEL == (sizeof(render_kernels_gen6) /
sizeof(render_kernels_gen6[0])));
 
if (IS_GEN7(i965->intel.device_id))
memcpy(render_state->render_kernels,
(IS_HASWELL(i965->intel.device_id) ? render_kernels_gen7_haswell : render_kernels_gen7),
sizeof(render_state->render_kernels));
else if (IS_GEN6(i965->intel.device_id))
memcpy(render_state->render_kernels, render_kernels_gen6, sizeof(render_state->render_kernels));
else if (IS_IRONLAKE(i965->intel.device_id))
memcpy(render_state->render_kernels, render_kernels_gen5, sizeof(render_state->render_kernels));
else
memcpy(render_state->render_kernels, render_kernels_gen4, sizeof(render_state->render_kernels));
 
for (i = 0; i < NUM_RENDER_KERNEL; i++) {
struct i965_kernel *kernel = &render_state->render_kernels[i];
 
if (!kernel->size)
continue;
 
kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
kernel->name,
kernel->size, 0x1000);
assert(kernel->bo);
dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
}
 
/* constant buffer */
render_state->curbe.bo = dri_bo_alloc(i965->intel.bufmgr,
"constant buffer",
4096, 64);
assert(render_state->curbe.bo);
 
if (IS_IVB_GT1(i965->intel.device_id) ||
IS_HSW_GT1(i965->intel.device_id)) {
render_state->max_wm_threads = 48;
} else if (IS_IVB_GT2(i965->intel.device_id) ||
IS_HSW_GT2(i965->intel.device_id)) {
render_state->max_wm_threads = 172;
} else if (IS_SNB_GT1(i965->intel.device_id)) {
render_state->max_wm_threads = 40;
} else if (IS_SNB_GT2(i965->intel.device_id)) {
render_state->max_wm_threads = 80;
} else if (IS_IRONLAKE(i965->intel.device_id)) {
render_state->max_wm_threads = 72; /* 12 * 6 */
} else if (IS_G4X(i965->intel.device_id)) {
render_state->max_wm_threads = 50; /* 12 * 5 */
} else {
/* should never get here !!! */
assert(0);
}
 
return True;
}
 
Bool
i965_render_terminate(VADriverContextP ctx)
{
int i;
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
 
dri_bo_unreference(render_state->curbe.bo);
render_state->curbe.bo = NULL;
 
for (i = 0; i < NUM_RENDER_KERNEL; i++) {
struct i965_kernel *kernel = &render_state->render_kernels[i];
dri_bo_unreference(kernel->bo);
kernel->bo = NULL;
}
 
dri_bo_unreference(render_state->vb.vertex_buffer);
render_state->vb.vertex_buffer = NULL;
dri_bo_unreference(render_state->vs.state);
render_state->vs.state = NULL;
dri_bo_unreference(render_state->sf.state);
render_state->sf.state = NULL;
dri_bo_unreference(render_state->wm.sampler);
render_state->wm.sampler = NULL;
dri_bo_unreference(render_state->wm.state);
render_state->wm.state = NULL;
dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
dri_bo_unreference(render_state->cc.viewport);
render_state->cc.viewport = NULL;
dri_bo_unreference(render_state->cc.state);
render_state->cc.state = NULL;
dri_bo_unreference(render_state->cc.blend);
render_state->cc.blend = NULL;
dri_bo_unreference(render_state->cc.depth_stencil);
render_state->cc.depth_stencil = NULL;
 
if (render_state->draw_region) {
dri_bo_unreference(render_state->draw_region->bo);
free(render_state->draw_region);
render_state->draw_region = NULL;
}
 
return True;
}
 
/drivers/video/i965/i965_render.h
0,0 → 1,108
/*
* Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
*
*/
 
#ifndef _I965_RENDER_H_
#define _I965_RENDER_H_
 
#define MAX_SAMPLERS 16
#define MAX_RENDER_SURFACES (MAX_SAMPLERS + 1)
 
#define NUM_RENDER_KERNEL 3
 
#include "i965_post_processing.h"
 
struct i965_kernel;
 
struct i965_render_state
{
struct {
dri_bo *vertex_buffer;
} vb;
 
struct {
dri_bo *state;
} vs;
struct {
dri_bo *state;
} sf;
 
struct {
int sampler_count;
dri_bo *sampler;
dri_bo *state;
dri_bo *surface_state_binding_table_bo;
} wm;
 
struct {
dri_bo *state;
dri_bo *viewport;
dri_bo *blend;
dri_bo *depth_stencil;
} cc;
 
struct {
dri_bo *bo;
} curbe;
 
unsigned short interleaved_uv;
unsigned short inited;
struct intel_region *draw_region;
 
int pp_flag; /* 0: disable, 1: enable */
 
struct i965_kernel render_kernels[3];
int max_wm_threads;
};
 
Bool i965_render_init(VADriverContextP ctx);
Bool i965_render_terminate(VADriverContextP ctx);
 
void
intel_render_put_surface(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect,
unsigned int flags
);
 
void
intel_render_put_subpicture(
VADriverContextP ctx,
VASurfaceID surface,
const VARectangle *src_rect,
const VARectangle *dst_rect
);
 
struct gen7_surface_state;
 
void
gen7_render_set_surface_scs(struct gen7_surface_state *ss);
 
#endif /* _I965_RENDER_H_ */
/drivers/video/i965/i965_structs.h
0,0 → 1,1445
#ifndef _I965_STRUCTS_H_
#define _I965_STRUCTS_H_
 
struct i965_vfe_state
{
struct {
unsigned int per_thread_scratch_space:4;
unsigned int pad3:3;
unsigned int extend_vfe_state_present:1;
unsigned int pad2:2;
unsigned int scratch_base:22;
} vfe0;
 
struct {
unsigned int debug_counter_control:2;
unsigned int children_present:1;
unsigned int vfe_mode:4;
unsigned int pad2:2;
unsigned int num_urb_entries:7;
unsigned int urb_entry_alloc_size:9;
unsigned int max_threads:7;
} vfe1;
 
struct {
unsigned int pad4:4;
unsigned int interface_descriptor_base:28;
} vfe2;
};
 
struct i965_vfe_state_ex
{
struct {
unsigned int pad:8;
unsigned int obj_id:24;
} vfex0;
 
union {
struct {
unsigned int residual_grf_offset:5;
unsigned int pad0:3;
unsigned int weight_grf_offset:5;
unsigned int pad1:3;
unsigned int residual_data_offset:8;
unsigned int sub_field_present_flag:2;
unsigned int residual_data_fix_offset_flag:1;
unsigned int pad2:5;
} avc;
unsigned int vc1;
} vfex1;
 
struct {
unsigned int remap_index_0:4;
unsigned int remap_index_1:4;
unsigned int remap_index_2:4;
unsigned int remap_index_3:4;
unsigned int remap_index_4:4;
unsigned int remap_index_5:4;
unsigned int remap_index_6:4;
unsigned int remap_index_7:4;
}remap_table0;
 
struct {
unsigned int remap_index_8:4;
unsigned int remap_index_9:4;
unsigned int remap_index_10:4;
unsigned int remap_index_11:4;
unsigned int remap_index_12:4;
unsigned int remap_index_13:4;
unsigned int remap_index_14:4;
unsigned int remap_index_15:4;
} remap_table1;
 
struct {
unsigned int mask:8;
unsigned int pad:22;
unsigned int type:1;
unsigned int enable:1;
} scoreboard0;
 
struct {
int delta_x0:4;
int delta_y0:4;
int delta_x1:4;
int delta_y1:4;
int delta_x2:4;
int delta_y2:4;
int delta_x3:4;
int delta_y3:4;
} scoreboard1;
 
struct {
int delta_x4:4;
int delta_y4:4;
int delta_x5:4;
int delta_y5:4;
int delta_x6:4;
int delta_y6:4;
int delta_x7:4;
int delta_y7:4;
} scoreboard2;
 
unsigned int pad;
};
 
struct i965_vld_state
{
struct {
unsigned int pad6:6;
unsigned int scan_order:1;
unsigned int intra_vlc_format:1;
unsigned int quantizer_scale_type:1;
unsigned int concealment_motion_vector:1;
unsigned int frame_predict_frame_dct:1;
unsigned int top_field_first:1;
unsigned int picture_structure:2;
unsigned int intra_dc_precision:2;
unsigned int f_code_0_0:4;
unsigned int f_code_0_1:4;
unsigned int f_code_1_0:4;
unsigned int f_code_1_1:4;
} vld0;
 
struct {
unsigned int pad2:9;
unsigned int picture_coding_type:2;
unsigned int pad:21;
} vld1;
 
struct {
unsigned int index_0:4;
unsigned int index_1:4;
unsigned int index_2:4;
unsigned int index_3:4;
unsigned int index_4:4;
unsigned int index_5:4;
unsigned int index_6:4;
unsigned int index_7:4;
} desc_remap_table0;
 
struct {
unsigned int index_8:4;
unsigned int index_9:4;
unsigned int index_10:4;
unsigned int index_11:4;
unsigned int index_12:4;
unsigned int index_13:4;
unsigned int index_14:4;
unsigned int index_15:4;
} desc_remap_table1;
};
 
struct i965_interface_descriptor
{
struct {
unsigned int grf_reg_blocks:4;
unsigned int pad:2;
unsigned int kernel_start_pointer:26;
} desc0;
 
struct {
unsigned int pad:7;
unsigned int software_exception:1;
unsigned int pad2:3;
unsigned int maskstack_exception:1;
unsigned int pad3:1;
unsigned int illegal_opcode_exception:1;
unsigned int pad4:2;
unsigned int floating_point_mode:1;
unsigned int thread_priority:1;
unsigned int single_program_flow:1;
unsigned int pad5:1;
unsigned int const_urb_entry_read_offset:6;
unsigned int const_urb_entry_read_len:6;
} desc1;
 
struct {
unsigned int pad:2;
unsigned int sampler_count:3;
unsigned int sampler_state_pointer:27;
} desc2;
 
struct {
unsigned int binding_table_entry_count:5;
unsigned int binding_table_pointer:27;
} desc3;
};
 
struct i965_surface_state
{
struct {
unsigned int cube_pos_z:1;
unsigned int cube_neg_z:1;
unsigned int cube_pos_y:1;
unsigned int cube_neg_y:1;
unsigned int cube_pos_x:1;
unsigned int cube_neg_x:1;
unsigned int pad:2;
unsigned int render_cache_read_mode:1;
unsigned int cube_map_corner_mode:1;
unsigned int mipmap_layout_mode:1;
unsigned int vert_line_stride_ofs:1;
unsigned int vert_line_stride:1;
unsigned int color_blend:1;
unsigned int writedisable_blue:1;
unsigned int writedisable_green:1;
unsigned int writedisable_red:1;
unsigned int writedisable_alpha:1;
unsigned int surface_format:9;
unsigned int data_return_format:1;
unsigned int pad0:1;
unsigned int surface_type:3;
} ss0;
 
struct {
unsigned int base_addr;
} ss1;
 
struct {
unsigned int render_target_rotation:2;
unsigned int mip_count:4;
unsigned int width:13;
unsigned int height:13;
} ss2;
 
struct {
unsigned int tile_walk:1;
unsigned int tiled_surface:1;
unsigned int pad:1;
unsigned int pitch:18;
unsigned int depth:11;
} ss3;
 
struct {
unsigned int pad:19;
unsigned int min_array_elt:9;
unsigned int min_lod:4;
} ss4;
 
struct {
unsigned int pad:20;
unsigned int y_offset:4;
unsigned int pad2:1;
unsigned int x_offset:7;
} ss5;
};
 
struct thread0
{
unsigned int pad0:1;
unsigned int grf_reg_count:3;
unsigned int pad1:2;
unsigned int kernel_start_pointer:26;
};
 
struct thread1
{
unsigned int ext_halt_exception_enable:1;
unsigned int sw_exception_enable:1;
unsigned int mask_stack_exception_enable:1;
unsigned int timeout_exception_enable:1;
unsigned int illegal_op_exception_enable:1;
unsigned int pad0:3;
unsigned int depth_coef_urb_read_offset:6; /* WM only */
unsigned int pad1:2;
unsigned int floating_point_mode:1;
unsigned int thread_priority:1;
unsigned int binding_table_entry_count:8;
unsigned int pad3:5;
unsigned int single_program_flow:1;
};
 
struct thread2
{
unsigned int per_thread_scratch_space:4;
unsigned int pad0:6;
unsigned int scratch_space_base_pointer:22;
};
 
struct thread3
{
unsigned int dispatch_grf_start_reg:4;
unsigned int urb_entry_read_offset:6;
unsigned int pad0:1;
unsigned int urb_entry_read_length:6;
unsigned int pad1:1;
unsigned int const_urb_entry_read_offset:6;
unsigned int pad2:1;
unsigned int const_urb_entry_read_length:6;
unsigned int pad3:1;
};
 
struct i965_vs_unit_state
{
struct thread0 thread0;
struct thread1 thread1;
struct thread2 thread2;
struct thread3 thread3;
struct {
unsigned int pad0:10;
unsigned int stats_enable:1;
unsigned int nr_urb_entries:7;
unsigned int pad1:1;
unsigned int urb_entry_allocation_size:5;
unsigned int pad2:1;
unsigned int max_threads:4;
unsigned int pad3:3;
} thread4;
 
struct {
unsigned int sampler_count:3;
unsigned int pad0:2;
unsigned int sampler_state_pointer:27;
} vs5;
 
struct {
unsigned int vs_enable:1;
unsigned int vert_cache_disable:1;
unsigned int pad0:30;
} vs6;
};
 
struct i965_gs_unit_state
{
struct thread0 thread0;
struct thread1 thread1;
struct thread2 thread2;
struct thread3 thread3;
 
struct {
unsigned int pad0:10;
unsigned int stats_enable:1;
unsigned int nr_urb_entries:7;
unsigned int pad1:1;
unsigned int urb_entry_allocation_size:5;
unsigned int pad2:1;
unsigned int max_threads:1;
unsigned int pad3:6;
} thread4;
struct {
unsigned int sampler_count:3;
unsigned int pad0:2;
unsigned int sampler_state_pointer:27;
} gs5;
 
struct {
unsigned int max_vp_index:4;
unsigned int pad0:26;
unsigned int reorder_enable:1;
unsigned int pad1:1;
} gs6;
};
 
struct i965_clip_unit_state
{
struct thread0 thread0;
struct thread1 thread1;
struct thread2 thread2;
struct thread3 thread3;
 
struct {
unsigned int pad0:9;
unsigned int gs_output_stats:1; /* not always */
unsigned int stats_enable:1;
unsigned int nr_urb_entries:7;
unsigned int pad1:1;
unsigned int urb_entry_allocation_size:5;
unsigned int pad2:1;
unsigned int max_threads:6; /* may be less */
unsigned int pad3:1;
} thread4;
struct {
unsigned int pad0:13;
unsigned int clip_mode:3;
unsigned int userclip_enable_flags:8;
unsigned int userclip_must_clip:1;
unsigned int pad1:1;
unsigned int guard_band_enable:1;
unsigned int viewport_z_clip_enable:1;
unsigned int viewport_xy_clip_enable:1;
unsigned int vertex_position_space:1;
unsigned int api_mode:1;
unsigned int pad2:1;
} clip5;
struct {
unsigned int pad0:5;
unsigned int clipper_viewport_state_ptr:27;
} clip6;
 
float viewport_xmin;
float viewport_xmax;
float viewport_ymin;
float viewport_ymax;
};
 
struct i965_sf_unit_state
{
struct thread0 thread0;
struct {
unsigned int pad0:7;
unsigned int sw_exception_enable:1;
unsigned int pad1:3;
unsigned int mask_stack_exception_enable:1;
unsigned int pad2:1;
unsigned int illegal_op_exception_enable:1;
unsigned int pad3:2;
unsigned int floating_point_mode:1;
unsigned int thread_priority:1;
unsigned int binding_table_entry_count:8;
unsigned int pad4:5;
unsigned int single_program_flow:1;
} sf1;
struct thread2 thread2;
struct thread3 thread3;
 
struct {
unsigned int pad0:10;
unsigned int stats_enable:1;
unsigned int nr_urb_entries:7;
unsigned int pad1:1;
unsigned int urb_entry_allocation_size:5;
unsigned int pad2:1;
unsigned int max_threads:6;
unsigned int pad3:1;
} thread4;
 
struct {
unsigned int front_winding:1;
unsigned int viewport_transform:1;
unsigned int pad0:3;
unsigned int sf_viewport_state_offset:27;
} sf5;
struct {
unsigned int pad0:9;
unsigned int dest_org_vbias:4;
unsigned int dest_org_hbias:4;
unsigned int scissor:1;
unsigned int disable_2x2_trifilter:1;
unsigned int disable_zero_pix_trifilter:1;
unsigned int point_rast_rule:2;
unsigned int line_endcap_aa_region_width:2;
unsigned int line_width:4;
unsigned int fast_scissor_disable:1;
unsigned int cull_mode:2;
unsigned int aa_enable:1;
} sf6;
 
struct {
unsigned int point_size:11;
unsigned int use_point_size_state:1;
unsigned int subpixel_precision:1;
unsigned int sprite_point:1;
unsigned int pad0:11;
unsigned int trifan_pv:2;
unsigned int linestrip_pv:2;
unsigned int tristrip_pv:2;
unsigned int line_last_pixel_enable:1;
} sf7;
};
 
struct i965_sampler_state
{
struct {
unsigned int shadow_function:3;
unsigned int lod_bias:11;
unsigned int min_filter:3;
unsigned int mag_filter:3;
unsigned int mip_filter:2;
unsigned int base_level:5;
unsigned int pad:1;
unsigned int lod_preclamp:1;
unsigned int border_color_mode:1;
unsigned int pad0:1;
unsigned int disable:1;
} ss0;
 
struct {
unsigned int r_wrap_mode:3;
unsigned int t_wrap_mode:3;
unsigned int s_wrap_mode:3;
unsigned int pad:3;
unsigned int max_lod:10;
unsigned int min_lod:10;
} ss1;
 
struct {
unsigned int pad:5;
unsigned int border_color_pointer:27;
} ss2;
struct {
unsigned int pad:19;
unsigned int max_aniso:3;
unsigned int chroma_key_mode:1;
unsigned int chroma_key_index:2;
unsigned int chroma_key_enable:1;
unsigned int monochrome_filter_width:3;
unsigned int monochrome_filter_height:3;
} ss3;
};
 
struct i965_wm_unit_state
{
struct thread0 thread0;
struct thread1 thread1;
struct thread2 thread2;
struct thread3 thread3;
struct {
unsigned int stats_enable:1;
unsigned int pad0:1;
unsigned int sampler_count:3;
unsigned int sampler_state_pointer:27;
} wm4;
struct {
unsigned int enable_8_pix:1;
unsigned int enable_16_pix:1;
unsigned int enable_32_pix:1;
unsigned int pad0:7;
unsigned int legacy_global_depth_bias:1;
unsigned int line_stipple:1;
unsigned int depth_offset:1;
unsigned int polygon_stipple:1;
unsigned int line_aa_region_width:2;
unsigned int line_endcap_aa_region_width:2;
unsigned int early_depth_test:1;
unsigned int thread_dispatch_enable:1;
unsigned int program_uses_depth:1;
unsigned int program_computes_depth:1;
unsigned int program_uses_killpixel:1;
unsigned int legacy_line_rast: 1;
unsigned int transposed_urb_read:1;
unsigned int max_threads:7;
} wm5;
float global_depth_offset_constant;
float global_depth_offset_scale;
};
 
struct i965_cc_viewport
{
float min_depth;
float max_depth;
};
 
struct i965_cc_unit_state
{
struct {
unsigned int pad0:3;
unsigned int bf_stencil_pass_depth_pass_op:3;
unsigned int bf_stencil_pass_depth_fail_op:3;
unsigned int bf_stencil_fail_op:3;
unsigned int bf_stencil_func:3;
unsigned int bf_stencil_enable:1;
unsigned int pad1:2;
unsigned int stencil_write_enable:1;
unsigned int stencil_pass_depth_pass_op:3;
unsigned int stencil_pass_depth_fail_op:3;
unsigned int stencil_fail_op:3;
unsigned int stencil_func:3;
unsigned int stencil_enable:1;
} cc0;
 
struct {
unsigned int bf_stencil_ref:8;
unsigned int stencil_write_mask:8;
unsigned int stencil_test_mask:8;
unsigned int stencil_ref:8;
} cc1;
 
struct {
unsigned int logicop_enable:1;
unsigned int pad0:10;
unsigned int depth_write_enable:1;
unsigned int depth_test_function:3;
unsigned int depth_test:1;
unsigned int bf_stencil_write_mask:8;
unsigned int bf_stencil_test_mask:8;
} cc2;
 
struct {
unsigned int pad0:8;
unsigned int alpha_test_func:3;
unsigned int alpha_test:1;
unsigned int blend_enable:1;
unsigned int ia_blend_enable:1;
unsigned int pad1:1;
unsigned int alpha_test_format:1;
unsigned int pad2:16;
} cc3;
struct {
unsigned int pad0:5;
unsigned int cc_viewport_state_offset:27;
} cc4;
struct {
unsigned int pad0:2;
unsigned int ia_dest_blend_factor:5;
unsigned int ia_src_blend_factor:5;
unsigned int ia_blend_function:3;
unsigned int statistics_enable:1;
unsigned int logicop_func:4;
unsigned int pad1:11;
unsigned int dither_enable:1;
} cc5;
 
struct {
unsigned int clamp_post_alpha_blend:1;
unsigned int clamp_pre_alpha_blend:1;
unsigned int clamp_range:2;
unsigned int pad0:11;
unsigned int y_dither_offset:2;
unsigned int x_dither_offset:2;
unsigned int dest_blend_factor:5;
unsigned int src_blend_factor:5;
unsigned int blend_function:3;
} cc6;
 
struct {
union {
float f;
unsigned char ub[4];
} alpha_ref;
} cc7;
};
 
struct i965_sampler_8x8
{
struct {
unsigned int pad0:16;
unsigned int chroma_key_index:2;
unsigned int chroma_key_enable:1;
unsigned int pad1:8;
unsigned int ief_filter_size:1;
unsigned int ief_filter_type:1;
unsigned int ief_bypass:1;
unsigned int pad2:1;
unsigned int avs_filter_type:1;
} dw0;
 
struct {
unsigned int pad0:5;
unsigned int sampler_8x8_state_pointer:27;
} dw1;
struct {
unsigned int weak_edge_threshold:4;
unsigned int strong_edge_threshold:4;
unsigned int global_noise_estimation:8;
unsigned int pad0:16;
} dw2;
 
struct {
unsigned int r3x_coefficient:5;
unsigned int pad0:1;
unsigned int r3c_coefficient:5;
unsigned int pad1:3;
unsigned int gain_factor:6;
unsigned int non_edge_weight:3;
unsigned int pad2:1;
unsigned int regular_weight:3;
unsigned int pad3:1;
unsigned int strong_edge_weight:3;
unsigned int pad4:1;
} dw3;
 
struct {
unsigned int pad0:2;
unsigned int mr_boost:1;
unsigned int mr_threshold:4;
unsigned int steepness_boost:1;
unsigned int steepness_threshold:4;
unsigned int pad1:2;
unsigned int r5x_coefficient:5;
unsigned int pad2:1;
unsigned int r5cx_coefficient:5;
unsigned int pad3:1;
unsigned int r5c_coefficient:5;
unsigned int pad4:1;
} dw4;
 
struct {
unsigned int pwl1_point_1:8;
unsigned int pwl1_point_2:8;
unsigned int pwl1_point_3:8;
unsigned int pwl1_point_4:8;
} dw5;
 
struct {
unsigned int pwl1_point_5:8;
unsigned int pwl1_point_6:8;
unsigned int pwl1_r3_bias_0:8;
unsigned int pwl1_r3_bias_1:8;
} dw6;
 
struct {
unsigned int pwl1_r3_bias_2:8;
unsigned int pwl1_r3_bias_3:8;
unsigned int pwl1_r3_bias_4:8;
unsigned int pwl1_r3_bias_5:8;
} dw7;
 
struct {
unsigned int pwl1_r3_bias_6:8;
unsigned int pwl1_r5_bias_0:8;
unsigned int pwl1_r5_bias_1:8;
unsigned int pwl1_r5_bias_2:8;
} dw8;
 
struct {
unsigned int pwl1_r5_bias_3:8;
unsigned int pwl1_r5_bias_4:8;
unsigned int pwl1_r5_bias_5:8;
unsigned int pwl1_r5_bias_6:8;
} dw9;
 
struct {
int pwl1_r3_slope_0:8;
int pwl1_r3_slope_1:8;
int pwl1_r3_slope_2:8;
int pwl1_r3_slope_3:8;
} dw10;
 
struct {
int pwl1_r3_slope_4:8;
int pwl1_r3_slope_5:8;
int pwl1_r3_slope_6:8;
int pwl1_r5_slope_0:8;
} dw11;
 
struct {
int pwl1_r5_slope_1:8;
int pwl1_r5_slope_2:8;
int pwl1_r5_slope_3:8;
int pwl1_r5_slope_4:8;
} dw12;
 
struct {
int pwl1_r5_slope_5:8;
int pwl1_r5_slope_6:8;
unsigned int limiter_boost:4;
unsigned int pad0:4;
unsigned int minimum_limiter:4;
unsigned int maximum_limiter:4;
} dw13;
 
struct {
unsigned int pad0:8;
unsigned int clip_limiter:10;
unsigned int pad1:14;
} dw14;
 
unsigned int dw15; /* Just a pad */
};
 
struct i965_sampler_8x8_coefficient
{
struct {
int table_0x_filter_c0:8;
int table_0x_filter_c1:8;
int table_0x_filter_c2:8;
int table_0x_filter_c3:8;
} dw0;
 
struct {
int table_0x_filter_c4:8;
int table_0x_filter_c5:8;
int table_0x_filter_c6:8;
int table_0x_filter_c7:8;
} dw1;
 
struct {
int table_0y_filter_c0:8;
int table_0y_filter_c1:8;
int table_0y_filter_c2:8;
int table_0y_filter_c3:8;
} dw2;
 
struct {
int table_0y_filter_c4:8;
int table_0y_filter_c5:8;
int table_0y_filter_c6:8;
int table_0y_filter_c7:8;
} dw3;
 
struct {
int table_1x_filter_c0:8;
int table_1x_filter_c1:8;
int table_1x_filter_c2:8;
int table_1x_filter_c3:8;
} dw4;
 
struct {
int table_1x_filter_c4:8;
int table_1x_filter_c5:8;
int table_1x_filter_c6:8;
int table_1x_filter_c7:8;
} dw5;
 
struct {
int table_1y_filter_c0:8;
int table_1y_filter_c1:8;
int table_1y_filter_c2:8;
int table_1y_filter_c3:8;
} dw6;
 
struct {
int table_1y_filter_c4:8;
int table_1y_filter_c5:8;
int table_1y_filter_c6:8;
int table_1y_filter_c7:8;
} dw7;
};
 
struct i965_sampler_8x8_state
{
struct i965_sampler_8x8_coefficient coefficients[17];
 
struct {
unsigned int transition_area_with_8_pixels:3;
unsigned int pad0:1;
unsigned int transition_area_with_4_pixels:3;
unsigned int pad1:1;
unsigned int max_derivative_8_pixels:8;
unsigned int max_derivative_4_pixels:8;
unsigned int default_sharpness_level:8;
} dw136;
 
struct {
unsigned int bit_field_name:1;
unsigned int adaptive_filter_for_all_channel:1;
unsigned int pad0:19;
unsigned int bypass_y_adaptive_filtering:1;
unsigned int bypass_x_adaptive_filtering:1;
unsigned int pad1:9;
} dw137;
};
 
struct i965_surface_state2
{
struct {
unsigned int surface_base_address;
} ss0;
 
struct {
unsigned int cbcr_pixel_offset_v_direction:2;
unsigned int pad0:4;
unsigned int width:13;
unsigned int height:13;
} ss1;
 
struct {
unsigned int tile_walk:1;
unsigned int tiled_surface:1;
unsigned int half_pitch_for_chroma:1;
unsigned int pitch:17;
unsigned int pad0:2;
unsigned int surface_object_control_data:4;
unsigned int pad1:1;
unsigned int interleave_chroma:1;
unsigned int surface_format:4;
} ss2;
 
struct {
unsigned int y_offset_for_cb:13;
unsigned int pad0:3;
unsigned int x_offset_for_cb:13;
unsigned int pad1:3;
} ss3;
 
struct {
unsigned int y_offset_for_cr:13;
unsigned int pad0:3;
unsigned int x_offset_for_cr:13;
unsigned int pad1:3;
} ss4;
};
 
struct i965_sampler_dndi
{
struct {
unsigned int denoise_asd_threshold:8;
unsigned int denoise_history_delta:8;
unsigned int denoise_maximum_history:8;
unsigned int denoise_stad_threshold:8;
} dw0;
 
struct {
unsigned int denoise_threshold_for_sum_of_complexity_measure:8;
unsigned int denoise_moving_pixel_threshold:5;
unsigned int stmm_c2:3;
unsigned int low_temporal_difference_threshold:6;
unsigned int pad0:2;
unsigned int temporal_difference_threshold:6;
unsigned int pad1:2;
} dw1;
 
struct {
unsigned int block_noise_estimate_noise_threshold:8;
unsigned int block_noise_estimate_edge_threshold:8;
unsigned int denoise_edge_threshold:8;
unsigned int good_neighbor_threshold:8;
} dw2;
 
struct {
unsigned int maximum_stmm:8;
unsigned int multipler_for_vecm:6;
unsigned int pad0:2;
unsigned int blending_constant_across_time_for_small_values_of_stmm:8;
unsigned int blending_constant_across_time_for_large_values_of_stmm:7;
unsigned int stmm_blending_constant_select:1;
} dw3;
 
struct {
unsigned int sdi_delta:8;
unsigned int sdi_threshold:8;
unsigned int stmm_output_shift:4;
unsigned int stmm_shift_up:2;
unsigned int stmm_shift_down:2;
unsigned int minimum_stmm:8;
} dw4;
 
struct {
unsigned int fmd_temporal_difference_threshold:8;
unsigned int sdi_fallback_mode_2_constant:8;
unsigned int sdi_fallback_mode_1_t2_constant:8;
unsigned int sdi_fallback_mode_1_t1_constant:8;
} dw5;
 
struct {
unsigned int dn_enable:1;
unsigned int di_enable:1;
unsigned int di_partial:1;
unsigned int dndi_top_first:1;
unsigned int dndi_stream_id:1;
unsigned int dndi_first_frame:1;
unsigned int progressive_dn:1;
unsigned int pad0:1;
unsigned int fmd_tear_threshold:6;
unsigned int pad1:2;
unsigned int fmd2_vertical_difference_threshold:8;
unsigned int fmd1_vertical_difference_threshold:8;
} dw6;
 
struct {
unsigned int pad0:8;
unsigned int fmd_for_1st_field_of_current_frame:2;
unsigned int pad1:6;
unsigned int fmd_for_2nd_field_of_previous_frame:2;
unsigned int vdi_walker_enable:1;
unsigned int pad2:4;
unsigned int column_width_minus1:9;
} dw7;
};
 
 
struct gen6_blend_state
{
struct {
unsigned int dest_blend_factor:5;
unsigned int source_blend_factor:5;
unsigned int pad3:1;
unsigned int blend_func:3;
unsigned int pad2:1;
unsigned int ia_dest_blend_factor:5;
unsigned int ia_source_blend_factor:5;
unsigned int pad1:1;
unsigned int ia_blend_func:3;
unsigned int pad0:1;
unsigned int ia_blend_enable:1;
unsigned int blend_enable:1;
} blend0;
 
struct {
unsigned int post_blend_clamp_enable:1;
unsigned int pre_blend_clamp_enable:1;
unsigned int clamp_range:2;
unsigned int pad0:4;
unsigned int x_dither_offset:2;
unsigned int y_dither_offset:2;
unsigned int dither_enable:1;
unsigned int alpha_test_func:3;
unsigned int alpha_test_enable:1;
unsigned int pad1:1;
unsigned int logic_op_func:4;
unsigned int logic_op_enable:1;
unsigned int pad2:1;
unsigned int write_disable_b:1;
unsigned int write_disable_g:1;
unsigned int write_disable_r:1;
unsigned int write_disable_a:1;
unsigned int pad3:1;
unsigned int alpha_to_coverage_dither:1;
unsigned int alpha_to_one:1;
unsigned int alpha_to_coverage:1;
} blend1;
};
 
struct gen6_color_calc_state
{
struct {
unsigned int alpha_test_format:1;
unsigned int pad0:14;
unsigned int round_disable:1;
unsigned int bf_stencil_ref:8;
unsigned int stencil_ref:8;
} cc0;
 
union {
float alpha_ref_f;
struct {
unsigned int ui:8;
unsigned int pad0:24;
} alpha_ref_fi;
} cc1;
 
float constant_r;
float constant_g;
float constant_b;
float constant_a;
};
 
struct gen6_depth_stencil_state
{
struct {
unsigned int pad0:3;
unsigned int bf_stencil_pass_depth_pass_op:3;
unsigned int bf_stencil_pass_depth_fail_op:3;
unsigned int bf_stencil_fail_op:3;
unsigned int bf_stencil_func:3;
unsigned int bf_stencil_enable:1;
unsigned int pad1:2;
unsigned int stencil_write_enable:1;
unsigned int stencil_pass_depth_pass_op:3;
unsigned int stencil_pass_depth_fail_op:3;
unsigned int stencil_fail_op:3;
unsigned int stencil_func:3;
unsigned int stencil_enable:1;
} ds0;
 
struct {
unsigned int bf_stencil_write_mask:8;
unsigned int bf_stencil_test_mask:8;
unsigned int stencil_write_mask:8;
unsigned int stencil_test_mask:8;
} ds1;
 
struct {
unsigned int pad0:26;
unsigned int depth_write_enable:1;
unsigned int depth_test_func:3;
unsigned int pad1:1;
unsigned int depth_test_enable:1;
} ds2;
};
 
struct gen6_interface_descriptor_data
{
struct {
unsigned int pad0:6;
unsigned int kernel_start_pointer:26;
} desc0;
struct {
unsigned int pad0:7;
unsigned int software_exception_enable:1;
unsigned int pad1:3;
unsigned int maskstack_exception_enable:1;
unsigned int pad2:1;
unsigned int illegal_opcode_exception_enable:1;
unsigned int pad3:2;
unsigned int floating_point_mode:1;
unsigned int thread_priority:1;
unsigned int single_program_flow:1;
unsigned int pad4:13;
} desc1;
 
struct {
unsigned int pad0:2;
unsigned int sampler_count:3;
unsigned int sampler_state_pointer:27;
} desc2;
 
struct {
unsigned int binding_table_entry_count:5;
unsigned int binding_table_pointer:27;
} desc3;
 
struct {
unsigned int constant_urb_entry_read_offset:16;
unsigned int constant_urb_entry_read_length:16;
} desc4;
union {
struct {
unsigned int num_threads:8;
unsigned int barrier_return_byte:8;
unsigned int shared_local_memory_size:5;
unsigned int barrier_enable:1;
unsigned int rounding_mode:2;
unsigned int barrier_return_grf_offset:8;
} gen7;
 
struct {
unsigned int barrier_id:4;
unsigned int pad0:28;
} gen6;
} desc5;
 
struct {
unsigned int cross_thread_constant_data_read_length:8;
unsigned int pad0:24;
} desc6;
 
struct {
unsigned int pad0;
} desc7;
};
 
struct gen7_surface_state
{
struct {
unsigned int cube_pos_z:1;
unsigned int cube_neg_z:1;
unsigned int cube_pos_y:1;
unsigned int cube_neg_y:1;
unsigned int cube_pos_x:1;
unsigned int cube_neg_x:1;
unsigned int pad2:2;
unsigned int render_cache_read_write:1;
unsigned int pad1:1;
unsigned int surface_array_spacing:1;
unsigned int vert_line_stride_ofs:1;
unsigned int vert_line_stride:1;
unsigned int tile_walk:1;
unsigned int tiled_surface:1;
unsigned int horizontal_alignment:1;
unsigned int vertical_alignment:2;
unsigned int surface_format:9; /**< BRW_SURFACEFORMAT_x */
unsigned int pad0:1;
unsigned int is_array:1;
unsigned int surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */
} ss0;
 
struct {
unsigned int base_addr;
} ss1;
 
struct {
unsigned int width:14;
unsigned int pad1:2;
unsigned int height:14;
unsigned int pad0:2;
} ss2;
 
struct {
unsigned int pitch:18;
unsigned int pad:3;
unsigned int depth:11;
} ss3;
 
struct {
unsigned int multisample_position_palette_index:3;
unsigned int num_multisamples:3;
unsigned int multisampled_surface_storage_format:1;
unsigned int render_target_view_extent:11;
unsigned int min_array_elt:11;
unsigned int rotation:2;
unsigned int pad0:1;
} ss4;
 
struct {
unsigned int mip_count:4;
unsigned int min_lod:4;
unsigned int pad1:12;
unsigned int y_offset:4;
unsigned int pad0:1;
unsigned int x_offset:7;
} ss5;
 
struct {
unsigned int pad; /* Multisample Control Surface stuff */
} ss6;
 
struct {
unsigned int resource_min_lod:12;
unsigned int pad0:4;
unsigned int shader_chanel_select_a:3;
unsigned int shader_chanel_select_b:3;
unsigned int shader_chanel_select_g:3;
unsigned int shader_chanel_select_r:3;
unsigned int alpha_clear_color:1;
unsigned int blue_clear_color:1;
unsigned int green_clear_color:1;
unsigned int red_clear_color:1;
} ss7;
};
 
struct gen7_sampler_state
{
struct
{
unsigned int aniso_algorithm:1;
unsigned int lod_bias:13;
unsigned int min_filter:3;
unsigned int mag_filter:3;
unsigned int mip_filter:2;
unsigned int base_level:5;
unsigned int pad1:1;
unsigned int lod_preclamp:1;
unsigned int default_color_mode:1;
unsigned int pad0:1;
unsigned int disable:1;
} ss0;
 
struct
{
unsigned int cube_control_mode:1;
unsigned int shadow_function:3;
unsigned int pad:4;
unsigned int max_lod:12;
unsigned int min_lod:12;
} ss1;
 
struct
{
unsigned int pad:5;
unsigned int default_color_pointer:27;
} ss2;
 
struct
{
unsigned int r_wrap_mode:3;
unsigned int t_wrap_mode:3;
unsigned int s_wrap_mode:3;
unsigned int pad:1;
unsigned int non_normalized_coord:1;
unsigned int trilinear_quality:2;
unsigned int address_round:6;
unsigned int max_aniso:3;
unsigned int chroma_key_mode:1;
unsigned int chroma_key_index:2;
unsigned int chroma_key_enable:1;
unsigned int pad0:6;
} ss3;
};
 
struct gen7_surface_state2
{
struct {
unsigned int surface_base_address;
} ss0;
 
struct {
unsigned int cbcr_pixel_offset_v_direction:2;
unsigned int picture_structure:2;
unsigned int width:14;
unsigned int height:14;
} ss1;
 
struct {
unsigned int tile_walk:1;
unsigned int tiled_surface:1;
unsigned int half_pitch_for_chroma:1;
unsigned int pitch:18;
unsigned int pad0:1;
unsigned int surface_object_control_data:4;
unsigned int pad1:1;
unsigned int interleave_chroma:1;
unsigned int surface_format:4;
} ss2;
 
struct {
unsigned int y_offset_for_cb:15;
unsigned int pad0:1;
unsigned int x_offset_for_cb:14;
unsigned int pad1:2;
} ss3;
 
struct {
unsigned int y_offset_for_cr:15;
unsigned int pad0:1;
unsigned int x_offset_for_cr:14;
unsigned int pad1:2;
} ss4;
 
struct {
unsigned int pad0;
} ss5;
 
struct {
unsigned int pad0;
} ss6;
 
struct {
unsigned int pad0;
} ss7;
};
 
struct gen7_sampler_8x8
{
struct {
unsigned int global_noise_estimation:8;
unsigned int pad0:8;
unsigned int chroma_key_index:2;
unsigned int chroma_key_enable:1;
unsigned int pad1:10;
unsigned int ief_bypass:1;
unsigned int pad2:1;
unsigned int disable_8x8_filter:1;
} dw0;
 
struct {
unsigned int pad0:5;
unsigned int sampler_8x8_state_pointer:27;
} dw1;
struct {
unsigned int weak_edge_threshold:6;
unsigned int pad0:2;
unsigned int strong_edge_threshold:6;
unsigned int pad1:2;
unsigned int r5x_coefficient:5;
unsigned int r5cx_coefficient:5;
unsigned int r5c_coefficient:5;
unsigned int pad2:1;
} dw2;
 
struct {
unsigned int r3x_coefficient:5;
unsigned int pad0:1;
unsigned int r3c_coefficient:5;
unsigned int pad1:3;
unsigned int gain_factor:6;
unsigned int non_edge_weight:3;
unsigned int pad2:1;
unsigned int regular_weight:3;
unsigned int pad3:1;
unsigned int strong_edge_weight:3;
unsigned int ief4_smooth_enable:1;
} dw3;
};
 
struct gen7_sampler_dndi
{
struct {
unsigned int denoise_asd_threshold:8;
unsigned int dnmh_delt:4;
unsigned int vdi_walker_y_stride:2;
unsigned int vdi_walker_frame_sharing_enable:1;
unsigned int pad0:1;
unsigned int denoise_maximum_history:8;
unsigned int denoise_stad_threshold:8;
} dw0;
 
struct {
unsigned int denoise_threshold_for_sum_of_complexity_measure:8;
unsigned int denoise_moving_pixel_threshold:5;
unsigned int stmm_c2:3;
unsigned int low_temporal_difference_threshold:6;
unsigned int pad0:2;
unsigned int temporal_difference_threshold:6;
unsigned int pad1:2;
} dw1;
 
struct {
unsigned int block_noise_estimate_noise_threshold:8;
unsigned int bne_edge_th:4;
unsigned int pad0:2;
unsigned int smooth_mv_th:2;
unsigned int sad_tight_th:4;
unsigned int cat_slope_minus1:4;
unsigned int good_neighbor_th:6;
unsigned int pad1:2;
} dw2;
 
struct {
unsigned int maximum_stmm:8;
unsigned int multipler_for_vecm:6;
unsigned int pad0:2;
unsigned int blending_constant_across_time_for_small_values_of_stmm:8;
unsigned int blending_constant_across_time_for_large_values_of_stmm:7;
unsigned int stmm_blending_constant_select:1;
} dw3;
 
struct {
unsigned int sdi_delta:8;
unsigned int sdi_threshold:8;
unsigned int stmm_output_shift:4;
unsigned int stmm_shift_up:2;
unsigned int stmm_shift_down:2;
unsigned int minimum_stmm:8;
} dw4;
 
struct {
unsigned int fmd_temporal_difference_threshold:8;
unsigned int sdi_fallback_mode_2_constant:8;
unsigned int sdi_fallback_mode_1_t2_constant:8;
unsigned int sdi_fallback_mode_1_t1_constant:8;
} dw5;
 
struct {
unsigned int dn_enable:1;
unsigned int di_enable:1;
unsigned int di_partial:1;
unsigned int dndi_top_first:1;
unsigned int dndi_stream_id:1;
unsigned int dndi_first_frame:1;
unsigned int progressive_dn:1;
unsigned int mcdi_enable:1;
unsigned int fmd_tear_threshold:6;
unsigned int cat_th1:2;
unsigned int fmd2_vertical_difference_threshold:8;
unsigned int fmd1_vertical_difference_threshold:8;
} dw6;
 
struct {
unsigned int sad_tha:4;
unsigned int sad_thb:4;
unsigned int fmd_for_1st_field_of_current_frame:2;
unsigned int mc_pixel_consistency_th:6;
unsigned int fmd_for_2nd_field_of_previous_frame:2;
unsigned int vdi_walker_enable:1;
unsigned int neighborpixel_th:4;
unsigned int column_width_minus1:9;
} dw7;
};
 
 
#endif /* _I965_STRUCTS_H_ */
/drivers/video/i965/intel_batchbuffer.c
0,0 → 1,339
/**************************************************************************
*
* Copyright 2006 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**************************************************************************/
 
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#include "intel_batchbuffer.h"
 
#define MAX_BATCH_SIZE 0x400000
 
static void
intel_batchbuffer_reset(struct intel_batchbuffer *batch, int buffer_size)
{
struct intel_driver_data *intel = batch->intel;
int batch_size = buffer_size;
printf("%s\n", __FUNCTION__);
 
assert(batch->flag == I915_EXEC_RENDER ||
batch->flag == I915_EXEC_BLT ||
batch->flag == I915_EXEC_BSD ||
batch->flag == I915_EXEC_VEBOX);
 
dri_bo_unreference(batch->buffer);
batch->buffer = dri_bo_alloc(intel->bufmgr,
"batch buffer",
batch_size,
0x1000);
assert(batch->buffer);
dri_bo_map(batch->buffer, 1);
assert(batch->buffer->virtual);
batch->map = batch->buffer->virtual;
batch->size = batch_size;
batch->ptr = batch->map;
batch->atomic = 0;
}
 
static unsigned int
intel_batchbuffer_space(struct intel_batchbuffer *batch)
{
return (batch->size - BATCH_RESERVED) - (batch->ptr - batch->map);
}
 
 
struct intel_batchbuffer *
intel_batchbuffer_new(struct intel_driver_data *intel, int flag, int buffer_size)
{
struct intel_batchbuffer *batch = calloc(1, sizeof(*batch));
assert(flag == I915_EXEC_RENDER ||
flag == I915_EXEC_BSD ||
flag == I915_EXEC_BLT ||
flag == I915_EXEC_VEBOX);
 
printf("%s\n", __FUNCTION__);
if (!buffer_size || buffer_size < BATCH_SIZE) {
buffer_size = BATCH_SIZE;
}
 
/* the buffer size can't exceed 4M */
if (buffer_size > MAX_BATCH_SIZE) {
buffer_size = MAX_BATCH_SIZE;
}
 
batch->intel = intel;
batch->flag = flag;
batch->run = drm_intel_bo_mrb_exec;
intel_batchbuffer_reset(batch, buffer_size);
 
return batch;
}
 
void intel_batchbuffer_free(struct intel_batchbuffer *batch)
{
if (batch->map) {
dri_bo_unmap(batch->buffer);
batch->map = NULL;
}
 
dri_bo_unreference(batch->buffer);
free(batch);
}
 
void
intel_batchbuffer_flush(struct intel_batchbuffer *batch)
{
unsigned int used = batch->ptr - batch->map;
 
if (used == 0) {
return;
}
 
if ((used & 4) == 0) {
*(unsigned int*)batch->ptr = 0;
batch->ptr += 4;
}
 
*(unsigned int*)batch->ptr = MI_BATCH_BUFFER_END;
batch->ptr += 4;
dri_bo_unmap(batch->buffer);
used = batch->ptr - batch->map;
batch->run(batch->buffer, used, 0, 0, 0, batch->flag);
intel_batchbuffer_reset(batch, batch->size);
}
 
void
intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, unsigned int x)
{
assert(intel_batchbuffer_space(batch) >= 4);
*(unsigned int *)batch->ptr = x;
batch->ptr += 4;
}
 
void
intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch, dri_bo *bo,
uint32_t read_domains, uint32_t write_domains,
uint32_t delta)
{
assert(batch->ptr - batch->map < batch->size);
dri_bo_emit_reloc(batch->buffer, read_domains, write_domains,
delta, batch->ptr - batch->map, bo);
intel_batchbuffer_emit_dword(batch, bo->offset + delta);
}
 
void
intel_batchbuffer_require_space(struct intel_batchbuffer *batch,
unsigned int size)
{
assert(size < batch->size - 8);
 
if (intel_batchbuffer_space(batch) < size) {
intel_batchbuffer_flush(batch);
}
}
 
void
intel_batchbuffer_data(struct intel_batchbuffer *batch,
void *data,
unsigned int size)
{
assert((size & 3) == 0);
intel_batchbuffer_require_space(batch, size);
 
assert(batch->ptr);
memcpy(batch->ptr, data, size);
batch->ptr += size;
}
 
void
intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch)
{
struct intel_driver_data *intel = batch->intel;
 
if (IS_GEN6(intel->device_id) ||
IS_GEN7(intel->device_id)) {
if (batch->flag == I915_EXEC_RENDER) {
BEGIN_BATCH(batch, 4);
OUT_BATCH(batch, CMD_PIPE_CONTROL | 0x2);
 
if (IS_GEN6(intel->device_id))
OUT_BATCH(batch,
CMD_PIPE_CONTROL_WC_FLUSH |
CMD_PIPE_CONTROL_TC_FLUSH |
CMD_PIPE_CONTROL_NOWRITE);
else
OUT_BATCH(batch,
CMD_PIPE_CONTROL_WC_FLUSH |
CMD_PIPE_CONTROL_TC_FLUSH |
CMD_PIPE_CONTROL_DC_FLUSH |
CMD_PIPE_CONTROL_NOWRITE);
 
OUT_BATCH(batch, 0);
OUT_BATCH(batch, 0);
ADVANCE_BATCH(batch);
} else {
if (batch->flag == I915_EXEC_BLT) {
BEGIN_BLT_BATCH(batch, 4);
OUT_BLT_BATCH(batch, MI_FLUSH_DW);
OUT_BLT_BATCH(batch, 0);
OUT_BLT_BATCH(batch, 0);
OUT_BLT_BATCH(batch, 0);
ADVANCE_BLT_BATCH(batch);
}else if (batch->flag == I915_EXEC_VEBOX) {
BEGIN_VEB_BATCH(batch, 4);
OUT_VEB_BATCH(batch, MI_FLUSH_DW);
OUT_VEB_BATCH(batch, 0);
OUT_VEB_BATCH(batch, 0);
OUT_VEB_BATCH(batch, 0);
ADVANCE_VEB_BATCH(batch);
} else {
assert(batch->flag == I915_EXEC_BSD);
BEGIN_BCS_BATCH(batch, 4);
OUT_BCS_BATCH(batch, MI_FLUSH_DW | MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
OUT_BCS_BATCH(batch, 0);
ADVANCE_BCS_BATCH(batch);
}
}
} else {
if (batch->flag == I915_EXEC_RENDER) {
BEGIN_BATCH(batch, 1);
OUT_BATCH(batch, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
ADVANCE_BATCH(batch);
} else {
assert(batch->flag == I915_EXEC_BSD);
BEGIN_BCS_BATCH(batch, 1);
OUT_BCS_BATCH(batch, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
ADVANCE_BCS_BATCH(batch);
}
}
}
 
void
intel_batchbuffer_begin_batch(struct intel_batchbuffer *batch, int total)
{
batch->emit_total = total * 4;
batch->emit_start = batch->ptr;
}
 
void
intel_batchbuffer_advance_batch(struct intel_batchbuffer *batch)
{
assert(batch->emit_total == (batch->ptr - batch->emit_start));
}
 
void
intel_batchbuffer_check_batchbuffer_flag(struct intel_batchbuffer *batch, int flag)
{
if (flag != I915_EXEC_RENDER &&
flag != I915_EXEC_BLT &&
flag != I915_EXEC_BSD &&
flag != I915_EXEC_VEBOX)
return;
 
if (batch->flag == flag)
return;
 
intel_batchbuffer_flush(batch);
batch->flag = flag;
}
 
int
intel_batchbuffer_check_free_space(struct intel_batchbuffer *batch, int size)
{
return intel_batchbuffer_space(batch) >= size;
}
 
static void
intel_batchbuffer_start_atomic_helper(struct intel_batchbuffer *batch,
int flag,
unsigned int size)
{
assert(!batch->atomic);
intel_batchbuffer_check_batchbuffer_flag(batch, flag);
intel_batchbuffer_require_space(batch, size);
batch->atomic = 1;
}
 
void
intel_batchbuffer_start_atomic(struct intel_batchbuffer *batch, unsigned int size)
{
intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_RENDER, size);
}
 
void
intel_batchbuffer_start_atomic_blt(struct intel_batchbuffer *batch, unsigned int size)
{
intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_BLT, size);
}
 
void
intel_batchbuffer_start_atomic_bcs(struct intel_batchbuffer *batch, unsigned int size)
{
intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_BSD, size);
}
 
void
intel_batchbuffer_start_atomic_veb(struct intel_batchbuffer *batch, unsigned int size)
{
intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_VEBOX, size);
}
 
 
void
intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch)
{
assert(batch->atomic);
batch->atomic = 0;
}
 
int
intel_batchbuffer_used_size(struct intel_batchbuffer *batch)
{
return batch->ptr - batch->map;
}
 
void
intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment)
{
int used = batch->ptr - batch->map;
int pad_size;
 
assert((alignedment & 3) == 0);
pad_size = ALIGN(used, alignedment) - used;
assert((pad_size & 3) == 0);
assert(intel_batchbuffer_space(batch) >= pad_size);
 
while (pad_size >= 4) {
intel_batchbuffer_emit_dword(batch, 0);
pad_size -= 4;
}
}
 
/drivers/video/i965/intel_batchbuffer.h
0,0 → 1,95
#ifndef _INTEL_BATCHBUFFER_H_
#define _INTEL_BATCHBUFFER_H_
 
#include <xf86drm.h>
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
#include "intel_driver.h"
 
struct intel_batchbuffer
{
struct intel_driver_data *intel;
dri_bo *buffer;
unsigned int size;
unsigned char *map;
unsigned char *ptr;
int atomic;
int flag;
 
int emit_total;
unsigned char *emit_start;
 
int (*run)(drm_intel_bo *bo, int used,
drm_clip_rect_t *cliprects, int num_cliprects,
int DR4, unsigned int ring_flag);
};
 
struct intel_batchbuffer *intel_batchbuffer_new(struct intel_driver_data *intel, int flag, int buffer_size);
void intel_batchbuffer_free(struct intel_batchbuffer *batch);
void intel_batchbuffer_start_atomic(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_start_atomic_bcs(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_start_atomic_blt(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_start_atomic_veb(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch);
void intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, unsigned int x);
void intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch, dri_bo *bo,
uint32_t read_domains, uint32_t write_domains,
uint32_t delta);
void intel_batchbuffer_require_space(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_data(struct intel_batchbuffer *batch, void *data, unsigned int size);
void intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch);
void intel_batchbuffer_flush(struct intel_batchbuffer *batch);
void intel_batchbuffer_begin_batch(struct intel_batchbuffer *batch, int total);
void intel_batchbuffer_advance_batch(struct intel_batchbuffer *batch);
void intel_batchbuffer_check_batchbuffer_flag(struct intel_batchbuffer *batch, int flag);
int intel_batchbuffer_check_free_space(struct intel_batchbuffer *batch, int size);
int intel_batchbuffer_used_size(struct intel_batchbuffer *batch);
void intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment);
 
#define __BEGIN_BATCH(batch, n, f) do { \
assert(f == batch->flag); \
intel_batchbuffer_check_batchbuffer_flag(batch, f); \
intel_batchbuffer_require_space(batch, (n) * 4); \
intel_batchbuffer_begin_batch(batch, (n)); \
} while (0)
 
#define __OUT_BATCH(batch, d) do { \
intel_batchbuffer_emit_dword(batch, d); \
} while (0)
 
#define __OUT_RELOC(batch, bo, read_domains, write_domain, delta) do { \
assert((delta) >= 0); \
intel_batchbuffer_emit_reloc(batch, bo, \
read_domains, write_domain, \
delta); \
} while (0)
 
#define __ADVANCE_BATCH(batch) do { \
intel_batchbuffer_advance_batch(batch); \
} while (0)
 
#define BEGIN_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_RENDER)
#define BEGIN_BLT_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_BLT)
#define BEGIN_BCS_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_BSD)
#define BEGIN_VEB_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_VEBOX)
 
#define OUT_BATCH(batch, d) __OUT_BATCH(batch, d)
#define OUT_BLT_BATCH(batch, d) __OUT_BATCH(batch, d)
#define OUT_BCS_BATCH(batch, d) __OUT_BATCH(batch, d)
#define OUT_VEB_BATCH(batch, d) __OUT_BATCH(batch, d)
 
#define OUT_RELOC(batch, bo, read_domains, write_domain, delta) \
__OUT_RELOC(batch, bo, read_domains, write_domain, delta)
#define OUT_BLT_RELOC(batch, bo, read_domains, write_domain, delta) \
__OUT_RELOC(batch, bo, read_domains, write_domain, delta)
#define OUT_BCS_RELOC(batch, bo, read_domains, write_domain, delta) \
__OUT_RELOC(batch, bo, read_domains, write_domain, delta)
 
#define ADVANCE_BATCH(batch) __ADVANCE_BATCH(batch)
#define ADVANCE_BLT_BATCH(batch) __ADVANCE_BATCH(batch)
#define ADVANCE_BCS_BATCH(batch) __ADVANCE_BATCH(batch)
#define ADVANCE_VEB_BATCH(batch) __ADVANCE_BATCH(batch)
 
#endif /* _INTEL_BATCHBUFFER_H_ */
/drivers/video/i965/intel_compiler.h
0,0 → 1,26
#ifndef _INTEL_COMPILER_H_
#define _INTEL_COMPILER_H_
 
/**
* Function inlining
*/
#if defined(__GNUC__)
# define INLINE __inline__
#elif (__STDC_VERSION__ >= 199901L) /* C99 */
# define INLINE inline
#else
# define INLINE
#endif
 
/**
* Function visibility
*/
#if defined(__GNUC__)
# define DLL_HIDDEN __attribute__((visibility("hidden")))
# define DLL_EXPORT __attribute__((visibility("default")))
#else
# define DLL_HIDDEN
# define DLL_EXPORT
#endif
 
#endif /* _INTEL_COMPILER_H_ */
/drivers/video/i965/intel_driver.c
0,0 → 1,99
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#include "sysdeps.h"
#include "intel_batchbuffer.h"
#include "intel_memman.h"
#include "intel_driver.h"
 
static Bool
intel_driver_get_param(struct intel_driver_data *intel, int param, int *value)
{
struct drm_i915_getparam gp;
 
gp.param = param;
gp.value = value;
 
return (drmIoctl(intel->fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0);
 
}
 
static void intel_driver_get_revid(struct intel_driver_data *intel, int *value)
{
*value = 2; /* assume it is at least B-steping */
 
return;
}
 
Bool
intel_driver_init(VADriverContextP ctx)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
struct drm_state * const drm_state = (struct drm_state *)ctx->drm_state;
int has_exec2, has_bsd, has_blt;
 
assert(drm_state);
assert(VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI1) ||
VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI2) ||
VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_CUSTOM));
 
printf("%s context %p\n", __FUNCTION__, ctx);
 
intel->fd = drm_state->fd;
intel->dri2Enabled = 1;
intel->locked = 0;
// pthread_mutex_init(&intel->ctxmutex, NULL);
 
intel_driver_get_param(intel, I915_PARAM_CHIPSET_ID, &intel->device_id);
if (intel_driver_get_param(intel, I915_PARAM_HAS_EXECBUF2, &has_exec2))
intel->has_exec2 = has_exec2;
if (intel_driver_get_param(intel, I915_PARAM_HAS_BSD, &has_bsd))
intel->has_bsd = has_bsd;
if (intel_driver_get_param(intel, I915_PARAM_HAS_BLT, &has_blt))
intel->has_blt = has_blt;
printf("device_id=%x has_exec2=%d has_bsd=%d has_blt=%d\n",
intel->device_id, intel->has_exec2, intel->has_bsd, intel->has_blt);
intel_driver_get_revid(intel, &intel->revision);
intel_memman_init(intel);
return True;
}
 
Bool
intel_driver_terminate(VADriverContextP ctx)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
 
intel_memman_terminate(intel);
// pthread_mutex_destroy(&intel->ctxmutex);
 
return True;
}
/drivers/video/i965/intel_driver.h
0,0 → 1,300
#ifndef _INTEL_DRIVER_H_
#define _INTEL_DRIVER_H_
 
#include <stddef.h>
#include <pthread.h>
#include <signal.h>
 
#include <drm.h>
#include <i915_drm.h>
#include <intel_bufmgr.h>
 
#include <va/va_backend.h>
#include "va_backend_compat.h"
 
#include "intel_compiler.h"
 
#define BATCH_SIZE 0x80000
#define BATCH_RESERVED 0x10
 
#define CMD_MI (0x0 << 29)
#define CMD_2D (0x2 << 29)
#define CMD_3D (0x3 << 29)
 
#define MI_NOOP (CMD_MI | 0)
 
#define MI_BATCH_BUFFER_END (CMD_MI | (0xA << 23))
#define MI_BATCH_BUFFER_START (CMD_MI | (0x31 << 23))
 
#define MI_FLUSH (CMD_MI | (0x4 << 23))
#define MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE (0x1 << 0)
 
#define MI_FLUSH_DW (CMD_MI | (0x26 << 23) | 0x2)
#define MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE (0x1 << 7)
 
#define XY_COLOR_BLT_CMD (CMD_2D | (0x50 << 22) | 0x04)
#define XY_COLOR_BLT_WRITE_ALPHA (1 << 21)
#define XY_COLOR_BLT_WRITE_RGB (1 << 20)
#define XY_COLOR_BLT_DST_TILED (1 << 11)
 
/* BR13 */
#define BR13_8 (0x0 << 24)
#define BR13_565 (0x1 << 24)
#define BR13_1555 (0x2 << 24)
#define BR13_8888 (0x3 << 24)
 
#define CMD_PIPE_CONTROL (CMD_3D | (3 << 27) | (2 << 24) | (0 << 16))
#define CMD_PIPE_CONTROL_NOWRITE (0 << 14)
#define CMD_PIPE_CONTROL_WRITE_QWORD (1 << 14)
#define CMD_PIPE_CONTROL_WRITE_DEPTH (2 << 14)
#define CMD_PIPE_CONTROL_WRITE_TIME (3 << 14)
#define CMD_PIPE_CONTROL_DEPTH_STALL (1 << 13)
#define CMD_PIPE_CONTROL_WC_FLUSH (1 << 12)
#define CMD_PIPE_CONTROL_IS_FLUSH (1 << 11)
#define CMD_PIPE_CONTROL_TC_FLUSH (1 << 10)
#define CMD_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
#define CMD_PIPE_CONTROL_DC_FLUSH (1 << 5)
#define CMD_PIPE_CONTROL_GLOBAL_GTT (1 << 2)
#define CMD_PIPE_CONTROL_LOCAL_PGTT (0 << 2)
#define CMD_PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0)
 
 
struct intel_batchbuffer;
 
#define ALIGN(i, n) (((i) + (n) - 1) & ~((n) - 1))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
 
#define Bool int
#define True 1
#define False 0
 
#define SET_BLOCKED_SIGSET() do { \
sigset_t bl_mask; \
sigfillset(&bl_mask); \
sigdelset(&bl_mask, SIGFPE); \
sigdelset(&bl_mask, SIGILL); \
sigdelset(&bl_mask, SIGSEGV); \
sigdelset(&bl_mask, SIGBUS); \
sigdelset(&bl_mask, SIGKILL); \
pthread_sigmask(SIG_SETMASK, &bl_mask, &intel->sa_mask); \
} while (0)
 
#define RESTORE_BLOCKED_SIGSET() do { \
pthread_sigmask(SIG_SETMASK, &intel->sa_mask, NULL); \
} while (0)
 
#define PPTHREAD_MUTEX_LOCK() do { \
SET_BLOCKED_SIGSET(); \
pthread_mutex_lock(&intel->ctxmutex); \
} while (0)
 
#define PPTHREAD_MUTEX_UNLOCK() do { \
pthread_mutex_unlock(&intel->ctxmutex); \
RESTORE_BLOCKED_SIGSET(); \
} while (0)
 
#define WARN_ONCE(...) do { \
static int g_once = 1; \
if (g_once) { \
g_once = 0; \
printf("WARNING: " __VA_ARGS__); \
} \
} while (0)
 
struct intel_driver_data
{
int fd;
int device_id;
int revision;
 
int dri2Enabled;
 
sigset_t sa_mask;
// pthread_mutex_t ctxmutex;
int locked;
 
dri_bufmgr *bufmgr;
 
unsigned int has_exec2 : 1; /* Flag: has execbuffer2? */
unsigned int has_bsd : 1; /* Flag: has bitstream decoder for H.264? */
unsigned int has_blt : 1; /* Flag: has BLT unit? */
};
 
Bool intel_driver_init(VADriverContextP ctx);
Bool intel_driver_terminate(VADriverContextP ctx);
 
static INLINE struct intel_driver_data *
intel_driver_data(VADriverContextP ctx)
{
return (struct intel_driver_data *)ctx->pDriverData;
}
 
struct intel_region
{
int x;
int y;
unsigned int width;
unsigned int height;
unsigned int cpp;
unsigned int pitch;
unsigned int tiling;
unsigned int swizzle;
dri_bo *bo;
};
 
#define PCI_CHIP_GM45_GM 0x2A42
#define PCI_CHIP_IGD_E_G 0x2E02
#define PCI_CHIP_Q45_G 0x2E12
#define PCI_CHIP_G45_G 0x2E22
#define PCI_CHIP_G41_G 0x2E32
#define PCI_CHIP_B43_G 0x2E42
#define PCI_CHIP_B43_G1 0x2E92
 
#define PCI_CHIP_IRONLAKE_D_G 0x0042
#define PCI_CHIP_IRONLAKE_M_G 0x0046
 
#ifndef PCI_CHIP_SANDYBRIDGE_GT1
#define PCI_CHIP_SANDYBRIDGE_GT1 0x0102 /* Desktop */
#define PCI_CHIP_SANDYBRIDGE_GT2 0x0112
#define PCI_CHIP_SANDYBRIDGE_GT2_PLUS 0x0122
#define PCI_CHIP_SANDYBRIDGE_M_GT1 0x0106 /* Mobile */
#define PCI_CHIP_SANDYBRIDGE_M_GT2 0x0116
#define PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS 0x0126
#define PCI_CHIP_SANDYBRIDGE_S_GT 0x010A /* Server */
#endif
 
#define PCI_CHIP_IVYBRIDGE_GT1 0x0152 /* Desktop */
#define PCI_CHIP_IVYBRIDGE_GT2 0x0162
#define PCI_CHIP_IVYBRIDGE_M_GT1 0x0156 /* Mobile */
#define PCI_CHIP_IVYBRIDGE_M_GT2 0x0166
#define PCI_CHIP_IVYBRIDGE_S_GT1 0x015a /* Server */
#define PCI_CHIP_IVYBRIDGE_S_GT2 0x016a
 
#define PCI_CHIP_HASWELL_GT1 0x0402 /* Desktop */
#define PCI_CHIP_HASWELL_GT2 0x0412
#define PCI_CHIP_HASWELL_GT2_PLUS 0x0422
#define PCI_CHIP_HASWELL_M_GT1 0x0406 /* Mobile */
#define PCI_CHIP_HASWELL_M_GT2 0x0416
#define PCI_CHIP_HASWELL_M_GT2_PLUS 0x0426
#define PCI_CHIP_HASWELL_S_GT1 0x040a /* Server */
#define PCI_CHIP_HASWELL_S_GT2 0x041a
#define PCI_CHIP_HASWELL_S_GT2_PLUS 0x042a
 
#define PCI_CHIP_HASWELL_SDV_GT1 0x0c02 /* Desktop */
#define PCI_CHIP_HASWELL_SDV_GT2 0x0c12
#define PCI_CHIP_HASWELL_SDV_GT2_PLUS 0x0c22
#define PCI_CHIP_HASWELL_SDV_M_GT1 0x0c06 /* Mobile */
#define PCI_CHIP_HASWELL_SDV_M_GT2 0x0c16
#define PCI_CHIP_HASWELL_SDV_M_GT2_PLUS 0x0c26
#define PCI_CHIP_HASWELL_SDV_S_GT1 0x0c0a /* Server */
#define PCI_CHIP_HASWELL_SDV_S_GT2 0x0c1a
#define PCI_CHIP_HASWELL_SDV_S_GT2_PLUS 0x0c2a
 
#define PCI_CHIP_HASWELL_ULT_GT1 0x0A02 /* Desktop */
#define PCI_CHIP_HASWELL_ULT_GT2 0x0A12
#define PCI_CHIP_HASWELL_ULT_GT2_PLUS 0x0A22
#define PCI_CHIP_HASWELL_ULT_M_GT1 0x0A06 /* Mobile */
#define PCI_CHIP_HASWELL_ULT_M_GT2 0x0A16
#define PCI_CHIP_HASWELL_ULT_M_GT2_PLUS 0x0A26
#define PCI_CHIP_HASWELL_ULT_S_GT1 0x0A0A /* Server */
#define PCI_CHIP_HASWELL_ULT_S_GT2 0x0A1A
#define PCI_CHIP_HASWELL_ULT_S_GT2_PLUS 0x0A2A
 
#define PCI_CHIP_HASWELL_CRW_GT1 0x0D12 /* Desktop */
#define PCI_CHIP_HASWELL_CRW_GT2 0x0D22
#define PCI_CHIP_HASWELL_CRW_GT2_PLUS 0x0D32
#define PCI_CHIP_HASWELL_CRW_M_GT1 0x0D16 /* Mobile */
#define PCI_CHIP_HASWELL_CRW_M_GT2 0x0D26
#define PCI_CHIP_HASWELL_CRW_M_GT2_PLUS 0x0D36
#define PCI_CHIP_HASWELL_CRW_S_GT1 0x0D1A /* Server */
#define PCI_CHIP_HASWELL_CRW_S_GT2 0x0D2A
#define PCI_CHIP_HASWELL_CRW_S_GT2_PLUS 0x0D3A
 
#define IS_G45(devid) (devid == PCI_CHIP_IGD_E_G || \
devid == PCI_CHIP_Q45_G || \
devid == PCI_CHIP_G45_G || \
devid == PCI_CHIP_G41_G || \
devid == PCI_CHIP_B43_G || \
devid == PCI_CHIP_B43_G1)
#define IS_GM45(devid) (devid == PCI_CHIP_GM45_GM)
#define IS_G4X(devid) (IS_G45(devid) || IS_GM45(devid))
 
#define IS_IRONLAKE_D(devid) (devid == PCI_CHIP_IRONLAKE_D_G)
#define IS_IRONLAKE_M(devid) (devid == PCI_CHIP_IRONLAKE_M_G)
#define IS_IRONLAKE(devid) (IS_IRONLAKE_D(devid) || IS_IRONLAKE_M(devid))
 
#define IS_SNB_GT1(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \
devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \
devid == PCI_CHIP_SANDYBRIDGE_S_GT)
 
#define IS_SNB_GT2(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT2 || \
devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \
devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \
devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS)
 
#define IS_GEN6(devid) (IS_SNB_GT1(devid) || \
IS_SNB_GT2(devid))
 
#define IS_IVB_GT1(devid) (devid == PCI_CHIP_IVYBRIDGE_GT1 || \
devid == PCI_CHIP_IVYBRIDGE_M_GT1 || \
devid == PCI_CHIP_IVYBRIDGE_S_GT1)
 
#define IS_IVB_GT2(devid) (devid == PCI_CHIP_IVYBRIDGE_GT2 || \
devid == PCI_CHIP_IVYBRIDGE_M_GT2 || \
devid == PCI_CHIP_IVYBRIDGE_S_GT2)
 
#define IS_IVYBRIDGE(devid) (IS_IVB_GT1(devid) || \
IS_IVB_GT2(devid))
 
#define IS_HSW_GT1(devid) (devid == PCI_CHIP_HASWELL_GT1 || \
devid == PCI_CHIP_HASWELL_M_GT1 || \
devid == PCI_CHIP_HASWELL_S_GT1 || \
devid == PCI_CHIP_HASWELL_SDV_GT1 || \
devid == PCI_CHIP_HASWELL_SDV_M_GT1 || \
devid == PCI_CHIP_HASWELL_SDV_S_GT1 || \
devid == PCI_CHIP_HASWELL_CRW_GT1 || \
devid == PCI_CHIP_HASWELL_CRW_M_GT1 || \
devid == PCI_CHIP_HASWELL_CRW_S_GT1 || \
devid == PCI_CHIP_HASWELL_ULT_GT1 || \
devid == PCI_CHIP_HASWELL_ULT_M_GT1 || \
devid == PCI_CHIP_HASWELL_ULT_S_GT1)
 
#define IS_HSW_GT2(devid) (devid == PCI_CHIP_HASWELL_GT2|| \
devid == PCI_CHIP_HASWELL_M_GT2|| \
devid == PCI_CHIP_HASWELL_S_GT2|| \
devid == PCI_CHIP_HASWELL_SDV_GT2|| \
devid == PCI_CHIP_HASWELL_SDV_M_GT2|| \
devid == PCI_CHIP_HASWELL_SDV_S_GT2|| \
devid == PCI_CHIP_HASWELL_CRW_GT2|| \
devid == PCI_CHIP_HASWELL_CRW_M_GT2|| \
devid == PCI_CHIP_HASWELL_CRW_S_GT2|| \
devid == PCI_CHIP_HASWELL_ULT_GT2|| \
devid == PCI_CHIP_HASWELL_ULT_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_ULT_M_GT2|| \
devid == PCI_CHIP_HASWELL_ULT_M_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_ULT_S_GT2 || \
devid == PCI_CHIP_HASWELL_ULT_S_GT2_PLUS || \
devid == PCI_CHIP_HASWELL_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_M_GT2_PLUS || \
devid == PCI_CHIP_HASWELL_S_GT2_PLUS || \
devid == PCI_CHIP_HASWELL_SDV_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_SDV_M_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_SDV_S_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_CRW_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_CRW_M_GT2_PLUS|| \
devid == PCI_CHIP_HASWELL_CRW_S_GT2_PLUS)
 
#define IS_HASWELL(devid) (IS_HSW_GT1(devid) || \
IS_HSW_GT2(devid))
 
#define IS_GEN7(devid) (IS_IVYBRIDGE(devid) || \
IS_HASWELL(devid))
 
#ifndef I915_EXEC_VEBOX
#define I915_EXEC_VEBOX 4
#endif
 
#endif /* _INTEL_DRIVER_H_ */
/drivers/video/i965/intel_memman.c
0,0 → 1,49
/*
* Copyright © 2009 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Xiang Haihao <haihao.xiang@intel.com>
* Zou Nan hai <nanhai.zou@intel.com>
*
*/
 
#include <assert.h>
 
#include "intel_driver.h"
 
Bool
intel_memman_init(struct intel_driver_data *intel)
{
intel->bufmgr = intel_bufmgr_gem_init(intel->fd, BATCH_SIZE);
assert(intel->bufmgr);
intel_bufmgr_gem_enable_reuse(intel->bufmgr);
 
return True;
}
 
Bool
intel_memman_terminate(struct intel_driver_data *intel)
{
drm_intel_bufmgr_destroy(intel->bufmgr);
return True;
}
/drivers/video/i965/intel_memman.h
0,0 → 1,7
#ifndef _INTEL_MEMMAN_H_
#define _INTEL_MEMMAN_H_
 
Bool intel_memman_init(struct intel_driver_data *intel);
Bool intel_memman_terminate(struct intel_driver_data *intel);
 
#endif /* _INTEL_MEMMAN_H_ */
/drivers/video/i965/object_heap.c
0,0 → 1,247
/*
* Copyright (c) 2007 Intel Corporation. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
 
#include "object_heap.h"
 
#include "assert.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define ASSERT assert
 
#define LAST_FREE -1
#define ALLOCATED -2
 
/*
* Expands the heap
* Return 0 on success, -1 on error
*/
static int object_heap_expand( object_heap_p heap )
{
int i;
void *new_heap_index;
int next_free;
int new_heap_size = heap->heap_size + heap->heap_increment;
int bucket_index = new_heap_size / heap->heap_increment - 1;
 
if (bucket_index >= heap->num_buckets) {
int new_num_buckets = heap->num_buckets + 8;
void **new_bucket;
 
new_bucket = realloc(heap->bucket, new_num_buckets * sizeof(void *));
if (NULL == new_bucket) {
return -1;
}
 
heap->num_buckets = new_num_buckets;
heap->bucket = new_bucket;
}
 
new_heap_index = (void *) malloc( heap->heap_increment * heap->object_size );
if ( NULL == new_heap_index )
{
return -1; /* Out of memory */
}
 
heap->bucket[bucket_index] = new_heap_index;
next_free = heap->next_free;
for(i = new_heap_size; i-- > heap->heap_size; )
{
object_base_p obj = (object_base_p) (new_heap_index + (i - heap->heap_size) * heap->object_size);
obj->id = i + heap->id_offset;
obj->next_free = next_free;
next_free = i;
}
heap->next_free = next_free;
heap->heap_size = new_heap_size;
return 0; /* Success */
}
 
/*
* Return 0 on success, -1 on error
*/
int object_heap_init( object_heap_p heap, int object_size, int id_offset)
{
heap->object_size = object_size;
heap->id_offset = id_offset & OBJECT_HEAP_OFFSET_MASK;
heap->heap_size = 0;
heap->heap_increment = 16;
heap->next_free = LAST_FREE;
_i965InitMutex(&heap->mutex);
heap->num_buckets = 0;
heap->bucket = NULL;
return object_heap_expand(heap);
}
 
/*
* Allocates an object
* Returns the object ID on success, returns -1 on error
*/
int object_heap_allocate( object_heap_p heap )
{
object_base_p obj;
int bucket_index, obj_index;
 
_i965LockMutex(&heap->mutex);
if ( LAST_FREE == heap->next_free )
{
if( -1 == object_heap_expand( heap ) )
{
_i965UnlockMutex(&heap->mutex);
return -1; /* Out of memory */
}
}
ASSERT( heap->next_free >= 0 );
 
bucket_index = heap->next_free / heap->heap_increment;
obj_index = heap->next_free % heap->heap_increment;
 
obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
heap->next_free = obj->next_free;
_i965UnlockMutex(&heap->mutex);
obj->next_free = ALLOCATED;
return obj->id;
}
 
/*
* Lookup an object by object ID
* Returns a pointer to the object on success, returns NULL on error
*/
object_base_p object_heap_lookup( object_heap_p heap, int id )
{
object_base_p obj;
int bucket_index, obj_index;
 
_i965LockMutex(&heap->mutex);
if ( (id < heap->id_offset) || (id > (heap->heap_size+heap->id_offset)) )
{
_i965UnlockMutex(&heap->mutex);
return NULL;
}
id &= OBJECT_HEAP_ID_MASK;
bucket_index = id / heap->heap_increment;
obj_index = id % heap->heap_increment;
obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
_i965UnlockMutex(&heap->mutex);
 
/* Check if the object has in fact been allocated */
if ( obj->next_free != ALLOCATED )
{
return NULL;
}
return obj;
}
 
/*
* Iterate over all objects in the heap.
* Returns a pointer to the first object on the heap, returns NULL if heap is empty.
*/
object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter )
{
*iter = -1;
return object_heap_next( heap, iter );
}
 
/*
* Iterate over all objects in the heap.
* Returns a pointer to the next object on the heap, returns NULL if heap is empty.
*/
object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter )
{
object_base_p obj;
int i = *iter + 1;
int bucket_index, obj_index;
 
_i965LockMutex(&heap->mutex);
while ( i < heap->heap_size)
{
bucket_index = i / heap->heap_increment;
obj_index = i % heap->heap_increment;
 
obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
if (obj->next_free == ALLOCATED)
{
_i965UnlockMutex(&heap->mutex);
*iter = i;
return obj;
}
i++;
}
_i965UnlockMutex(&heap->mutex);
*iter = i;
return NULL;
}
 
 
 
/*
* Frees an object
*/
void object_heap_free( object_heap_p heap, object_base_p obj )
{
/* Don't complain about NULL pointers */
if (NULL != obj)
{
/* Check if the object has in fact been allocated */
ASSERT( obj->next_free == ALLOCATED );
_i965LockMutex(&heap->mutex);
obj->next_free = heap->next_free;
heap->next_free = obj->id & OBJECT_HEAP_ID_MASK;
_i965UnlockMutex(&heap->mutex);
}
}
 
/*
* Destroys a heap, the heap must be empty.
*/
void object_heap_destroy( object_heap_p heap )
{
object_base_p obj;
int i;
int bucket_index, obj_index;
 
_i965DestroyMutex(&heap->mutex);
 
/* Check if heap is empty */
for (i = 0; i < heap->heap_size; i++)
{
/* Check if object is not still allocated */
bucket_index = i / heap->heap_increment;
obj_index = i % heap->heap_increment;
obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
ASSERT( obj->next_free != ALLOCATED );
}
 
for (i = 0; i < heap->heap_size / heap->heap_increment; i++) {
free(heap->bucket[i]);
}
 
free(heap->bucket);
heap->bucket = NULL;
heap->heap_size = 0;
heap->next_free = LAST_FREE;
}
/drivers/video/i965/object_heap.h
0,0 → 1,93
/*
* Copyright (c) 2007 Intel Corporation. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
 
#ifndef _OBJECT_HEAP_H_
#define _OBJECT_HEAP_H_
 
#include "i965_mutext.h"
 
#define OBJECT_HEAP_OFFSET_MASK 0x7F000000
#define OBJECT_HEAP_ID_MASK 0x00FFFFFF
 
typedef struct object_base *object_base_p;
typedef struct object_heap *object_heap_p;
 
struct object_base {
int id;
int next_free;
};
 
struct object_heap {
int object_size;
int id_offset;
int next_free;
int heap_size;
int heap_increment;
_I965Mutex mutex;
void **bucket;
int num_buckets;
};
 
typedef int object_heap_iterator;
 
/*
* Return 0 on success, -1 on error
*/
int object_heap_init( object_heap_p heap, int object_size, int id_offset);
 
/*
* Allocates an object
* Returns the object ID on success, returns -1 on error
*/
int object_heap_allocate( object_heap_p heap );
 
/*
* Lookup an allocated object by object ID
* Returns a pointer to the object on success, returns NULL on error
*/
object_base_p object_heap_lookup( object_heap_p heap, int id );
 
/*
* Iterate over all objects in the heap.
* Returns a pointer to the first object on the heap, returns NULL if heap is empty.
*/
object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter );
 
/*
* Iterate over all objects in the heap.
* Returns a pointer to the next object on the heap, returns NULL if heap is empty.
*/
object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter );
 
/*
* Frees an object
*/
void object_heap_free( object_heap_p heap, object_base_p obj );
 
/*
* Destroys a heap, the heap must be empty.
*/
void object_heap_destroy( object_heap_p heap );
 
#endif /* _OBJECT_HEAP_H_ */
/drivers/video/i965/shaders/h264/mc/avc_mc.g4b
0,0 → 1,5251
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x00000005, 0x220e3e2c, 0x00000070, 0x000f000f },
{ 0x00000001, 0x26a00221, 0x00009c38, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25c00229, 0x00b10624, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
{ 0x00a02001, 0x24000229, 0x00009003, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x0000900b, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00009013, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x0000901b, 0x00000000 },
{ 0x00a02001, 0x25000229, 0x00009023, 0x00000000 },
{ 0x00a02001, 0x25400229, 0x0000902b, 0x00000000 },
{ 0x00a02001, 0x25800229, 0x00009033, 0x00000000 },
{ 0x00a02001, 0x25c00229, 0x0000903b, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
{ 0x00600005, 0x24000c20, 0x0000006c, 0x00000011 },
{ 0x01600007, 0x20000c00, 0x028d0400, 0x00000011 },
{ 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x66430231, 0x028d0624, 0x00000000 },
{ 0x00780001, 0x66630231, 0x028d062c, 0x00000000 },
{ 0x00780001, 0x26240231, 0x00cf0643, 0x00000000 },
{ 0x00780001, 0x262c0231, 0x00cf0663, 0x00000000 },
{ 0x00800040, 0x25e04629, 0x00cf0643, 0x00b10624 },
{ 0x00600040, 0x25e02529, 0x008d05e0, 0x008d05f0 },
{ 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00a02040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00a02040, 0x24003d8c, 0x00b10400, 0x00100010 },
{ 0x00a02008, 0x24003d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24403d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24803d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24c03d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25003d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25403d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25803d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25c03d89, 0x00b10400, 0x00050005 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00600041, 0x26806e2d, 0x008d062c, 0x89abcdef },
{ 0x00600041, 0x26906e2d, 0x008d0623, 0xfedcba98 },
{ 0x00600041, 0x26a06e2d, 0x00cf0663, 0x89abcdef },
{ 0x00600041, 0x26b06e2d, 0x00cf0643, 0x0fedcba9 },
{ 0x00000041, 0x26be3e2d, 0x00000623, 0xfff8fff8 },
{ 0x00802040, 0x268035ad, 0x008d4680, 0x008d0690 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0682 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
{ 0x00200048, 0x24003dac, 0x00a00680, 0x00050005 },
{ 0x00200008, 0x26e03d8d, 0x00450400, 0x00060006 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x00000633, 0x00100010 },
{ 0x00800048, 0x26c03e2d, 0x0000067f, 0x00100010 },
{ 0x00800048, 0x272055ad, 0x000006e0, 0x00b10040 },
{ 0x00600041, 0x268055ad, 0x000006e2, 0x00ae0040 },
{ 0x00600041, 0x26a055ad, 0x000006e2, 0x00ae0041 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00680 },
{ 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00682 },
{ 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00684 },
{ 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00686 },
{ 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00688 },
{ 0x80a02008, 0x45003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068a },
{ 0x80a02008, 0x45403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068c },
{ 0x80a02008, 0x45803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068e },
{ 0x80a02008, 0x45c03d91, 0x00b10400, 0x00050005 },
{ 0x00000001, 0x22040060, 0x00000000, 0x00900080 },
{ 0x01000005, 0x20000c20, 0x02000068, 0x00003c00 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000020 },
{ 0x80802040, 0x440045b1, 0x008d8800, 0x00ae0400 },
{ 0x80802040, 0x444045b1, 0x008d8820, 0x00ae0440 },
{ 0x80802040, 0x448045b1, 0x008d8840, 0x00ae0480 },
{ 0x80802040, 0x44c045b1, 0x008d8860, 0x00ae04c0 },
{ 0x80802040, 0x441045b1, 0x008d8880, 0x00ae0410 },
{ 0x80802040, 0x445045b1, 0x008d88a0, 0x00ae0450 },
{ 0x80802040, 0x449045b1, 0x008d88c0, 0x00ae0490 },
{ 0x80802040, 0x44d045b1, 0x008d88e0, 0x00ae04d0 },
{ 0x80802040, 0x450045b1, 0x008d8900, 0x00ae0500 },
{ 0x80802040, 0x454045b1, 0x008d8920, 0x00ae0540 },
{ 0x80802040, 0x458045b1, 0x008d8940, 0x00ae0580 },
{ 0x80802040, 0x45c045b1, 0x008d8960, 0x00ae05c0 },
{ 0x80802040, 0x451045b1, 0x008d8980, 0x00ae0510 },
{ 0x80802040, 0x455045b1, 0x008d89a0, 0x00ae0550 },
{ 0x80802040, 0x459045b1, 0x008d89c0, 0x00ae0590 },
{ 0x80802040, 0x45d045b1, 0x008d89e0, 0x00ae05d0 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x01800180 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e2 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
{ 0x00000801, 0x27c80061, 0x00000000, 0x0000001b },
{ 0x00000040, 0x22000d20, 0x00000062, 0x02186000 },
{ 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
{ 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
{ 0x00000801, 0x27c80061, 0x00000000, 0x000f0003 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
{ 0x02600031, 0x26400021, 0x408d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000008, 0x27fc3dad, 0x000007fc, 0x00010001 },
{ 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
{ 0x00000801, 0x27c80061, 0x00000000, 0x00000013 },
{ 0x00000040, 0x22000c00, 0x00000200, 0xefffc001 },
{ 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
{ 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
{ 0x00000801, 0x27c80061, 0x00000000, 0x00070003 },
{ 0x05600031, 0x26400021, 0x408d07c0, 0x00000200 },
{ 0x00000008, 0x220e3e2c, 0x0000006c, 0x00060006 },
{ 0x00000001, 0x26a002a5, 0x00009c3c, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
{ 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
{ 0x00560001, 0x46420129, 0x02690624, 0x00000000 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000010 },
{ 0x00560001, 0x46520129, 0x0269062c, 0x00000000 },
{ 0x00780001, 0x26240129, 0x00ae0642, 0x00000000 },
{ 0x00800040, 0x24004629, 0x00b10624, 0x00650642 },
{ 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
{ 0x00600040, 0x25202529, 0x00050400, 0x00050404 },
{ 0x00600040, 0x25702529, 0x00050408, 0x0005040c },
{ 0x00560001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x00460001, 0x26240129, 0x028a0652, 0x00000000 },
{ 0x00560001, 0x46520129, 0x02690624, 0x00000000 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
{ 0x00560001, 0x46420169, 0x02000000, 0x80808080 },
{ 0x00460001, 0x46420129, 0x0069062c, 0x00000000 },
{ 0x00560001, 0x262c0129, 0x008a0642, 0x00000000 },
{ 0x00600040, 0x24004629, 0x008d0624, 0x00650652 },
{ 0x00600040, 0x24104629, 0x00650642, 0x008d062c },
{ 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
{ 0x00600040, 0x25302529, 0x00050408, 0x0005040c },
{ 0x00600040, 0x25602529, 0x00050400, 0x00050404 },
{ 0x00a02040, 0x24003d2c, 0x00b10520, 0x00040004 },
{ 0x00a02008, 0x24003d89, 0x00b10400, 0x00030003 },
{ 0x00a02008, 0x24403d89, 0x00b10400, 0x00030003 },
{ 0x00a02040, 0x24003d2c, 0x00b10560, 0x00040004 },
{ 0x00a02008, 0x24803d89, 0x00b10400, 0x00030003 },
{ 0x00a02008, 0x24c03d89, 0x00b10400, 0x00030003 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
{ 0x00a02001, 0x24000229, 0x00059002, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x0005900a, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00059012, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x0005901a, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000003c },
{ 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x00600041, 0x26806e2d, 0x008d062c, 0x44332211 },
{ 0x00600041, 0x26906e2d, 0x008d0622, 0xffeeddcc },
{ 0x00600041, 0x26a06e2d, 0x00650652, 0x44332211 },
{ 0x00600041, 0x26b06e2d, 0x00650642, 0x00ffeedd },
{ 0x00200041, 0x26bc3e2d, 0x00450622, 0xfffcfffc },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0690 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
{ 0x00400048, 0x24003dac, 0x00a50680, 0x00220022 },
{ 0x00400008, 0x26e03d8d, 0x00690400, 0x00060006 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x00050632, 0x00100010 },
{ 0x00800048, 0x26c03e2d, 0x0005065e, 0x00100010 },
{ 0x00800048, 0x272055ad, 0x000506e0, 0x00240044 },
{ 0x00600041, 0x268055ad, 0x000506e4, 0x00440044 },
{ 0x00600041, 0x26a055ad, 0x000506e4, 0x00440045 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050680 },
{ 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050684 },
{ 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050688 },
{ 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x0005068c },
{ 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
{ 0x00000040, 0x22063d8c, 0x00000204, 0x00100010 },
{ 0x80802040, 0x640045b1, 0x008d8880, 0x00cf0400 },
{ 0x80802040, 0x644045b1, 0x008d88a0, 0x00cf0440 },
{ 0x80802040, 0x648045b1, 0x008d88c0, 0x00cf0480 },
{ 0x80802040, 0x64c045b1, 0x008d88e0, 0x00cf04c0 },
{ 0x80802040, 0x640245b1, 0x008d8900, 0x00cf0402 },
{ 0x80802040, 0x644245b1, 0x008d8920, 0x00cf0442 },
{ 0x80802040, 0x648245b1, 0x008d8940, 0x00cf0482 },
{ 0x80802040, 0x64c245b1, 0x008d8960, 0x00cf04c2 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x0007000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x08004000 },
{ 0x00800001, 0x20400232, 0x00d20400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20420, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20440, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d20460, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d20480, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d204a0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d204c0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d204e0, 0x00000000 },
{ 0x01600031, 0x27a00021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00000001, 0x22080060, 0x00000000, 0x04400400 },
{ 0x00a02001, 0x20400232, 0x00d29000, 0x00000000 },
{ 0x00a02001, 0x20500232, 0x00d29020, 0x00000000 },
{ 0x00a02001, 0x20800232, 0x00d29080, 0x00000000 },
{ 0x00a02001, 0x20900232, 0x00d290a0, 0x00000000 },
{ 0x00a02001, 0x20c00232, 0x00d29100, 0x00000000 },
{ 0x00a02001, 0x20d00232, 0x00d29120, 0x00000000 },
{ 0x00a02001, 0x21000232, 0x00d29180, 0x00000000 },
{ 0x00a02001, 0x21100232, 0x00d291a0, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff04 },
{ 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
{ 0x00000001, 0x22080060, 0x00000000, 0x04100400 },
{ 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
{ 0x00400001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x272001a9, 0x00b10620, 0x00000000 },
{ 0x02600005, 0x20001c20, 0x0000006c, 0x00000008 },
{ 0x00110001, 0x27230231, 0x00000624, 0x00000000 },
{ 0x00600001, 0x27420231, 0x00cf0643, 0x00000000 },
{ 0x00110001, 0x27410231, 0x00000643, 0x00000000 },
{ 0x00240001, 0x27400231, 0x00000623, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
{ 0x00010001, 0x27400231, 0x02000624, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000001 },
{ 0x00110001, 0x27420231, 0x02000623, 0x00000000 },
{ 0x00000005, 0x26803e2d, 0x00000070, 0x000f000f },
{ 0x00000001, 0x270801ad, 0x00000700, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000084 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x02600005, 0x20001c20, 0x0200006c, 0x00000004 },
{ 0x00680001, 0x272c0231, 0x028d0634, 0x00000000 },
{ 0x00780001, 0x272c0231, 0x02000633, 0x00000000 },
{ 0x00400001, 0x27420231, 0x00a0040e, 0x00000000 },
{ 0x00400001, 0x27460231, 0x00a0044e, 0x00000000 },
{ 0x00200001, 0x27400231, 0x0000062b, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
{ 0x00010001, 0x27400231, 0x0200062c, 0x00000000 },
{ 0x00110001, 0x27410231, 0x0200040e, 0x00000000 },
{ 0x00000008, 0x26803e2d, 0x00000070, 0x00040004 },
{ 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
{ 0x00000006, 0x27083dad, 0x00000700, 0x00010001 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00a02001, 0xb3800231, 0x00d20400, 0x00000000 },
{ 0x00a02001, 0xb3a00231, 0x00d20480, 0x00000000 },
{ 0x00a02001, 0xb3c00231, 0x00d20440, 0x00000000 },
{ 0x00a02001, 0xb3e00231, 0x00d204c0, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x00000060, 0x00000002 },
{ 0x01000005, 0x20001c20, 0x0200006c, 0x00000001 },
{ 0x01010005, 0x20001c20, 0x00000060, 0x00004000 },
{ 0x02010005, 0x20001c20, 0x02000060, 0x00000010 },
{ 0x00030001, 0x27230231, 0x0000065f, 0x00000000 },
{ 0x00030220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02600005, 0x20001c20, 0x0000006c, 0x00000001 },
{ 0x00460001, 0x27200231, 0x0069065c, 0x00000000 },
{ 0x00110001, 0x27230231, 0x00000458, 0x00000000 },
{ 0x00600001, 0x27240231, 0x008d0458, 0x00000000 },
{ 0x00600001, 0x272c0231, 0x008d0478, 0x00000000 },
{ 0x00600001, 0x27420231, 0x00cf0663, 0x00000000 },
{ 0x00000001, 0x27400231, 0x00000458, 0x00000000 },
{ 0x00010001, 0x27410231, 0x0000065f, 0x00000000 },
{ 0x00110001, 0x27410231, 0x00000663, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000010 },
{ 0x00110001, 0x27420231, 0x0200065f, 0x00000000 },
{ 0x00000005, 0x26803e2d, 0x00000071, 0x000f000f },
{ 0x00000006, 0x27083dad, 0x00000702, 0x00020002 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00400001, 0x27200231, 0x0069045c, 0x00000000 },
{ 0x00600001, 0x27240231, 0x008d0478, 0x00000000 },
{ 0x00800001, 0x272c0231, 0x0000047f, 0x00000000 },
{ 0x00400001, 0x27420231, 0x00a0048e, 0x00000000 },
{ 0x00400001, 0x27460231, 0x00a004ce, 0x00000000 },
{ 0x00000001, 0x27400231, 0x00000478, 0x00000000 },
{ 0x00000001, 0x27410231, 0x0000045f, 0x00000000 },
{ 0x00000008, 0x26803e2d, 0x00000071, 0x00040004 },
{ 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
{ 0x00000006, 0x27083dad, 0x00000700, 0x00030003 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00a02001, 0xb3800231, 0x00d20480, 0x00000000 },
{ 0x00a02001, 0xb3a00231, 0x00d20500, 0x00000000 },
{ 0x00a02001, 0xb3c00231, 0x00d204c0, 0x00000000 },
{ 0x00a02001, 0xb3e00231, 0x00d20540, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000100 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffe74 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000001, 0x27340231, 0x00000733, 0x00000000 },
{ 0x00600001, 0x274a0231, 0x00000749, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b10723, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00010001 },
{ 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x00b10740, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10742, 0x00010001 },
{ 0x00800008, 0x26a03d8d, 0x008d0400, 0x00020002 },
{ 0x00800001, 0x27240231, 0x00d206c0, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00ae06a2, 0x00000000 },
{ 0x00000001, 0x27230231, 0x000006a0, 0x00000000 },
{ 0x00000005, 0x220e3dac, 0x00000680, 0x000f000f },
{ 0x00000001, 0x26a00221, 0x00009c2c, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x80800040, 0xd00045b1, 0x00b18800, 0x000d0724 },
{ 0x80800040, 0xd02045b1, 0x00b18820, 0x000d0724 },
{ 0x80800040, 0xd04045b1, 0x00b18840, 0x000d0724 },
{ 0x80800040, 0xd06045b1, 0x00b18860, 0x000d0724 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x80800040, 0xd00045b1, 0x00b18800, 0x002c0740 },
{ 0x80800040, 0xd02045b1, 0x00b18820, 0x002c0742 },
{ 0x80800040, 0xd04045b1, 0x00b18840, 0x002c0744 },
{ 0x80800040, 0xd06045b1, 0x00b18860, 0x002c0746 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x02802005, 0x20003da0, 0x00000708, 0x00020002 },
{ 0x02600005, 0x20003da0, 0x02000708, 0x00010001 },
{ 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
{ 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
{ 0x00600040, 0x25e04629, 0x008d0724, 0x008d0740 },
{ 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00800040, 0x24003d8c, 0x008d0400, 0x00080008 },
{ 0x00800008, 0x26803d8d, 0x008d0400, 0x00040004 },
{ 0x80800040, 0xd00035b1, 0x00b18800, 0x00b10680 },
{ 0x80800040, 0xd02035b1, 0x00b18820, 0x00b10680 },
{ 0x80800040, 0xd04035b1, 0x00b18840, 0x00b10680 },
{ 0x80800040, 0xd06035b1, 0x00b18860, 0x00b10680 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27340231, 0x008d0733, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
{ 0x00800008, 0x26803d8d, 0x00b10400, 0x00020002 },
{ 0x80800040, 0xd00035b1, 0x00b18800, 0x002d0680 },
{ 0x80800040, 0xd02035b1, 0x00b18820, 0x002d0684 },
{ 0x80800040, 0xd04035b1, 0x00b18840, 0x002d0688 },
{ 0x80800040, 0xd06035b1, 0x00b18860, 0x002d068c },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
{ 0x00800008, 0x26a03d8d, 0x00b10400, 0x00020002 },
{ 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
{ 0x80800040, 0xd06035b1, 0x01ed9800, 0x00b18860 },
{ 0x80800040, 0xd04035b1, 0x01ed9804, 0x00b18840 },
{ 0x80800040, 0xd02035b1, 0x01ed9808, 0x00b18820 },
{ 0x80800040, 0xd00035b1, 0x01ed980c, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b106a8, 0x00b106a9 },
{ 0x00800040, 0x24003e2c, 0x00b106a3, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00010001 },
{ 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00600001, 0x26a00231, 0x00ae06c0, 0x00000000 },
{ 0x00600001, 0x46a60231, 0x00ae06cc, 0x00000000 },
{ 0x00600001, 0x46a70231, 0x00ae05c0, 0x00000000 },
{ 0x00200040, 0x220c3eac, 0x00450036, 0x06a006a0 },
{ 0x80800040, 0xd0603631, 0x01ee9800, 0x00b18860 },
{ 0x80800040, 0xd0403631, 0x01ee9802, 0x00b18840 },
{ 0x80800040, 0xd0203631, 0x01ee9804, 0x00b18820 },
{ 0x80800040, 0xd0003631, 0x01ee9806, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00ab06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
{ 0x00800008, 0x25c03d89, 0x008d0400, 0x00020002 },
{ 0x00800042, 0x26a0462d, 0x00b106a0, 0x00b106a1 },
{ 0x00600001, 0x46a10231, 0x00ae05c0, 0x00000000 },
{ 0x00600001, 0x26b00231, 0x00ae05d0, 0x00000000 },
{ 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
{ 0x80800040, 0xd0603631, 0x01ed9800, 0x00b18860 },
{ 0x80800040, 0xd0403631, 0x01ed9804, 0x00b18840 },
{ 0x80800040, 0xd0203631, 0x01ed9808, 0x00b18820 },
{ 0x80800040, 0xd0003631, 0x01ed980c, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b10724, 0x00b10725 },
{ 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
{ 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
{ 0x80800040, 0xd0003531, 0x00ad05c0, 0x00b18800 },
{ 0x80800040, 0xd0203531, 0x00ad05c2, 0x00b18820 },
{ 0x80800040, 0xd0403531, 0x00ad05c4, 0x00b18840 },
{ 0x80800040, 0xd0603531, 0x00ad05c6, 0x00b18860 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27480231, 0x00000747, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b10740, 0x00b10741 },
{ 0x00800040, 0x24003e2c, 0x00b10742, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10740, 0x00010001 },
{ 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
{ 0x00800001, 0x45c10231, 0x00d205e0, 0x00000000 },
{ 0x80800040, 0xd0003631, 0x004d05c0, 0x00b18800 },
{ 0x80800040, 0xd0203631, 0x004d05c4, 0x00b18820 },
{ 0x80800040, 0xd0403631, 0x004d05c8, 0x00b18840 },
{ 0x80800040, 0xd0603631, 0x004d05cc, 0x00b18860 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00800001, 0x20400232, 0x00cd0400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00cd0408, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00cd0410, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00cd0418, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00cd0440, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00cd0448, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00cd0450, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00cd0458, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00cd0480, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00cd0488, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00cd0490, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00cd0498, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00cd04c0, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00cd04c8, 0x00000000 },
{ 0x00800001, 0x21200232, 0x00cd04d0, 0x00000000 },
{ 0x00800001, 0x21300232, 0x00cd04d8, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffd34 },
{ 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
{ 0x00000001, 0x220601ec, 0x00000000, 0x04000400 },
{ 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
{ 0x02600005, 0x20003e20, 0x0000006c, 0x00040004 },
{ 0x00780001, 0x26340231, 0x00000633, 0x00000000 },
{ 0x00800001, 0x27200231, 0x00b10620, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00cf0643, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240070, 0x00004040 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
{ 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240072, 0x00004040 },
{ 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000702, 0x00020002 },
{ 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
{ 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
{ 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
{ 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
{ 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
{ 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
{ 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
{ 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
{ 0x00400001, 0x27200231, 0x0069065c, 0x00000000 },
{ 0x00600001, 0x27240231, 0x00a98fcc, 0x00000000 },
{ 0x00600001, 0x272c0231, 0x00a98fec, 0x00000000 },
{ 0x00600001, 0x27340231, 0x00008fff, 0x00000000 },
{ 0x00800001, 0x2620012d, 0x00b10720, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00cf0663, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240074, 0x00004040 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x00600001, 0x27300231, 0x008d0638, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
{ 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240076, 0x00004040 },
{ 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
{ 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
{ 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
{ 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
{ 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
{ 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
{ 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
{ 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffcce },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00600001, 0x27800231, 0x008d0740, 0x00000000 },
{ 0x00400005, 0x22083dac, 0x00690680, 0x000f000f },
{ 0x00400040, 0x26a04625, 0x01e09020, 0x00690058 },
{ 0x00000001, 0x26d001ad, 0x00000700, 0x00000000 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x80600040, 0xcc0035b1, 0x00898800, 0x008d0760 },
{ 0x80600040, 0xcc1035b1, 0x00898820, 0x008d0770 },
{ 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c06, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00010001 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a4 },
{ 0x80600040, 0xcc2035b1, 0x00898808, 0x008d0760 },
{ 0x80600040, 0xcc3035b1, 0x00898828, 0x008d0770 },
{ 0x00000001, 0x27230231, 0x00000783, 0x00000000 },
{ 0x00400001, 0x27240231, 0x008a8c18, 0x00000000 },
{ 0x00400001, 0x27280231, 0x008a8c38, 0x00000000 },
{ 0x00400001, 0x272c0231, 0x00008c3e, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00690784, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00020002 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a8 },
{ 0x80600040, 0xcc4035b1, 0x00898840, 0x008d0760 },
{ 0x80600040, 0xcc5035b1, 0x00898860, 0x008d0770 },
{ 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
{ 0x00600001, 0x27280231, 0x00000727, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c46, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00030003 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006ac },
{ 0x80600040, 0xcc6035b1, 0x00898848, 0x008d0760 },
{ 0x80600040, 0xcc7035b1, 0x00898868, 0x008d0770 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00800001, 0x2760022d, 0x00090724, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00800001, 0x2760022d, 0x00280740, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x02802005, 0x20003da0, 0x000006d0, 0x00020002 },
{ 0x02802005, 0x20003da0, 0x020006d0, 0x00010001 },
{ 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
{ 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
{ 0x00400040, 0x25e04629, 0x00690724, 0x00690740 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00800040, 0x24003d8c, 0x008d0400, 0x00040004 },
{ 0x00800008, 0x27603d8d, 0x008d0400, 0x00030003 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600001, 0x26c00231, 0x008d0724, 0x00000000 },
{ 0x00400001, 0x26c80231, 0x0069072b, 0x00000000 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d06c0, 0x00010001 },
{ 0x00800008, 0x27603d2d, 0x002905e0, 0x00020002 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x26c03e2d, 0x008d06c0, 0x00010001 },
{ 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
{ 0x00800008, 0x27603dad, 0x01e99000, 0x00020002 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600042, 0x25c04629, 0x008d06c4, 0x008d06c5 },
{ 0x00600040, 0x24003e2c, 0x008d06c3, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00010001 },
{ 0x00600008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00400001, 0x46c401ad, 0x006906c4, 0x00000000 },
{ 0x00400001, 0x46c6012d, 0x006905c0, 0x00000000 },
{ 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
{ 0x00800001, 0x276001ad, 0x01ea9000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600042, 0x25c04629, 0x008d06c0, 0x008d06c1 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x26e03e2d, 0x008d06c0, 0x00010001 },
{ 0x00400008, 0x46c23dad, 0x006906e0, 0x00020002 },
{ 0x00200008, 0x26d03dad, 0x004506e8, 0x00020002 },
{ 0x00400001, 0x46c0012d, 0x006905c0, 0x00000000 },
{ 0x00400009, 0x22083eac, 0x00690054, 0x00010001 },
{ 0x00400040, 0x22083d8c, 0x00690208, 0x06c006c0 },
{ 0x00800001, 0x276001ad, 0x01e99000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600042, 0x45c04629, 0x008d0724, 0x008d0725 },
{ 0x00600040, 0x24003e2c, 0x008d0726, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d0725, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d0724, 0x00010001 },
{ 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
{ 0x00800001, 0x2760012d, 0x002a05c0, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600001, 0x27440231, 0x00000743, 0x00000000 },
{ 0x00600042, 0x45c04629, 0x008d0740, 0x008d0741 },
{ 0x00600040, 0x24003e2c, 0x008d0742, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d0741, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d0740, 0x00010001 },
{ 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
{ 0x00800001, 0x2760012d, 0x004905c0, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00800001, 0x20400232, 0x00a90400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00a90404, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00a90408, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00a9040c, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00a90440, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00a90444, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00a90448, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00a9044c, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00a90480, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00a90484, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00a90488, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00a9048c, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00a904c0, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00a904c4, 0x00000000 },
{ 0x00800001, 0x21200232, 0x00a904c8, 0x00000000 },
{ 0x00800001, 0x21300232, 0x00a904cc, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200809, 0x27c03e21, 0x00450064, 0x00040004 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
{ 0x00a02401, 0x20400232, 0x00b10080, 0x00000000 },
{ 0x00a02801, 0x20500232, 0x00b10090, 0x00000000 },
{ 0x00a02401, 0x20800232, 0x00b100c0, 0x00000000 },
{ 0x00a02801, 0x20900232, 0x00b100d0, 0x00000000 },
{ 0x00a02401, 0x20c00232, 0x00b10100, 0x00000000 },
{ 0x00a02801, 0x20d00232, 0x00b10110, 0x00000000 },
{ 0x00a02401, 0x21000232, 0x00b10140, 0x00000000 },
{ 0x00a02801, 0x21100232, 0x00b10150, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000401, 0x20280062, 0x00000000, 0x0007000f },
{ 0x0000080c, 0x20243c22, 0x000007c4, 0x00010001 },
{ 0x00000040, 0x22001c00, 0x00000200, 0xf8000001 },
{ 0x00800001, 0x40400232, 0x00b10180, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00b101c0, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00b10190, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00b101d0, 0x00000000 },
{ 0x00800001, 0x40800232, 0x00b101a0, 0x00000000 },
{ 0x00800001, 0x40810232, 0x00b101e0, 0x00000000 },
{ 0x00800001, 0x40a00232, 0x00b101b0, 0x00000000 },
{ 0x00800001, 0x40a10232, 0x00b101f0, 0x00000000 },
{ 0x01600031, 0x27a00001, 0x508d0000, 0x00000200 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000002fe },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x20780d21, 0x0000045a, 0x0208a002 },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001be },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000126 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee6 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffcf8 },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc36 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21401c21, 0x508d0040, 0x1218a000 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21601c21, 0x508d0040, 0x0a18a001 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x00000005, 0x203e2e29, 0x00000063, 0x00010001 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000316 },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
{ 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
{ 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
{ 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
{ 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
{ 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
{ 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
{ 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
{ 0x00000040, 0x20780d21, 0x0000045a, 0x0208e602 },
{ 0x00000040, 0x20782421, 0x00000078, 0x0000045c },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffce0 },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1e },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a600 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x0a18a601 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
{ 0x00010005, 0x203e2e29, 0x00000063, 0x00010001 },
{ 0x00110001, 0x203e0169, 0x00000000, 0x00030003 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000031a },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
{ 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
{ 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
{ 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
{ 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
{ 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
{ 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
{ 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
{ 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
{ 0x00010040, 0x244c0d21, 0x0000045a, 0x0208e602 },
{ 0x00110040, 0x20780d21, 0x0000045a, 0x0208a002 },
{ 0x00010040, 0x20782421, 0x0000044c, 0x0000045c },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffcdc },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1a },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x0a18a001 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
{ 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
{ 0x00000001, 0x202001e9, 0x00000000, 0x100c100c },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000100 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x02600005, 0x20000c20, 0x02000090, 0x00002000 },
{ 0x00000006, 0x20880c21, 0x00000088, 0x00200000 },
{ 0x00200009, 0x20845529, 0x0000009c, 0x00450020 },
{ 0x00200001, 0x40840231, 0x00450094, 0x00000000 },
{ 0x00310001, 0x20840229, 0x02450094, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000095, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000094 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x020000d0, 0x00002000 },
{ 0x00000006, 0x20c80c21, 0x000000c8, 0x00200000 },
{ 0x00200009, 0x20c45529, 0x000000dc, 0x00450020 },
{ 0x00200001, 0x40c40231, 0x004500d4, 0x00000000 },
{ 0x00310001, 0x20c40229, 0x024500d4, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x000000d5, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x000000d4 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000110, 0x00002000 },
{ 0x00000006, 0x21080c21, 0x00000108, 0x00200000 },
{ 0x00200009, 0x21045529, 0x0000011c, 0x00450020 },
{ 0x00200001, 0x41040231, 0x00450114, 0x00000000 },
{ 0x00310001, 0x21040229, 0x02450114, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000115, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000114 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000150, 0x00002000 },
{ 0x00000006, 0x21480c21, 0x00000148, 0x00200000 },
{ 0x00200009, 0x21445529, 0x0000015c, 0x00450020 },
{ 0x00200001, 0x41440231, 0x00450154, 0x00000000 },
{ 0x00310001, 0x21440229, 0x02450154, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000155, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000154 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000190, 0x00002000 },
{ 0x00000006, 0x21880c21, 0x00000188, 0x00200000 },
{ 0x00200009, 0x21845529, 0x0000019c, 0x00450020 },
{ 0x00200001, 0x41840231, 0x00450194, 0x00000000 },
{ 0x00310001, 0x21840229, 0x02450194, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000195, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000194 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x020001d0, 0x00002000 },
{ 0x00000006, 0x21c80c21, 0x000001c8, 0x00200000 },
{ 0x00200009, 0x21c45529, 0x000001dc, 0x00450020 },
{ 0x00200001, 0x41c40231, 0x004501d4, 0x00000000 },
{ 0x00310001, 0x21c40229, 0x024501d4, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x000001d5, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x000001d4 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000210, 0x00002000 },
{ 0x00000006, 0x22080c21, 0x00000208, 0x00200000 },
{ 0x00200009, 0x22045529, 0x0000021c, 0x00450020 },
{ 0x00200001, 0x42040231, 0x00450214, 0x00000000 },
{ 0x00310001, 0x22040229, 0x02450214, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000215, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000214 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000250, 0x00002000 },
{ 0x00000006, 0x22480c21, 0x00000248, 0x00200000 },
{ 0x00200009, 0x22445529, 0x0000025c, 0x00450020 },
{ 0x00200001, 0x42440231, 0x00450254, 0x00000000 },
{ 0x00310001, 0x22440229, 0x02450254, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000255, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000254 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
{ 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
{ 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
{ 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
{ 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffff00 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000040 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02008810, 0x00002000 },
{ 0x01000040, 0x20603dad, 0x00000060, 0xffffffff },
{ 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
{ 0x00200009, 0xa8045529, 0x0000881c, 0x00450020 },
{ 0x00200001, 0xc8040231, 0x00458814, 0x00000000 },
{ 0x00310001, 0xa8040229, 0x02458814, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00008815, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00008814 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
{ 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffda },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
{ 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000260 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00200001, 0x20640229, 0x00450094, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000090, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000095, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000095, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x20881c21, 0x00000088, 0x00200000 },
{ 0x00200001, 0x20840129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000009c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000009c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200009c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000090, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200009c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200009c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x20843d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x20862d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x40840231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x004500d4, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x020000d0, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x000000d5, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x000000d5, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x20c81c21, 0x000000c8, 0x00200000 },
{ 0x00200001, 0x20c40129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x000000dc, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x000000dc, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x020000dc, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x020000d0, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x020000dc, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x020000dc, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x20c43d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x20c62d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x40c40231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450114, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000110, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000115, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000115, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21081c21, 0x00000108, 0x00200000 },
{ 0x00200001, 0x21040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000011c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000011c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200011c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000110, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200011c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200011c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21043d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21062d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41040231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450154, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000150, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000155, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000155, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21481c21, 0x00000148, 0x00200000 },
{ 0x00200001, 0x21440129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000015c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000015c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200015c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000150, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200015c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200015c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21443d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21462d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41440231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450194, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000190, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000195, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000195, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21881c21, 0x00000188, 0x00200000 },
{ 0x00200001, 0x21840129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000019c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000019c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200019c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000190, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200019c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200019c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21843d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21862d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41840231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x004501d4, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x020001d0, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x000001d5, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x000001d5, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21c81c21, 0x000001c8, 0x00200000 },
{ 0x00200001, 0x21c40129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x000001dc, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x000001dc, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x020001dc, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x020001d0, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x020001dc, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x020001dc, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21c43d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21c62d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41c40231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450214, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000210, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000215, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000215, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x22081c21, 0x00000208, 0x00200000 },
{ 0x00200001, 0x22040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000021c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000021c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200021c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000210, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200021c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200021c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x22043d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x22062d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x42040231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450254, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000250, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000255, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000255, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x22481c21, 0x00000248, 0x00200000 },
{ 0x00200001, 0x22440129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
{ 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000025c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000025c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200025c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000250, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200025c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200025c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x22443d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x22462d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x42440231, 0x00660064, 0x00000000 },
{ 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
{ 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
{ 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
{ 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffda0 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000006e },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00458814, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02008810, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00008815, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00008815, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00002000 },
{ 0x01000040, 0x20603dad, 0x02000060, 0xffffffff },
{ 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
{ 0x00200001, 0xa8040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
{ 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x02600005, 0x20000d20, 0x02000066, 0x00000001 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
{ 0x00000001, 0x20680129, 0x0000881c, 0x00000000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000881c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200881c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02008810, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200881c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200881c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x00000068, 0x000d0070 },
{ 0x01000040, 0x20603dad, 0x02000060, 0x00000000 },
{ 0x00000009, 0xa8043d09, 0x00000600, 0x000c000c },
{ 0x00000005, 0xa8062d09, 0x00000600, 0xf000f000 },
{ 0x00200001, 0xc8040231, 0x00660064, 0x00000000 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xffffffac },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000178 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000176 },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000134 },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000110 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000102 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000096 },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x02600031, 0x23401c25, 0x408d07e0, 0x02286003 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
{ 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
{ 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
{ 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
{ 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x000000ca },
{ 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
{ 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
{ 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
{ 0x05800010, 0x200035ac, 0x028d2400, 0x000005e8 },
{ 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
{ 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
{ 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
{ 0x05810010, 0x200035ac, 0x028d2440, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2460, 0x000005d2 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
{ 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
{ 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
{ 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
{ 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001005c },
{ 0x00800201, 0x23e0022d, 0x002805d4, 0x00000000 },
{ 0x00800201, 0x23c0022d, 0x002805d4, 0x00000000 },
{ 0x05800010, 0x200035ac, 0x008d2440, 0x000005d2 },
{ 0x05800010, 0x200035ac, 0x028d2460, 0x000005d2 },
{ 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
{ 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
{ 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
{ 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
{ 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
{ 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
{ 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
{ 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
{ 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
{ 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
{ 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
{ 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
{ 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
{ 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
{ 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
{ 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
{ 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000126 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000124 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000fc },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000ee },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d8 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000ca },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000078 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000054 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x02600031, 0x23401c25, 0x408d07e0, 0x02186004 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
{ 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
{ 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
{ 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
{ 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
{ 0x00618022, 0x34001c00, 0x00001400, 0x00000038 },
{ 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
{ 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
{ 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
{ 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
{ 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
{ 0x00608024, 0x34001c00, 0x00001400, 0x00010020 },
{ 0x00600201, 0x2400022c, 0x002405d4, 0x00000000 },
{ 0x00600040, 0x23e03d8d, 0x008d0400, 0x00010001 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
{ 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
{ 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
{ 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
{ 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
{ 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x0000018c },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000018a },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb8c },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb76 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb68 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb5a },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffaea },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffad4 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffac6 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffab8 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
{ 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x0000013a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000138 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffc0c },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbfe },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbe8 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbda },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb92 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb84 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb6e },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb60 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x22600169, 0x00000000, 0x00010001 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
{ 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
{ 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
{ 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
{ 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
{ 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
{ 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
{ 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a5, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x00800401, 0x20400231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x20500231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x20600231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x20700231, 0x00cf0343, 0x00000000 },
{ 0x01600010, 0x20003d2c, 0x000005ea, 0x00040004 },
{ 0x01600010, 0x20003d2c, 0x020005ea, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009080, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009081, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289060, 0x00000000 },
{ 0x00610401, 0x41c00229, 0x00009080, 0x00000000 },
{ 0x00610801, 0x41c20229, 0x00009090, 0x00000000 },
{ 0x00610401, 0x41e00229, 0x00009081, 0x00000000 },
{ 0x00610801, 0x41e20229, 0x00009091, 0x00000000 },
{ 0x00610401, 0x42000229, 0x00249060, 0x00000000 },
{ 0x00610801, 0x42020229, 0x00249098, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00610401, 0x21c00229, 0x02009080, 0x00000000 },
{ 0x00610801, 0x21d00229, 0x02009090, 0x00000000 },
{ 0x00610401, 0x21e00229, 0x02009081, 0x00000000 },
{ 0x00610801, 0x21f00229, 0x02009091, 0x00000000 },
{ 0x00610401, 0x22000229, 0x02249060, 0x00000000 },
{ 0x00610801, 0x22100229, 0x02249098, 0x00000000 },
{ 0x00800008, 0x25a03d29, 0x008d01c0, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200001, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001b4 },
{ 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
{ 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000001, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000019c },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000018e },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000001, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000180 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00200000 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20400021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009082, 0x00020002 },
{ 0x00200001, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00009082, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009083, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289070, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000050 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000a },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
{ 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad0080, 0x00000000 },
{ 0x00800001, 0x25400129, 0x00ad00c0, 0x00000000 },
{ 0x00800001, 0x25600129, 0x00ad0100, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000c2 },
{ 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20800129, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x20a00129, 0x008d0530, 0x00000000 },
{ 0x00600001, 0x20c00129, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x20e00129, 0x008d0550, 0x00000000 },
{ 0x00600001, 0x21000129, 0x008d0560, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009092, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
{ 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad0090, 0x00000000 },
{ 0x00800001, 0x25400129, 0x00ad00d0, 0x00000000 },
{ 0x00800001, 0x25600129, 0x00ad0110, 0x00000000 },
{ 0x00200001, 0x25d80129, 0x0045905c, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00009092, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009093, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028909c, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000009a },
{ 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20900129, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x20b00129, 0x008d0530, 0x00000000 },
{ 0x00600001, 0x20d00129, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x20f00129, 0x008d0550, 0x00000000 },
{ 0x00600001, 0x21100129, 0x008d0560, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
{ 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000001, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000068 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000001, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01800005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00812001, 0x20400022, 0x028d0040, 0x00000000 },
{ 0x00912001, 0x20400022, 0x028d0080, 0x00000000 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
{ 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
{ 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
{ 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
{ 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
{ 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x000000c8 },
{ 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
{ 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
{ 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
{ 0x05800010, 0x200025ac, 0x028d2400, 0x008d05a0 },
{ 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
{ 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
{ 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
{ 0x05810010, 0x200025ac, 0x028d2440, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2460, 0x008d01e0 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
{ 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
{ 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
{ 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
{ 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001005a },
{ 0x00800001, 0x23e0012d, 0x008d0200, 0x00000000 },
{ 0x05800010, 0x200025ac, 0x008d2440, 0x008d01e0 },
{ 0x05800010, 0x200025ac, 0x028d2460, 0x008d01e0 },
{ 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
{ 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
{ 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
{ 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
{ 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
{ 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
{ 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
{ 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
{ 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
{ 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
{ 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
{ 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
{ 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
{ 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
{ 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
{ 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
{ 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
{ 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
{ 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
{ 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
{ 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
{ 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x00800001, 0x204001a9, 0x002e0340, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x01000010, 0x20003d2c, 0x020005ea, 0x00040004 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000010, 0x20003d2c, 0x000005ea, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x02600005, 0x20003dac, 0x00650340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02650360, 0x00010001 },
{ 0x00400401, 0x41c00229, 0x000090c0, 0x00000000 },
{ 0x00400801, 0x41c20229, 0x000090e0, 0x00000000 },
{ 0x00400401, 0x41e00229, 0x000090c1, 0x00000000 },
{ 0x00400801, 0x41e20229, 0x000090e1, 0x00000000 },
{ 0x00400401, 0x42000229, 0x006990a0, 0x00000000 },
{ 0x00400801, 0x42020229, 0x006990e8, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00400401, 0x21c00229, 0x000090c0, 0x00000000 },
{ 0x00400801, 0x21c80229, 0x000090e0, 0x00000000 },
{ 0x00400401, 0x21e00229, 0x000090c1, 0x00000000 },
{ 0x00400801, 0x21e80229, 0x000090e1, 0x00000000 },
{ 0x00400401, 0x22000229, 0x006990a0, 0x00000000 },
{ 0x00400801, 0x22080229, 0x006990e8, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00600001, 0x21c00229, 0x000090c0, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c1, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a0, 0x00000000 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001c8 },
{ 0x01400010, 0x20003d2c, 0x000005ea, 0x00040004 },
{ 0x01400010, 0x20003d2c, 0x020005ea, 0x00020002 },
{ 0x00600001, 0x21c00229, 0x000090c8, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c9, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b0, 0x00000000 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00410401, 0x41c00229, 0x000090c8, 0x00000000 },
{ 0x00410801, 0x41c20229, 0x000090f0, 0x00000000 },
{ 0x00410401, 0x41e00229, 0x000090c9, 0x00000000 },
{ 0x00410801, 0x41e20229, 0x000090f1, 0x00000000 },
{ 0x00410401, 0x42000229, 0x006990b0, 0x00000000 },
{ 0x00410801, 0x42020229, 0x006990f8, 0x00000000 },
{ 0x00410401, 0x21c00229, 0x020090c8, 0x00000000 },
{ 0x00410801, 0x21c80229, 0x020090f0, 0x00000000 },
{ 0x00410401, 0x21e00229, 0x020090c9, 0x00000000 },
{ 0x00410801, 0x21e80229, 0x020090f1, 0x00000000 },
{ 0x00410401, 0x22000229, 0x026990b0, 0x00000000 },
{ 0x00410801, 0x22080229, 0x026990f8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000019c },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000184 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b4, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000174 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da5, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x20400021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000026 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000f0 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
{ 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad00c0, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000c6 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
{ 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000b6 },
{ 0x00800008, 0x2340352d, 0x0000905c, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x0000905e, 0x008d0220 },
{ 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20c00129, 0x008d0520, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
{ 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad00d0, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090e2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090e3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490ec, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000096 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
{ 0x00600001, 0x21c00229, 0x000090f2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090f3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490fc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20d00129, 0x008d0520, 0x00000000 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01600005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00610001, 0x20400022, 0x028d0040, 0x00000000 },
{ 0x00710001, 0x20400022, 0x028d0060, 0x00000000 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
{ 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
{ 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
{ 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
{ 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
{ 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
{ 0x00618022, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
{ 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
{ 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
{ 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
{ 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
{ 0x00608024, 0x34001c00, 0x00001400, 0x0001001e },
{ 0x00600040, 0x23e03d2d, 0x008d0200, 0x00010001 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
{ 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
{ 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
{ 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
{ 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
{ 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/h264/mc/avc_mc.g4b.gen5
0,0 → 1,5251
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x00000005, 0x220e3e2c, 0x00000070, 0x000f000f },
{ 0x00000001, 0x26a00221, 0x00009c38, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x25c00229, 0x00b10624, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
{ 0x00a02001, 0x24000229, 0x00009003, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x0000900b, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00009013, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x0000901b, 0x00000000 },
{ 0x00a02001, 0x25000229, 0x00009023, 0x00000000 },
{ 0x00a02001, 0x25400229, 0x0000902b, 0x00000000 },
{ 0x00a02001, 0x25800229, 0x00009033, 0x00000000 },
{ 0x00a02001, 0x25c00229, 0x0000903b, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
{ 0x00600005, 0x24000c20, 0x0000006c, 0x00000011 },
{ 0x01600007, 0x20000c00, 0x028d0400, 0x00000011 },
{ 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x66430231, 0x028d0624, 0x00000000 },
{ 0x00780001, 0x66630231, 0x028d062c, 0x00000000 },
{ 0x00780001, 0x26240231, 0x00cf0643, 0x00000000 },
{ 0x00780001, 0x262c0231, 0x00cf0663, 0x00000000 },
{ 0x00800040, 0x25e04629, 0x00cf0643, 0x00b10624 },
{ 0x00600040, 0x25e02529, 0x008d05e0, 0x008d05f0 },
{ 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00a02040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00a02040, 0x24003d8c, 0x00b10400, 0x00100010 },
{ 0x00a02008, 0x24003d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24403d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24803d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x24c03d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25003d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25403d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25803d89, 0x00b10400, 0x00050005 },
{ 0x00a02008, 0x25c03d89, 0x00b10400, 0x00050005 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00600041, 0x26806e2d, 0x008d062c, 0x89abcdef },
{ 0x00600041, 0x26906e2d, 0x008d0623, 0xfedcba98 },
{ 0x00600041, 0x26a06e2d, 0x00cf0663, 0x89abcdef },
{ 0x00600041, 0x26b06e2d, 0x00cf0643, 0x0fedcba9 },
{ 0x00000041, 0x26be3e2d, 0x00000623, 0xfff8fff8 },
{ 0x00802040, 0x268035ad, 0x008d4680, 0x008d0690 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0682 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
{ 0x00200048, 0x24003dac, 0x00a00680, 0x00050005 },
{ 0x00200008, 0x26e03d8d, 0x00450400, 0x00060006 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x00000633, 0x00100010 },
{ 0x00800048, 0x26c03e2d, 0x0000067f, 0x00100010 },
{ 0x00800048, 0x272055ad, 0x000006e0, 0x00b10040 },
{ 0x00600041, 0x268055ad, 0x000006e2, 0x00ae0040 },
{ 0x00600041, 0x26a055ad, 0x000006e2, 0x00ae0041 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00680 },
{ 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00682 },
{ 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00684 },
{ 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00686 },
{ 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00688 },
{ 0x80a02008, 0x45003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068a },
{ 0x80a02008, 0x45403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068c },
{ 0x80a02008, 0x45803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068e },
{ 0x80a02008, 0x45c03d91, 0x00b10400, 0x00050005 },
{ 0x00000001, 0x22040060, 0x00000000, 0x00900080 },
{ 0x01000005, 0x20000c20, 0x02000068, 0x00003c00 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000020 },
{ 0x80802040, 0x440045b1, 0x008d8800, 0x00ae0400 },
{ 0x80802040, 0x444045b1, 0x008d8820, 0x00ae0440 },
{ 0x80802040, 0x448045b1, 0x008d8840, 0x00ae0480 },
{ 0x80802040, 0x44c045b1, 0x008d8860, 0x00ae04c0 },
{ 0x80802040, 0x441045b1, 0x008d8880, 0x00ae0410 },
{ 0x80802040, 0x445045b1, 0x008d88a0, 0x00ae0450 },
{ 0x80802040, 0x449045b1, 0x008d88c0, 0x00ae0490 },
{ 0x80802040, 0x44d045b1, 0x008d88e0, 0x00ae04d0 },
{ 0x80802040, 0x450045b1, 0x008d8900, 0x00ae0500 },
{ 0x80802040, 0x454045b1, 0x008d8920, 0x00ae0540 },
{ 0x80802040, 0x458045b1, 0x008d8940, 0x00ae0580 },
{ 0x80802040, 0x45c045b1, 0x008d8960, 0x00ae05c0 },
{ 0x80802040, 0x451045b1, 0x008d8980, 0x00ae0510 },
{ 0x80802040, 0x455045b1, 0x008d89a0, 0x00ae0550 },
{ 0x80802040, 0x459045b1, 0x008d89c0, 0x00ae0590 },
{ 0x80802040, 0x45d045b1, 0x008d89e0, 0x00ae05d0 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x01800180 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e2 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
{ 0x00000801, 0x27c80061, 0x00000000, 0x0000001b },
{ 0x00000040, 0x22000d20, 0x00000062, 0x02186000 },
{ 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
{ 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
{ 0x00000801, 0x27c80061, 0x00000000, 0x000f0003 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
{ 0x02600031, 0x26400021, 0x408d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000008, 0x27fc3dad, 0x000007fc, 0x00010001 },
{ 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
{ 0x00000801, 0x27c80061, 0x00000000, 0x00000013 },
{ 0x00000040, 0x22000c00, 0x00000200, 0xefffc001 },
{ 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
{ 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
{ 0x00000801, 0x27c80061, 0x00000000, 0x00070003 },
{ 0x05600031, 0x26400021, 0x408d07c0, 0x00000200 },
{ 0x00000008, 0x220e3e2c, 0x0000006c, 0x00060006 },
{ 0x00000001, 0x26a002a5, 0x00009c3c, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
{ 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
{ 0x00560001, 0x46420129, 0x02690624, 0x00000000 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000010 },
{ 0x00560001, 0x46520129, 0x0269062c, 0x00000000 },
{ 0x00780001, 0x26240129, 0x00ae0642, 0x00000000 },
{ 0x00800040, 0x24004629, 0x00b10624, 0x00650642 },
{ 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
{ 0x00600040, 0x25202529, 0x00050400, 0x00050404 },
{ 0x00600040, 0x25702529, 0x00050408, 0x0005040c },
{ 0x00560001, 0x26240169, 0x00000000, 0x80808080 },
{ 0x00460001, 0x26240129, 0x028a0652, 0x00000000 },
{ 0x00560001, 0x46520129, 0x02690624, 0x00000000 },
{ 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
{ 0x00560001, 0x46420169, 0x02000000, 0x80808080 },
{ 0x00460001, 0x46420129, 0x0069062c, 0x00000000 },
{ 0x00560001, 0x262c0129, 0x008a0642, 0x00000000 },
{ 0x00600040, 0x24004629, 0x008d0624, 0x00650652 },
{ 0x00600040, 0x24104629, 0x00650642, 0x008d062c },
{ 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
{ 0x00600040, 0x25302529, 0x00050408, 0x0005040c },
{ 0x00600040, 0x25602529, 0x00050400, 0x00050404 },
{ 0x00a02040, 0x24003d2c, 0x00b10520, 0x00040004 },
{ 0x00a02008, 0x24003d89, 0x00b10400, 0x00030003 },
{ 0x00a02008, 0x24403d89, 0x00b10400, 0x00030003 },
{ 0x00a02040, 0x24003d2c, 0x00b10560, 0x00040004 },
{ 0x00a02008, 0x24803d89, 0x00b10400, 0x00030003 },
{ 0x00a02008, 0x24c03d89, 0x00b10400, 0x00030003 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
{ 0x00a02001, 0x24000229, 0x00059002, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x0005900a, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00059012, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x0005901a, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000003c },
{ 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
{ 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x00600041, 0x26806e2d, 0x008d062c, 0x44332211 },
{ 0x00600041, 0x26906e2d, 0x008d0622, 0xffeeddcc },
{ 0x00600041, 0x26a06e2d, 0x00650652, 0x44332211 },
{ 0x00600041, 0x26b06e2d, 0x00650642, 0x00ffeedd },
{ 0x00200041, 0x26bc3e2d, 0x00450622, 0xfffcfffc },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0690 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
{ 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
{ 0x00400048, 0x24003dac, 0x00a50680, 0x00220022 },
{ 0x00400008, 0x26e03d8d, 0x00690400, 0x00060006 },
{ 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x00050632, 0x00100010 },
{ 0x00800048, 0x26c03e2d, 0x0005065e, 0x00100010 },
{ 0x00800048, 0x272055ad, 0x000506e0, 0x00240044 },
{ 0x00600041, 0x268055ad, 0x000506e4, 0x00440044 },
{ 0x00600041, 0x26a055ad, 0x000506e4, 0x00440045 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050680 },
{ 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050684 },
{ 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x00050688 },
{ 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
{ 0x00a02040, 0x240035ac, 0x00b10720, 0x0005068c },
{ 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
{ 0x00000040, 0x22063d8c, 0x00000204, 0x00100010 },
{ 0x80802040, 0x640045b1, 0x008d8880, 0x00cf0400 },
{ 0x80802040, 0x644045b1, 0x008d88a0, 0x00cf0440 },
{ 0x80802040, 0x648045b1, 0x008d88c0, 0x00cf0480 },
{ 0x80802040, 0x64c045b1, 0x008d88e0, 0x00cf04c0 },
{ 0x80802040, 0x640245b1, 0x008d8900, 0x00cf0402 },
{ 0x80802040, 0x644245b1, 0x008d8920, 0x00cf0442 },
{ 0x80802040, 0x648245b1, 0x008d8940, 0x00cf0482 },
{ 0x80802040, 0x64c245b1, 0x008d8960, 0x00cf04c2 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x0007000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x08004000 },
{ 0x00800001, 0x20400232, 0x00d20400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20420, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20440, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d20460, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d20480, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d204a0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d204c0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d204e0, 0x00000000 },
{ 0x01600031, 0x27a00021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00000001, 0x22080060, 0x00000000, 0x04400400 },
{ 0x00a02001, 0x20400232, 0x00d29000, 0x00000000 },
{ 0x00a02001, 0x20500232, 0x00d29020, 0x00000000 },
{ 0x00a02001, 0x20800232, 0x00d29080, 0x00000000 },
{ 0x00a02001, 0x20900232, 0x00d290a0, 0x00000000 },
{ 0x00a02001, 0x20c00232, 0x00d29100, 0x00000000 },
{ 0x00a02001, 0x20d00232, 0x00d29120, 0x00000000 },
{ 0x00a02001, 0x21000232, 0x00d29180, 0x00000000 },
{ 0x00a02001, 0x21100232, 0x00d291a0, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff04 },
{ 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
{ 0x00000001, 0x22080060, 0x00000000, 0x04100400 },
{ 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
{ 0x00400001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x272001a9, 0x00b10620, 0x00000000 },
{ 0x02600005, 0x20001c20, 0x0000006c, 0x00000008 },
{ 0x00110001, 0x27230231, 0x00000624, 0x00000000 },
{ 0x00600001, 0x27420231, 0x00cf0643, 0x00000000 },
{ 0x00110001, 0x27410231, 0x00000643, 0x00000000 },
{ 0x00240001, 0x27400231, 0x00000623, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
{ 0x00010001, 0x27400231, 0x02000624, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000001 },
{ 0x00110001, 0x27420231, 0x02000623, 0x00000000 },
{ 0x00000005, 0x26803e2d, 0x00000070, 0x000f000f },
{ 0x00000001, 0x270801ad, 0x00000700, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000084 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x02600005, 0x20001c20, 0x0200006c, 0x00000004 },
{ 0x00680001, 0x272c0231, 0x028d0634, 0x00000000 },
{ 0x00780001, 0x272c0231, 0x02000633, 0x00000000 },
{ 0x00400001, 0x27420231, 0x00a0040e, 0x00000000 },
{ 0x00400001, 0x27460231, 0x00a0044e, 0x00000000 },
{ 0x00200001, 0x27400231, 0x0000062b, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
{ 0x00010001, 0x27400231, 0x0200062c, 0x00000000 },
{ 0x00110001, 0x27410231, 0x0200040e, 0x00000000 },
{ 0x00000008, 0x26803e2d, 0x00000070, 0x00040004 },
{ 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
{ 0x00000006, 0x27083dad, 0x00000700, 0x00010001 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00a02001, 0xb3800231, 0x00d20400, 0x00000000 },
{ 0x00a02001, 0xb3a00231, 0x00d20480, 0x00000000 },
{ 0x00a02001, 0xb3c00231, 0x00d20440, 0x00000000 },
{ 0x00a02001, 0xb3e00231, 0x00d204c0, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x00000060, 0x00000002 },
{ 0x01000005, 0x20001c20, 0x0200006c, 0x00000001 },
{ 0x01010005, 0x20001c20, 0x00000060, 0x00004000 },
{ 0x02010005, 0x20001c20, 0x02000060, 0x00000010 },
{ 0x00030001, 0x27230231, 0x0000065f, 0x00000000 },
{ 0x00030220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02600005, 0x20001c20, 0x0000006c, 0x00000001 },
{ 0x00460001, 0x27200231, 0x0069065c, 0x00000000 },
{ 0x00110001, 0x27230231, 0x00000458, 0x00000000 },
{ 0x00600001, 0x27240231, 0x008d0458, 0x00000000 },
{ 0x00600001, 0x272c0231, 0x008d0478, 0x00000000 },
{ 0x00600001, 0x27420231, 0x00cf0663, 0x00000000 },
{ 0x00000001, 0x27400231, 0x00000458, 0x00000000 },
{ 0x00010001, 0x27410231, 0x0000065f, 0x00000000 },
{ 0x00110001, 0x27410231, 0x00000663, 0x00000000 },
{ 0x02000005, 0x20001c20, 0x0200006c, 0x00000010 },
{ 0x00110001, 0x27420231, 0x0200065f, 0x00000000 },
{ 0x00000005, 0x26803e2d, 0x00000071, 0x000f000f },
{ 0x00000006, 0x27083dad, 0x00000702, 0x00020002 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00400001, 0x27200231, 0x0069045c, 0x00000000 },
{ 0x00600001, 0x27240231, 0x008d0478, 0x00000000 },
{ 0x00800001, 0x272c0231, 0x0000047f, 0x00000000 },
{ 0x00400001, 0x27420231, 0x00a0048e, 0x00000000 },
{ 0x00400001, 0x27460231, 0x00a004ce, 0x00000000 },
{ 0x00000001, 0x27400231, 0x00000478, 0x00000000 },
{ 0x00000001, 0x27410231, 0x0000045f, 0x00000000 },
{ 0x00000008, 0x26803e2d, 0x00000071, 0x00040004 },
{ 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
{ 0x00000006, 0x27083dad, 0x00000700, 0x00030003 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00a02001, 0xb3800231, 0x00d20480, 0x00000000 },
{ 0x00a02001, 0xb3a00231, 0x00d20500, 0x00000000 },
{ 0x00a02001, 0xb3c00231, 0x00d204c0, 0x00000000 },
{ 0x00a02001, 0xb3e00231, 0x00d20540, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000100 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffe74 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00000001, 0x27340231, 0x00000733, 0x00000000 },
{ 0x00600001, 0x274a0231, 0x00000749, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b10723, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00010001 },
{ 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x00b10740, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10742, 0x00010001 },
{ 0x00800008, 0x26a03d8d, 0x008d0400, 0x00020002 },
{ 0x00800001, 0x27240231, 0x00d206c0, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00ae06a2, 0x00000000 },
{ 0x00000001, 0x27230231, 0x000006a0, 0x00000000 },
{ 0x00000005, 0x220e3dac, 0x00000680, 0x000f000f },
{ 0x00000001, 0x26a00221, 0x00009c2c, 0x00000000 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x80800040, 0xd00045b1, 0x00b18800, 0x000d0724 },
{ 0x80800040, 0xd02045b1, 0x00b18820, 0x000d0724 },
{ 0x80800040, 0xd04045b1, 0x00b18840, 0x000d0724 },
{ 0x80800040, 0xd06045b1, 0x00b18860, 0x000d0724 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x80800040, 0xd00045b1, 0x00b18800, 0x002c0740 },
{ 0x80800040, 0xd02045b1, 0x00b18820, 0x002c0742 },
{ 0x80800040, 0xd04045b1, 0x00b18840, 0x002c0744 },
{ 0x80800040, 0xd06045b1, 0x00b18860, 0x002c0746 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x02802005, 0x20003da0, 0x00000708, 0x00020002 },
{ 0x02600005, 0x20003da0, 0x02000708, 0x00010001 },
{ 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
{ 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
{ 0x00600040, 0x25e04629, 0x008d0724, 0x008d0740 },
{ 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00800040, 0x24003d8c, 0x008d0400, 0x00080008 },
{ 0x00800008, 0x26803d8d, 0x008d0400, 0x00040004 },
{ 0x80800040, 0xd00035b1, 0x00b18800, 0x00b10680 },
{ 0x80800040, 0xd02035b1, 0x00b18820, 0x00b10680 },
{ 0x80800040, 0xd04035b1, 0x00b18840, 0x00b10680 },
{ 0x80800040, 0xd06035b1, 0x00b18860, 0x00b10680 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27340231, 0x008d0733, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
{ 0x00800008, 0x26803d8d, 0x00b10400, 0x00020002 },
{ 0x80800040, 0xd00035b1, 0x00b18800, 0x002d0680 },
{ 0x80800040, 0xd02035b1, 0x00b18820, 0x002d0684 },
{ 0x80800040, 0xd04035b1, 0x00b18840, 0x002d0688 },
{ 0x80800040, 0xd06035b1, 0x00b18860, 0x002d068c },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
{ 0x00800008, 0x26a03d8d, 0x00b10400, 0x00020002 },
{ 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
{ 0x80800040, 0xd06035b1, 0x01ed9800, 0x00b18860 },
{ 0x80800040, 0xd04035b1, 0x01ed9804, 0x00b18840 },
{ 0x80800040, 0xd02035b1, 0x01ed9808, 0x00b18820 },
{ 0x80800040, 0xd00035b1, 0x01ed980c, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b106a8, 0x00b106a9 },
{ 0x00800040, 0x24003e2c, 0x00b106a3, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00010001 },
{ 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00600001, 0x26a00231, 0x00ae06c0, 0x00000000 },
{ 0x00600001, 0x46a60231, 0x00ae06cc, 0x00000000 },
{ 0x00600001, 0x46a70231, 0x00ae05c0, 0x00000000 },
{ 0x00200040, 0x220c3eac, 0x00450036, 0x06a006a0 },
{ 0x80800040, 0xd0603631, 0x01ee9800, 0x00b18860 },
{ 0x80800040, 0xd0403631, 0x01ee9802, 0x00b18840 },
{ 0x80800040, 0xd0203631, 0x01ee9804, 0x00b18820 },
{ 0x80800040, 0xd0003631, 0x01ee9806, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
{ 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26a00231, 0x00ab06c3, 0x00000000 },
{ 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
{ 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
{ 0x00800008, 0x25c03d89, 0x008d0400, 0x00020002 },
{ 0x00800042, 0x26a0462d, 0x00b106a0, 0x00b106a1 },
{ 0x00600001, 0x46a10231, 0x00ae05c0, 0x00000000 },
{ 0x00600001, 0x26b00231, 0x00ae05d0, 0x00000000 },
{ 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
{ 0x80800040, 0xd0603631, 0x01ed9800, 0x00b18860 },
{ 0x80800040, 0xd0403631, 0x01ed9804, 0x00b18840 },
{ 0x80800040, 0xd0203631, 0x01ed9808, 0x00b18820 },
{ 0x80800040, 0xd0003631, 0x01ed980c, 0x00b18800 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b10724, 0x00b10725 },
{ 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
{ 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
{ 0x80800040, 0xd0003531, 0x00ad05c0, 0x00b18800 },
{ 0x80800040, 0xd0203531, 0x00ad05c2, 0x00b18820 },
{ 0x80800040, 0xd0403531, 0x00ad05c4, 0x00b18840 },
{ 0x80800040, 0xd0603531, 0x00ad05c6, 0x00b18860 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27480231, 0x00000747, 0x00000000 },
{ 0x00800042, 0x25c04629, 0x00b10740, 0x00b10741 },
{ 0x00800040, 0x24003e2c, 0x00b10742, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
{ 0x00800048, 0x24003e2c, 0x00b10740, 0x00010001 },
{ 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
{ 0x00800001, 0x45c10231, 0x00d205e0, 0x00000000 },
{ 0x80800040, 0xd0003631, 0x004d05c0, 0x00b18800 },
{ 0x80800040, 0xd0203631, 0x004d05c4, 0x00b18820 },
{ 0x80800040, 0xd0403631, 0x004d05c8, 0x00b18840 },
{ 0x80800040, 0xd0603631, 0x004d05cc, 0x00b18860 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00800001, 0x20400232, 0x00cd0400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00cd0408, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00cd0410, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00cd0418, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00cd0440, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00cd0448, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00cd0450, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00cd0458, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00cd0480, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00cd0488, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00cd0490, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00cd0498, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00cd04c0, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00cd04c8, 0x00000000 },
{ 0x00800001, 0x21200232, 0x00cd04d0, 0x00000000 },
{ 0x00800001, 0x21300232, 0x00cd04d8, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffd34 },
{ 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
{ 0x00000001, 0x220601ec, 0x00000000, 0x04000400 },
{ 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
{ 0x02600005, 0x20003e20, 0x0000006c, 0x00040004 },
{ 0x00780001, 0x26340231, 0x00000633, 0x00000000 },
{ 0x00800001, 0x27200231, 0x00b10620, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00cf0643, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240070, 0x00004040 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
{ 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240072, 0x00004040 },
{ 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000702, 0x00020002 },
{ 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
{ 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
{ 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
{ 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
{ 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
{ 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
{ 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
{ 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
{ 0x00400001, 0x27200231, 0x0069065c, 0x00000000 },
{ 0x00600001, 0x27240231, 0x00a98fcc, 0x00000000 },
{ 0x00600001, 0x272c0231, 0x00a98fec, 0x00000000 },
{ 0x00600001, 0x27340231, 0x00008fff, 0x00000000 },
{ 0x00800001, 0x2620012d, 0x00b10720, 0x00000000 },
{ 0x00600001, 0x27400231, 0x00cf0663, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240074, 0x00004040 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
{ 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
{ 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
{ 0x00600001, 0x27300231, 0x008d0638, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
{ 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
{ 0x00400008, 0x26806e2d, 0x00240076, 0x00004040 },
{ 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
{ 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
{ 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
{ 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
{ 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
{ 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
{ 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
{ 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
{ 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffcce },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00600001, 0x27800231, 0x008d0740, 0x00000000 },
{ 0x00400005, 0x22083dac, 0x00690680, 0x000f000f },
{ 0x00400040, 0x26a04625, 0x01e09020, 0x00690058 },
{ 0x00000001, 0x26d001ad, 0x00000700, 0x00000000 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
{ 0x80600040, 0xcc0035b1, 0x00898800, 0x008d0760 },
{ 0x80600040, 0xcc1035b1, 0x00898820, 0x008d0770 },
{ 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c06, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00010001 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a4 },
{ 0x80600040, 0xcc2035b1, 0x00898808, 0x008d0760 },
{ 0x80600040, 0xcc3035b1, 0x00898828, 0x008d0770 },
{ 0x00000001, 0x27230231, 0x00000783, 0x00000000 },
{ 0x00400001, 0x27240231, 0x008a8c18, 0x00000000 },
{ 0x00400001, 0x27280231, 0x008a8c38, 0x00000000 },
{ 0x00400001, 0x272c0231, 0x00008c3e, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00690784, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00020002 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006a8 },
{ 0x80600040, 0xcc4035b1, 0x00898840, 0x008d0760 },
{ 0x80600040, 0xcc5035b1, 0x00898860, 0x008d0770 },
{ 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
{ 0x00600001, 0x27280231, 0x00000727, 0x00000000 },
{ 0x00400001, 0x27400231, 0x00808c46, 0x00000000 },
{ 0x00000006, 0x26d03dad, 0x00000700, 0x00030003 },
{ 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001400, 0x00001400, 0x000006ac },
{ 0x80600040, 0xcc6035b1, 0x00898848, 0x008d0760 },
{ 0x80600040, 0xcc7035b1, 0x00898868, 0x008d0770 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x00800001, 0x2760022d, 0x00090724, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00800001, 0x2760022d, 0x00280740, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x02802005, 0x20003da0, 0x000006d0, 0x00020002 },
{ 0x02802005, 0x20003da0, 0x020006d0, 0x00010001 },
{ 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
{ 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
{ 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
{ 0x00400040, 0x25e04629, 0x00690724, 0x00690740 },
{ 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
{ 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
{ 0x00800040, 0x24003d8c, 0x008d0400, 0x00040004 },
{ 0x00800008, 0x27603d8d, 0x008d0400, 0x00030003 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600001, 0x26c00231, 0x008d0724, 0x00000000 },
{ 0x00400001, 0x26c80231, 0x0069072b, 0x00000000 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d06c0, 0x00010001 },
{ 0x00800008, 0x27603d2d, 0x002905e0, 0x00020002 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x26c03e2d, 0x008d06c0, 0x00010001 },
{ 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
{ 0x00800008, 0x27603dad, 0x01e99000, 0x00020002 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600042, 0x25c04629, 0x008d06c4, 0x008d06c5 },
{ 0x00600040, 0x24003e2c, 0x008d06c3, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00010001 },
{ 0x00600008, 0x26c03d8d, 0x008d0400, 0x00020002 },
{ 0x00400001, 0x46c401ad, 0x006906c4, 0x00000000 },
{ 0x00400001, 0x46c6012d, 0x006905c0, 0x00000000 },
{ 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
{ 0x00800001, 0x276001ad, 0x01ea9000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
{ 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
{ 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
{ 0x00600042, 0x25c04629, 0x008d06c0, 0x008d06c1 },
{ 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
{ 0x00600048, 0x26e03e2d, 0x008d06c0, 0x00010001 },
{ 0x00400008, 0x46c23dad, 0x006906e0, 0x00020002 },
{ 0x00200008, 0x26d03dad, 0x004506e8, 0x00020002 },
{ 0x00400001, 0x46c0012d, 0x006905c0, 0x00000000 },
{ 0x00400009, 0x22083eac, 0x00690054, 0x00010001 },
{ 0x00400040, 0x22083d8c, 0x00690208, 0x06c006c0 },
{ 0x00800001, 0x276001ad, 0x01e99000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600042, 0x45c04629, 0x008d0724, 0x008d0725 },
{ 0x00600040, 0x24003e2c, 0x008d0726, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d0725, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d0724, 0x00010001 },
{ 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
{ 0x00800001, 0x2760012d, 0x002a05c0, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00600001, 0x27440231, 0x00000743, 0x00000000 },
{ 0x00600042, 0x45c04629, 0x008d0740, 0x008d0741 },
{ 0x00600040, 0x24003e2c, 0x008d0742, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x008d0741, 0x00020002 },
{ 0x00600048, 0x25e03e29, 0x008d0740, 0x00010001 },
{ 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
{ 0x00800001, 0x2760012d, 0x004905c0, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
{ 0x00800001, 0x20400232, 0x00a90400, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00a90404, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00a90408, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00a9040c, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00a90440, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00a90444, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00a90448, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00a9044c, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00a90480, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00a90484, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00a90488, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00a9048c, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00a904c0, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00a904c4, 0x00000000 },
{ 0x00800001, 0x21200232, 0x00a904c8, 0x00000000 },
{ 0x00800001, 0x21300232, 0x00a904cc, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
{ 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
{ 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00200809, 0x27c03e21, 0x00450064, 0x00040004 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
{ 0x00a02401, 0x20400232, 0x00b10080, 0x00000000 },
{ 0x00a02801, 0x20500232, 0x00b10090, 0x00000000 },
{ 0x00a02401, 0x20800232, 0x00b100c0, 0x00000000 },
{ 0x00a02801, 0x20900232, 0x00b100d0, 0x00000000 },
{ 0x00a02401, 0x20c00232, 0x00b10100, 0x00000000 },
{ 0x00a02801, 0x20d00232, 0x00b10110, 0x00000000 },
{ 0x00a02401, 0x21000232, 0x00b10140, 0x00000000 },
{ 0x00a02801, 0x21100232, 0x00b10150, 0x00000000 },
{ 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
{ 0x00000401, 0x20280062, 0x00000000, 0x0007000f },
{ 0x0000080c, 0x20243c22, 0x000007c4, 0x00010001 },
{ 0x00000040, 0x22001c00, 0x00000200, 0xf8000001 },
{ 0x00800001, 0x40400232, 0x00b10180, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00b101c0, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00b10190, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00b101d0, 0x00000000 },
{ 0x00800001, 0x40800232, 0x00b101a0, 0x00000000 },
{ 0x00800001, 0x40810232, 0x00b101e0, 0x00000000 },
{ 0x00800001, 0x40a00232, 0x00b101b0, 0x00000000 },
{ 0x00800001, 0x40a10232, 0x00b101f0, 0x00000000 },
{ 0x01600031, 0x27a00001, 0x508d0000, 0x00000200 },
{ 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
{ 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000002fe },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x20780d21, 0x0000045a, 0x0208a002 },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001be },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000126 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee6 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffcf8 },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc36 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21401c21, 0x508d0040, 0x1218a000 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21601c21, 0x508d0040, 0x0a18a001 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x00000005, 0x203e2e29, 0x00000063, 0x00010001 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000316 },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
{ 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
{ 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
{ 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
{ 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
{ 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
{ 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
{ 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
{ 0x00000040, 0x20780d21, 0x0000045a, 0x0208e602 },
{ 0x00000040, 0x20782421, 0x00000078, 0x0000045c },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffce0 },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1e },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a600 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x0a18a601 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
{ 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
{ 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
{ 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
{ 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
{ 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
{ 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
{ 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
{ 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
{ 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
{ 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
{ 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
{ 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
{ 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
{ 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
{ 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
{ 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
{ 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
{ 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
{ 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
{ 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
{ 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
{ 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
{ 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
{ 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
{ 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
{ 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
{ 0x00010005, 0x203e2e29, 0x00000063, 0x00010001 },
{ 0x00110001, 0x203e0169, 0x00000000, 0x00030003 },
{ 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
{ 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
{ 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
{ 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
{ 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000031a },
{ 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
{ 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
{ 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
{ 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
{ 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
{ 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
{ 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
{ 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
{ 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
{ 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
{ 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
{ 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
{ 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
{ 0x00010040, 0x244c0d21, 0x0000045a, 0x0208e602 },
{ 0x00110040, 0x20780d21, 0x0000045a, 0x0208a002 },
{ 0x00010040, 0x20782421, 0x0000044c, 0x0000045c },
{ 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
{ 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
{ 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
{ 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
{ 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
{ 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
{ 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
{ 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
{ 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
{ 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
{ 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
{ 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
{ 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
{ 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
{ 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
{ 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
{ 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
{ 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
{ 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
{ 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
{ 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
{ 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
{ 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
{ 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
{ 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
{ 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
{ 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
{ 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
{ 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
{ 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
{ 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
{ 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
{ 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
{ 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
{ 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
{ 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
{ 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
{ 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
{ 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
{ 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
{ 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
{ 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
{ 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
{ 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
{ 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
{ 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
{ 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
{ 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
{ 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
{ 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
{ 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
{ 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
{ 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
{ 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
{ 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
{ 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
{ 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
{ 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
{ 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
{ 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
{ 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
{ 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
{ 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
{ 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
{ 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
{ 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
{ 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
{ 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
{ 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
{ 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
{ 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
{ 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
{ 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
{ 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
{ 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
{ 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
{ 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
{ 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
{ 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
{ 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
{ 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
{ 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
{ 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
{ 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
{ 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
{ 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
{ 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
{ 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
{ 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
{ 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
{ 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
{ 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
{ 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
{ 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
{ 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
{ 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
{ 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
{ 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
{ 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
{ 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
{ 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
{ 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
{ 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
{ 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
{ 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
{ 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
{ 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
{ 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
{ 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
{ 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
{ 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
{ 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
{ 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
{ 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
{ 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
{ 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
{ 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
{ 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
{ 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
{ 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
{ 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
{ 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
{ 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
{ 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
{ 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
{ 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
{ 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
{ 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
{ 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
{ 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
{ 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
{ 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
{ 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
{ 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
{ 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
{ 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
{ 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
{ 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
{ 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
{ 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
{ 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
{ 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
{ 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
{ 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
{ 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
{ 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
{ 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
{ 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
{ 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
{ 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
{ 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
{ 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
{ 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
{ 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
{ 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
{ 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
{ 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
{ 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
{ 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
{ 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
{ 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
{ 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
{ 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
{ 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
{ 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
{ 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
{ 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
{ 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
{ 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
{ 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
{ 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
{ 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
{ 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
{ 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
{ 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
{ 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
{ 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
{ 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
{ 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
{ 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
{ 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
{ 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
{ 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
{ 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
{ 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
{ 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
{ 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
{ 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffcdc },
{ 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
{ 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
{ 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
{ 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
{ 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
{ 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
{ 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
{ 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
{ 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
{ 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
{ 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
{ 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
{ 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
{ 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
{ 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
{ 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
{ 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
{ 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
{ 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
{ 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
{ 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
{ 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
{ 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
{ 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
{ 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
{ 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
{ 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
{ 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
{ 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
{ 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
{ 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
{ 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
{ 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
{ 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
{ 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
{ 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
{ 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
{ 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
{ 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
{ 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
{ 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
{ 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
{ 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
{ 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
{ 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
{ 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
{ 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
{ 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
{ 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
{ 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
{ 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
{ 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
{ 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
{ 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
{ 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
{ 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
{ 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
{ 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
{ 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
{ 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
{ 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
{ 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
{ 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
{ 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
{ 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
{ 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1a },
{ 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
{ 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
{ 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
{ 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
{ 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
{ 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
{ 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
{ 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
{ 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
{ 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
{ 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
{ 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
{ 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
{ 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
{ 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
{ 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
{ 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
{ 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
{ 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
{ 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
{ 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
{ 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
{ 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
{ 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
{ 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
{ 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
{ 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
{ 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
{ 0x00000040, 0x22000d20, 0x00000062, 0x0a18a001 },
{ 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
{ 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
{ 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
{ 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
{ 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
{ 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
{ 0x00000001, 0x202001e9, 0x00000000, 0x100c100c },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000100 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x02600005, 0x20000c20, 0x02000090, 0x00002000 },
{ 0x00000006, 0x20880c21, 0x00000088, 0x00200000 },
{ 0x00200009, 0x20845529, 0x0000009c, 0x00450020 },
{ 0x00200001, 0x40840231, 0x00450094, 0x00000000 },
{ 0x00310001, 0x20840229, 0x02450094, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000095, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000094 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x020000d0, 0x00002000 },
{ 0x00000006, 0x20c80c21, 0x000000c8, 0x00200000 },
{ 0x00200009, 0x20c45529, 0x000000dc, 0x00450020 },
{ 0x00200001, 0x40c40231, 0x004500d4, 0x00000000 },
{ 0x00310001, 0x20c40229, 0x024500d4, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x000000d5, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x000000d4 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000110, 0x00002000 },
{ 0x00000006, 0x21080c21, 0x00000108, 0x00200000 },
{ 0x00200009, 0x21045529, 0x0000011c, 0x00450020 },
{ 0x00200001, 0x41040231, 0x00450114, 0x00000000 },
{ 0x00310001, 0x21040229, 0x02450114, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000115, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000114 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000150, 0x00002000 },
{ 0x00000006, 0x21480c21, 0x00000148, 0x00200000 },
{ 0x00200009, 0x21445529, 0x0000015c, 0x00450020 },
{ 0x00200001, 0x41440231, 0x00450154, 0x00000000 },
{ 0x00310001, 0x21440229, 0x02450154, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000155, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000154 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000190, 0x00002000 },
{ 0x00000006, 0x21880c21, 0x00000188, 0x00200000 },
{ 0x00200009, 0x21845529, 0x0000019c, 0x00450020 },
{ 0x00200001, 0x41840231, 0x00450194, 0x00000000 },
{ 0x00310001, 0x21840229, 0x02450194, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000195, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000194 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x020001d0, 0x00002000 },
{ 0x00000006, 0x21c80c21, 0x000001c8, 0x00200000 },
{ 0x00200009, 0x21c45529, 0x000001dc, 0x00450020 },
{ 0x00200001, 0x41c40231, 0x004501d4, 0x00000000 },
{ 0x00310001, 0x21c40229, 0x024501d4, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x000001d5, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x000001d4 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000210, 0x00002000 },
{ 0x00000006, 0x22080c21, 0x00000208, 0x00200000 },
{ 0x00200009, 0x22045529, 0x0000021c, 0x00450020 },
{ 0x00200001, 0x42040231, 0x00450214, 0x00000000 },
{ 0x00310001, 0x22040229, 0x02450214, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000215, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000214 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x02600005, 0x20000c20, 0x02000250, 0x00002000 },
{ 0x00000006, 0x22480c21, 0x00000248, 0x00200000 },
{ 0x00200009, 0x22445529, 0x0000025c, 0x00450020 },
{ 0x00200001, 0x42440231, 0x00450254, 0x00000000 },
{ 0x00310001, 0x22440229, 0x02450254, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00000255, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00000254 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
{ 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
{ 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
{ 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
{ 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffff00 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000040 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02008810, 0x00002000 },
{ 0x01000040, 0x20603dad, 0x00000060, 0xffffffff },
{ 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
{ 0x00200009, 0xa8045529, 0x0000881c, 0x00450020 },
{ 0x00200001, 0xc8040231, 0x00458814, 0x00000000 },
{ 0x00310001, 0xa8040229, 0x02458814, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
{ 0x00800041, 0x24002628, 0x00008815, 0x00000044 },
{ 0x00800040, 0x24004508, 0x008d0400, 0x00008814 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
{ 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xffffffda },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
{ 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000260 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00200001, 0x20640229, 0x00450094, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000090, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000095, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000095, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x20881c21, 0x00000088, 0x00200000 },
{ 0x00200001, 0x20840129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000009c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000009c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200009c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000090, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200009c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200009c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x20843d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x20862d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x40840231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x004500d4, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x020000d0, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x000000d5, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x000000d5, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x20c81c21, 0x000000c8, 0x00200000 },
{ 0x00200001, 0x20c40129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x000000dc, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x000000dc, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x020000dc, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x020000d0, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x020000dc, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x020000dc, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x20c43d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x20c62d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x40c40231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450114, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000110, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000115, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000115, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21081c21, 0x00000108, 0x00200000 },
{ 0x00200001, 0x21040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000011c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000011c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200011c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000110, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200011c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200011c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21043d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21062d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41040231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450154, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000150, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000155, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000155, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21481c21, 0x00000148, 0x00200000 },
{ 0x00200001, 0x21440129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000015c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000015c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200015c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000150, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200015c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200015c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21443d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21462d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41440231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450194, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000190, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000195, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000195, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21881c21, 0x00000188, 0x00200000 },
{ 0x00200001, 0x21840129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000019c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000019c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200019c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000190, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200019c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200019c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21843d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21862d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41840231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x004501d4, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x020001d0, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x000001d5, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x000001d5, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x21c81c21, 0x000001c8, 0x00200000 },
{ 0x00200001, 0x21c40129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x000001dc, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x000001dc, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x020001dc, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x020001d0, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x020001dc, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x020001dc, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x21c43d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x21c62d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x41c40231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450214, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000210, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000215, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000215, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x22081c21, 0x00000208, 0x00200000 },
{ 0x00200001, 0x22040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000021c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000021c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200021c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000210, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200021c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200021c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x22043d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x22062d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x42040231, 0x00660064, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00450254, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02000250, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00000255, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00000255, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00002000 },
{ 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
{ 0x00000006, 0x22481c21, 0x00000248, 0x00200000 },
{ 0x00200001, 0x22440129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
{ 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00000001, 0x20680129, 0x0000025c, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000025c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200025c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02000250, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200025c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200025c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
{ 0x00000009, 0x22443d09, 0x00000602, 0x000c000c },
{ 0x00000005, 0x22462d09, 0x00000602, 0xf000f000 },
{ 0x00200001, 0x42440231, 0x00660064, 0x00000000 },
{ 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
{ 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
{ 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
{ 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
{ 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
{ 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffda0 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000006e },
{ 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
{ 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
{ 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
{ 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
{ 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
{ 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
{ 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
{ 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
{ 0x00200001, 0x20640229, 0x00458814, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x02008810, 0x01000000 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
{ 0x00600041, 0x24003e2c, 0x00008815, 0x00020002 },
{ 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
{ 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
{ 0x00110001, 0x2066022d, 0x00008815, 0x00000000 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00002000 },
{ 0x01000040, 0x20603dad, 0x02000060, 0xffffffff },
{ 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
{ 0x00200001, 0xa8040129, 0x00450064, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
{ 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
{ 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
{ 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
{ 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
{ 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x02600005, 0x20000d20, 0x02000066, 0x00000001 },
{ 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
{ 0x00000001, 0x20680129, 0x0000881c, 0x00000000 },
{ 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x02600005, 0x20001d20, 0x0000881c, 0x00000010 },
{ 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
{ 0x01600005, 0x20001d20, 0x0200881c, 0x00000001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x02610005, 0x20001c20, 0x02008810, 0x00008000 },
{ 0x02610005, 0x20001d20, 0x0200881c, 0x00000010 },
{ 0x00010006, 0x20681d29, 0x0200881c, 0x00000010 },
{ 0x02800005, 0x2000452c, 0x00000068, 0x000d0070 },
{ 0x01000040, 0x20603dad, 0x02000060, 0x00000000 },
{ 0x00000009, 0xa8043d09, 0x00000600, 0x000c000c },
{ 0x00000005, 0xa8062d09, 0x00000600, 0xf000f000 },
{ 0x00200001, 0xc8040231, 0x00660064, 0x00000000 },
{ 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
{ 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
{ 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
{ 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
{ 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0xffffffac },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000178 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000176 },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000134 },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000110 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000102 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000096 },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x02600031, 0x23401c25, 0x408d07e0, 0x02286003 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
{ 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
{ 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
{ 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
{ 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x000000ca },
{ 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
{ 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
{ 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
{ 0x05800010, 0x200035ac, 0x028d2400, 0x000005e8 },
{ 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
{ 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
{ 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
{ 0x05810010, 0x200035ac, 0x028d2440, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2460, 0x000005d2 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
{ 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
{ 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
{ 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
{ 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001005c },
{ 0x00800201, 0x23e0022d, 0x002805d4, 0x00000000 },
{ 0x00800201, 0x23c0022d, 0x002805d4, 0x00000000 },
{ 0x05800010, 0x200035ac, 0x008d2440, 0x000005d2 },
{ 0x05800010, 0x200035ac, 0x028d2460, 0x000005d2 },
{ 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
{ 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
{ 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
{ 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
{ 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
{ 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
{ 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
{ 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
{ 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
{ 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
{ 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
{ 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
{ 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
{ 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
{ 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
{ 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
{ 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000126 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000124 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000fc },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000ee },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d8 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000ca },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000078 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000054 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x02600031, 0x23401c25, 0x408d07e0, 0x02186004 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
{ 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
{ 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
{ 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
{ 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
{ 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
{ 0x00618022, 0x34001c00, 0x00001400, 0x00000038 },
{ 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
{ 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
{ 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
{ 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
{ 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
{ 0x00608024, 0x34001c00, 0x00001400, 0x00010020 },
{ 0x00600201, 0x2400022c, 0x002405d4, 0x00000000 },
{ 0x00600040, 0x23e03d8d, 0x008d0400, 0x00010001 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
{ 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
{ 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
{ 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
{ 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
{ 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x0000018c },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000018a },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb8c },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb76 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb68 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffb5a },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
{ 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffaea },
{ 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
{ 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
{ 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffad4 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffac6 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0xfffffab8 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
{ 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
{ 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x0000013a },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000138 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffc0c },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbfe },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbe8 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffbda },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb92 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb84 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb6e },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
{ 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffb60 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
{ 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
{ 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x22600169, 0x00000000, 0x00010001 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
{ 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
{ 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
{ 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
{ 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
{ 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
{ 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
{ 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
{ 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
{ 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
{ 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
{ 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
{ 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a5, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x00800401, 0x20400231, 0x00cf0340, 0x00000000 },
{ 0x00800801, 0x20500231, 0x00cf0341, 0x00000000 },
{ 0x00800401, 0x20600231, 0x00cf0342, 0x00000000 },
{ 0x00800801, 0x20700231, 0x00cf0343, 0x00000000 },
{ 0x01600010, 0x20003d2c, 0x000005ea, 0x00040004 },
{ 0x01600010, 0x20003d2c, 0x020005ea, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009080, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009081, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289060, 0x00000000 },
{ 0x00610401, 0x41c00229, 0x00009080, 0x00000000 },
{ 0x00610801, 0x41c20229, 0x00009090, 0x00000000 },
{ 0x00610401, 0x41e00229, 0x00009081, 0x00000000 },
{ 0x00610801, 0x41e20229, 0x00009091, 0x00000000 },
{ 0x00610401, 0x42000229, 0x00249060, 0x00000000 },
{ 0x00610801, 0x42020229, 0x00249098, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x00610401, 0x21c00229, 0x02009080, 0x00000000 },
{ 0x00610801, 0x21d00229, 0x02009090, 0x00000000 },
{ 0x00610401, 0x21e00229, 0x02009081, 0x00000000 },
{ 0x00610801, 0x21f00229, 0x02009091, 0x00000000 },
{ 0x00610401, 0x22000229, 0x02249060, 0x00000000 },
{ 0x00610801, 0x22100229, 0x02249098, 0x00000000 },
{ 0x00800008, 0x25a03d29, 0x008d01c0, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200001, 0x25d80129, 0x00459050, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001b4 },
{ 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
{ 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000001, 0x25d80129, 0x00009040, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289064, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000019c },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x25d80129, 0x00009042, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289068, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000018e },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000001, 0x25d80129, 0x00009044, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028906c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000180 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
{ 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
{ 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
{ 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
{ 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
{ 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
{ 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
{ 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00200000 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20400021, 0x408d07e0, 0x00000200 },
{ 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
{ 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
{ 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
{ 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
{ 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
{ 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
{ 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
{ 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
{ 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
{ 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
{ 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
{ 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
{ 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
{ 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
{ 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
{ 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
{ 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
{ 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
{ 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
{ 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
{ 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009082, 0x00020002 },
{ 0x00200001, 0x25d80129, 0x00459054, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00009082, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009083, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289070, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000050 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000000a },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
{ 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad0080, 0x00000000 },
{ 0x00800001, 0x25400129, 0x00ad00c0, 0x00000000 },
{ 0x00800001, 0x25600129, 0x00ad0100, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000c2 },
{ 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20800129, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x20a00129, 0x008d0530, 0x00000000 },
{ 0x00600001, 0x20c00129, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x20e00129, 0x008d0550, 0x00000000 },
{ 0x00600001, 0x21000129, 0x008d0560, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009092, 0x00020002 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
{ 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad0090, 0x00000000 },
{ 0x00800001, 0x25400129, 0x00ad00d0, 0x00000000 },
{ 0x00800001, 0x25600129, 0x00ad0110, 0x00000000 },
{ 0x00200001, 0x25d80129, 0x0045905c, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00009092, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009093, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028909c, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000009a },
{ 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20900129, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x20b00129, 0x008d0530, 0x00000000 },
{ 0x00600001, 0x20d00129, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x20f00129, 0x008d0550, 0x00000000 },
{ 0x00600001, 0x21100129, 0x008d0560, 0x00000000 },
{ 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
{ 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
{ 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00000001, 0x25d80129, 0x00009046, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289074, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000076 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
{ 0x00000001, 0x25d80129, 0x00009048, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00289078, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000068 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
{ 0x00000001, 0x25d80129, 0x0000904a, 0x00000000 },
{ 0x00800001, 0x22000229, 0x0028907c, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
{ 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01800005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00812001, 0x20400022, 0x028d0040, 0x00000000 },
{ 0x00912001, 0x20400022, 0x028d0080, 0x00000000 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
{ 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
{ 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
{ 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
{ 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
{ 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x000000c8 },
{ 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
{ 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
{ 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
{ 0x05800010, 0x200025ac, 0x028d2400, 0x008d05a0 },
{ 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
{ 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
{ 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
{ 0x05810010, 0x200025ac, 0x028d2440, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2460, 0x008d01e0 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
{ 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
{ 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
{ 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
{ 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
{ 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
{ 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
{ 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
{ 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
{ 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
{ 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
{ 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
{ 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
{ 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00808024, 0x34001c00, 0x00001400, 0x0001005a },
{ 0x00800001, 0x23e0012d, 0x008d0200, 0x00000000 },
{ 0x05800010, 0x200025ac, 0x008d2440, 0x008d01e0 },
{ 0x05800010, 0x200025ac, 0x028d2460, 0x008d01e0 },
{ 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
{ 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
{ 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
{ 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
{ 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
{ 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
{ 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
{ 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
{ 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
{ 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
{ 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
{ 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
{ 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
{ 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
{ 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
{ 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
{ 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
{ 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
{ 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
{ 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
{ 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
{ 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
{ 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
{ 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
{ 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
{ 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
{ 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
{ 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
{ 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
{ 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
{ 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
{ 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
{ 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
{ 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
{ 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
{ 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
{ 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
{ 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
{ 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
{ 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
{ 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
{ 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
{ 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
{ 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
{ 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
{ 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
{ 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
{ 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
{ 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
{ 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
{ 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
{ 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
{ 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
{ 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
{ 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
{ 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
{ 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
{ 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
{ 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
{ 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
{ 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
{ 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
{ 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
{ 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
{ 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
{ 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
{ 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
{ 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
{ 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
{ 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
{ 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
{ 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
{ 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
{ 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
{ 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
{ 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
{ 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
{ 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
{ 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
{ 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
{ 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
{ 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
{ 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
{ 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
{ 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
{ 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
{ 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
{ 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
{ 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
{ 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
{ 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
{ 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
{ 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
{ 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
{ 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
{ 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
{ 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
{ 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
{ 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
{ 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
{ 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
{ 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
{ 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
{ 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
{ 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x00800001, 0x204001a9, 0x002e0340, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
{ 0x01000010, 0x20003d2c, 0x020005ea, 0x00040004 },
{ 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000010, 0x20003d2c, 0x000005ea, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x02600005, 0x20003dac, 0x00650340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02650360, 0x00010001 },
{ 0x00400401, 0x41c00229, 0x000090c0, 0x00000000 },
{ 0x00400801, 0x41c20229, 0x000090e0, 0x00000000 },
{ 0x00400401, 0x41e00229, 0x000090c1, 0x00000000 },
{ 0x00400801, 0x41e20229, 0x000090e1, 0x00000000 },
{ 0x00400401, 0x42000229, 0x006990a0, 0x00000000 },
{ 0x00400801, 0x42020229, 0x006990e8, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00400401, 0x21c00229, 0x000090c0, 0x00000000 },
{ 0x00400801, 0x21c80229, 0x000090e0, 0x00000000 },
{ 0x00400401, 0x21e00229, 0x000090c1, 0x00000000 },
{ 0x00400801, 0x21e80229, 0x000090e1, 0x00000000 },
{ 0x00400401, 0x22000229, 0x006990a0, 0x00000000 },
{ 0x00400801, 0x22080229, 0x006990e8, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00600001, 0x21c00229, 0x000090c0, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c1, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a0, 0x00000000 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001c8 },
{ 0x01400010, 0x20003d2c, 0x000005ea, 0x00040004 },
{ 0x01400010, 0x20003d2c, 0x020005ea, 0x00020002 },
{ 0x00600001, 0x21c00229, 0x000090c8, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c9, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b0, 0x00000000 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00410401, 0x41c00229, 0x000090c8, 0x00000000 },
{ 0x00410801, 0x41c20229, 0x000090f0, 0x00000000 },
{ 0x00410401, 0x41e00229, 0x000090c9, 0x00000000 },
{ 0x00410801, 0x41e20229, 0x000090f1, 0x00000000 },
{ 0x00410401, 0x42000229, 0x006990b0, 0x00000000 },
{ 0x00410801, 0x42020229, 0x006990f8, 0x00000000 },
{ 0x00410401, 0x21c00229, 0x020090c8, 0x00000000 },
{ 0x00410801, 0x21c80229, 0x020090f0, 0x00000000 },
{ 0x00410401, 0x21e00229, 0x020090c9, 0x00000000 },
{ 0x00410801, 0x21e80229, 0x020090f1, 0x00000000 },
{ 0x00410401, 0x22000229, 0x026990b0, 0x00000000 },
{ 0x00410801, 0x22080229, 0x026990f8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000019c },
{ 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a4, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000184 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b4, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000174 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
{ 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
{ 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
{ 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
{ 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da5, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
{ 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
{ 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
{ 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x02600031, 0x20400021, 0x408d07e0, 0x00000200 },
{ 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
{ 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
{ 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
{ 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
{ 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
{ 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
{ 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
{ 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
{ 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
{ 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
{ 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
{ 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
{ 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
{ 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000026 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
{ 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000f0 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
{ 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
{ 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad00c0, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000c6 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
{ 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000000b6 },
{ 0x00800008, 0x2340352d, 0x0000905c, 0x008d0220 },
{ 0x00800008, 0x2360352d, 0x0000905e, 0x008d0220 },
{ 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20c00129, 0x008d0520, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
{ 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
{ 0x00800001, 0x25200129, 0x00ad00d0, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x000090e2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090e3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490ec, 0x00000000 },
{ 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000096 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
{ 0x00600001, 0x21c00229, 0x000090f2, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090f3, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490fc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
{ 0x00600001, 0x20d00129, 0x008d0520, 0x00000000 },
{ 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
{ 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490ac, 0x00000000 },
{ 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
{ 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
{ 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
{ 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
{ 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
{ 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
{ 0x00600001, 0x22000229, 0x002490bc, 0x00000000 },
{ 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
{ 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
{ 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
{ 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
{ 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
{ 0x01600005, 0x20003dac, 0x020005e0, 0x00010001 },
{ 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
{ 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
{ 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
{ 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
{ 0x00610001, 0x20400022, 0x028d0040, 0x00000000 },
{ 0x00710001, 0x20400022, 0x028d0060, 0x00000000 },
{ 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
{ 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
{ 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
{ 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
{ 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
{ 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
{ 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
{ 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
{ 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
{ 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
{ 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
{ 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
{ 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
{ 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
{ 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
{ 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
{ 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
{ 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
{ 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
{ 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
{ 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
{ 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
{ 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
{ 0x00618022, 0x34001c00, 0x00001400, 0x00000036 },
{ 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
{ 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
{ 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
{ 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
{ 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
{ 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
{ 0x00608024, 0x34001c00, 0x00001400, 0x0001001e },
{ 0x00600040, 0x23e03d2d, 0x008d0200, 0x00010001 },
{ 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
{ 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
{ 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
{ 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
{ 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
{ 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
{ 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
{ 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
{ 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
{ 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
{ 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
{ 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/h264/mc/export.inc
0,0 → 1,345
#define INTRA_16x16_IP 0
#define INTRA_16x16_VERTICAL_IP 14
#define INTRA_16x16_HORIZONTAL_IP 32
#define INTRA_16x16_DC_IP 52
#define INTRA_16x16_PLANE_IP 98
#define End_intra_Pred_16x16_Y_IP 166
#define End_add_Error_16x16_Y_IP 204
#define load_Intra_Ref_Y_IP 220
#define decode_Chroma_Intra_IP 238
#define INTRA_CHROMA_DC_IP 260
#define INTRA_CHROMA_HORIZONTAL_IP 320
#define INTRA_CHROMA_VERTICAL_IP 332
#define INTRA_Chroma_PLANE_IP 342
#define End_of_intra_Pred_Chroma_IP 392
#define save_16x16_Y_IP 436
#define INTRA_8x8_IP 464
#define INTRA_8x8_BLK2_IP 568
#define intra_Pred_8x8_Y_IP 640
#define INTRA_8X8_VERTICAL_IP 672
#define INTRA_8X8_HORIZONTAL_IP 682
#define INTRA_8X8_DC_IP 692
#define INTRA_8X8_DIAG_DOWN_LEFT_IP 724
#define INTRA_8X8_DIAG_DOWN_RIGHT_IP 744
#define INTRA_8X8_VERT_RIGHT_IP 772
#define INTRA_8X8_HOR_DOWN_IP 808
#define INTRA_8X8_VERT_LEFT_IP 842
#define INTRA_8X8_HOR_UP_IP 862
#define save_8x8_Y_IP 886
#define INTRA_4x4_IP 928
#define intra_Pred_4x4_Y_4_IP 1062
#define ADD_ERROR_SB0_IP 1074
#define ADD_ERROR_SB1_IP 1088
#define ADD_ERROR_SB2_IP 1108
#define ADD_ERROR_SB3_IP 1124
#define intra_Pred_4x4_Y_IP 1130
#define INTRA_4X4_VERTICAL_IP 1130
#define INTRA_4X4_HORIZONTAL_IP 1134
#define INTRA_4X4_DC_IP 1138
#define INTRA_4X4_DIAG_DOWN_LEFT_IP 1160
#define INTRA_4X4_DIAG_DOWN_RIGHT_IP 1174
#define INTRA_4X4_VERT_RIGHT_IP 1192
#define INTRA_4X4_HOR_DOWN_IP 1218
#define INTRA_4X4_VERT_LEFT_IP 1246
#define INTRA_4X4_HOR_UP_IP 1260
#define save_4x4_Y_IP 1276
#define INTRA_PCM_IP 1320
#define FRAME_MB_IP 1384
#define INIT_MBPARA_FRM_IP 1390
#define NOT_8x8_MODE_FRM_IP 1426
#define CONVERT_MVS_FRM_IP 1436
#define INIT_ADDRESS_REGS_FRM_IP 1446
#define LOOP_SUBMB_FRM_IP 1454
#define LOOP_DIR_FRM_IP 1460
#define LOADREF_MVXZERO_FRM_IP 1510
#define EXIT_LOADREF_Y_16x13_FRM_IP 1524
#define Interpolate_Y_8x8_Func_FRM_IP 1544
#define Interpolate_Y_8x8_Func2_FRM_IP 1574
#define Interpolate_Y_H_8x8_FRM_IP 1708
#define Interpolate_Y_V_8x8_FRM_IP 1790
#define VFILTER_8x8_FRM_IP 1812
#define Interpolate_Y_I_8x8_FRM_IP 1860
#define Average_8x8_FRM_IP 1880
#define Return_Interpolate_Y_8x8_FRM_IP 1888
#define Exit_Interpolate_Y_8x8_FRM_IP 1890
#define Interpolate_C_4x4_Func_FRM_IP 1890
#define PROCESS4x4_FRM_IP 1928
#define LOOP_SUBMBPT_FRM_IP 1930
#define Interpolate_Y_H_4x4_FRM_IP 2066
#define Interpolate_Y_V_4x4_FRM_IP 2108
#define VFILTER_4x4_FRM_IP 2142
#define Interpolate_Y_I_4x4_FRM_IP 2148
#define Average_4x4_FRM_IP 2160
#define Return_Interpolate_Y_4x4_FRM_IP 2162
#define Exit_Interpolate_Y_4x4_FRM_IP 2174
#define ROUND_SHIFT_C_FRM_IP 2222
#define LOOP_DIR_CONTINUE_FRM_IP 2230
#define Weighted_Prediction_FRM_IP 2236
#define DefaultWeightedPred_UniPred_FRM_IP 2244
#define DefaultWeightedPred_BiPred_FRM_IP 2256
#define WeightedPred_FRM_IP 2264
#define WeightedPred_Explicit_FRM_IP 2282
#define WeightedPred_LOOP_FRM_IP 2322
#define Return_WeightedPred_FRM_IP 2382
#define EXIT_LOOP_FRM_IP 2424
#define FIELD_MB_IP 2496
#define INIT_MBPARA_FLD_IP 2502
#define NOT_8x8_MODE_FLD_IP 2538
#define CONVERT_MVS_FLD_IP 2548
#define INIT_ADDRESS_REGS_FLD_IP 2558
#define LOOP_SUBMB_FLD_IP 2568
#define LOOP_DIR_FLD_IP 2574
#define LOADREF_MVXZERO_FLD_IP 2644
#define EXIT_LOADREF_Y_16x13_FLD_IP 2658
#define Interpolate_Y_8x8_Func_FLD_IP 2680
#define Interpolate_Y_8x8_Func2_FLD_IP 2710
#define Interpolate_Y_H_8x8_FLD_IP 2844
#define Interpolate_Y_V_8x8_FLD_IP 2926
#define VFILTER_8x8_FLD_IP 2948
#define Interpolate_Y_I_8x8_FLD_IP 2996
#define Average_8x8_FLD_IP 3016
#define Return_Interpolate_Y_8x8_FLD_IP 3024
#define Exit_Interpolate_Y_8x8_FLD_IP 3026
#define Interpolate_C_4x4_Func_FLD_IP 3026
#define PROCESS4x4_FLD_IP 3064
#define LOOP_SUBMBPT_FLD_IP 3066
#define Interpolate_Y_H_4x4_FLD_IP 3204
#define Interpolate_Y_V_4x4_FLD_IP 3246
#define VFILTER_4x4_FLD_IP 3280
#define Interpolate_Y_I_4x4_FLD_IP 3286
#define Average_4x4_FLD_IP 3298
#define Return_Interpolate_Y_4x4_FLD_IP 3300
#define Exit_Interpolate_Y_4x4_FLD_IP 3312
#define ROUND_SHIFT_C_FLD_IP 3360
#define LOOP_DIR_CONTINUE_FLD_IP 3368
#define Weighted_Prediction_FLD_IP 3374
#define DefaultWeightedPred_UniPred_FLD_IP 3382
#define DefaultWeightedPred_BiPred_FLD_IP 3394
#define WeightedPred_FLD_IP 3402
#define WeightedPred_Explicit_FLD_IP 3420
#define WeightedPred_LOOP_FLD_IP 3460
#define Return_WeightedPred_FLD_IP 3520
#define EXIT_LOOP_FLD_IP 3562
#define MBAFF_MB_IP 3640
#define INIT_MBPARA_MBF_IP 3646
#define NOT_8x8_MODE_MBF_IP 3682
#define CONVERT_MVS_MBF_IP 3692
#define INIT_ADDRESS_REGS_MBF_IP 3702
#define LOOP_SUBMB_MBF_IP 3716
#define LOOP_DIR_MBF_IP 3722
#define LOADREF_MVXZERO_MBF_IP 3796
#define EXIT_LOADREF_Y_16x13_MBF_IP 3810
#define Interpolate_Y_8x8_Func_MBF_IP 3832
#define Interpolate_Y_8x8_Func2_MBF_IP 3862
#define Interpolate_Y_H_8x8_MBF_IP 3996
#define Interpolate_Y_V_8x8_MBF_IP 4078
#define VFILTER_8x8_MBF_IP 4100
#define Interpolate_Y_I_8x8_MBF_IP 4148
#define Average_8x8_MBF_IP 4168
#define Return_Interpolate_Y_8x8_MBF_IP 4176
#define Exit_Interpolate_Y_8x8_MBF_IP 4178
#define Interpolate_C_4x4_Func_MBF_IP 4178
#define PROCESS4x4_MBF_IP 4216
#define LOOP_SUBMBPT_MBF_IP 4218
#define Interpolate_Y_H_4x4_MBF_IP 4356
#define Interpolate_Y_V_4x4_MBF_IP 4398
#define VFILTER_4x4_MBF_IP 4432
#define Interpolate_Y_I_4x4_MBF_IP 4438
#define Average_4x4_MBF_IP 4450
#define Return_Interpolate_Y_4x4_MBF_IP 4452
#define Exit_Interpolate_Y_4x4_MBF_IP 4464
#define ROUND_SHIFT_C_MBF_IP 4512
#define LOOP_DIR_CONTINUE_MBF_IP 4520
#define Weighted_Prediction_MBF_IP 4526
#define DefaultWeightedPred_UniPred_MBF_IP 4534
#define DefaultWeightedPred_BiPred_MBF_IP 4546
#define WeightedPred_MBF_IP 4554
#define WeightedPred_Explicit_MBF_IP 4572
#define WeightedPred_LOOP_MBF_IP 4612
#define Return_WeightedPred_MBF_IP 4672
#define EXIT_LOOP_MBF_IP 4714
#define SETHWSCOREBOARD_IP 4792
#define SetHWScoreboard_Loop_IP 4806
#define Parse_8_Loop_0_IP 4852
#define Parse_8_Loop_2_IP 4876
#define Parse_8_Loop_4_IP 4900
#define Parse_8_Loop_6_IP 4924
#define Parse_8_Loop_8_IP 4948
#define Parse_8_Loop_10_IP 4972
#define Parse_8_Loop_12_IP 4996
#define Parse_8_Loop_14_IP 5020
#define SetHWScoreboard_Remainder_IP 5062
#define SetHWScoreboard_Remainder_Loop_IP 5090
#define Output_Remainder_Intra_IP 5116
#define SetHWScoreboard_Done_IP 5128
#define SETHWSCOREBOARD_MBAFF_IP 5136
#define SetHWScoreboard_MBAFF_Loop_IP 5148
#define SET_SB_MBAFF_INTRA_0_IP 5208
#define SET_SB_MBAFF_0_IP 5230
#define NEXT_MB_MBAFF_0_IP 5238
#define SET_SB_MBAFF_INTRA_2_IP 5276
#define SET_SB_MBAFF_2_IP 5298
#define NEXT_MB_MBAFF_2_IP 5306
#define SET_SB_MBAFF_INTRA_4_IP 5344
#define SET_SB_MBAFF_4_IP 5366
#define NEXT_MB_MBAFF_4_IP 5374
#define SET_SB_MBAFF_INTRA_6_IP 5412
#define SET_SB_MBAFF_6_IP 5434
#define NEXT_MB_MBAFF_6_IP 5442
#define SET_SB_MBAFF_INTRA_8_IP 5480
#define SET_SB_MBAFF_8_IP 5502
#define NEXT_MB_MBAFF_8_IP 5510
#define SET_SB_MBAFF_INTRA_10_IP 5548
#define SET_SB_MBAFF_10_IP 5570
#define NEXT_MB_MBAFF_10_IP 5578
#define SET_SB_MBAFF_INTRA_12_IP 5616
#define SET_SB_MBAFF_12_IP 5638
#define NEXT_MB_MBAFF_12_IP 5646
#define SET_SB_MBAFF_INTRA_14_IP 5684
#define SET_SB_MBAFF_14_IP 5706
#define NEXT_MB_MBAFF_14_IP 5714
#define SetHWScoreboard_MBAFF_Remainder_IP 5756
#define SetHWScoreboard_MBAFF_Remainder_Loop_IP 5784
#define SET_SB_MBAFF_REM_INTRA_IP 5822
#define SET_SB_MBAFF_REM_IP 5846
#define Output_MBAFF_Remainder_Intra_IP 5856
#define SetHWScoreboard_MBAFF_Done_IP 5868
#define BSDRESET_IP 5870
#define DCRESETDUMMY_IP 5872
#define AVC_ILDB_ROOT_Y_ILDB_FRAME_IP 5880
#define SLEEP_ENTRY_Y_ILDB_FRAME_IP 5976
#define POST_SLEEP_Y_ILDB_FRAME_IP 5980
#define NEXT_MB_Y_ILDB_FRAME_IP 6010
#define ALL_SPAWNED_Y_ILDB_FRAME_IP 6034
#define ALL_DONE_Y_ILDB_FRAME_IP 6044
#define WAIT_FOR_UV_ILDB_FRAME_IP 6044
#define AVC_ILDB_CHILD_Y_ILDB_FRAME_IP 6056
#define WRITE_URB_Y_ILDB_FRAME_IP 6436
#define POST_ILDB_Y_ILDB_FRAME_IP 6444
#define READ_FOR_URB_Y_ILDB_FRAME_IP 6458
#define FILTER_Y_IP 6494
#define Y_ELSE3_IP 6560
#define Y_ENDIF3_IP 6574
#define Y_ELSE4_IP 6604
#define Y_ENDIF4_IP 6618
#define Y_ELSE2_IP 6618
#define Y_ENDIF6_IP 6684
#define Y_ENDIF7_IP 6706
#define Y_ENDIF2_IP 6710
#define Y_ENDIF1_IP 6710
#define AVC_ILDB_ROOT_UV_ILDB_FRAME_IP 6720
#define SLEEP_ENTRY_UV_ILDB_FRAME_IP 6798
#define POST_SLEEP_UV_ILDB_FRAME_IP 6802
#define NEXT_MB_UV_ILDB_FRAME_IP 6834
#define ALL_SPAWNED_UV_ILDB_FRAME_IP 6858
#define ALL_DONE_UV_ILDB_FRAME_IP 6882
#define AVC_ILDB_CHILD_UV_ILDB_FRAME_IP 6888
#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FRAME_IP 7008
#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FRAME_IP 7126
#define WRITE_URB_UV_ILDB_FRAME_IP 7194
#define POST_ILDB_UV_ILDB_FRAME_IP 7202
#define READ_FOR_URB_UV_ILDB_FRAME_IP 7216
#define FILTER_UV_IP 7246
#define UV_ELSE2_IP 7282
#define UV_ENDIF2_IP 7314
#define UV_ENDIF1_IP 7314
#define AVC_ILDB_ROOT_Y_ILDB_FIELD_IP 7320
#define SLEEP_ENTRY_Y_ILDB_FIELD_IP 7416
#define POST_SLEEP_Y_ILDB_FIELD_IP 7420
#define NEXT_MB_Y_ILDB_FIELD_IP 7450
#define ALL_SPAWNED_Y_ILDB_FIELD_IP 7474
#define ALL_DONE_Y_ILDB_FIELD_IP 7484
#define WAIT_FOR_UV_ILDB_FIELD_IP 7484
#define AVC_ILDB_CHILD_Y_ILDB_FIELD_IP 7496
#define WRITE_URB_Y_ILDB_FIELD_IP 7896
#define POST_ILDB_Y_ILDB_FIELD_IP 7904
#define READ_FOR_URB_Y_ILDB_FIELD_IP 7918
#define ELSE_Y_4x16T_ILDB_FIELD_IP 7934
#define ENDIF_Y_4x16T_ILDB_FIELD_IP 7942
#define AVC_ILDB_ROOT_UV_ILDB_FIELD_IP 7976
#define SLEEP_ENTRY_UV_ILDB_FIELD_IP 8054
#define POST_SLEEP_UV_ILDB_FIELD_IP 8058
#define NEXT_MB_UV_ILDB_FIELD_IP 8090
#define ALL_SPAWNED_UV_ILDB_FIELD_IP 8114
#define ALL_DONE_UV_ILDB_FIELD_IP 8138
#define AVC_ILDB_CHILD_UV_ILDB_FIELD_IP 8144
#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FIELD_IP 8272
#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FIELD_IP 8394
#define WRITE_URB_UV_ILDB_FIELD_IP 8470
#define POST_ILDB_UV_ILDB_FIELD_IP 8478
#define READ_FOR_URB_UV_ILDB_FIELD_IP 8492
#define ELSE_Y_2x8T_ILDB_FIELD_IP 8508
#define ENDIF_Y_2x8T_ILDB_FIELD_IP 8516
#define AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP 8544
#define SLEEP_ENTRY_Y_ILDB_MBAFF_IP 8642
#define POST_SLEEP_Y_ILDB_MBAFF_IP 8646
#define NEXT_MB_Y_ILDB_MBAFF_IP 8676
#define ALL_SPAWNED_Y_ILDB_MBAFF_IP 8700
#define ALL_DONE_Y_ILDB_MBAFF_IP 8710
#define WAIT_FOR_UV_ILDB_MBAFF_IP 8710
#define AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP 8720
#define RE_ENTRY_IP 8742
#define ELSE_Y_16x16T_ILDB_MBAFF_IP 8782
#define ENDIF_Y_16x16T_ILDB_MBAFF_IP 8792
#define ELSE_Y_4x16T_IP 8808
#define ENDIF_Y_4x16T_IP 8818
#define BYPASS_V1_Y_IP 8966
#define BYPASS_V2_Y_IP 8980
#define BYPASS_V3_Y_IP 8994
#define ELSE_Y_16x4T_IP 9024
#define ENDIF_Y_16x4T_IP 9034
#define NOT_DUAL_FIELD_IP 9060
#define ELSE_Y_16x4_IP 9060
#define ENDIF_Y_16x4_IP 9072
#define DUAL_FIELD_Y_IP 9168
#define H0_Y_DONE_IP 9236
#define ELSE_Y_16x16_IP 9310
#define ENDIF_Y_16x16_IP 9320
#define ELSE_Y_16x4_SAVE_IP 9342
#define ENDIF_Y_16x4_SAVE_IP 9354
#define SKIP_ILDB_IP 9356
#define POST_ILDB_IP 9364
#define FILTER_Y_MBAFF_IP 9378
#define MBAFF_Y_ELSE3_IP 9444
#define MBAFF_Y_ENDIF3_IP 9458
#define MBAFF_Y_ELSE4_IP 9488
#define MBAFF_Y_ENDIF4_IP 9502
#define MBAFF_Y_ELSE2_IP 9502
#define MBAFF_Y_ENDIF6_IP 9566
#define MBAFF_Y_ENDIF7_IP 9588
#define MBAFF_Y_ENDIF2_IP 9592
#define MBAFF_Y_ENDIF1_IP 9592
#define AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP 9600
#define SLEEP_ENTRY_UV_ILDB_MBAFF_IP 9678
#define POST_SLEEP_UV_ILDB_MBAFF_IP 9682
#define NEXT_MB_UV_ILDB_MBAFF_IP 9714
#define ALL_SPAWNED_UV_ILDB_MBAFF_IP 9738
#define ALL_DONE_UV_ILDB_MBAFF_IP 9762
#define AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP 9768
#define RE_ENTRY_UV_ILDB_MBAFF_IP 9794
#define ELSE_UV_8X8T_ILDB_MBAFF_IP 9836
#define ENDIF_UV_8X8T_ILDB_MBAFF_IP 9846
#define ELSE_Y_2x8T_ILDB_MBAFF_IP 9864
#define ENDIF_Y_2x8T_ILDB_MBAFF_IP 9874
#define V0_U_NEXT1_IP 9934
#define V0_U_NEXT2_IP 9954
#define V0_U_NEXT3_IP 9964
#define BYPASS_V0_UV_IP 10018
#define ELSE_UV_8X2T_IP 10082
#define ENDIF_UV_8X2T_IP 10092
#define NOT_DUAL_FIELD_UV_IP 10120
#define ELSE_UV_8X2_IP 10120
#define ENDIF_UV_8X2_IP 10132
#define DUAL_FIELD_UV_IP 10208
#define H0_UV_DONE_IP 10300
#define ELSE_UV_8X8_IP 10360
#define ENDIF_UV_8X8_IP 10370
#define ELSE_UV_8X2_SAVE_IP 10394
#define ENDIF_UV_8X2_SAVE_IP 10406
#define SKIP_ILDB_UV_ILDB_MBAFF_IP 10408
#define POST_ILDB_UV_ILDB_MBAFF_IP 10416
#define FILTER_UV_MBAFF_IP 10430
#define MBAFF_UV_ELSE2_IP 10466
#define MBAFF_UV_ENDIF2_IP 10496
#define MBAFF_UV_ENDIF1_IP 10496
#define AllAVC_END_IP 10500
/drivers/video/i965/shaders/h264/mc/export.inc.gen5
0,0 → 1,345
#define INTRA_16x16_IP_GEN5 0
#define INTRA_16x16_VERTICAL_IP_GEN5 14
#define INTRA_16x16_HORIZONTAL_IP_GEN5 32
#define INTRA_16x16_DC_IP_GEN5 52
#define INTRA_16x16_PLANE_IP_GEN5 98
#define End_intra_Pred_16x16_Y_IP_GEN5 166
#define End_add_Error_16x16_Y_IP_GEN5 204
#define load_Intra_Ref_Y_IP_GEN5 220
#define decode_Chroma_Intra_IP_GEN5 238
#define INTRA_CHROMA_DC_IP_GEN5 260
#define INTRA_CHROMA_HORIZONTAL_IP_GEN5 320
#define INTRA_CHROMA_VERTICAL_IP_GEN5 332
#define INTRA_Chroma_PLANE_IP_GEN5 342
#define End_of_intra_Pred_Chroma_IP_GEN5 392
#define save_16x16_Y_IP_GEN5 436
#define INTRA_8x8_IP_GEN5 464
#define INTRA_8x8_BLK2_IP_GEN5 568
#define intra_Pred_8x8_Y_IP_GEN5 640
#define INTRA_8X8_VERTICAL_IP_GEN5 672
#define INTRA_8X8_HORIZONTAL_IP_GEN5 682
#define INTRA_8X8_DC_IP_GEN5 692
#define INTRA_8X8_DIAG_DOWN_LEFT_IP_GEN5 724
#define INTRA_8X8_DIAG_DOWN_RIGHT_IP_GEN5 744
#define INTRA_8X8_VERT_RIGHT_IP_GEN5 772
#define INTRA_8X8_HOR_DOWN_IP_GEN5 808
#define INTRA_8X8_VERT_LEFT_IP_GEN5 842
#define INTRA_8X8_HOR_UP_IP_GEN5 862
#define save_8x8_Y_IP_GEN5 886
#define INTRA_4x4_IP_GEN5 928
#define intra_Pred_4x4_Y_4_IP_GEN5 1062
#define ADD_ERROR_SB0_IP_GEN5 1074
#define ADD_ERROR_SB1_IP_GEN5 1088
#define ADD_ERROR_SB2_IP_GEN5 1108
#define ADD_ERROR_SB3_IP_GEN5 1124
#define intra_Pred_4x4_Y_IP_GEN5 1130
#define INTRA_4X4_VERTICAL_IP_GEN5 1130
#define INTRA_4X4_HORIZONTAL_IP_GEN5 1134
#define INTRA_4X4_DC_IP_GEN5 1138
#define INTRA_4X4_DIAG_DOWN_LEFT_IP_GEN5 1160
#define INTRA_4X4_DIAG_DOWN_RIGHT_IP_GEN5 1174
#define INTRA_4X4_VERT_RIGHT_IP_GEN5 1192
#define INTRA_4X4_HOR_DOWN_IP_GEN5 1218
#define INTRA_4X4_VERT_LEFT_IP_GEN5 1246
#define INTRA_4X4_HOR_UP_IP_GEN5 1260
#define save_4x4_Y_IP_GEN5 1276
#define INTRA_PCM_IP_GEN5 1320
#define FRAME_MB_IP_GEN5 1384
#define INIT_MBPARA_FRM_IP_GEN5 1390
#define NOT_8x8_MODE_FRM_IP_GEN5 1426
#define CONVERT_MVS_FRM_IP_GEN5 1436
#define INIT_ADDRESS_REGS_FRM_IP_GEN5 1446
#define LOOP_SUBMB_FRM_IP_GEN5 1454
#define LOOP_DIR_FRM_IP_GEN5 1460
#define LOADREF_MVXZERO_FRM_IP_GEN5 1510
#define EXIT_LOADREF_Y_16x13_FRM_IP_GEN5 1524
#define Interpolate_Y_8x8_Func_FRM_IP_GEN5 1544
#define Interpolate_Y_8x8_Func2_FRM_IP_GEN5 1574
#define Interpolate_Y_H_8x8_FRM_IP_GEN5 1708
#define Interpolate_Y_V_8x8_FRM_IP_GEN5 1790
#define VFILTER_8x8_FRM_IP_GEN5 1812
#define Interpolate_Y_I_8x8_FRM_IP_GEN5 1860
#define Average_8x8_FRM_IP_GEN5 1880
#define Return_Interpolate_Y_8x8_FRM_IP_GEN5 1888
#define Exit_Interpolate_Y_8x8_FRM_IP_GEN5 1890
#define Interpolate_C_4x4_Func_FRM_IP_GEN5 1890
#define PROCESS4x4_FRM_IP_GEN5 1928
#define LOOP_SUBMBPT_FRM_IP_GEN5 1930
#define Interpolate_Y_H_4x4_FRM_IP_GEN5 2066
#define Interpolate_Y_V_4x4_FRM_IP_GEN5 2108
#define VFILTER_4x4_FRM_IP_GEN5 2142
#define Interpolate_Y_I_4x4_FRM_IP_GEN5 2148
#define Average_4x4_FRM_IP_GEN5 2160
#define Return_Interpolate_Y_4x4_FRM_IP_GEN5 2162
#define Exit_Interpolate_Y_4x4_FRM_IP_GEN5 2174
#define ROUND_SHIFT_C_FRM_IP_GEN5 2222
#define LOOP_DIR_CONTINUE_FRM_IP_GEN5 2230
#define Weighted_Prediction_FRM_IP_GEN5 2236
#define DefaultWeightedPred_UniPred_FRM_IP_GEN5 2244
#define DefaultWeightedPred_BiPred_FRM_IP_GEN5 2256
#define WeightedPred_FRM_IP_GEN5 2264
#define WeightedPred_Explicit_FRM_IP_GEN5 2282
#define WeightedPred_LOOP_FRM_IP_GEN5 2322
#define Return_WeightedPred_FRM_IP_GEN5 2382
#define EXIT_LOOP_FRM_IP_GEN5 2424
#define FIELD_MB_IP_GEN5 2496
#define INIT_MBPARA_FLD_IP_GEN5 2502
#define NOT_8x8_MODE_FLD_IP_GEN5 2538
#define CONVERT_MVS_FLD_IP_GEN5 2548
#define INIT_ADDRESS_REGS_FLD_IP_GEN5 2558
#define LOOP_SUBMB_FLD_IP_GEN5 2568
#define LOOP_DIR_FLD_IP_GEN5 2574
#define LOADREF_MVXZERO_FLD_IP_GEN5 2644
#define EXIT_LOADREF_Y_16x13_FLD_IP_GEN5 2658
#define Interpolate_Y_8x8_Func_FLD_IP_GEN5 2680
#define Interpolate_Y_8x8_Func2_FLD_IP_GEN5 2710
#define Interpolate_Y_H_8x8_FLD_IP_GEN5 2844
#define Interpolate_Y_V_8x8_FLD_IP_GEN5 2926
#define VFILTER_8x8_FLD_IP_GEN5 2948
#define Interpolate_Y_I_8x8_FLD_IP_GEN5 2996
#define Average_8x8_FLD_IP_GEN5 3016
#define Return_Interpolate_Y_8x8_FLD_IP_GEN5 3024
#define Exit_Interpolate_Y_8x8_FLD_IP_GEN5 3026
#define Interpolate_C_4x4_Func_FLD_IP_GEN5 3026
#define PROCESS4x4_FLD_IP_GEN5 3064
#define LOOP_SUBMBPT_FLD_IP_GEN5 3066
#define Interpolate_Y_H_4x4_FLD_IP_GEN5 3204
#define Interpolate_Y_V_4x4_FLD_IP_GEN5 3246
#define VFILTER_4x4_FLD_IP_GEN5 3280
#define Interpolate_Y_I_4x4_FLD_IP_GEN5 3286
#define Average_4x4_FLD_IP_GEN5 3298
#define Return_Interpolate_Y_4x4_FLD_IP_GEN5 3300
#define Exit_Interpolate_Y_4x4_FLD_IP_GEN5 3312
#define ROUND_SHIFT_C_FLD_IP_GEN5 3360
#define LOOP_DIR_CONTINUE_FLD_IP_GEN5 3368
#define Weighted_Prediction_FLD_IP_GEN5 3374
#define DefaultWeightedPred_UniPred_FLD_IP_GEN5 3382
#define DefaultWeightedPred_BiPred_FLD_IP_GEN5 3394
#define WeightedPred_FLD_IP_GEN5 3402
#define WeightedPred_Explicit_FLD_IP_GEN5 3420
#define WeightedPred_LOOP_FLD_IP_GEN5 3460
#define Return_WeightedPred_FLD_IP_GEN5 3520
#define EXIT_LOOP_FLD_IP_GEN5 3562
#define MBAFF_MB_IP_GEN5 3640
#define INIT_MBPARA_MBF_IP_GEN5 3646
#define NOT_8x8_MODE_MBF_IP_GEN5 3682
#define CONVERT_MVS_MBF_IP_GEN5 3692
#define INIT_ADDRESS_REGS_MBF_IP_GEN5 3702
#define LOOP_SUBMB_MBF_IP_GEN5 3716
#define LOOP_DIR_MBF_IP_GEN5 3722
#define LOADREF_MVXZERO_MBF_IP_GEN5 3796
#define EXIT_LOADREF_Y_16x13_MBF_IP_GEN5 3810
#define Interpolate_Y_8x8_Func_MBF_IP_GEN5 3832
#define Interpolate_Y_8x8_Func2_MBF_IP_GEN5 3862
#define Interpolate_Y_H_8x8_MBF_IP_GEN5 3996
#define Interpolate_Y_V_8x8_MBF_IP_GEN5 4078
#define VFILTER_8x8_MBF_IP_GEN5 4100
#define Interpolate_Y_I_8x8_MBF_IP_GEN5 4148
#define Average_8x8_MBF_IP_GEN5 4168
#define Return_Interpolate_Y_8x8_MBF_IP_GEN5 4176
#define Exit_Interpolate_Y_8x8_MBF_IP_GEN5 4178
#define Interpolate_C_4x4_Func_MBF_IP_GEN5 4178
#define PROCESS4x4_MBF_IP_GEN5 4216
#define LOOP_SUBMBPT_MBF_IP_GEN5 4218
#define Interpolate_Y_H_4x4_MBF_IP_GEN5 4356
#define Interpolate_Y_V_4x4_MBF_IP_GEN5 4398
#define VFILTER_4x4_MBF_IP_GEN5 4432
#define Interpolate_Y_I_4x4_MBF_IP_GEN5 4438
#define Average_4x4_MBF_IP_GEN5 4450
#define Return_Interpolate_Y_4x4_MBF_IP_GEN5 4452
#define Exit_Interpolate_Y_4x4_MBF_IP_GEN5 4464
#define ROUND_SHIFT_C_MBF_IP_GEN5 4512
#define LOOP_DIR_CONTINUE_MBF_IP_GEN5 4520
#define Weighted_Prediction_MBF_IP_GEN5 4526
#define DefaultWeightedPred_UniPred_MBF_IP_GEN5 4534
#define DefaultWeightedPred_BiPred_MBF_IP_GEN5 4546
#define WeightedPred_MBF_IP_GEN5 4554
#define WeightedPred_Explicit_MBF_IP_GEN5 4572
#define WeightedPred_LOOP_MBF_IP_GEN5 4612
#define Return_WeightedPred_MBF_IP_GEN5 4672
#define EXIT_LOOP_MBF_IP_GEN5 4714
#define SETHWSCOREBOARD_IP_GEN5 4792
#define SetHWScoreboard_Loop_IP_GEN5 4806
#define Parse_8_Loop_0_IP_GEN5 4852
#define Parse_8_Loop_2_IP_GEN5 4876
#define Parse_8_Loop_4_IP_GEN5 4900
#define Parse_8_Loop_6_IP_GEN5 4924
#define Parse_8_Loop_8_IP_GEN5 4948
#define Parse_8_Loop_10_IP_GEN5 4972
#define Parse_8_Loop_12_IP_GEN5 4996
#define Parse_8_Loop_14_IP_GEN5 5020
#define SetHWScoreboard_Remainder_IP_GEN5 5062
#define SetHWScoreboard_Remainder_Loop_IP_GEN5 5090
#define Output_Remainder_Intra_IP_GEN5 5116
#define SetHWScoreboard_Done_IP_GEN5 5128
#define SETHWSCOREBOARD_MBAFF_IP_GEN5 5136
#define SetHWScoreboard_MBAFF_Loop_IP_GEN5 5148
#define SET_SB_MBAFF_INTRA_0_IP_GEN5 5208
#define SET_SB_MBAFF_0_IP_GEN5 5230
#define NEXT_MB_MBAFF_0_IP_GEN5 5238
#define SET_SB_MBAFF_INTRA_2_IP_GEN5 5276
#define SET_SB_MBAFF_2_IP_GEN5 5298
#define NEXT_MB_MBAFF_2_IP_GEN5 5306
#define SET_SB_MBAFF_INTRA_4_IP_GEN5 5344
#define SET_SB_MBAFF_4_IP_GEN5 5366
#define NEXT_MB_MBAFF_4_IP_GEN5 5374
#define SET_SB_MBAFF_INTRA_6_IP_GEN5 5412
#define SET_SB_MBAFF_6_IP_GEN5 5434
#define NEXT_MB_MBAFF_6_IP_GEN5 5442
#define SET_SB_MBAFF_INTRA_8_IP_GEN5 5480
#define SET_SB_MBAFF_8_IP_GEN5 5502
#define NEXT_MB_MBAFF_8_IP_GEN5 5510
#define SET_SB_MBAFF_INTRA_10_IP_GEN5 5548
#define SET_SB_MBAFF_10_IP_GEN5 5570
#define NEXT_MB_MBAFF_10_IP_GEN5 5578
#define SET_SB_MBAFF_INTRA_12_IP_GEN5 5616
#define SET_SB_MBAFF_12_IP_GEN5 5638
#define NEXT_MB_MBAFF_12_IP_GEN5 5646
#define SET_SB_MBAFF_INTRA_14_IP_GEN5 5684
#define SET_SB_MBAFF_14_IP_GEN5 5706
#define NEXT_MB_MBAFF_14_IP_GEN5 5714
#define SetHWScoreboard_MBAFF_Remainder_IP_GEN5 5756
#define SetHWScoreboard_MBAFF_Remainder_Loop_IP_GEN5 5784
#define SET_SB_MBAFF_REM_INTRA_IP_GEN5 5822
#define SET_SB_MBAFF_REM_IP_GEN5 5846
#define Output_MBAFF_Remainder_Intra_IP_GEN5 5856
#define SetHWScoreboard_MBAFF_Done_IP_GEN5 5868
#define BSDRESET_IP_GEN5 5870
#define DCRESETDUMMY_IP_GEN5 5872
#define AVC_ILDB_ROOT_Y_ILDB_FRAME_IP_GEN5 5880
#define SLEEP_ENTRY_Y_ILDB_FRAME_IP_GEN5 5976
#define POST_SLEEP_Y_ILDB_FRAME_IP_GEN5 5980
#define NEXT_MB_Y_ILDB_FRAME_IP_GEN5 6010
#define ALL_SPAWNED_Y_ILDB_FRAME_IP_GEN5 6034
#define ALL_DONE_Y_ILDB_FRAME_IP_GEN5 6044
#define WAIT_FOR_UV_ILDB_FRAME_IP_GEN5 6044
#define AVC_ILDB_CHILD_Y_ILDB_FRAME_IP_GEN5 6056
#define WRITE_URB_Y_ILDB_FRAME_IP_GEN5 6436
#define POST_ILDB_Y_ILDB_FRAME_IP_GEN5 6444
#define READ_FOR_URB_Y_ILDB_FRAME_IP_GEN5 6458
#define FILTER_Y_IP_GEN5 6494
#define Y_ELSE3_IP_GEN5 6560
#define Y_ENDIF3_IP_GEN5 6574
#define Y_ELSE4_IP_GEN5 6604
#define Y_ENDIF4_IP_GEN5 6618
#define Y_ELSE2_IP_GEN5 6618
#define Y_ENDIF6_IP_GEN5 6684
#define Y_ENDIF7_IP_GEN5 6706
#define Y_ENDIF2_IP_GEN5 6710
#define Y_ENDIF1_IP_GEN5 6710
#define AVC_ILDB_ROOT_UV_ILDB_FRAME_IP_GEN5 6720
#define SLEEP_ENTRY_UV_ILDB_FRAME_IP_GEN5 6798
#define POST_SLEEP_UV_ILDB_FRAME_IP_GEN5 6802
#define NEXT_MB_UV_ILDB_FRAME_IP_GEN5 6834
#define ALL_SPAWNED_UV_ILDB_FRAME_IP_GEN5 6858
#define ALL_DONE_UV_ILDB_FRAME_IP_GEN5 6882
#define AVC_ILDB_CHILD_UV_ILDB_FRAME_IP_GEN5 6888
#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FRAME_IP_GEN5 7008
#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FRAME_IP_GEN5 7126
#define WRITE_URB_UV_ILDB_FRAME_IP_GEN5 7194
#define POST_ILDB_UV_ILDB_FRAME_IP_GEN5 7202
#define READ_FOR_URB_UV_ILDB_FRAME_IP_GEN5 7216
#define FILTER_UV_IP_GEN5 7246
#define UV_ELSE2_IP_GEN5 7282
#define UV_ENDIF2_IP_GEN5 7314
#define UV_ENDIF1_IP_GEN5 7314
#define AVC_ILDB_ROOT_Y_ILDB_FIELD_IP_GEN5 7320
#define SLEEP_ENTRY_Y_ILDB_FIELD_IP_GEN5 7416
#define POST_SLEEP_Y_ILDB_FIELD_IP_GEN5 7420
#define NEXT_MB_Y_ILDB_FIELD_IP_GEN5 7450
#define ALL_SPAWNED_Y_ILDB_FIELD_IP_GEN5 7474
#define ALL_DONE_Y_ILDB_FIELD_IP_GEN5 7484
#define WAIT_FOR_UV_ILDB_FIELD_IP_GEN5 7484
#define AVC_ILDB_CHILD_Y_ILDB_FIELD_IP_GEN5 7496
#define WRITE_URB_Y_ILDB_FIELD_IP_GEN5 7896
#define POST_ILDB_Y_ILDB_FIELD_IP_GEN5 7904
#define READ_FOR_URB_Y_ILDB_FIELD_IP_GEN5 7918
#define ELSE_Y_4x16T_ILDB_FIELD_IP_GEN5 7934
#define ENDIF_Y_4x16T_ILDB_FIELD_IP_GEN5 7942
#define AVC_ILDB_ROOT_UV_ILDB_FIELD_IP_GEN5 7976
#define SLEEP_ENTRY_UV_ILDB_FIELD_IP_GEN5 8054
#define POST_SLEEP_UV_ILDB_FIELD_IP_GEN5 8058
#define NEXT_MB_UV_ILDB_FIELD_IP_GEN5 8090
#define ALL_SPAWNED_UV_ILDB_FIELD_IP_GEN5 8114
#define ALL_DONE_UV_ILDB_FIELD_IP_GEN5 8138
#define AVC_ILDB_CHILD_UV_ILDB_FIELD_IP_GEN5 8144
#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FIELD_IP_GEN5 8272
#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FIELD_IP_GEN5 8394
#define WRITE_URB_UV_ILDB_FIELD_IP_GEN5 8470
#define POST_ILDB_UV_ILDB_FIELD_IP_GEN5 8478
#define READ_FOR_URB_UV_ILDB_FIELD_IP_GEN5 8492
#define ELSE_Y_2x8T_ILDB_FIELD_IP_GEN5 8508
#define ENDIF_Y_2x8T_ILDB_FIELD_IP_GEN5 8516
#define AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP_GEN5 8544
#define SLEEP_ENTRY_Y_ILDB_MBAFF_IP_GEN5 8642
#define POST_SLEEP_Y_ILDB_MBAFF_IP_GEN5 8646
#define NEXT_MB_Y_ILDB_MBAFF_IP_GEN5 8676
#define ALL_SPAWNED_Y_ILDB_MBAFF_IP_GEN5 8700
#define ALL_DONE_Y_ILDB_MBAFF_IP_GEN5 8710
#define WAIT_FOR_UV_ILDB_MBAFF_IP_GEN5 8710
#define AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP_GEN5 8720
#define RE_ENTRY_IP_GEN5 8742
#define ELSE_Y_16x16T_ILDB_MBAFF_IP_GEN5 8782
#define ENDIF_Y_16x16T_ILDB_MBAFF_IP_GEN5 8792
#define ELSE_Y_4x16T_IP_GEN5 8808
#define ENDIF_Y_4x16T_IP_GEN5 8818
#define BYPASS_V1_Y_IP_GEN5 8966
#define BYPASS_V2_Y_IP_GEN5 8980
#define BYPASS_V3_Y_IP_GEN5 8994
#define ELSE_Y_16x4T_IP_GEN5 9024
#define ENDIF_Y_16x4T_IP_GEN5 9034
#define NOT_DUAL_FIELD_IP_GEN5 9060
#define ELSE_Y_16x4_IP_GEN5 9060
#define ENDIF_Y_16x4_IP_GEN5 9072
#define DUAL_FIELD_Y_IP_GEN5 9168
#define H0_Y_DONE_IP_GEN5 9236
#define ELSE_Y_16x16_IP_GEN5 9310
#define ENDIF_Y_16x16_IP_GEN5 9320
#define ELSE_Y_16x4_SAVE_IP_GEN5 9342
#define ENDIF_Y_16x4_SAVE_IP_GEN5 9354
#define SKIP_ILDB_IP_GEN5 9356
#define POST_ILDB_IP_GEN5 9364
#define FILTER_Y_MBAFF_IP_GEN5 9378
#define MBAFF_Y_ELSE3_IP_GEN5 9444
#define MBAFF_Y_ENDIF3_IP_GEN5 9458
#define MBAFF_Y_ELSE4_IP_GEN5 9488
#define MBAFF_Y_ENDIF4_IP_GEN5 9502
#define MBAFF_Y_ELSE2_IP_GEN5 9502
#define MBAFF_Y_ENDIF6_IP_GEN5 9566
#define MBAFF_Y_ENDIF7_IP_GEN5 9588
#define MBAFF_Y_ENDIF2_IP_GEN5 9592
#define MBAFF_Y_ENDIF1_IP_GEN5 9592
#define AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP_GEN5 9600
#define SLEEP_ENTRY_UV_ILDB_MBAFF_IP_GEN5 9678
#define POST_SLEEP_UV_ILDB_MBAFF_IP_GEN5 9682
#define NEXT_MB_UV_ILDB_MBAFF_IP_GEN5 9714
#define ALL_SPAWNED_UV_ILDB_MBAFF_IP_GEN5 9738
#define ALL_DONE_UV_ILDB_MBAFF_IP_GEN5 9762
#define AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP_GEN5 9768
#define RE_ENTRY_UV_ILDB_MBAFF_IP_GEN5 9794
#define ELSE_UV_8X8T_ILDB_MBAFF_IP_GEN5 9836
#define ENDIF_UV_8X8T_ILDB_MBAFF_IP_GEN5 9846
#define ELSE_Y_2x8T_ILDB_MBAFF_IP_GEN5 9864
#define ENDIF_Y_2x8T_ILDB_MBAFF_IP_GEN5 9874
#define V0_U_NEXT1_IP_GEN5 9934
#define V0_U_NEXT2_IP_GEN5 9954
#define V0_U_NEXT3_IP_GEN5 9964
#define BYPASS_V0_UV_IP_GEN5 10018
#define ELSE_UV_8X2T_IP_GEN5 10082
#define ENDIF_UV_8X2T_IP_GEN5 10092
#define NOT_DUAL_FIELD_UV_IP_GEN5 10120
#define ELSE_UV_8X2_IP_GEN5 10120
#define ENDIF_UV_8X2_IP_GEN5 10132
#define DUAL_FIELD_UV_IP_GEN5 10208
#define H0_UV_DONE_IP_GEN5 10300
#define ELSE_UV_8X8_IP_GEN5 10360
#define ENDIF_UV_8X8_IP_GEN5 10370
#define ELSE_UV_8X2_SAVE_IP_GEN5 10394
#define ENDIF_UV_8X2_SAVE_IP_GEN5 10406
#define SKIP_ILDB_UV_ILDB_MBAFF_IP_GEN5 10408
#define POST_ILDB_UV_ILDB_MBAFF_IP_GEN5 10416
#define FILTER_UV_MBAFF_IP_GEN5 10430
#define MBAFF_UV_ELSE2_IP_GEN5 10466
#define MBAFF_UV_ENDIF2_IP_GEN5 10496
#define MBAFF_UV_ENDIF1_IP_GEN5 10496
#define AllAVC_END_IP_GEN5 10500
/drivers/video/i965/shaders/h264/mc/null.g4b
0,0 → 1,13
{ 0x00200009, 0x27c02e21, 0x00450064, 0x00040004 },
{ 0x00000001, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x008d07c0, 0x05902000 },
{ 0x00000008, 0x27c42c21, 0x002107c4, 0x00010001 },
{ 0x00000001, 0x27c80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x008d07c0, 0x05502001 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/h264/mc/null.g4b.gen5
0,0 → 1,13
{ 0x00200009, 0x27c02e21, 0x00450064, 0x00040004 },
{ 0x00000001, 0x27c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x508d07c0, 0x12082000 },
{ 0x00000008, 0x27c42c21, 0x002107c4, 0x00010001 },
{ 0x00000001, 0x27c80061, 0x00000000, 0x0007000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x508d07c0, 0x0a082001 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_backward.g4b
0,0 → 1,757
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000143 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_backward.g4b.gen5
0,0 → 1,757
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000286 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_backward_16x8.g4b
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_bidirect.g4b
0,0 → 1,797
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
{ 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
{ 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
{ 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
{ 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
{ 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
{ 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
{ 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
{ 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
{ 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
{ 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
{ 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
{ 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
{ 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
{ 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
{ 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
{ 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
{ 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
{ 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
{ 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
{ 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
{ 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
{ 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
{ 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
{ 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
{ 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
{ 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_bidirect.g4b.gen5
0,0 → 1,797
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
{ 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
{ 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
{ 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
{ 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
{ 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
{ 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
{ 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
{ 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
{ 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
{ 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
{ 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
{ 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
{ 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
{ 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
{ 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
{ 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
{ 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
{ 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
{ 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
{ 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
{ 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
{ 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
{ 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
{ 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
{ 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
{ 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_bidirect_16x8.g4b
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_forward.g4b
0,0 → 1,768
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
{ 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
{ 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000004 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000014a },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000141 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
{ 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_forward.g4b.gen5
0,0 → 1,768
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
{ 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000294 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000282 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
{ 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
{ 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
{ 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
{ 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
{ 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
{ 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
{ 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
{ 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
{ 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
{ 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
{ 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
{ 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
{ 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
{ 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
{ 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
{ 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
{ 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
{ 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
{ 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
{ 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
{ 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
{ 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
{ 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
{ 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
{ 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
{ 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
{ 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_forward_16x8.g4b
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5
0,0 → 1,15
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
{ 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
{ 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
{ 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
{ 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
{ 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/field_intra.g4b
0,0 → 1,313
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
{ 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
{ 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
{ 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
{ 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
{ 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
{ 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
{ 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
{ 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
{ 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
{ 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
{ 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
{ 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
{ 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
{ 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
{ 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
{ 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
{ 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
{ 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
{ 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
{ 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
{ 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
{ 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
{ 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
{ 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
{ 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
{ 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
{ 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
{ 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
{ 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
{ 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
{ 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/mpeg2/vld/field_intra.g4b.gen5
0,0 → 1,313
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
{ 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
{ 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
{ 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
{ 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
{ 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
{ 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
{ 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
{ 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
{ 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
{ 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
{ 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
{ 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
{ 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
{ 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
{ 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
{ 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
{ 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
{ 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
{ 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
{ 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
{ 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
{ 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
{ 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
{ 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
{ 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
{ 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
{ 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
{ 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
{ 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
{ 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_backward.g4b
0,0 → 1,553
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5
0,0 → 1,553
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b
0,0 → 1,1007
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
{ 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
{ 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
{ 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
{ 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
{ 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
{ 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
{ 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
{ 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
{ 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
{ 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
{ 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
{ 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
{ 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
{ 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
{ 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
{ 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
{ 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
{ 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
{ 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
{ 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
{ 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
{ 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
{ 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
{ 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
{ 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
{ 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
{ 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
{ 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
{ 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5
0,0 → 1,1007
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
{ 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
{ 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
{ 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
{ 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
{ 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
{ 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
{ 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
{ 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
{ 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
{ 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
{ 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
{ 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
{ 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
{ 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
{ 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
{ 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
{ 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
{ 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
{ 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
{ 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
{ 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
{ 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
{ 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
{ 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
{ 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
{ 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
{ 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
{ 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
{ 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_forward.g4b
0,0 → 1,555
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
{ 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
{ 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5
0,0 → 1,555
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
{ 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
{ 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
{ 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
{ 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
{ 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
{ 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
{ 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
{ 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
{ 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
{ 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
{ 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
{ 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
{ 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
{ 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
{ 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
{ 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
{ 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
{ 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
{ 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
{ 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
{ 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
{ 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
{ 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
{ 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
{ 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
{ 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
{ 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
{ 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
{ 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
{ 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
{ 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
{ 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
{ 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
{ 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
{ 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
{ 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
{ 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
{ 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
{ 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
{ 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
{ 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
{ 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
{ 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
{ 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
{ 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
{ 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
{ 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
{ 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
{ 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
{ 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
{ 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
{ 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
{ 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
{ 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
{ 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
{ 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
{ 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
{ 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
{ 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
{ 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
{ 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
{ 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
{ 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
{ 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_backward.g4b
0,0 → 1,369
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5
0,0 → 1,369
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b
0,0 → 1,675
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
{ 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
{ 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
{ 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
{ 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
{ 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
{ 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
{ 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
{ 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
{ 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
{ 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
{ 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
{ 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
{ 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
{ 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
{ 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
{ 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
{ 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
{ 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
{ 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
{ 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
{ 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
{ 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
{ 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
{ 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
{ 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
{ 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
{ 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5
0,0 → 1,675
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
{ 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
{ 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
{ 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
{ 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
{ 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
{ 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
{ 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
{ 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
{ 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
{ 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
{ 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
{ 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
{ 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
{ 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
{ 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
{ 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
{ 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
{ 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
{ 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
{ 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
{ 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
{ 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
{ 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
{ 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
{ 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
{ 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
{ 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
{ 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
{ 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
{ 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
{ 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_forward.g4b
0,0 → 1,369
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
{ 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
{ 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
{ 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5
0,0 → 1,369
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
{ 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
{ 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
{ 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
{ 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
{ 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
{ 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
{ 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
{ 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
{ 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
{ 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
{ 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
{ 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
{ 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
{ 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
{ 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
{ 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
{ 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
{ 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
{ 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
{ 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
{ 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
{ 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
{ 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
{ 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
{ 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
{ 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
{ 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
{ 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
{ 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
{ 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
{ 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
{ 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
{ 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
{ 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
{ 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
{ 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
{ 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
{ 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
{ 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
{ 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
{ 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
{ 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
{ 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
{ 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
{ 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
{ 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
{ 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
{ 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
{ 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
{ 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
{ 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
{ 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
{ 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
{ 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
{ 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
{ 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
{ 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
{ 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
{ 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
{ 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
{ 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
{ 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
{ 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
{ 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
{ 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
{ 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
{ 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
{ 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
{ 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
{ 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
{ 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
{ 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
{ 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
{ 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
{ 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
{ 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
{ 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
{ 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
{ 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
{ 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
{ 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
{ 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
{ 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
{ 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
{ 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
{ 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
{ 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
{ 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
{ 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
{ 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
{ 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
{ 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
{ 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
{ 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
{ 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
{ 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
{ 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
{ 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
{ 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
{ 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
{ 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
{ 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
{ 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
{ 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
{ 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
{ 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
{ 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
{ 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
{ 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
{ 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
{ 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
{ 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
{ 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
{ 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
{ 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
{ 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
{ 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
{ 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
{ 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
{ 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
{ 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
{ 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
{ 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
{ 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
{ 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
{ 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
{ 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
{ 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
{ 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
{ 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
{ 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
{ 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
{ 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
{ 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
{ 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
{ 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
{ 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
{ 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
{ 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
{ 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
{ 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
{ 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
{ 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
{ 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
{ 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
{ 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
{ 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
{ 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
{ 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
{ 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
{ 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
{ 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
{ 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
{ 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
{ 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
{ 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
{ 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
{ 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
{ 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
{ 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
{ 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
{ 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
{ 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
{ 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
{ 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
{ 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
{ 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
{ 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
{ 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
{ 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
{ 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
{ 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
{ 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
{ 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
{ 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
{ 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
{ 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
{ 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
{ 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
{ 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
{ 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
{ 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
{ 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
{ 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
{ 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
{ 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
{ 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
{ 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
{ 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
{ 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
{ 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
{ 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/mpeg2/vld/frame_intra.g4b
0,0 → 1,313
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
{ 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
{ 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
{ 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
{ 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
{ 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
{ 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
{ 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
{ 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
{ 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
{ 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
{ 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
{ 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
{ 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
{ 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
{ 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
{ 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
{ 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
{ 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
{ 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
{ 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
{ 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
{ 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
{ 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
{ 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
{ 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
{ 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
{ 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
{ 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
{ 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
{ 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
{ 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
{ 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/mpeg2/vld/frame_intra.g4b.gen5
0,0 → 1,313
{ 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
{ 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
{ 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
{ 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
{ 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
{ 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
{ 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
{ 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
{ 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
{ 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
{ 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
{ 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
{ 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
{ 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
{ 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
{ 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
{ 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
{ 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
{ 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
{ 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
{ 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
{ 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
{ 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
{ 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
{ 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
{ 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
{ 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
{ 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
{ 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
{ 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
{ 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
{ 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
{ 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
{ 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
{ 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
{ 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
{ 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
{ 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
{ 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
{ 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
{ 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
{ 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
{ 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
{ 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
{ 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
{ 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
{ 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
{ 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
{ 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
{ 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
{ 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
{ 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
{ 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
{ 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
{ 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
{ 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/mpeg2/vld/lib.g4b
0,0 → 1,307
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000099 },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000091 },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000081 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000079 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000077 },
{ 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
{ 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000004b },
{ 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000035 },
{ 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000023 },
{ 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000005 },
{ 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
{ 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/mpeg2/vld/lib.g4b.gen5
0,0 → 1,307
{ 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
{ 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
{ 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
{ 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
{ 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
{ 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
{ 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
{ 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
{ 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
{ 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000132 },
{ 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000122 },
{ 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
{ 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000102 },
{ 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
{ 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000f2 },
{ 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
{ 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
{ 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
{ 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000ee },
{ 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
{ 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000096 },
{ 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000006a },
{ 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
{ 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
{ 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
{ 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
{ 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000046 },
{ 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
{ 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
{ 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
{ 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
{ 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
{ 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
{ 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
{ 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
{ 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
{ 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
{ 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
{ 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
{ 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
{ 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
{ 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
{ 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
{ 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
{ 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
{ 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
{ 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
{ 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
{ 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
{ 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
{ 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
{ 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
{ 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
{ 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
{ 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
{ 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
{ 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
{ 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
{ 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
{ 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
{ 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
{ 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
{ 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
{ 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
{ 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
{ 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
{ 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
{ 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
{ 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
{ 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
{ 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
{ 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
{ 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
/drivers/video/i965/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.asm
0,0 → 1,53
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: AYUV_Load_16x8.asm
//----------------------------------------------------------------
 
 
#include "AYUV_Load_16x8.inc"
 
// In order to load 64x8 AYUV data (16x8 pixels), we need to divide the data
// into two regions and load them separately.
//
// 32 byte 32 byte
//|----------------|----------------|
//| | |
//| A | B |8
//| | |
//| | |
//|----------------|----------------|
 
// Load the first 32x8 data block
// Packed data block should be loaded as 32x8 pixel block
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
shl (1) rMSGSRC.0<1>:d acc0:w 2:w { NoDDClr } // H. block origin need to be four times larger
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV:ud { NoDDChk } // Block width and height (32x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
 
//Load the second 32x8 data block
// Offset the origin X - move to next 32 colomns
add (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 32:w // Increase X origin by 8
// Size stays the same - 32x8
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud // Copy message description to message header
send (8) udSRC_YUV(8)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
 
// Give AYUV region addresses to address register
mov (1) SRC_YUV_OFFSET<1>:ud 0x00400038*32:ud //Address registers contain starting addresses of two halves
//Directly move the data to destination
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(%1)<1> r[SRC_YUV_OFFSET,%1*32+2]<8,4>:ub
mov (16) uwDEST_U(%1)<1> r[SRC_YUV_OFFSET,%1*32+1]<8,4>:ub
mov (16) uwDEST_V(%1)<1> r[SRC_YUV_OFFSET,%1*32+0]<8,4>:ub
}
/drivers/video/i965/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.inc
0,0 → 1,43
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: AYUV_Load_16x8.inc
//
// AYUV data are first loaded to bottom I/O REGION_2, then unpacked to planar data
// and stored in top I/O REGION_1
 
#undef nY_NUM_OF_ROWS
 
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
 
#define nDPR_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Y block size 32x8
#define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold Y block data (8)
 
//Temporary storage for unpacked AYUV data
#define rUNPACK_TEMP REG(r,nTEMP0)
.declare udUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=4 SrcRegion=<8;8,1> Type=ud //1 GRF
.declare ubUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=1 SrcRegion=<32;32,1> Type=ub //1 GRF
 
.declare ubBOT_Y_IO Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(32,1) Type=ub
 
 
#define udSRC_YUV udBOT_Y_IO
#define ubSRC_YUV ubBOT_Y_IO
#define nSRC_YUV_REG nBOT_Y
 
#define uwDEST_Y uwTOP_Y
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
 
#define SRC_YUV_OFFSET a0.0
 
#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
 
// End of AYUV_Load_16x8.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Common/Expansion.inc
0,0 → 1,31
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: Expansion.inc
// Number of U/V rows per block definition
#undef nUV_NUM_OF_ROWS
#ifdef EXPAND_9x5
#define nUV_NUM_OF_ROWS 6
#else
#define nUV_NUM_OF_ROWS 8
#endif
 
// Source/destination region definitions
#undef uwDEST_U
#undef uwDEST_V
#if (nSRC_REGION==nREGION_1)
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
#elif (nSRC_REGION==nREGION_2)
#define uwDEST_U uwBOT_U
#define uwDEST_V uwBOT_V
#endif
 
// End of Expansion.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Common/IMC3_Load_8x4.asm
0,0 → 1,47
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: IMC3_Load_8x4.asm
//
//----------------------------------------------------------------
 
#define IMC3_LOAD_8x4
#include "PL3_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
 
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 8x4 planar U and V -----------------------------------------------------
asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x4)
 
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
}
 
// End of IMC3_Load_8x4
/drivers/video/i965/shaders/post_processing/gen5_6/Common/IMC3_Load_8x5.asm
0,0 → 1,47
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: IMC3_Load_8x5.asm
//
//----------------------------------------------------------------
 
#define IMC3_LOAD_8x5
#include "PL3_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
 
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 8x5 planar U and V -----------------------------------------------------
asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x5)
 
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
}
 
// End of IMC3_Load_8x5
/drivers/video/i965/shaders/post_processing/gen5_6/Common/IMC3_Load_9x5.asm
0,0 → 1,50
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: IMC3_Load_9x5.asm
//
//----------------------------------------------------------------
// This module loads 16x8 Y, 9x5 U and 9x5 V planar data blocks for CSC module
// and stores it in byte-aligned format.
//----------------------------------------------------------------
 
#define IMC3_LOAD_9x5
#include "PL3_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
 
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 9x5 planar U and V -----------------------------------------------------
asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (12x5)
 
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for(nUV_NUM_OF_ROWS-2; >-1; -1) {
mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
}
 
// End of IMC3_Load_9x5
/drivers/video/i965/shaders/post_processing/gen5_6/Common/Init_All_Regs.asm
0,0 → 1,18
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#ifdef GT // to remove error messages of un-initialized GRF
.declare udGRF_space Base=r0.0 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
 
$for (7; <80; 1) {
mov (8) udGRF_space(%1)<1> 0:ud
}
#else
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/Multiple_Loop.asm
0,0 → 1,84
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
/////////////////////////////////////////////////////////////////////////////////
// Multiple_Loop.asm
 
 
// This lable is for satisfying component kernel build.
// DL will remove this label and reference the real one in Multiple_Loop_Head.asm.
#if defined(COMPONENT)
VIDEO_PROCESSING_LOOP:
#endif
 
 
//===== Possible build flags for component kernels
// 1) INC_SCALING
// 2) INC_BLENDING
// 3) INC_BLENDING and INC_SCALING
// 4) (no flags)
 
 
#define MxN_MULTIPLE_BLOCKS
 
//------------------------------------------------------------------------------
#if defined(MxN_MULTIPLE_BLOCKS)
// Do Multiple Block Processing ------------------------------------------------
 
// The 1st block has been processed before entering the loop
 
// Processed all blocks?
add.z.f0.0 (1) wNUM_BLKS:w wNUM_BLKS:w -1:w
 
// Reached multi-block width?
add (1) wORIX:w wORIX:w 16:w
cmp.l.f0.1 (1) null:w wORIX:w wFRAME_ENDX:w // acc0.0 has wORIX
 
#if defined(INC_SCALING)
// Update SRC_VID_H_ORI for scaling
mul (1) REG(r,nTEMP0):f fVIDEO_STEP_X:f 16.0:f
add (1) fSRC_VID_H_ORI:f REG(r,nTEMP0):f fSRC_VID_H_ORI:f
#endif
 
#if defined(INC_BLENDING)
// Update SRC_ALPHA_H_ORI for blending
mul (1) REG(r,nTEMP0):f fALPHA_STEP_X:f 16.0:f
add (1) fSRC_ALPHA_H_ORI:f REG(r,nTEMP0):f fSRC_ALPHA_H_ORI:f
#endif
 
(f0.0)jmpi (1) END_VIDEO_PROCESSING // All blocks are done - Exit loop
 
(f0.1)jmpi (1) VIDEO_PROCESSING_LOOP // If not the end of row, goto the beginning of the loop
 
//If end of row, restart Horizontal offset and calculate Vertical offsets next row.
mov (1) wORIX:w wCOPY_ORIX:w
add (1) wORIY:w wORIY:w 8:w
 
#if defined(INC_SCALING)
// Update SRC_VID_H_ORI and SRC_VID_V_ORI for scaling
mov (1) fSRC_VID_H_ORI:f fFRAME_VID_ORIX:f // Reset normalised X origin to 0 for video and alpha
mul (1) REG(r,nTEMP0):f fVIDEO_STEP_Y:f 8.0:f
add (1) fSRC_VID_V_ORI:f REG(r,nTEMP0):f fSRC_VID_V_ORI:f
#endif
 
#if defined(INC_BLENDING)
// Update SRC_ALPHA_H_ORI and SRC_ALPHA_V_ORI for blending
mov (1) fSRC_ALPHA_H_ORI:f fFRAME_ALPHA_ORIX:f // Reset normalised X origin to 0 for video and alpha
mul (1) REG(r,nTEMP0):f fALPHA_STEP_Y:f 8.0:f
add (1) fSRC_ALPHA_V_ORI:f REG(r,nTEMP0):f fSRC_ALPHA_V_ORI:f
#endif
 
jmpi (1) VIDEO_PROCESSING_LOOP // Continue Loop
 
END_VIDEO_PROCESSING:
nop
 
#endif
END_THREAD // End of Thread
/drivers/video/i965/shaders/post_processing/gen5_6/Common/Multiple_Loop_Head.asm
0,0 → 1,23
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//////////////////////////////////////////////////////////////////////////////////
// Multiple_Loop_Head.asm
// This code sets up the loop control for multiple blocks per thread
 
mul (1) wFRAME_ENDX:w ubBLK_CNT_X:ub 16:uw { NoDDClr } // Build multi-block loop counters
mov (1) wNUM_BLKS:w ubNUM_BLKS:ub { NoDDClr, NoDDChk } // Copy num blocks to word variable
mov (1) wCOPY_ORIX:w wORIX:w { NoDDChk } // Copy multi-block origin in pixel
mov (2) fFRAME_VID_ORIX<1>:f fSRC_VID_H_ORI<4;2,2>:f // Copy src video origin for scaling, and alpha origin for blending
add (1) wFRAME_ENDX:w wFRAME_ENDX:w wORIX:w // Continue building multi-block loop counters
 
VIDEO_PROCESSING_LOOP: // Loop back entry point as the biginning of the loop for multiple blocks
// Beginning of the loop
/drivers/video/i965/shaders/post_processing/gen5_6/Common/NV11_Load_4x8.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: NV11_Load_4x8.asm
//----------------------------------------------------------------
 
#define NV11_LOAD_4x8
#include "PL2_Load.inc"
 
// Load 16x8 NV11 Y ------------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 8x8 NV11 UV ----------------------------------------------------------
asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x8)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/4-1; >-1; -1) {
mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<32;16,2>
mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<32;16,2>
}
 
// End of NV11_Load_4x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/NV11_Load_5x8.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: NV11_Load_5x8.asm
//----------------------------------------------------------------
 
#define NV11_LOAD_5x8
#include "PL2_Load.inc"
 
// Load 16x8 NV11 Y ------------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 12x8 NV11 UV ---------------------------------------------------------
asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (12x8)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
}
 
// End of NV11_Load_5x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: NV12_Load_8x4.asm
//----------------------------------------------------------------
 
#define NV12_LOAD_8x4
#include "PL2_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 8x4 planar U and V -----------------------------------------------------
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<32;16,2>
mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<32;16,2>
}
 
// End of NV12_Load_8x4
/drivers/video/i965/shaders/post_processing/gen5_6/Common/NV12_Load_8x5.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: NV12_Load_8x5.asm
//----------------------------------------------------------------
 
#define NV12_LOAD_8x5
#include "PL2_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 8x5 planar U and V -----------------------------------------------------
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x5)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
}
 
// End of NV12_Load_8x5
/drivers/video/i965/shaders/post_processing/gen5_6/Common/NV12_Load_9x5.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: NV12_Load_9x5.asm
//----------------------------------------------------------------
 
#define NV12_LOAD_9x5
#include "PL2_Load.inc"
 
// Load 16x8 planar Y ----------------------------------------------------------
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 9x5 planar U and V -----------------------------------------------------
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (20x5)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (nY_NUM_OF_ROWS-1; >-1; -1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
}
#endif
$for(nUV_NUM_OF_ROWS-2; >-1; -1) {
mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
}
 
// End of NV12_Load_9x5
/drivers/video/i965/shaders/post_processing/gen5_6/Common/P208_Load_8x8.asm
0,0 → 1,41
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: P208_Load_8x8.asm
//----------------------------------------------------------------
 
#define P208_LOAD_8x8
#include "PL2_Load.inc"
 
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y Block width and height (16x8) (U/V block size is the same)
 
// Load 16x8 P208 Y ------------------------------------------------------------
#if !defined(LOAD_UV_ONLY)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 16x8 planar UV -----------------------------------------------------
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(0,%1*16) ubSRC_Y(0,%1*16)
}
#endif
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_U(0,%1*16) ubSRC_U(0,%1*32)<32;16,2>
mov (16) uwDEST_V(0,%1*16) ubSRC_U(0,%1*32+1)<32;16,2>
}
 
// End of P208_Load_8x8.asm
/drivers/video/i965/shaders/post_processing/gen5_6/Common/P208_Load_9x8.asm
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: P208_Load_9x8.asm
//----------------------------------------------------------------
 
#define P208_LOAD_9x8
#include "PL2_Load.inc"
 
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
 
// Load 16x8 P208 Y ------------------------------------------------------------
#if !defined(LOAD_UV_ONLY)
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
#endif
 
// Load 16x8 planar UV -----------------------------------------------------
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (20x8)
mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
 
// Convert to word-aligned format ----------------------------------------------
#if !defined(LOAD_UV_ONLY)
$for (0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(0,%1*16) ubSRC_Y(0,%1*16)
}
#endif
$for (0; <nUV_NUM_OF_ROWS; 1) {
mov (16) uwDEST_U(0,%1*16) ubSRC_U(0,%1*32)<32;16,2>
mov (16) uwDEST_V(0,%1*16) ubSRC_U(0,%1*32+1)<32;16,2>
}
 
// End of P208_Load_9x8.asm
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PA_Load.inc
0,0 → 1,42
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PA_Load.inc
//
// YUV422 data are first loaded to bottom I/O REGION_2, then unpacked to planar data
// and stored in top I/O REGION_1
 
#undef nY_NUM_OF_ROWS
#undef nUV_NUM_OF_ROWS
 
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#if defined(PA_LOAD_8x8)
#define nDPR_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Y block size 32x8
#define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold Y block data (8)
#endif
#if defined(PA_LOAD_9x8)
#define nDPR_BLOCK_SIZE_YUV_MAIN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Main YUV block size 32x8
#define nDPR_MSG_SIZE_YUV_MAIN nRESLEN_8 // # of MRF's to hold Y block data (8)
#define nDPR_BLOCK_SIZE_YUV_ADDITION nBLOCK_WIDTH_4+nBLOCK_HEIGHT_8 // Additional YUV block size 4x8
#define nDPR_MSG_SIZE_YUV_ADDITION nRESLEN_1 // # of MRF's to hold Y block data (8)
#endif
 
#define udSRC_YUV udBOT_Y_IO
#define nSRC_YUV_REG nBOT_Y
 
#define uwDEST_Y uwTOP_Y
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
 
#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
 
// End of PA_Load.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PA_Load_8x8.asm
0,0 → 1,33
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PA_Load_8x8.asm
//----------------------------------------------------------------
 
#define PA_LOAD_8x8
#include "PA_Load.inc"
 
// Load 16x8 packed data block
// Packed data block should be loaded as 32x8 pixel block
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
shl (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:w 1:w // H. block origin need to be doubled
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV:ud // Block width and height (32x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
 
// Unpack to "planar" YUV422 format in word-aligned bytes
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub nSRC_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(0, %1*16)<1> r[pCF_Y_OFFSET, %1*nGRFWIB]REGION(16,2)
mov (8) uwDEST_U(0, %1*8)<1> r[pCF_U_OFFSET, %1*nGRFWIB]REGION(8,4)
mov (8) uwDEST_V(0, %1*8)<1> r[pCF_V_OFFSET, %1*nGRFWIB]REGION(8,4)
}
 
// End of PA_Load_8x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PA_Load_9x8.asm
0,0 → 1,47
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PA_Load_9x8.asm
//----------------------------------------------------------------
// This module loads 16x8 Y, 9x8 U and 9x8 V planar data blocks for CSC module
// and stores it in word-aligned format.
//----------------------------------------------------------------
 
#define PA_LOAD_9x8
#include "PA_Load.inc"
 
// Load 18x8 packed data block
// Packed data block should be loaded as 36x8 pixel block
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
shl (1) rMSGSRC.0<1>:d acc0:w 1:w // H. block origin need to be doubled
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV_MAIN:ud // Block width and height (32x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV_MAIN+nBI_CURRENT_SRC_YUV:ud
 
add (1) rMSGSRC.0<1>:d rMSGSRC.0:d 32:w //the last 4 pixels are read again for optimization
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV_ADDITION:ud // Block width and height (4x8)
mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_YUV(8)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV_ADDITION+nBI_CURRENT_SRC_YUV:ud
 
// Unpack to "planar" YUV422 format in word-aligned bytes
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub nSRC_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(0, %1*16)<1> r[pCF_Y_OFFSET, %1*nGRFWIB]REGION(16,2)
mov (8) uwDEST_U(0, %1*16)<1> r[pCF_U_OFFSET, %1*nGRFWIB]REGION(8,4)
mov (8) uwDEST_V(0, %1*16)<1> r[pCF_V_OFFSET, %1*nGRFWIB]REGION(8,4)
}
 
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (1) uwDEST_U(0, %1*16+8)<1> r[pCF_U_OFFSET, %1*4+256]REGION(1,0)
mov (1) uwDEST_V(0, %1*16+8)<1> r[pCF_V_OFFSET, %1*4+256]REGION(1,0)
}
//UV expansion done in PL9x8_PL16x8.asm module
 
// End of PA_Load_9x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL16x8_PL8x4.asm
0,0 → 1,38
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL16x8_PL8x4.asm
//----------------------------------------------------------------
 
#include "common.inc"
 
#ifndef DEST_U //DEST_U, DEST_V not defined
 
#if (nSRC_REGION==nREGION_1)
#define DEST_Y uwTOP_Y
#define DEST_U uwTOP_U
#define DEST_V uwTOP_V
#elif (nSRC_REGION==nREGION_2)
#define DEST_Y uwBOT_Y
#define DEST_U uwBOT_U
#define DEST_V uwBOT_V
#endif
#endif
 
//Convert 444 from sampler to 422
$for (0, 0; <8; 2, 1) {
mov (8) DEST_U(0,%2*8)<1> DEST_U(%1)<16;8,2>
mov (8) DEST_V(0,%2*8)<1> DEST_V(%1)<16;8,2>
}
 
// Re-define new number of lines
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 4
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL16x8_PL8x8.asm
0,0 → 1,36
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL16x8_PL8x8.asm
//----------------------------------------------------------------
 
#include "common.inc"
 
#ifndef DEST_U
 
//DEST_U, DEST_V not defined
#if (nSRC_REGION==nREGION_1)
#define DEST_Y uwTOP_Y
#define DEST_U uwTOP_U
#define DEST_V uwTOP_V
#elif (nSRC_REGION==nREGION_2)
#define DEST_Y uwBOT_Y
#define DEST_U uwBOT_U
#define DEST_V uwBOT_V
#endif
#endif
 
 
//Convert 444 from sampler to 422
$for (0, 0; <8; 2, 1) {
mov DEST_U(%2)<1> DEST_U(%1)<16;8,2>
mov DEST_V(%2)<1> DEST_V(%1)<16;8,2>
}
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL2_Load.inc
0,0 → 1,78
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL2_Load.inc
 
#undef nY_NUM_OF_ROWS
#undef nUV_NUM_OF_ROWS
 
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
#define nDPR_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
 
 
#if defined(NV11_LOAD_4x8)
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_8 // U/V block size 8x8
#define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
#endif
 
#if defined(NV11_LOAD_5x8)
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_12+nBLOCK_HEIGHT_8 // U/V block size 12x8
#define nDPR_MSG_SIZE_UV nRESLEN_4 // # of MRF's to hold U/V block data (4)
#endif
#if defined(NV12_LOAD_8x4)
#define nUV_NUM_OF_ROWS 4 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // U/V block size 16x4
#define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
#endif
#if defined(NV12_LOAD_8x5)
#define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_5 // U/V block size 16x5
#define nDPR_MSG_SIZE_UV nRESLEN_3 // # of MRF's to hold U/V block data (3)
#endif
#if defined(NV12_LOAD_9x5)
#define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_20+nBLOCK_HEIGHT_5 // U/V block size 20x5
#define nDPR_MSG_SIZE_UV nRESLEN_5 // # of MRF's to hold U/V block data (5)
#endif
#if defined(P208_LOAD_8x8)
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // U/V block size 16x8
#define nDPR_MSG_SIZE_UV nRESLEN_4 // # of MRF's to hold U/V block data (4)
#endif
#if defined(P208_LOAD_9x8)
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_20+nBLOCK_HEIGHT_8 // U/V block size 20x8
#define nDPR_MSG_SIZE_UV nRESLEN_8 // # of MRF's to hold U/V block data (8)
#endif
 
// Source/destination region definitions
#if !defined(udSRC_Y)
#define udSRC_Y udBOT_Y_IO // Default Y source region is top Y region
#endif
 
#if !defined(udSRC_U)
#define udSRC_U udBOT_U_IO // Default U source region is top U region
#endif
 
#define ubSRC_Y ubBOT_Y
#define nSRC_Y_REG nBOT_Y
#define ubSRC_U ubBOT_U
#define nSRC_U_REG nBOT_U
 
#define uwDEST_Y uwTOP_Y // However they can be transferred to word-aligned byte if desired
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
 
#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
 
// End of PL2_Load.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL3_Load.inc
0,0 → 1,59
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL3_Load.inc
 
#undef nY_NUM_OF_ROWS
#undef nUV_NUM_OF_ROWS
 
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
#define nDPR_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
 
#if defined(IMC3_LOAD_8x4)
#define nUV_NUM_OF_ROWS 4 // Number of U/V rows per block
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // U/V block size 8x4
#define nDPR_MSG_SIZE_UV nRESLEN_1 // # of MRF's to hold U/V block data (1)
#endif
#if defined(IMC3_LOAD_8x5)
#define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_5 // U/V block size 8x5
#define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
#endif
#if defined(IMC3_LOAD_9x5)
#define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_12+nBLOCK_HEIGHT_5 // U/V block size 12x5
#define nDPR_MSG_SIZE_UV nRESLEN_3 // # of MRF's to hold U/V block data (3)
#endif
 
// Source/destination region definitions
#if !defined(udSRC_Y)
#define udSRC_Y udBOT_Y_IO // Default Y source region is top Y region
#endif
 
#if !defined(udSRC_U)
#define udSRC_U udBOT_U_IO // Default U source region is top U region
#endif
 
#if !defined(udSRC_V)
#define udSRC_V udBOT_V_IO // Default V source region is top V region
#endif
 
#define ubSRC_Y ubBOT_Y // Loading data are always in byte type
#define ubSRC_U ubBOT_U
#define ubSRC_V ubBOT_V
 
#define uwDEST_Y uwTOP_Y // However they can be transferred to word-aligned byte if desired
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
 
#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
 
// End of PL3_Load.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.asm
0,0 → 1,86
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
#include "PL4x8_Save_NV11.inc"
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
#if !defined(SAVE_UV_ONLY)
// Save current planar frame Y block data (16x8) -------------------------------
 
mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
 
///* Yoni - masking is not relevant for ILK?!?
//
// //Use the mask to determine which pixels shouldn't be over-written
// cmp.ge.f0.0 (1) NULLREG BLOCK_MASK_D:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
// (f0.0) jmpi WritePlanarToDataPort
//
// //If mask is not all 1's, then load the entire 16x8 block
// //so that only those bytes may be modified that need to be (using the mask)
// send (8) SRC_YD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00040000+BI_DEST_Y:ud //16x8
//
// asr (2) MSGSRC.0<1>:ud ORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
// mov (1) MSGSRC.2<1>:ud 0x00030007:ud // Block width and height (8x4)
// send (8) SRC_UD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00010000+BI_DEST_U:ud
// send (8) SRC_VD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00010000+BI_DEST_V:ud
//
// //Restore the origin information
// mov (2) MSGSRC.0<1>:ud ORIX<2;2,1>:w // Block origin
// mov (1) MSGSRC.2<1>:ud 0x0007000F:ud // Block width and height (16x8)
//
// //expand U and V to be aligned on word boundary
// mov (16) SRC_UW(1)<1> SRC_U(0,16)
// mov (16) SRC_UW(0)<1> SRC_U(0, 0)
// mov (16) SRC_VW(1)<1> SRC_V(0,16)
// mov (16) SRC_VW(0)<1> SRC_V(0, 0)
//
// //Merge the data
// mov (1) f0.1:uw BLOCK_MASK_V:uw //Load the mask on flag reg
// (f0.1) mov (8) TEMP0<1>:uw BLOCK_MASK_H:uw
// (-f0.1) mov (8) TEMP0<1>:uw 0:uw
//
// // Destination is Word aligned
// $for(0; <Y_ROW_SIZE; 2) {
// mov (1) f0.1:uw TEMP(0,%1)<0;1,0>
// (-f0.1) mov (16) DEST_Y(0, %1*32)<2> SRC_Y(0, %1*16)
// (-f0.1) mov (16) DEST_U(0, %1*8)<1> SRC_U(0, %1*8) //only works for Word aligned Byte data
// (-f0.1) mov (16) DEST_V(0, %1*8)<1> SRC_V(0, %1*8) //only works for Word aligned Byte data
//
// mov (1) f0.1:uw TEMP(0,1+%1)<0;1,0>
// (-f0.1) mov (16) DEST_Y(0, 1+%1*32)<2> SRC_Y(0, 1+%1*16)
//
// }
//
//*/ Yoni - masking is not relevant for ILK?!?
WritePlanarToDataPort:
$for(0,0; <nY_NUM_OF_ROWS; 2,1) {
mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
#endif
 
// Save U/V data block in planar format (4x8) ----------------------------------
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
$for(0,0; <nY_NUM_OF_ROWS;4,1) {
mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
 
// End of PL4x8_Save_NV11
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.inc
0,0 → 1,60
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//Module name: PL8x4_Save_NV11.inc
//
// Setup for storing planar data
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_8 // U/V interleaved block width and height (8x8)
#define nDPW_MSG_SIZE_UV nMSGLEN_2 // # of MRF's to hold U/V block data (2)
 
#if (nSRC_REGION==nREGION_1)
#define udSRC_Y udBOT_Y_IO
#define udSRC_U udBOT_U_IO
#define udSRC_V udBOT_V_IO
#define ubSRC_Y ubBOT_Y
#define ubSRC_U ubBOT_U
#define ubSRC_V ubBOT_V
 
#define uwSRC_U uwBOT_U //For masking operation
#define uwSRC_V uwBOT_V
 
#define ub2DEST_Y ub2TOP_Y
#define ub2DEST_U ub2TOP_U
#define ub2DEST_V ub2TOP_V
#elif (nSRC_REGION==nREGION_2)
#define udSRC_Y udTOP_Y_IO
#define udSRC_U udTOP_U_IO
#define udSRC_V udTOP_V_IO
#define ubSRC_Y ubTOP_Y
#define ubSRC_U ubTOP_U
#define ubSRC_V ubTOP_V
 
#define uwSRC_U uwTOP_U //For masking operation
#define uwSRC_V uwTOP_V
 
#define ub2DEST_Y ub2BOT_Y
#define ub2DEST_U ub2BOT_U
#define ub2DEST_V ub2BOT_V
#endif
 
///* Yoni - masking is not relevant for ILK?!?
//#define TEMP0 REG(r,54)
//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
///* Yoni - masking is not relevant for ILK?!?
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL5x8_PL16x8.asm
0,0 → 1,29
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL5x8_PL16x8.asm
 
#include "Expansion.inc"
 
//------------------------------ Horizontal Upconversion -----------------------------
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
avg.sat (16) uwDEST_U(0, %1*32+16) uwDEST_U(0, %1*16+7)<1;2,0> uwDEST_U(0, %1*16+7)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*32+16) uwDEST_V(0, %1*16+7)<1;2,0> uwDEST_V(0, %1*16+7)<1;2,1>
avg.sat (16) uwDEST_U(0, %1*32) uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*32) uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
}
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
avg.sat (16) uwDEST_U(0, %1*32+16) uwDEST_U(0, %1*32+18)<1;2,0> uwDEST_U(0, %1*32+18)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*32+16) uwDEST_V(0, %1*32+18)<1;2,0> uwDEST_V(0, %1*32+18)<1;2,1>
avg.sat (16) uwDEST_U(0, %1*32) uwDEST_U(0, %1*32)<1;2,0> uwDEST_U(0, %1*32)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*32) uwDEST_V(0, %1*32)<1;2,0> uwDEST_V(0, %1*32)<1;2,1>
}
 
// End of PL5x8_PL16x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL5x8_PL8x8.asm
0,0 → 1,21
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL5x8_PL8x8.asm
 
#include "Expansion.inc"
 
//------------------------------ Horizontal Upconversion -----------------------------
$for (0; <nUV_NUM_OF_ROWS; 1) {
avg.sat (8) uwDEST_U(0, %1*8) uwDEST_U(0, %1*8)<1;2,0> uwDEST_U(0, %1*8)<1;2,1>
avg.sat (8) uwDEST_V(0, %1*8) uwDEST_V(0, %1*8)<1;2,0> uwDEST_V(0, %1*8)<1;2,1>
}
 
// End of PL5x8_PL8x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.asm
0,0 → 1,88
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x4_Save_IMC3.asm
//
// Save planar YUV420 frame data block of size 16x8
 
#include "PL8x4_Save_IMC3.inc"
 
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WritePlanarToDataPort
 
//If mask is not all 1's, then load the entire 16x8 block
//so that only those bytes may be modified that need to be (using the mask)
 
// Load 16x8 planar Y ----------------------------------------------------------
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_Y(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
// Load 8x4 planar U and V -----------------------------------------------------
asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // Block width and height (8x4)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_U(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_U:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
send (8) udSRC_V(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_V:ud
 
//expand U and V to be aligned on word boundary - Y remains in bytes
$for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
mov (16) uwSRC_U(0, %1*16)<1> ubSRC_U(0, %1*16)
mov (16) uwSRC_V(0, %1*16)<1> ubSRC_V(0, %1*16)
}
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
// Destination is Word aligned
$for(0; <nY_NUM_OF_ROWS; 2) {
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (16) ub2DEST_Y(0, %1*32)<2> ubSRC_Y(0, %1*16)
(-f0.1) mov (16) ub2DEST_U(0, %1*8)<1> ubSRC_U(0, %1*8) //only works for Word aligned Byte data
(-f0.1) mov (16) ub2DEST_V(0, %1*8)<1> ubSRC_V(0, %1*8) //only works for Word aligned Byte data
 
mov (1) f0.1:uw uwMASK_TEMP(0,1+%1)<0;1,0>
(-f0.1) mov (16) ub2DEST_Y(0, 1+%1*32)<2> ubSRC_Y(0, 1+%1*16)
}
 
WritePlanarToDataPort:
#if !defined(SAVE_UV_ONLY)
// Save current planar frame Y block data (16x8) -------------------------------
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
$for(0,0; <nY_NUM_OF_ROWS; 2,1) {
mov(16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
mov(16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
#endif
// Save U/V data block in planar format (8x4) ----------------------------------
asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // Block width and height (8x4)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
// Save U picture data ---------------------------------------------------------
mov (16) mubMSGPAYLOAD(0,0)<1> ub2DEST_U(0)REGION(16,2) // U rows 0,1
mov (16) mubMSGPAYLOAD(0,16)<1> ub2DEST_U(1)REGION(16,2) // U rows 2,3
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_U:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
// Save V picture data ---------------------------------------------------------
mov (16) mubMSGPAYLOAD(0,0)<1> ub2DEST_V(0)REGION(16,2) // V rows 0,1
mov (16) mubMSGPAYLOAD(0,16)<1> ub2DEST_V(1)REGION(16,2) // V rows 2,3
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_V:ud
 
// End of PL8x4_Save_IMC3
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.inc
0,0 → 1,62
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x4_Save_IMC3.inc
//
// Setup for storing planar data
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// For saving
#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // U/V block size 8x4
#define nDPW_MSG_SIZE_UV nMSGLEN_1 // # of MRF's to hold U/V block data (1)
 
// For masking
#undef nDPR_MSG_SIZE_Y
#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
#undef nDPR_MSG_SIZE_UV
#define nDPR_MSG_SIZE_UV nRESLEN_1 // # of MRF's to hold U/V block data (1)
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
#if (nSRC_REGION==nREGION_1)
// For saving
#define ub2DEST_Y ub2TOP_Y
#define ub2DEST_U ub2TOP_U
#define ub2DEST_V ub2TOP_V
//For masking operation
#define udSRC_Y udBOT_Y_IO
#define udSRC_U udBOT_U_IO
#define udSRC_V udBOT_V_IO
#define ubSRC_Y ubBOT_Y
#define ubSRC_U ubBOT_U
#define ubSRC_V ubBOT_V
#define uwSRC_U uwBOT_U
#define uwSRC_V uwBOT_V
 
#elif (nSRC_REGION==nREGION_2)
// For saving
#define ub2DEST_Y ub2BOT_Y
#define ub2DEST_U ub2BOT_U
#define ub2DEST_V ub2BOT_V
//For masking operation
#define udSRC_Y udTOP_Y_IO
#define udSRC_U udTOP_U_IO
#define udSRC_V udTOP_V_IO
#define ubSRC_Y ubTOP_Y
#define ubSRC_U ubTOP_U
#define ubSRC_V ubTOP_V
#define uwSRC_U uwTOP_U
#define uwSRC_V uwTOP_V
 
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.asm
0,0 → 1,102
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
// Module name: PL8x4_Save_NV12.asm
//
// Save entire current planar frame data block of size 16x8
//---------------------------------------------------------------
// Symbols needed to be defined before including this module
//
// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
// ORIX:
//---------------------------------------------------------------
 
#include "PL8x4_Save_NV12.inc"
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
#if !defined(SAVE_UV_ONLY)
// Save current planar frame Y block data (16x8) -------------------------------
 
mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
#endif
 
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0 (1) dNULLREG acc0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WritePlanarToDataPort
 
//If mask is not all 1's, then load the entire 16x8 block
//so that only those bytes may be modified that need to be (using the mask)
send (8) udSRC_Y(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_DESTINATION_Y:ud //16x8
asr (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud { NoDDChk } // Block width and height (16x4)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud //move message desrcptor to the message header
send (8) udSRC_U(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
//Restore the origin information
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud //move message desrcptor to the message header
//Merge the data
mov (1) f0.1:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.1) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
(-f0.1) mov (8) rMASK_TEMP<1>:uw 0:uw
//convert the mask from 16bits to 8bits by selecting every other bit
mov (1) udMASK_TEMP1(0,0)<1> 0x00040001:ud
mov (1) udMASK_TEMP1(0,1)<1> 0x00400010:ud
mov (1) udMASK_TEMP1(0,2)<1> 0x04000100:ud
mov (1) udMASK_TEMP1(0,3)<1> 0x40001000:ud
 
//merge the loaded block with the current block
$for(0,0; <nY_NUM_OF_ROWS; 2,1) {
mov (1) f0.1:uw uwMASK_TEMP(0, %1)<0;1,0>
(-f0.1) mov (16) ubDEST_Y(0,%1*32)<2> ubSRC_Y(0,%1*16)
 
and.nz.f0.1 (8) wNULLREG uwMASK_TEMP(0,%1)<0;1,0> uwMASK_TEMP1(0,0) //change the mask by selecting every other bit
(-f0.1) mov (8) ubDEST_U(0, %2*16)<2> ub2SRC_U(0, %1*8)<16;8,2>
(-f0.1) mov (8) ubDEST_V(0, %2*16)<2> ub2SRC_U(0, %1*8+1)<16;8,2>
mov (1) f0.1:uw uwMASK_TEMP(0,1+%1)<0;1,0>
(-f0.1) mov (16) ubDEST_Y(0, (1+%1)*32)<2> ubSRC_Y(0, (1+%1)*16)
}
 
WritePlanarToDataPort:
#if !defined(SAVE_UV_ONLY)
$for(0,0; <nY_NUM_OF_ROWS; 2,1) {
mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
#endif
//** Save 8x4 packed U and V -----------------------------------------------------
// we could write directly wORIX to mMSGHDR and then execute asr on it, that way we could
// avoid using rMSGSRC as a buffer and have one command less in code, but it is unknown whether
//it is possible to do asr on mMSGHDR so we use rMSGSRC.
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
$for(0,0; <nY_NUM_OF_ROWS;4,1) {
mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
 
// End of PL8x4_Save_NV12
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.inc
0,0 → 1,85
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//Module name: PL8x4_Save_NV12.inc
//
// Setup for storing planar data
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
#undef nDPW_BLOCK_SIZE_Y
#undef nDPW_MSG_SIZE_Y
#undef nDPW_BLOCK_SIZE_UV
#undef nDPW_MSG_SIZE_UV
 
#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // U/V interleaved block width and height (16x4)
#define nDPW_MSG_SIZE_UV nMSGLEN_2 // # of MRF's to hold U/V block data (2)
 
// For masking
#undef nDPR_MSG_SIZE_Y
#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
#undef nDPR_MSG_SIZE_UV
#define nDPR_MSG_SIZE_UV nRESLEN_2
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
#define rMASK_TEMP1 REG(r,nTEMP1)
.declare udMASK_TEMP1 Base=rMASK_TEMP1 ElementSize=4 SrcRegion=<4;4,1> Type=ud //1 GRF
.declare uwMASK_TEMP1 Base=rMASK_TEMP1 ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
 
#if (nSRC_REGION==nREGION_1)
#define udSRC_Y udBOT_Y_IO
#define udSRC_U udBOT_U_IO
#define udSRC_V udBOT_V_IO
#define ubSRC_Y ubBOT_Y
#define ubSRC_U ubBOT_U
#define ubSRC_V ubBOT_V
 
#define uwSRC_U uwBOT_U //For masking operation
#define uwSRC_V uwBOT_V
 
#define ub2DEST_Y ub2TOP_Y
#define ub2DEST_U ub2TOP_U
#define ub2DEST_V ub2TOP_V
#define ubDEST_Y ubTOP_Y
#define ubDEST_U ubTOP_U
#define ubDEST_V ubTOP_V
#define ub2SRC_U ub2BOT_U
#elif (nSRC_REGION==nREGION_2)
#define udSRC_Y udTOP_Y_IO
#define udSRC_U udTOP_U_IO
#define udSRC_V udTOP_V_IO
#define ubSRC_Y ubTOP_Y
#define ubSRC_U ubTOP_U
#define ubSRC_V ubTOP_V
 
#define uwSRC_U uwTOP_U //For masking operation
#define uwSRC_V uwTOP_V
 
#define ub2DEST_Y ub2BOT_Y
#define ub2DEST_U ub2BOT_U
#define ub2DEST_V ub2BOT_V
 
#define ubDEST_Y ubBOT_Y
#define ubDEST_U ubBOT_U
#define ubDEST_V ubBOT_V
#define ub2SRC_U ub2TOP_U
#endif
 
///* Yoni - masking is not relevant for ILK?!?
//#define TEMP0 REG(r,54)
//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
///* Yoni - masking is not relevant for ILK?!?
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x5_PL8x8.asm
0,0 → 1,27
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x5_PL8x8.asm
 
#include "Expansion.inc"
 
//------------------------------- Vertical Upconversion ------------------------------
avg.sat (8) uwDEST_U(0, 3*16+8)<1> uwDEST_U(0, 3*8) uwDEST_U(0, (1+3)*8) // Optimization
avg.sat (8) uwDEST_V(0, 3*16+8)<1> uwDEST_V(0, 3*8) uwDEST_V(0, (1+3)*8) // Optimization
 
$for(nUV_NUM_OF_ROWS/2-2; >-1; -1) {
mov (8) uwDEST_U(0, (1+%1)*16)<1> uwDEST_U(0, (1+%1)*8)
avg.sat (8) uwDEST_U(0, %1*16+8)<1> uwDEST_U(0, %1*8) uwDEST_U(0, (1+%1)*8)
 
mov (8) uwDEST_V(0, (1+%1)*16)<1> uwDEST_V(0, (1+%1)*8)
avg.sat (8) uwDEST_V(0, %1*16+8)<1> uwDEST_V(0, %1*8) uwDEST_V(0, (1+%1)*8)
}
 
// End of PL8x5_PL8x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.asm
0,0 → 1,30
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x8_PL8x4.asm
//
// Convert PL 8x8 to PL8x4 in GRF
//---------------------------------------------------------------
// Symbols needed to be defined before including this module
//
// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
// ORIX:
//---------------------------------------------------------------
 
#include "PL8x8_PL8x4.inc"
// Convert PL8x8 to PL8x4 ---------------------------------------------------------
 
mov (8) ubDEST_U(0,16)<2> ubDEST_U(1)<16;8,2> //selecting U every other row
mov (16) ubDEST_U(0,32)<2> ubDEST_U(2)<32;8,2> //selecting U every other row
mov (8) ubDEST_V(0,16)<2> ubDEST_V(1)<16;8,2> //selecting V every other row
mov (16) ubDEST_V(0,32)<2> ubDEST_V(2)<32;8,2> //selecting V every other row
// End of PL8x8_PL8x4.asm -------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.inc
0,0 → 1,36
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x8_PL8x4.inc
//
// Setup module for convert PL8x8 to PL8x4
//
//
 
// Source/destination region definitions
//
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
#if (nSRC_REGION==nREGION_1)
 
//REGION_1 selected
#define ubDEST_Y ubTOP_Y
#define ubDEST_U ubTOP_U
#define ubDEST_V ubTOP_V
#elif (nSRC_REGION==nREGION_2)
 
//REGION_2 selected
#define ubDEST_Y ubBOT_Y
#define ubDEST_U ubBOT_U
#define ubDEST_V ubBOT_V
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.asm
0,0 → 1,56
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
// Module name: PL8x8_Save_P208.asm
//
// Save entire current planar frame data block of size 16x8
//---------------------------------------------------------------
// Symbols needed to be defined before including this module
//
// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
// ORIX:
//---------------------------------------------------------------
 
#include "PL8x8_Save_P208.inc"
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
#if !defined(SAVE_UV_ONLY)
// Save current planar frame Y block data (16x8) -------------------------------
 
mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
 
WritePlanarToDataPort:
$for(0,0; <nY_NUM_OF_ROWS; 2,1) {
mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
#endif
//** Save 8x8 packed U and V -----------------------------------------------------
// we could write directly wORIX to mMSGHDR and then execute asr on it, that way we could
// avoid using rMSGSRC as a buffer and have one command less in code, but it is unknown whether
//it is possible to do asr on mMSGHDR so we use rMSGSRC.
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
$for(0,0; <nY_NUM_OF_ROWS;2,1) {
mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
 
//End of PL8x8_Save_P208.asm
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.inc
0,0 → 1,61
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
//Module name: PL8x8_Save_P208.inc
//
// Setup for storing planar data
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // U/V interleaved block width and height (16x8)
#define nDPW_MSG_SIZE_UV nMSGLEN_4 // # of MRF's to hold U/V block data (4)
 
#if (nSRC_REGION==nREGION_1)
#define udSRC_Y udBOT_Y_IO
#define udSRC_U udBOT_U_IO
#define udSRC_V udBOT_V_IO
#define ubSRC_Y ubBOT_Y
#define ubSRC_U ubBOT_U
#define ubSRC_V ubBOT_V
 
#define uwSRC_U uwBOT_U //For masking operation
#define uwSRC_V uwBOT_V
 
#define ub2DEST_Y ub2TOP_Y
#define ub2DEST_U ub2TOP_U
#define ub2DEST_V ub2TOP_V
#elif (nSRC_REGION==nREGION_2)
#define udSRC_Y udTOP_Y_IO
#define udSRC_U udTOP_U_IO
#define udSRC_V udTOP_V_IO
#define ubSRC_Y ubTOP_Y
#define ubSRC_U ubTOP_U
#define ubSRC_V ubTOP_V
 
#define uwSRC_U uwTOP_U //For masking operation
#define uwSRC_V uwTOP_V
 
#define ub2DEST_Y ub2BOT_Y
#define ub2DEST_U ub2BOT_U
#define ub2DEST_V ub2BOT_V
#endif
 
///* Yoni - masking is not relevant for ILK?!?
//#define TEMP0 REG(r,54)
//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
///* Yoni - masking is not relevant for ILK?!?
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.asm
0,0 → 1,71
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x8_Save_PA.asm
//
// Save planar YUV422 to packed YUV422 format data
//
// Note: SRC_* must reference to regions with data type "BYTE"
// in order to save to byte-aligned byte location
 
#include "PL8x8_Save_PA.inc"
 
add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub nDEST_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
 
// Pack Y
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) r[pCF_Y_OFFSET, %1*nGRFWIB]<2> ubSRC_Y(0,%1*32)
}
 
// Pack U/V
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_U_OFFSET, %1*nGRFWIB]<4> ubSRC_U(0, %1*16)
mov (8) r[pCF_V_OFFSET, %1*nGRFWIB]<4> ubSRC_V(0, %1*16)
}
 
shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_YUV:ud { NoDDChk } // Block width and height (32x8)
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WritePackedToDataPort
 
//If mask is not all 1's, then load the entire 32x8 block
//so that only those bytes may be modified that need to be (using the mask)
 
// Load 32x8 packed YUV 422 ----------------------------------------------------
send (8) udSRC_YUV(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_DESTINATION_YUV:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
// Destination is Byte aligned
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (16) uwDEST_YUV(%1)<1> uwSRC_YUV(%1) //check the UV merge - vK
}
 
WritePackedToDataPort:
// Packed YUV data are stored in one of the I/O regions before moving to MRF
// Note: This is necessary since indirect addressing is not supported for MRF.
// Packed data block should be saved as 32x8 pixel block
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1)REGION(8,1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_YUV+nBI_DESTINATION_YUV:ud
 
// End of PL8x8_Save_PA
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.inc
0,0 → 1,52
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL8x8_Save_PA.inc
//
// Setup for storing packed data
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// For saving
#define nDPW_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // YUV block size 32x8
#define nDPW_MSG_SIZE_YUV nMSGLEN_8 // # of MRF's to hold YUV block data (8)
 
// For masking
#undef nDPR_MSG_SIZE_YUV
#define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold YUV block data (8)
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
#if (nSRC_REGION==nREGION_1)
// For saving
#define udSRC_YUV udTOP_Y_IO
#define udDEST_YUV udBOT_Y_IO
#define nDEST_YUV_REG nBOT_Y
//For masking operation
#define ubSRC_Y ub2TOP_Y
#define ubSRC_U ub2TOP_U
#define ubSRC_V ub2TOP_V
#define uwSRC_YUV uwTOP_Y
#define uwDEST_YUV uwBOT_Y
 
#elif (nSRC_REGION==nREGION_2)
// For saving
#define udSRC_YUV udBOT_Y_IO
#define udDEST_YUV udTOP_Y_IO
#define nDEST_YUV_REG nTOP_Y
//For masking operation
#define ubSRC_Y ub2BOT_Y
#define ubSRC_U ub2BOT_U
#define ubSRC_V ub2BOT_V
#define uwSRC_YUV uwBOT_Y
#define uwDEST_YUV uwTOP_Y
 
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL9x5_PL16x8.asm
0,0 → 1,37
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL9x5_PL16x8.asm
 
#define EXPAND_9x5
#include "Expansion.inc"
 
//------------------------------ Horizontal Upconversion -----------------------------
$for (nUV_NUM_OF_ROWS-2; >-1; -1) {
avg.sat (16) uwDEST_U(0, %1*16)<1> uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*16)<1> uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
}
 
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 //use packed version of all post-processing kernels
 
//------------------------------- Vertical Upconversion ------------------------------
avg.sat (16) uwDEST_U(0, 3*32+16)<1> uwDEST_U(0, 3*16) uwDEST_U(0, (1+3)*16)
avg.sat (16) uwDEST_V(0, 3*32+16)<1> uwDEST_V(0, 3*16) uwDEST_V(0, (1+3)*16)
 
$for(nUV_NUM_OF_ROWS/2-2; >-1; -1) {
mov (16) uwDEST_U(0, (1+%1)*32)<1> uwDEST_U(0, (1+%1)*16)
avg.sat (16) uwDEST_U(0, %1*32+16)<1> uwDEST_U(0, %1*16) uwDEST_U(0, (1+%1)*16)
 
mov (16) uwDEST_V(0, (1+%1)*32)<1> uwDEST_V(0, (1+%1)*16)
avg.sat (16) uwDEST_V(0, %1*32+16)<1> uwDEST_V(0, %1*16) uwDEST_V(0, (1+%1)*16)
}
 
// End of PL9x5_PL16x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/PL9x8_PL16x8.asm
0,0 → 1,21
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: PL9x5_PL16x8.asm
 
#include "Expansion.inc"
 
//------------------------------ Horizontal Upconversion -----------------------------
$for (0; <nUV_NUM_OF_ROWS; 1) {
avg.sat (16) uwDEST_U(0, %1*16)<1> uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
avg.sat (16) uwDEST_V(0, %1*16)<1> uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
}
 
// End of PL9x5_PL16x8
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.asm
0,0 → 1,88
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_RGB.asm
//
// Save packed ARGB 444 frame data block of size 16x8
//
// To save 16x8 block (64x8 byte layout for ARGB8888) we need 2 send instructions
// ---------
// | 1 | 2 |
// ---------
 
#include "RGB16x8_Save_RGB.inc"
 
shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_ARGB:ud { NoDDChk } // Block width and height (32x8)
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WriteARGBToDataPort
 
//If mask is not all 1's, then load the entire 64x8 block
//so that only those bytes may be modified that need to be (using the mask)
 
// Load first block 16x8 packed ARGB 444 ---------------------------------------
or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF00FF00:ud //Check first block
cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
(f0.0) jmpi SkipFirstBlockMerge //If full mask then skip this block
 
send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
$for(0, 0; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
}
 
SkipFirstBlockMerge:
// Load second block 16x8 packed ARGB 444 ---------------------------------------
or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF0000FF:ud //Check second block
cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
(f0.0) jmpi WriteARGBToDataPort //If full mask then skip this block
 
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud // Point to 1st part again
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) shr (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw 8:uw //load the mask for second block
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
$for(0, 1; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
}
 
WriteARGBToDataPort:
// Move packed data to MRF and output
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*2+1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
// End of RGB16x8_Save_RGB
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.inc
0,0 → 1,38
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_RGB.inc
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// For saving
#define nDPW_BLOCK_SIZE_ARGB nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // ARGB block size 32x8
#define nDPW_MSG_SIZE_ARGB nMSGLEN_8 // # of MRF's to hold ARGB block data (8)
 
// For masking
#undef nDPR_MSG_SIZE_ARGB
#define nDPR_MSG_SIZE_ARGB nRESLEN_8 // # of MRF's to hold ARGB block data (8)
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
#if (nSRC_REGION==nREGION_1)
// For saving
#define udDEST_ARGB udTOP_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
//For masking operation
#define udSRC_ARGB udBOT_Y_IO //To hold the destination data that shouldn't be modified
 
#elif (nSRC_REGION==nREGION_2)
// For saving
#define udDEST_ARGB udBOT_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
//For masking operation
#define udSRC_ARGB udTOP_Y_IO //To hold the destination data that shouldn't be modified
 
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.asm
0,0 → 1,72
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_RGB16.asm
//
// Save packed RGB565 frame data block of size 16x8
//
// To save 16x8 block (32x8 byte layout for RGB565) we need 1 send instruction
// -----
// | 1 |
// -----
 
#include "RGB16x8_Save_RGB16.inc"
 
//convert 32 bit RGB to 16 bit RGB
// Truncate A8R8G8B8 to A6R5G6B5 within byte.
// That is keeping 5 MSB of R and B, and 6 MSB of G.
 
$for (0, 0; <nY_NUM_OF_ROWS; 1, 2) {
shr uwCSC_TEMP(%1,0)<1> ubDEST_ARGB(%2,0)<32;8,4> 3:w // B >> 3
 
shl (16) uwTEMP_RGB16(0)<1> uwDEST_ARGB(%2,1)<16;8,2> 8:w // R << 8
and (16) uwTEMP_RGB16(0)<1> uwTEMP_RGB16(0) 0xF800:uw
or (16) uwCSC_TEMP(%1,0)<1> uwCSC_TEMP(%1,0)<16;16,1> uwTEMP_RGB16(0)
 
shr (16) uwTEMP_RGB16(0)<1> uwDEST_ARGB(%2,0)<16;8,2> 5:w // G >> 5
and (16) uwTEMP_RGB16(0)<1> uwTEMP_RGB16(0) 0x07E0:uw
or (16) uwCSC_TEMP(%1,0)<1> uwCSC_TEMP(%1,0)<16;16,1> uwTEMP_RGB16(0)
}
 
mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin (1st quadrant)
shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 1:w // H. block origin need to be doubled for byte offset
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_RGB16:ud // Block width and height (32x8)
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WriteRGB16ToDataPort
 
//If mask is not all 1's, then load the entire 32x8 block
//so that only those bytes may be modified that need to be (using the mask)
 
// Load 32x8 packed RGB565 -----------------------------------------------------
send (8) udSRC_RGB16(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_RGB16+nBI_DESTINATION_RGB:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (16) uwCSC_TEMP(%1)<1> uwSRC_RGB16(%1)
}
 
WriteRGB16ToDataPort:
// Move packed data to MRF and output
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udCSC_TEMP(%1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_RGB16+nBI_DESTINATION_RGB:ud
 
// End of RGB16x8_Save_RGB16
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.inc
0,0 → 1,49
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_RGB16.inc
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// For saving
#define nDPW_BLOCK_SIZE_RGB16 nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // RGB16 block size 32x8
#define nDPW_MSG_SIZE_RGB16 nMSGLEN_8 // # of MRF's to hold RGB16 block data (8)
 
// For conversion to 16bit
.declare uwTEMP_RGB16 Base=REG(r,nTEMP1) ElementSize=2 SrcRegion=<16;16,1> Type=uw //1 GRF
 
// For masking
#undef nDPR_MSG_SIZE_RGB16
#define nDPR_MSG_SIZE_RGB16 nRESLEN_8 // # of MRF's to hold ARGB block data (8)
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
#if (nSRC_REGION==nREGION_1)
// For saving
#define ubDEST_ARGB ubTOP_Y //Data from previous module
#define uwDEST_ARGB uwTOP_Y //Data from previous module
#define udCSC_TEMP udBOT_Y_IO //Data Converted to 16 bits
#define uwCSC_TEMP uwBOT_Y
//For masking operation
#define udSRC_RGB16 udTOP_Y_IO //To hold the destination data that shouldn't be modified
#define uwSRC_RGB16 uwTOP_Y
 
#elif (nSRC_REGION==nREGION_2)
// For saving
#define ubDEST_ARGB ubBOT_Y //Data from previous module
#define uwDEST_ARGB uwBOT_Y //Data from previous module
#define udCSC_TEMP udTOP_Y_IO //Data Converted to 16 bits
#define uwCSC_TEMP uwTOP_Y
//For masking operation
#define udSRC_RGB16 udBOT_Y_IO //To hold the destination data that shouldn't be modified
#define uwSRC_RGB16 uwBOT_Y
 
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.asm
0,0 → 1,107
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_Y416.asm
//
// Save packed ARGB 444 frame data block of size 16x8
//
// To save 16x8 block (128x8 byte layout for ARGB 16bit per component) we need 4 send instructions
// -----------------
// | 1 | 2 | 3 | 4 |
// -----------------
 
#include "RGB16x8_Save_RGB.inc"
 
shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 3:w { NoDDClr } // H. block origin need to become 8 times
mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_ARGB:ud { NoDDChk } // Block width and height (32x8)
 
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
/* Not needed for validation kernels for now -vK
//Use the mask to determine which pixels shouldn't be over-written
and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
(f0.0) jmpi WriteARGBToDataPort
 
//If mask is not all 1's, then load the entire 64x8 block
//so that only those bytes may be modified that need to be (using the mask)
 
// Load first block 16x8 packed ARGB 444 ---------------------------------------
or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF00FF00:ud //Check first block
cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
(f0.0) jmpi SkipFirstBlockMerge //If full mask then skip this block
 
send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
$for(0, 0; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
}
 
SkipFirstBlockMerge:
// Load second block 16x8 packed ARGB 444 ---------------------------------------
or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF0000FF:ud //Check second block
cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
(f0.0) jmpi WriteARGBToDataPort //If full mask then skip this block
 
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud // Point to 1st part again
 
//Merge the data
mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
(f0.0) shr (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw 8:uw //load the mask for second block
(-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
 
$for(0, 1; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
(-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
}
*/
WriteARGBToDataPort:
// Move packed data to MRF and output
//Write 1st 4X8 pixels
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
//Write 2nd 4X8 pixels
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
//Write 3rd 4X8 pixels
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 64:d // Point to 2nd part
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+2)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
//Write 4th 4X8 pixels
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 96:d // Point to 2nd part
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+3)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
 
// End of RGB16x8_Save_Y416
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.inc
0,0 → 1,38
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: RGB16x8_Save_Y416.inc
//
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// For saving
#define nDPW_BLOCK_SIZE_ARGB nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // ARGB block size 32x8
#define nDPW_MSG_SIZE_ARGB nMSGLEN_8 // # of MRF's to hold ARGB block data (8)
 
// For masking
#undef nDPR_MSG_SIZE_ARGB
#define nDPR_MSG_SIZE_ARGB nRESLEN_8 // # of MRF's to hold ARGB block data (8)
#define rMASK_TEMP REG(r,nTEMP0)
.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
 
#if (nSRC_REGION==nREGION_1)
// For saving
#define udDEST_ARGB udTOP_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
//For masking operation
#define udSRC_ARGB udBOT_Y_IO //To hold the destination data that shouldn't be modified
 
#elif (nSRC_REGION==nREGION_2)
// For saving
#define udDEST_ARGB udBOT_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
//For masking operation
#define udSRC_ARGB udTOP_Y_IO //To hold the destination data that shouldn't be modified
 
#endif
/drivers/video/i965/shaders/post_processing/gen5_6/Common/RGB_Pack.asm
0,0 → 1,40
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
.declare SRC_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare SRC_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare SRC_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare SRC_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
 
#define DEST_ARGB ubBOT_ARGB
 
#undef nSRC_REGION
#define nSRC_REGION nREGION_2
 
 
//Pack directly to mrf as optimization - vK
 
$for(0, 0; <8; 1, 2) {
// mov (16) DEST_ARGB(%2,0)<4> SRC_B(%1) { Compr, NoDDClr } // 16 B
// mov (16) DEST_ARGB(%2,1)<4> SRC_G(%1) { Compr, NoDDClr, NoDDChk } // 16 G
// mov (16) DEST_ARGB(%2,2)<4> SRC_R(%1) { Compr, NoDDClr, NoDDChk } // 16 R //these 2 inst can be merged - vK
// mov (16) DEST_ARGB(%2,3)<4> SRC_A(%1) { Compr, NoDDChk } //DEST_RGB_FORMAT<0;1,0>:ub { Compr, NoDDChk } // 16 A
 
mov (8) DEST_ARGB(%2, 0)<4> SRC_B(%1) { NoDDClr } // 8 B
mov (8) DEST_ARGB(%2, 1)<4> SRC_G(%1) { NoDDClr, NoDDChk } // 8 G
mov (8) DEST_ARGB(%2, 2)<4> SRC_R(%1) { NoDDClr, NoDDChk } // 8 R
mov (8) DEST_ARGB(%2, 3)<4> SRC_A(%1) { NoDDChk } // 8 A
 
mov (8) DEST_ARGB(%2+1,0)<4> SRC_B(%1,8) { NoDDClr } // 8 B
mov (8) DEST_ARGB(%2+1,1)<4> SRC_G(%1,8) { NoDDClr, NoDDChk } // 8 G
mov (8) DEST_ARGB(%2+1,2)<4> SRC_R(%1,8) { NoDDClr, NoDDChk } // 8 R
mov (8) DEST_ARGB(%2+1,3)<4> SRC_A(%1,8) { NoDDChk } // 8 A
}
/drivers/video/i965/shaders/post_processing/gen5_6/Common/SetupVPKernel.asm
0,0 → 1,34
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Modual name: SetupVPKernel.asm
//
// Initial setup for running video-processing kernels
//
 
#include "common.inc"
 
//
// Now, begin source code....
//
.code
 
#include "Init_All_Regs.asm"
 
mov (8) rMSGSRC.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
#if defined (INC_BLENDING)
mul (1) fALPHA_STEP_X:f fSCALING_STEP_RATIO:f fVIDEO_STEP_X:f //StepX_ratio = AlphaStepX / VideoStepX
#endif
 
// End of SetupVPKernel
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/common.inc
0,0 → 1,610
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#ifndef COMMON_INC
#define COMMON_INC
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 80
.reg_count_payload 4
 
 
//========== Common constants ==========
 
// Bit position constants
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#define BIT8 0x0100
#define BIT9 0x0200
#define BIT10 0x0400
#define BIT11 0x0800
#define BIT12 0x1000
#define BIT13 0x2000
#define BIT14 0x4000
#define BIT15 0x8000
#define BIT16 0x00010000
#define BIT17 0x00020000
#define BIT18 0x00040000
#define BIT19 0x00080000
#define BIT20 0x00100000
#define BIT21 0x00200000
#define BIT22 0x00400000
#define BIT23 0x00800000
#define BIT24 0x01000000
#define BIT25 0x02000000
#define BIT26 0x04000000
#define BIT27 0x08000000
#define BIT28 0x10000000
#define BIT29 0x20000000
#define BIT30 0x40000000
#define BIT31 0x80000000
 
#define nGRFWIB 32 // GRF register width in byte
#define nGRFWIW 16 // GRF register width in word
#define nGRFWID 8 // GRF register width in dword
 
#define nTOP_FIELD 0
#define nBOTTOM_FIELD 1
 
#define nPREVIOUS_FRAME 0 // Previous frame
#define nCURRENT_FRAME 1 // Current frame
#define nNEXT_FRAME 2 // Next frame
 
#ifdef GT
// GT DI Kernel
#else // ILK
// ILK DI Kernel
#endif
 
//===================================
 
//========== Macros ==========
#define REGION(Width,HStride) <Width*HStride;Width,HStride> // Region definition when ExecSize = Width
 
#define RegFile(a) a
#define REG(r,n) _REG(RegFile(r),n)
#define _REG(r,n) __REG(r,n)
#define __REG(r,n) r##n.0
#define REG2(r,n,s) _REG2(RegFile(r),n,s)
#define _REG2(r,n,s) __REG2(r,n,s)
#define __REG2(r,n,s) r##n.##s
 
#define dNULLREG null<1>:d
#define wNULLREG null<1>:w
#define KERNEL_ID(kernel_ID) mov NULLREG kernel_ID:ud
 
 
#define NODDCLR
#define NODDCLR_NODDCHK
#define NODDCHK
 
//#define NODDCLR { NoDDClr }
//#define NODDCLR_NODDCHK { NoDDClr, NoDDChk }
//#define NODDCHK { NoDDChk }
 
 
//========== Defines ====================
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r5 (5 GRFS)
// Inline parameters : r6 - r7 (2 GRFs)
// MSGSRC : r9 (1 GRF)
// Top IO region : r10 - r33 (24 GRFS 8 for each component Y,U,V 16X8:w)
// Free space : r34 - r55 (22 GRFS)
// Bottom IO region : r56 - r79 (24 GRFS 8 for each component Y,U,V 16X8:w)
//===================================
 
 
//========== Static Parameters ==========
// r1
#define fPROCAMP_C0 r1.0 // DWORD 0, Procamp constant C0 in :f
#define wPROCAMP_C0 r1.0 // DWORD 0, Procamp constant C0 in :w
#define NUMBER_0002 r1.1 // DWORD 0, 0x0002 used in procamp for GT
#define udCP_MessageFormat r1.0 // DWORD 0, bits 2:3 of DWORD. (CE)
#define udCP_StatePointer r1.0 // DWORD 0, bits 31:5 of DWORD.(CE)
 
#define ubSRC_CF_OFFSET r1.4 // DWORD 1, byte 0-2. SRC packed color format YUV offset in :ub
 
#define ubDEST_RGB_FORMAT r1.8 // DWORD 2, byte 0. Dest RGB color format (0:ARGB FF:XRGB)
#define ubDEST_CF_OFFSET r1.8 // DWORD 2, byte 0-2. Dest packed color format YUV offset in :ub
 
#define fPROCAMP_C1 r1.3 // DWORD 3, Procamp constant C1 in :f
#define wPROCAMP_C1 r1.6 // DWORD 3, Procamp constant C1 in :w
#define NUMBER_0100 r1.7 // DWORD 3, 0x0100 used in procamp for GT
 
#define fPROCAMP_C2 r1.4 // DWORD 4, Procamp constant C2 in :f
#define wPROCAMP_C2 r1.8 // DWORD 4, Procamp constant C2 in :w
 
#define uwSPITCH_DIV2 r1.10 // DWORD 5, byte 0-1. statistics surface pitch divided by 2
 
#define fVIDEO_STEP_Y r1.6 // DWORD 6, :f, AVS normalized reciprocal of Y Scaling factor
#define ubSTMM_SHIFT r1.24 // DWORD 6, byte 0. Amount of right shift for the DI blending equation
#define ubSTMM_MIN r1.25 // DWORD 6, byte 1. Min STMM for DI blending equation
#define ubSTMM_MAX r1.26 // DWORD 6, byte 2. Max STMM for DI blending equation
#define ubTFLD_FIRST r1.27 // DWORD 6, byte 3. Field parity order
 
#define fPROCAMP_C5 r1.7 // DWORD 7, Procamp constant C3 in :f
#define wPROCAMP_C5 r1.14 // DWORD 7, Procamp constant C3 in :w
 
// r2
#define fPROCAMP_C3 r2.0 // DWORD 0, Procamp constant C4 in :f
#define wPROCAMP_C3 r2.0 // DWORD 0, Procamp constant C4 in :w
#define fCSC_C5 r2.2 // DWORD 2. WG+CSC constant C5
#define wCSC_C5 r2.4 // DWORD 2. WG+CSC constant C5
 
#define fPROCAMP_C4 r2.3 // DWORD 3, Procamp constant C5 in :f
#define wPROCAMP_C4 r2.6 // DWORD 3, Procamp constant C5 in :w
 
#define fCSC_C8 r2.4 // DWORD 4. WG+CSC constant C8
#define wCSC_C8 r2.8 // DWORD 4. WG+CSC constant C8
#define fCSC_C9 r2.7 // DWORD 7. WG+CSC constant C9
#define wCSC_C9 r2.14 // DWORD 7. WG+CSC constant C9
 
// r3
#define fCSC_C0 r3.0 // DWORD 0. WG+CSC constant C0
#define wCSC_C0 r3.0 // DWORD 0. WG+CSC constant C0
 
#define fSCALING_STEP_RATIO r3.1 // DWORD 1, = Alpha_X_Scaling_Step / Video_X_scaling_Step :f (blending)
#define fALPHA_STEP_X r3.1 // DWORD 1, = 1/Scale X, 0.5 = 2x, in :f (blending)
 
#define fALPHA_STEP_Y r3.2 // DWORD 2, = 1/Scale Y, in :f
 
#define fCSC_C4 r3.3 // DWORD 3. WG+CSC constant C4
#define wCSC_C4 r3.6 // DWORD 3. WG+CSC constant C4
#define fCSC_C1 r3.4 // DWORD 4. WG+CSC constant C1
#define wCSC_C1 r3.8 // DWORD 4. WG+CSC constant C1
 
#define wSRC_H_ORI_OFFSET r3.10 // DWORD 5, bytes 0,1 :w
#define wSRC_V_ORI_OFFSET r3.11 // DWORD 5, bytes 2,3 :w
 
#define dCOLOR_PIXEL r3.6 // DWORD 6. Color pixel for Colorfill
 
#define fCSC_C2 r3.6 // DWORD 6. WG+CSC constant C2
#define wCSC_C2 r3.12 // DWORD 6. WG+CSC constant C2
#define fCSC_C3 r3.7 // DWORD 7. WG+CSC constant C3
#define wCSC_C3 r3.14 // DWORD 7. WG+CSC constant C3
 
// r4
#define fCSC_C6 r4.0 // DWORD 0. WG+CSC constant C6
#define wCSC_C6 r4.0 // DWORD 0. WG+CSC constant C6
 
#define wFRAME_ENDX r4.2 // DWORD 1, word 0. Horizontal end = Origin+Width (in pixels)(for multiple blocks)
#define wNUM_BLKS r4.3 // DWORD 1, word 1. Number of blocks to process (for multiple blocks)
 
#define wCOPY_ORIX r4.5 // DWORD 2, word 1. A copy of X origin (for multiple blocks)
#define uwNLAS_ENABLE r4.4 // DWORD 2, bit 15, NLAS enble bit
 
#define fCSC_C7 r4.3 // DWORD 3. WG+CSC constant C7
#define wCSC_C7 r4.6 // DWORD 3. WG+CSC constant C7
#define fCSC_C10 r4.4 // DWORD 4. WG+CSC constant C10
#define wCSC_C10 r4.8 // DWORD 4. WG+CSC constant C10
 
#define fFRAME_VID_ORIX r4.5 // DWORD 5, Frame horizontal origin normalized for scale kernel
 
#define fFRAME_ALPHA_ORIX r4.6 // DWORD 6. Normalized alpha horiz origin for the frame
 
#define fCSC_C11 r4.7 // DWORD 7. WG+CSC constant C11
#define wCSC_C11 r4.14 // DWORD 7. WG+CSC constant C11
 
//========================================
 
//========== Inline parameters ===========
// r5
#define wORIX r5.0 // DWORD 0, byte 0-1. :w, Destination Block Horizontal Origin in pel
#define wORIY r5.1 // DWORD 0, byte 2-3. :w, Destination Block Vertical Origin in pel
 
#define fSRC_VID_H_ORI r5.1 // DWORD 1, :f, SRC Y horizontal origin normalized for scale kernel
 
#define fSRC_VID_V_ORI r5.2 // DWORD 2, :f, SRC Y vertical origin normalized for scale kernel
 
#define fSRC_ALPHA_H_ORI r5.3 // DWORD 3, :f, Normalized alpha horizontal origin
 
#define fSRC_ALPHA_V_ORI r5.4 // DWORD 4, :f, Normalized alpha vertical origin
 
#define uwALPHA_MASK_X r5.10 // DWORD 5, byte 0-1 :w, H. alpha mask
#define ubALPHA_MASK_Y r5.22 // DWORD 5, byte 2. :ub,V. alpha mask
#define ubBLK_CNT_X r5.23 // DWORD 5, byte 3, :ub, Horizontal Block Count per thread
 
#define udBLOCK_MASK r5.6 // DWORD 6
#define uwBLOCK_MASK_H r5.12 // DWORD 6, byte 0-1 :uw, Block horizontal mask used in non-DWord aligned kernels
#define ubBLOCK_MASK_V r5.26 // DWORD 6, byte 2 :ub, Block vertical mask used in non-DWord aligned kernels
#define ubNUM_BLKS r5.27 // DWORD 6, byte 3, :ub, Total Block Count per thread
 
#define fVIDEO_STEP_X r5.7 // DWORD 7. :f, AVS normalized reciprocal of X Scaling factor
 
// r6
#define fVIDEO_STEP_DELTA r6.0 // DWORD 0. :f, AVS normalized delta between 2 adjacent scaling steps (used for non-linear scaling)
 
 
//====================== Binding table =========================================
 
#if defined(DNDI)
// DNDI Surface Binding Table
//#define nBI_SRC_CURR 0 // Current input frame surface
//#define nBI_SRC_PRIV 1 // Denoised previous input frame surface
//#define nBI_SRC_STAT 2 // Statistics input surface (STMM / Noise motion history)
//#define nBI_DEST_1ST 3 // 1st deinterlaced output frame surface
// #define nBI_DEST_YUV 3 // Dest frame YUV (for DN only)
//#define nBI_DEST_Y 3 // Dest frame Y (for DN only)
//#define nBI_DEST_2ND 4 // 2nd deinterlaced output frame surface
//#define nBI_DEST_DN_CURR 6 // Denoised current output frame surface
//#define nBI_DEST_STAT 7 // Statistics output surface (STMM / Noise motion history)
// #define nBI_DEST_U 8 // Dest frame U (for DN only)
// #define nBI_DEST_V 9 // Dest frame V (for DN only)
// #define nBI_SRC_U 10 // Src frame U (for DN only)
// #define nBI_SRC_V 11 // Src frame V (for DN only)
// #define nBI_SRC_UV 10 // Current src frame for UV
#endif
 
#if defined(INPUT_PL3)
// PL3 Surface Binding Table
// #define nBI_SRC_ALPHA 0 // Alpha
// #define nBI_SRC_Y 1 // Current src frame
// #define nBI_SRC_U 2 // Current src frame
// #define nBI_SRC_V 3 // Current src frame
// #define nBI_DEST_Y 10 // Dest frame
// #define nBI_DEST_U 11 // Dest frame
// #define nBI_DEST_V 12 // Dest frame
// #define nBI_DEST_YUV 7 // Dest frame
// #define nBI_DEST_RGB 7 // same num as BI_DEST_YUV, never used at the same time
#endif
 
#if defined(INPUT_PL2)
// PL2 Surface Binding Table
// #define nBI_SRC_ALPHA 0 // Alpha
// #define nBI_SRC_Y 1 // Current src frame for Y + offseted UV
// #define nBI_SRC_YUV 1 // Current src frame for YUV in case of NV12_AVS
// #define nBI_SRC_UV 2 // Current src frame for UV
// #define nBI_DEST_YUV 7 // Current dest frame for Y + offseted UV
// #define nBI_DEST_RGB 7 // same num as BI_DEST_YUV, never used at the same time
// #define nBI_DEST_Y 10 // Dest frame
// #define nBI_DEST_U 11 // Dest frame
// #define nBI_DEST_V 12 // Dest frame
#endif
 
#if defined(INPUT_PA) || defined(COLORFILL)
// Packed Surface Binding Table
// #define nBI_SRC_ALPHA 0 // Alpha
// #define nBI_SRC_YUV 1 // Current src frame
// #define nBI_DEST_YUV 3 // Dest frame
// #define nBI_DEST_RGB 3 // same num as BI_DEST_YUV, never used at the same time
#endif
 
 
//supper binding table
#define nBI_ALPHA_SRC 0
#define nBI_CURRENT_SRC_YUV 1
#define nBI_FIELD_COPY_SRC_1_YUV 1
#define nBI_CURRENT_SRC_Y 1
#define nBI_FIELD_COPY_SRC_1_Y 1
#define nBI_CURRENT_SRC_RGB 1
#define nBI_CURRENT_SRC_UV 2
#define nBI_FIELD_COPY_SRC_1_UV 2
#define nBI_CURRENT_SRC_U 2
#define nBI_FIELD_COPY_SRC_1_U 2
#define nBI_CURRENT_SRC_V 3
#define nBI_FIELD_COPY_SRC_1_V 3
#define nBI_TEMPORAL_REFERENCE_YUV 4
#define nBI_FIELD_COPY_SRC_2_YUV 4
#define nBI_TEMPORAL_REFERENCE_Y 4
#define nBI_FIELD_COPY_SRC_2_Y 4
#define nBI_CURRENT_SRC_YUV_HW_DI 4
#define nBI_TEMPORAL_REFERENCE_UV 5
#define nBI_FIELD_COPY_SRC_2_UV 5
#define nBI_TEMPORAL_REFERENCE_U 5
#define nBI_FIELD_COPY_SRC_2_U 5
#define nBI_DENOISED_PREV_HW_DI 5
#define nBI_TEMPORAL_REFERENCE_V 6
#define nBI_FIELD_COPY_SRC_2_V 6
#define nBI_STMM_HISTORY 6
#define nBI_DESTINATION_YUV 7
#define nBI_DESTINATION_RGB 7
#define nBI_DESTINATION_Y 7
#define nBI_DESTINATION_UV 8
#define nBI_DESTINATION_U 8
#define nBI_DESTINATION_V 9
#define nBI_DESTINATION_1_YUV 10
#define nBI_DESTINATION_1_Y 10
#define nBI_DESTINATION_1_UV 11
#define nBI_DESTINATION_1_U 11
#define nBI_DESTINATION_1_V 12
#define nBI_DESTINATION_2_YUV 13
#define nBI_DESTINATION_2_Y 13
#define nBI_DESTINATION_2_UV 14
#define nBI_DESTINATION_2_U 14
#define nBI_DESTINATION_2_V 15
#define nBI_STMM_HISTORY_OUTPUT 20
#define nBI_TEMPORAL_REFERENCE_YUV_PDI 21
#define nBI_TEMPORAL_REFERENCE_Y_PDI 21
#define nBI_TEMPORAL_REFERENCE_UV_PDI 22
#define nBI_TEMPORAL_REFERENCE_U_PDI 22
#define nBI_TEMPORAL_REFERENCE_V_PDI 23
#define nBI_SUBVIDEO_YUV 26
#define nBI_SUBVIDEO_Y 26
#define nBI_SUBVIDEO_UV 27
#define nBI_SUBVIDEO_U 27
#define nBI_SUBVIDEO_V 28
#define nBI_SUBPICTURE_YUV 29
#define nBI_SUBPICTURE_P8 29
#define nBI_SUBPICTURE_A8 30
#define nBI_GRAPHIC_YUV 31
#define nBI_GRAPHIC_P8 31
#define nBI_GRAPHIC_A8 32
 
 
 
//========== Planar Sampler State Table Index ==========
#define nSI_SRC_ALPHA 0x000 // Sampler State for Alpha
 
//Sampler Index for AVS/IEF messages
#define nSI_SRC_Y 0x400 // Sampler State for Y
#define nSI_SRC_U 0x800 // Sampler State for U
#define nSI_SRC_V 0xC00 // Sampler State for V
#define nSI_SRC_UV 0x800 // For NV12 surfaces
#define nSI_SRC_YUV 0x400 // For Packed surfaces
#define nSI_SRC_RGB 0x400 // For ARGB surfaces
 
//Sampler Index for SIMD16 sampler messages
#define nSI_SRC_SIMD16_Y 0x100 // Sampler State for Y
#define nSI_SRC_SIMD16_U 0x200 // Sampler State for U
#define nSI_SRC_SIMD16_V 0x300 // Sampler State for V
#define nSI_SRC_SIMD16_UV 0x200 // For NV12 surfaces
#define nSI_SRC_SIMD16_YUV 0x100 // For Packed surfaces
#define nSI_SRC_SIMD16_RGB 0x100 // For ARGB surfaces
 
 
 
// Common Registers
#define pCF_Y_OFFSET a0.4 // Address register holding Y offset
#define pCF_U_OFFSET a0.5 // Address register holding U offset
#define pCF_V_OFFSET a0.6 // Address register holding V offset
 
// #define YUV_ORI ORIX // Used by writing packed data to dport
 
 
//================= Message Payload Header fields ==============================
#define IDP r0.2:ud // Interface Descriptor Pointer
 
//================= Common Message Descriptor TBD add common load and save =====
// Message descriptor for dataport media write
#ifdef GT
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 0 1010 (media block write) 00000
// 00000000 (binding table index - set later)
// = 0x02094000
#define nDPMW_MSGDSC 0x02094000
#define nDPMR_MSGDSC 0x02098000 // Data Port Media Block Read Message Descriptor
// TBD
#else // ILK
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 000 0 010 (media block write) 0000
// 00000000 (binding table index - set later)
// = 0x02082000
#define nDPMW_MSGDSC 0x02082000 // Data Port Media Block Write Message Descriptor
#define nDPMR_MSGDSC 0x0208A000 // Data Port Media Block Read Message Descriptor
#endif
 
// Message Length defines
#define nMSGLEN_1 0x02000000 // Message Length of 1 GRF for Send
#define nMSGLEN_2 0x04000000 // Message Length of 2 GRF for Send
#define nMSGLEN_4 0x08000000 // Message Length of 4 GRF for Send
#define nMSGLEN_8 0x10000000 // Message Length of 8 GRF for Send
 
// Response Length defines
#define nRESLEN_1 0x00100000 // Message Response Length of 1 GRF from Send
#define nRESLEN_2 0x00200000 // Message Response Length of 2 GRF from Send
#define nRESLEN_3 0x00300000 // Message Response Length of 3 GRF from Send
#define nRESLEN_4 0x00400000 // Message Response Length of 4 GRF from Send
#define nRESLEN_5 0x00500000 // Message Response Length of 5 GRF from Send
#define nRESLEN_8 0x00800000 // Message Response Length of 8 GRF from Send
#define nRESLEN_9 0x00900000 // Message Response Length of 9 GRF from Send
#define nRESLEN_11 0x00B00000 // Message Response Length of 11 GRF from Send
#define nRESLEN_12 0x00C00000 // Message Response Length of 12 GRF from Send
#define nRESLEN_16 0x01000000 // Message Response Length of 16 GRF from Send
 
// Block Width and Height Size defines
#define nBLOCK_WIDTH_4 0x00000003 // Block Width 4
#define nBLOCK_WIDTH_5 0x00000004 // Block Width 5
#define nBLOCK_WIDTH_8 0x00000007 // Block Width 8
#define nBLOCK_WIDTH_9 0x00000008 // Block Width 9
#define nBLOCK_WIDTH_12 0x0000000B // Block Width 12
#define nBLOCK_WIDTH_16 0x0000000F // Block Width 16
#define nBLOCK_WIDTH_20 0x00000013 // Block Width 20
#define nBLOCK_WIDTH_32 0x0000001F // Block Width 32
#define nBLOCK_HEIGHT_1 0x00000000 // Block Height 1
#define nBLOCK_HEIGHT_2 0x00010000 // Block Height 2
#define nBLOCK_HEIGHT_4 0x00030000 // Block Height 4
#define nBLOCK_HEIGHT_5 0x00040000 // Block Height 5
#define nBLOCK_HEIGHT_8 0x00070000 // Block Height 8
 
// Extended Message Descriptors
#define nEXTENDED_MATH 0x1
#define nSMPL_ENGINE 0x2
#define nMESSAGE_GATEWAY 0x3
#define nDATAPORT_READ 0x4
#define nDATAPORT_WRITE 0x5
#define nURB 0x6
#define nTS_EOT 0x27 // with End-Of-Thread bit ON
 
// Common message descriptors:
#ifdef GT
#define nEOT_MSGDSC 0x02000010 // End of Thread Message Descriptor
#define IF_NULL null:uw null:uw null:uw //for different if instructions on ILK and Gen6
#else //ILK
#define nEOT_MSGDSC 0x02000000 // End of Thread Message Descriptor
#define IF_NULL
#endif
 
 
//===================== Math Function Control ===================================
#define mfcINV 0x1 // reciprocal
#define mfcLOG 0x2 // log
#define mfcEXP 0x3 // exponent
#define mfcSQRT 0x4 // square root
#define mfcRSQ 0x5 // reciprocal square root
#define mfcSIN 0x6 // sine (in radians)
#define mfcCOS 0x7 // cosine (in radians)
#define mfcSINCOS 0x8 // dst0 = sin of src0, dst1 = cosine of src0 (in radians) - GT+ ONLY
#define mfcPOW 0xA // abs(src0) raised to the src1 power
#define mfcINT_DIV_QR 0xB // return quotient and remainder
#define mfcINT_DIV_Q 0xC // return quotient
#define mfcINT_DIV_R 0xD // return remainder
 
 
//=================== Message related registers =================================
 
#ifdef GT
#define udDUMMY_NULL
#else // _ILK
#define udDUMMY_NULL null:ud // Used in send inst as src0
#endif
 
//----------- Message Registers ------------
#define mMSGHDR m1 // Message Payload Header
#define mMSGHDRY m1 // Message Payload Header register for Y data
#define mMSGHDRU m2 // Message Payload Header register for U data
#define mMSGHDRV m3 // Message Payload Header register for V data
#define mMSGHDRYA m4 // Second Message Payload Header register for Y data
#define mMSGHDRH m5 // Message Payload Header register for motion history
#define mMSGHDRY1 m1 // Message Payload Header register for first Y data
#define mMSGHDRY2 m2 // Message Payload Header register for second Y data
#define mMSGHDRY3 m3 // Message Payload Header register for third Y data
#define mMSGHDRY4 m4 // Message Payload Header register for fourth Y data
#define mMSGHDRY5 m5 // Message Payload Header register for fifth Y data
#define mMSGHDRY6 m6 // Message Payload Header register for sixth Y data
#define mMSGHDR_EOT m15 // Dummy Message Register for EOT
 
#define rMSGSRC r8 // Message source register
#define pMSGDSC a0.0:ud // Message Descriptor register (type DWORD)
 
#define udMH_ORI rMSGSRC.0 // Data Port Media Block R/W message header block offset
#define udMH_ORIX rMSGSRC.0 // Data Port Media Block R/W message header X offset
#define udMH_ORIY rMSGSRC.1 // Data Port Media Block R/W message header Y offset
#define udMH_SIZE rMSGSRC.2 // Data Port Media Block R/W message header block width & height
 
// M2 - M9 for message data payload
.declare mubMSGPAYLOAD Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
.declare muwMSGPAYLOAD Base=m2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
.declare mudMSGPAYLOAD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare mfMSGPAYLOAD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=f
 
//=================== End of thread instruction ===========================
#ifdef GT
#define END_THREAD mov (8) mMSGHDR_EOT<1>:ud r0.0<8;8,1>:ud \n\
send (1) null<1>:d mMSGHDR_EOT nTS_EOT nEOT_MSGDSC
#else // ILK This should be changed to 1 instruction; I have tested it and it works - vK
#define END_THREAD mov (8) mMSGHDR_EOT<1>:ud r0.0<8;8,1>:ud \n\
send (1) dNULLREG mMSGHDR_EOT udDUMMY_NULL nTS_EOT nEOT_MSGDSC:ud
#endif
 
 
//=======================================================================
// Region declarations for SRC and DEST as TOP and BOT
 
// Common I/O regions
#define nREGION_1 1
#define nREGION_2 2
 
//*** These region base GRFs are fixed regardless planar/packed, and data alignment.
//*** Each kernel is responsible to select the correct region declaration below.
//*** YUV regions are not necessarily next to each other.
#define nTOP_Y 10 // r10 - r17 (8 GRFs)
#define nTOP_U 18 // r18 - r25 (8 GRFs)
#define nTOP_V 26 // r26 - r33 (8 GRFs)
 
#define nBOT_Y 56 // r56 - r63 (8 GRFs)
#define nBOT_U 64 // r64 - r71 (8 GRFs)
#define nBOT_V 72 // r72 - r79 (8 GRFs)
 
// Define temp space for any usages
#define nTEMP0 34
#define nTEMP1 35
#define nTEMP2 36
#define nTEMP3 37
#define nTEMP4 38
#define nTEMP5 39
#define nTEMP6 40
#define nTEMP7 41
#define nTEMP8 42
#define nTEMP10 44
#define nTEMP12 46
#define nTEMP14 48
#define nTEMP16 50
#define nTEMP17 51
#define nTEMP18 52
 
#define nTEMP24 58
 
// Common region 1
.declare ubTOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
.declare ubTOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
.declare ubTOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
.declare uwTOP_Y Base=REG(r,nTOP_Y) ElementSize=2 SrcRegion=REGION(16,1) DstRegion=<1> Type=uw
.declare uwTOP_U Base=REG(r,nTOP_U) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare uwTOP_V Base=REG(r,nTOP_V) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare ub2TOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(16,2) DstRegion=<1> Type=ub
.declare ub2TOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
.declare ub2TOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
 
.declare ub4TOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
.declare ub4TOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
.declare ub4TOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
 
.declare ubTOP_ARGB Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
 
// Used by "send" instruction
.declare udTOP_Y_IO Base=REG(r,nTOP_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare udTOP_U_IO Base=REG(r,nTOP_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare udTOP_V_IO Base=REG(r,nTOP_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
 
// Common region 2
.declare ubBOT_Y Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
.declare ubBOT_U Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
.declare ubBOT_V Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
.declare uwBOT_Y Base=REG(r,nBOT_Y) ElementSize=2 SrcRegion=REGION(16,1) DstRegion=<1> Type=uw
.declare uwBOT_U Base=REG(r,nBOT_U) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare uwBOT_V Base=REG(r,nBOT_V) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare ub2BOT_Y Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(16,2) DstRegion=<1> Type=ub
.declare ub2BOT_U Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
.declare ub2BOT_V Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
 
.declare ubBOT_ARGB Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
 
// Used by "send" instruction
.declare udBOT_Y_IO Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare udBOT_U_IO Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare udBOT_V_IO Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
 
// End of common.inc
 
#endif // COMMON_INC
/drivers/video/i965/shaders/post_processing/gen5_6/Common/readSampler16x1.asm
0,0 → 1,55
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: readSampler16x1.asm
//
// Read one row of pix through sampler
//
 
 
 
//#define SAMPLER_MSG_DSC 0x166A0000 // ILK Sampler Message Descriptor
 
 
 
// Send Message [DevILK] Message Descriptor
// MBZ MsgL=5 MsgR=8 H MBZ SIMD MsgType SmplrIndx BindTab
// 000 0 101 0 1000 1 0 10 0000 0000 00000000
// 0 A 8 A 0 0 0 0
 
// MsgL=1+2*2(u,v)=5 MsgR=8
#define SAMPLER_MSG_DSC 0x0A8A0000 // ILK Sampler Message Descriptor
 
 
 
 
 
 
// Assume MSGSRC is set already in the caller
//mov (8) rMSGSRC.0<1>:ud 0:ud // Unused fileds
 
 
 
// Read 16 sampled pixels and stored them in float32 in 8 GRFs
// 422 data is expanded to 444, return 8 GRF in the order of RGB- (UYV-).
// 420 data has three surfaces, return 8 GRF. Valid is always in the 1st GRF when in R8. Make sure no overwrite the following 3 GRFs.
// alpha data is expanded to 4444, return 8 GRF in the order of RGBA (UYVA).
 
mov(16) mMSGHDR<1>:uw rMSGSRC<16;16,1>:uw
send (16) DATABUF(0)<1> mMSGHDR udDUMMY_NULL 0x2 SAMPLER_MSG_DSC+SAMPLER_IDX+BINDING_IDX:ud
 
 
 
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Common/undefall.inc
0,0 → 1,65
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Modual name: undefall.inc
//
// undefine all global symbol for new process
//
 
//Source definitions
#undef ubSRC_Y
#undef ubSRC_U
#undef ubSRC_V
 
#undef ub2SRC_Y
#undef ub2SRC_U
#undef ub2SRC_V
 
#undef ub4SRC_Y
#undef ub4SRC_U
#undef ub4SRC_V
 
#undef uwSRC_Y
#undef uwSRC_U
#undef uwSRC_V
 
#undef udSRC_Y
#undef udSRC_U
#undef udSRC_V
 
#undef udSRC_YUV
#undef nSRC_YUV_REG
 
//Destination definitions
#undef ubDEST_Y
#undef ubDEST_U
#undef ubDEST_V
 
#undef ub2DEST_Y
#undef ub2DEST_U
#undef ub2DEST_V
 
#undef ub4DEST_Y
#undef ub4DEST_U
#undef ub4DEST_V
 
#undef uwDEST_Y
#undef uwDEST_U
#undef uwDEST_V
 
#undef udDEST_Y
#undef udDEST_U
#undef udDEST_V
 
#undef udDEST_YUV
#undef nDEST_YUV_REG
#undef ubDEST_ARGB
 
// End of undefall.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/AVS_IEF.inc
0,0 → 1,108
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: AVS_IEF.inc
 
#ifndef _AVS_INF_INC_
#define _AVS_INF_INC_
 
#include "undefall.inc" //Undefine the SRC and DEST sysmbols
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (V)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (U)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
#define mAVS_8x8_HDR m0 // Message Header
#define mAVS_PAYLOAD m1 // Message Payload Header
 
#define mAVS_8x8_HDR_2 m2 // Message Header
#define mAVS_PAYLOAD_2 m3 // Message Payload Header
 
#define mAVS_8x8_HDR_UV m2 // Message Header
#define mAVS_PAYLOAD_UV m3 // Message Payload Header
 
#define rAVS_8x8_HDR rMSGSRC // Mirror of Message Header
#define rAVS_PAYLOAD r9 // Mirror of Message Payload Header
// AVS payload
// m1.7 Ignored
// m1.6 Pixel 0 V Address ---> ORIY (Y0)
// m1.5 Delta V ---> Step Y
// m1.4 Ignored
// m1.3 Ignored
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 U 2nd Derivative ---> NLAS dx
// m1.0 Delta U ---> Step X
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel
// 19 Header Present 1
// 18 MBZ 0
// 17:16 SIMD Mode 11 ---> SIMD64
// 15:12 Message Type 0011 ---> sample_8x8
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
#define nAVS_MSG_DSC_1CH 0x044BB000
#define nAVS_MSG_DSC_2CH 0x048BB000
#define nAVS_MSG_DSC_3CH 0x04CBB000
#define nAVS_MSG_DSC_4CH 0x050BB000
 
#define nAVS_RED_CHANNEL_ONLY 0x0000E000 // Enable Red channel only
#define nAVS_GREEN_CHANNEL_ONLY 0x0000D000 // Enable Green channel only
#define nAVS_RED_BLUE_CHANNELS 0x0000A000 // Enable Red and Blue channels
#define nAVS_RGB_CHANNELS 0x00008000 // Enable RGB(YUV) channels
#define nAVS_ALL_CHANNELS 0x00000000 // Enable all channels (ARGB\AYUV)
 
 
.declare ubAVS_RESPONSE Base=REG(r,nTEMP8) ElementSize=1 SrcRegion=REGION(16,1) Type=ub
.declare uwAVS_RESPONSE Base=REG(r,nTEMP8) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
 
.declare ubAVS_RESPONSE_2 Base=REG(r,nTEMP24) ElementSize=1 SrcRegion=REGION(16,1) Type=ub
.declare uwAVS_RESPONSE_2 Base=REG(r,nTEMP24) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
 
 
#if (nSRC_REGION==nREGION_2)
#define uwDEST_Y uwBOT_Y
#define uwDEST_U uwBOT_U
#define uwDEST_V uwBOT_V
 
#define ubDEST_Y ubBOT_Y
#undef nSRC_REGION
#define nSRC_REGION nREGION_2
 
#else //(nSRC_REGION==nREGION_1)
#define uwDEST_Y uwTOP_Y
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
 
#define ubDEST_Y ubTOP_Y
#undef nSRC_REGION
#define nSRC_REGION nREGION_1
 
#endif
 
 
#endif //_AVS_INF_INC_
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupFirstBlock.asm
0,0 → 1,35
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//------------------------------------------------------------------------------
// AVS_SetupFirstBlock.asm
//------------------------------------------------------------------------------
// Setup Message Header
// mov (8) mAVS_8x8_HDR<1>:ud rMSGSRC<8;8,1>:ud
 
// Check NLAS Enable bit
and.z.f0.0 (1) wNULLREG uwNLAS_ENABLE:uw BIT15:uw
(f0.0)mov (1) fVIDEO_STEP_DELTA:f 0.0:f
// Setup Message Payload Header for 1st block of Media Sampler 8x8
mov (1) rAVS_PAYLOAD.0:f fVIDEO_STEP_DELTA:f //NLAS dx
mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f //Step X
mov (1) rAVS_PAYLOAD.5:f fVIDEO_STEP_Y:f //Step Y
mov (2) rAVS_PAYLOAD.2<4>:f fSRC_VID_H_ORI<2;2,1>:f //Orig X and Y
 
 
 
 
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupSecondBlock.asm
0,0 → 1,27
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//------------------------------------------------------------------------------
// AVS_SetupSecondBlock.asm
//------------------------------------------------------------------------------
//NLAS calculations for 2nd block of Media Sampler 8x8:
// X(i) = X0 + dx*i + ddx*i*(i-1)/2 ==> X(8) = X0 + dx*8 +ddx*28
// dx(i)= dx(0) + ddx*i ==> dx(8)= dx + ddx*8
 
// Calculating X(8)
mov (1) acc0.2<1>:f fSRC_VID_H_ORI:f
mac (1) acc0.2<1>:f fVIDEO_STEP_X:f 8.0:f
mac (1) rAVS_PAYLOAD.2:f fVIDEO_STEP_DELTA:f 28.0:f
// Calculating dx(8)
mov (1) acc0.1<1>:f fVIDEO_STEP_X:f
mac (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_DELTA:f 8.0:f
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DI.inc
0,0 → 1,194
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: DI.inc
 
#ifdef GT
// GT DI Kernel
#else // ILK
// ILK DI Kernel
#endif
 
//---------------------------------------------------------------------------
// Binding table indices
//---------------------------------------------------------------------------
#define nBIDX_DI_PRV 10 // Previous DI-ed frame
#define nBIDX_DI_CUR 13 // Current DI-ed frame
#define nBIDX_DN 7 // Denoised frame
#define nBIDX_STAT 20 // Statistics
#define nBIDX_DI_Source 4 // Source Surface
 
 
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
#define nSMPL_ENGINE 0x2
#define nDATAPORT_WRITE 0x5
#define nTS_EOT 0x27 // with End-Of-Thread bit ON
 
// Message descriptor for end-of-thread
// = 000 0001 (message len) 00000 (resp len)
// 0 (header present 0) 00000000000000 0 (URB dereferenced) 0000
#define nEOT_MSGDSC 0x02000000
 
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
// comment begin
// The following is commented out because of walker feature
// It corresponds to the #ifdef GT #else and #endif
//#define nSMPL_MSGDSC 0x040b8000
//#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
//#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5
//#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9
//#define nSMPL_RESP_LEN_NODN 0x00900000 // 9
//#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
// comment end
 
#ifdef GT
 
#define nSMPL_MSGDSC 0x040b8000
#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5 //DI disable, the XY stored in 5th GRF, no impact to return length
#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9 //DI disable, the XY stored in 5th GRF, no impact to return length
#define nSMPL_RESP_LEN_NODN 0x00a00000 // 10 //NO DN, originally use 9, now we need use 10 to store the XY with walker
#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
 
#else
 
#define nSMPL_MSGDSC 0x040b8000
#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5
#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9
#define nSMPL_RESP_LEN_NODN 0x00900000 // 9
#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
 
#endif
 
// Message descriptor for dataport media write
#ifdef GT
// = 000 0000 (message len - set later) 00000 (resp len 0)
// 1 (header present 1) 0 0 1010 (media block write) 00000
// 00000000 (binding table index - set later)
// = 0x00094000
#define nDPMW_MSGDSC 0x00094000
#else // ILK
// = 000 0000 (message len - set later) 00000 (resp len 0)
// 1 (header present 1) 000 0 010 (media block write) 0000
// 00000000 (binding table index - set later)
// = 0x00082000
#define nDPMW_MSGDSC 0x00082000
#endif
#define nDPMW_MSG_LEN_STMM 0x04000000 // 2 - STMM
#define nDPMW_MSG_LEN_DH 0x04000000 // 2 - Denoise history
#define nDPMW_MSG_LEN_PA_DN 0x0a000000 // 5 - Denoised output
#define nDPMW_MSG_LEN_PA_NODI 0x12000000 // 9 - Denoised output - denoise only - DI disabled
#define nDPMW_MSG_LEN_PL_DN 0x06000000 // 3 - Denoised output
#define nDPMW_MSG_LEN_PL_NODI 0x0a000000 // 5 - Denoised output - denoise only - DI disabled
#define nDPMW_MSG_LEN_DI 0x0a000000 // 5 - DI output
 
 
//---------------------------------------------------------------------------
// Static and inline parameters
//---------------------------------------------------------------------------
// Static parameters
.declare ubTFLD_FIRST Base=r1.27 ElementSize=1 Type=ub // top field first
.declare ubSRCYUVOFFSET Base=r1.4 ElementSize=1 Type=ub // source packed format
.declare ubDSTYUVOFFSET Base=r1.8 ElementSize=1 Type=ub // destination packed format
.declare uwSPITCH_DIV2 Base=r1.10 ElementSize=2 Type=uw // statistics surface pitch divided by 2
 
// Inline parameters
.declare uwXORIGIN Base=r5.0 ElementSize=2 Type=uw // X and Y origin
.declare uwYORIGIN Base=r5.1 ElementSize=2 Type=uw
 
 
//---------------------------------------------------------------------------
// Kernel GRF variables
//---------------------------------------------------------------------------
// Message response (Denoised & DI-ed pixels & statistics)
.declare dRESP Base=r8 ElementSize=4 Type=d // Response message (12 or 5 or 11)
.declare ubRESP Base=r8 ElementSize=1 Type=ub
 
.declare dSTMM Base=r16 ElementSize=4 Type=d // STMM
.declare ubDN_HIST_NODI Base=r12 ElementSize=1 Type=ub // Denoise history data (DI disabled)
.declare ubDN_HIST_DI Base=r17 ElementSize=1 Type=ub // Denoise history data (DI enabled)
.declare uwRETURNED_POSITION_DI Base=r17 ElementSize=2 Type=uw // XY_Return_Data (DI enabled)
.declare uwRETURNED_POSITION_DN Base=r12 ElementSize=2 Type=uw // XY_Return_Data (DI disabled)
 
.declare ub1ST_FLD_DN Base=r12 ElementSize=1 Type=ub // 1st field Denoised data (DI enabled)
.declare d1ST_FLD_DN Base=r12 ElementSize=4 Type=d
.declare ub2ND_FLD_DN Base=r18 ElementSize=1 Type=ub // 2nd field Denoised data (DI enabled)
.declare d2ND_FLD_DN Base=r18 ElementSize=4 Type=d
.declare ubPRV_DI Base=r8 ElementSize=1 Type=ub // Previous frame DI (DI enabled)
.declare ubCUR_DI Base=r12 ElementSize=1 Type=ub // Previous frame DI (DI enabled)
 
// Packed denoised output
.declare ubDN_YUV Base=r22 ElementSize=1 Type=ub // Denoised YUV422
.declare dDN_YUV Base=r22 ElementSize=4 Type=d
#define npDN_YUV 704 // = 22*32 = 0x280
 
// Packed DI output
.declare dDI_YUV_PRV Base=r32 ElementSize=4 Type=d // Previous frame DI output
.declare dDI_YUV_CUR Base=r36 ElementSize=4 Type=d // Current frame DI output
#define npDI_YUV 1024 // = 32*32 = 0x
 
// For packed output
#define p422_YOFFSET a0.2
#define p422_UOFFSET a0.3
#define p422_VOFFSET a0.4
#define pDN_TFLDSRC a0.6
#define pDN_BFLDSRC a0.7
#define npRESP 192 // = 6*32
 
// Message source
.declare udMSGSRC Base=r70 ElementSize=4 Type=ud
.declare uwMSGSRC Base=r70 ElementSize=2 Type=uw
.declare dMSGSRC Base=r70 ElementSize=4 Type=d
 
 
//---------------------------------------------------------------------------
// Kernel MRF variables
//---------------------------------------------------------------------------
#define mMSGHDR_SMPL m1 // Sampler response: m1~m2
.declare mudMSGHDR_SMPL Base=m1 ElementSize=4 Type=ud
.declare muwMSGHDR_SMPL Base=m1 ElementSize=2 Type=uw
#define mMSGHDR_DN m3 // Denoise output: m3~m7 for PA, m3~m5 for PL
.declare mdMSGHDR_DN Base=m3 ElementSize=4 Type=d
#define mMSGHDR_STAT m8 // Statistics output: m8~m9
.declare mdMSGHDR_STAT Base=m8 ElementSize=4 Type=d
.declare mubMSGHDR_STAT Base=m8 ElementSize=1 Type=ub
#define mMSGHDR_DI m10 // DI output: m10~m14
.declare mdMSGHDR_DI Base=m10 ElementSize=4 Type=d
#define mMSGHDR_EOT m15 // EOT
 
#ifdef GT
#define MSGSRC
#else
#define MSGSRC null:ud
#endif
 
//---------------------------------------------------------------------------
// End of thread instruction
//---------------------------------------------------------------------------
#ifdef GT
#define END_THREAD send (8) null<1>:d mMSGHDR_EOT nTS_EOT nEOT_MSGDSC
#else // ILK
#define END_THREAD send (8) null<1>:d mMSGHDR_EOT null:ud nTS_EOT nEOT_MSGDSC
#endif
 
 
// end of DI.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DI_Hist_Save.asm
0,0 → 1,24
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
// Write denoise history to memory
shr (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w 2:w NODDCLR // X,Y origin / 4
add (1) rMSGSRC.0<1>:ud rMSGSRC.0<0;1,0>:ud uwSPITCH_DIV2<0;1,0>:uw NODDCLR_NODDCHK // Add pitch to X origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_HIST:ud NODDCHK // block width and height (4x2)
 
mov (8) mMSGHDR_HIST<1>:ud rMSGSRC.0<8;8,1>:ud // message header
mov (1) mudMSGHDR_HIST(1)<1> udRESP(nDI_HIST_OFFSET,0)<0;1,0> // Move denoise history to MRF
 
send (8) dNULLREG mMSGHDR_HIST udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_HIST+nBI_STMM_HISTORY_OUTPUT:ud
 
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DI_SAVE_PA.asm
0,0 → 1,56
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // H. block origin need to be doubled
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DI:ud NODDCHK // Block width and height (32x8)
add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub nDEST_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
 
// Pack 2nd field Y
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) r[pCF_Y_OFFSET, %1*nGRFWIB]<2> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
}
// Pack 1st field Y
$for(0; <nY_NUM_OF_ROWS; 1) {
mov (16) r[pCF_Y_OFFSET, %1+4*nGRFWIB]<2> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
// Pack 2nd field U
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_U_OFFSET, %1*nGRFWIB]<4> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
}
// Pack 1st field U
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_U_OFFSET, %1+4*nGRFWIB]<4> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
}
// Pack 2nd field V
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_V_OFFSET, %1*nGRFWIB]<4> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //Vpixels
}
// Packs1st field V
$for(0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_V_OFFSET, %1+4*nGRFWIB]<4> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //Vpixels
}
 
//save the previous frame
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
$for(0; <4; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1)REGION(8,1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_DI+nBI_DESTINATION_1_YUV:ud
 
//save the current frame
mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
$for(0; <4; 1) {
mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1+4)REGION(8,1)
}
send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_DI+nBI_DESTINATION_2_YUV:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DNDI.inc
0,0 → 1,162
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Module name: DI.inc
 
#ifdef GT
// GT DI Kernel
#else // ILK
// ILK DI Kernel
#endif
 
#include "undefall.inc"
 
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// // 1 (header present 1) 0 11 (SIMD32/64 mode)
// // 1000 (message type) 0000 (DI state index)
// // 00000000 (binding table index - set later)
// // = 0x040b8000
#define nSMPL_DI_MSGDSC 0x040b8000
 
#define nSMPL_RESP_LEN_DNDI nRESLEN_12 // 12 - for DN + DI Alg
#define nSMPL_RESP_LEN_DN_PL nRESLEN_5 // 5 - for DN Planar Alg
#define nSMPL_RESP_LEN_DN_PA nRESLEN_9 // 9 - for DN Packed Alg
#define nSMPL_RESP_LEN_DI nRESLEN_9 // 9 - for DI Only Alg
#define nSMPL_RESP_LEN_PDI nRESLEN_11 // 11 - for Partial DI Alg
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
#define nDPMW_MSG_LEN_STMM nMSGLEN_1 // 1 - For STMM Save
#define nDPMW_MSG_LEN_HIST nMSGLEN_1 // 1 - For Denoise History Save
#define nDPMW_MSG_LEN_PA_DN_DI nMSGLEN_4 // 4 - For DN Curr Save
#define nDPMW_MSG_LEN_PA_DN_NODI nMSGLEN_8 // 8 - For DN Curr Save (denoise only - DI disabled)
#define nDPMW_MSG_LEN_PL_DN_DI nMSGLEN_2 // 2 - For DN Curr Save
#define nDPMW_MSG_LEN_PL_DN_NODI nMSGLEN_4 // 4 - For DN Curr Save (denoise only - DI disabled)
 
#define nDPW_BLOCK_SIZE_STMM nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // Y block size 8x4
 
#undef nDPW_BLOCK_SIZE_DI
#undef nDPW_MSG_SIZE_DI
#define nDPW_BLOCK_SIZE_DI nBLOCK_WIDTH_32+nBLOCK_HEIGHT_4
#define nDPW_MSG_SIZE_DI nMSGLEN_4
 
 
//---------------------------------------------------------------------------
// Kernel GRF variables
//---------------------------------------------------------------------------
// Defines for DI enabled
#define nDI_PREV_FRAME_LUMA_OFFSET 0
#define nDI_PREV_FRAME_CHROMA_OFFSET 2
#define nDI_CURR_FRAME_LUMA_OFFSET 4
#define nDI_CURR_FRAME_CHROMA_OFFSET 6
#define nDI_STMM_OFFSET 8
#define nDI_HIST_OFFSET 9
#define nDI_CURR_2ND_FIELD_LUMA_OFFSET 10
#define nDI_CURR_2ND_FIELD_CHROMA_OFFSET 11
 
// Defines for DI disabled
#define nNODI_LUMA_OFFSET 0
#define nNODI_HIST_OFFSET 4
#define nNODI_CHROMA_OFFSET 5
 
#ifdef DI_ENABLE
#define nHIST_OFFSET nDI_HIST_OFFSET
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
#endif
 
#ifdef DI_DISABLE
#define nHIST_OFFSET nNODI_HIST_OFFSET
#endif
 
#if (nSRC_REGION==nREGION_2)
#define ub2SRC_Y ub2BOT_Y
#define ub2SRC_U ub2BOT_U
#define ub2SRC_V ub2BOT_V
#define uwDEST_Y uwBOT_Y
#define uwDEST_U uwBOT_U
#define uwDEST_V uwBOT_V
#define nDEST_YUV_REG nTOP_Y
#define udDEST_YUV udTOP_Y_IO
 
#define nRESP nTEMP0 // DI return message requires 12 GRFs
#define nDN_YUV nTOP_Y // Space for Packing DN for next run requires 8 GRFs
 
#undef nSRC_REGION
#define nSRC_REGION nREGION_2
 
#else
#define ub2SRC_Y ub2TOP_Y
#define ub2SRC_U ub2TOP_U
#define ub2SRC_V ub2TOP_V
#define uwDEST_Y uwTOP_Y
#define uwDEST_U uwTOP_U
#define uwDEST_V uwTOP_V
#define nDEST_YUV_REG nBOT_Y
#define udDEST_YUV udBOT_Y_IO
#define nRESP nTEMP0 // DI return message requires 12 GRFs
#define nDN_YUV nBOT_Y // Space for Packing DN for next run requires 8 GRFs
 
#undef nSRC_REGION
#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
 
#endif
 
 
 
 
 
 
 
 
// Message response (Denoised & DI-ed pixels & statistics)
.declare udRESP Base=REG(r,nRESP) ElementSize=4 SrcRegion=REGION(8,1) DstRegion=<1> Type=ud
.declare ubRESP Base=REG(r,nRESP) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
 
// For Denoised Curr Output (Used as Priv in Next Run)
.declare ubDN_YUV Base=REG(r,nDN_YUV) ElementSize=1 Type=ub
.declare udDN_YUV Base=REG(r,nDN_YUV) ElementSize=4 Type=ud
#define npDN_YUV nDN_YUV*nGRFWIB
 
// For DI Process Output (1st and 2nd Frames Output)
//.declare udDI_YUV_PRIV Base=REG(r,nTEMP0) ElementSize=4 Type=ud // Previous frame DI output
//.declare udDI_YUV_CURR Base=REG(r,nTEMP0) ElementSize=4 Type=ud // Current frame DI output
//#define npDI_YUV nTEMP0*nGRFWIB
 
//---------------------------------------------------------------------------
// Kernel MRF variables
//---------------------------------------------------------------------------
#define mMSG_SMPL m1 // Sampler Command is in: m1~m2
.declare mudMSG_SMPL Base=mMSG_SMPL ElementSize=4 Type=ud
.declare muwMSG_SMPL Base=mMSG_SMPL ElementSize=2 Type=uw
 
#define mMSGHDR_DN m1 // Denoise Output: m1~m9 for PA, m3~m5 for PL
.declare mudMSGHDR_DN Base=mMSGHDR_DN ElementSize=4 Type=ud
.declare mubMSGHDR_DN Base=mMSGHDR_DN ElementSize=1 Type=ub
 
#define mMSGHDR_STMM m11 // STMM Output: m11~m12
.declare mudMSGHDR_STMM Base=mMSGHDR_STMM ElementSize=4 Type=ud
#define mMSGHDR_HIST m13 // HIST Output: m13~m14
.declare mudMSGHDR_HIST Base=mMSGHDR_HIST ElementSize=1 Type=ud
 
#define mMSGHDR_DI_1ST m1 // DI output: m1~m5
.declare mudMSGHDR_DI_1ST Base=mMSGHDR_DI_1ST ElementSize=4 Type=ud
#define mMSGHDR_DI_2ND m6 // DI output: m6~m10
.declare mudMSGHDR_DI_2ND Base=mMSGHDR_DI_2ND ElementSize=4 Type=ud
 
// end of DNDI.inc
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DNDI_COMMAND.asm
0,0 → 1,17
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// Activate the DNDI send command
mov (8) mudMSG_SMPL(0)<1> rMSGSRC.0<8;8,1>:ud NODDCLR // message header
mov (1) muwMSG_SMPL(1,4)<1> wORIX<0;1,0>:w NODDCLR_NODDCHK// horizontal origin
mov (1) muwMSG_SMPL(1,12)<1> wORIY<0;1,0>:w NODDCLR_NODDCHK // vertical origin
//mov (2) muwMSG_SMPL(1,4)<2> wORIX<2;2,1>:w NODDCHK// problem during compile !! when using this line
 
send (8) udRESP(0)<1> mMSG_SMPL udDUMMY_NULL nSMPL_ENGINE nSMPL_DI_MSGDSC+nSMPL_RESP_LEN+nBI_CURRENT_SRC_YUV_HW_DI:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/DNDI_Hist_Save.asm
0,0 → 1,20
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
 
// Write denoise history to memory
shr (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w 2:w NODDCLR // X,Y origin / 4
add (1) rMSGSRC.0<1>:ud rMSGSRC.0<0;1,0>:ud uwSPITCH_DIV2<0;1,0>:uw NODDCLR_NODDCHK// Add pitch to X origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_HIST:ud NODDCHK // block width and height (4x2)
 
mov (8) mMSGHDR_HIST<1>:ud rMSGSRC.0<8;8,1>:ud // message header
mov (2) mudMSGHDR_HIST(1)<1> udRESP(nNODI_HIST_OFFSET,0)<2;2,1> // Move denoise history to MRF
 
send (8) dNULLREG mMSGHDR_HIST udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_HIST+nBI_STMM_HISTORY_OUTPUT:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_16x8.asm
0,0 → 1,26
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_16x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 YUV packed
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Sample.asm"
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:4:4 internal planar
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Unpack_16x8.asm"
 
//------------------------------------------------------------------------------
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x4.asm
0,0 → 1,25
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_8x4.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 YUV packed
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Sample.asm"
 
//------------------------------------------------------------------------------
// Unpacking sampler data to 4:2:0 internal planar
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Unpack_8x4.asm"
 
//------------------------------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x8.asm
0,0 → 1,25
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_8x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 YUV packed
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Sample.asm"
 
//------------------------------------------------------------------------------
// Unpacking sampler data to 4:2:2 internal planar
//------------------------------------------------------------------------------
#include "PA_AVS_IEF_Unpack_8x8.asm"
 
//------------------------------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Sample.asm
0,0 → 1,34
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_Sample.asm ----------
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 YUV packed
//------------------------------------------------------------------------------
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// Enable RGB(YUV) channels
mov (1) rAVS_8x8_HDR.2:ud nAVS_RGB_CHANNELS:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_3CH+nSI_SRC_YUV+nBI_CURRENT_SRC_YUV
// Return YUV in 12 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
mov (16) mAVS_8x8_HDR_2.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR_2 udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_3CH+nSI_SRC_YUV+nBI_CURRENT_SRC_YUV
// Return YUV in 12 GRFs
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm
0,0 → 1,288
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_Unpack_16x8.asm ----------
#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
// Move first 8x8 words of Y to dest GRF (as packed)
mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(8,0)<4;4,1>
mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(8,8)<4;4,1>
mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(8,4)<4;4,1>
mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(8,12)<4;4,1>
mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(9,0)<4;4,1>
mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(9,8)<4;4,1>
mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(9,4)<4;4,1>
mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(9,12)<4;4,1>
 
// Move first 8x8 words of U to dest GRF (as packed)
mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(10,0)<4;4,1>
mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(10,8)<4;4,1>
mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(10,4)<4;4,1>
mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(10,12)<4;4,1>
mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(11,0)<4;4,1>
mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(11,8)<4;4,1>
mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(11,4)<4;4,1>
mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(11,12)<4;4,1>
 
// Move first 8x8 words of V to dest GRF (as packed)
mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(0,0)<4;4,1>
mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(0,8)<4;4,1>
mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(0,4)<4;4,1>
mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(0,12)<4;4,1>
mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(1,0)<4;4,1>
mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(1,8)<4;4,1>
mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(1,4)<4;4,1>
mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(1,12)<4;4,1>
mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(6,0)<4;4,1>
mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(6,8)<4;4,1>
mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(6,4)<4;4,1>
mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(6,12)<4;4,1>
mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(7,0)<4;4,1>
mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(7,8)<4;4,1>
mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(7,4)<4;4,1>
mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(7,12)<4;4,1>
 
// Move first 8x8 words of A to dest GRF (as packed)
mov (4) uwDEST_Y(0,3)<4> 0:uw
mov (4) uwDEST_Y(1,3)<4> 0:uw
mov (4) uwDEST_Y(4,3)<4> 0:uw
mov (4) uwDEST_Y(5,3)<4> 0:uw
mov (4) uwDEST_Y(8,3)<4> 0:uw
mov (4) uwDEST_Y(9,3)<4> 0:uw
mov (4) uwDEST_Y(12,3)<4> 0:uw
mov (4) uwDEST_Y(13,3)<4> 0:uw
mov (4) uwDEST_Y(16,3)<4> 0:uw
mov (4) uwDEST_Y(17,3)<4> 0:uw
mov (4) uwDEST_Y(20,3)<4> 0:uw
mov (4) uwDEST_Y(21,3)<4> 0:uw
mov (4) uwDEST_Y(24,3)<4> 0:uw
mov (4) uwDEST_Y(25,3)<4> 0:uw
mov (4) uwDEST_Y(28,3)<4> 0:uw
mov (4) uwDEST_Y(29,3)<4> 0:uw
 
// Move second 8x8 words of Y to dest GRF
mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
 
// Move second 8x8 words of U to dest GRF
mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
 
// Move second 8x8 words of V to dest GRF
mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
 
// Move second 8x8 words of A to dest GRF
mov (4) uwDEST_Y(2,3)<4> 0:uw
mov (4) uwDEST_Y(3,3)<4> 0:uw
mov (4) uwDEST_Y(6,3)<4> 0:uw
mov (4) uwDEST_Y(7,3)<4> 0:uw
mov (4) uwDEST_Y(10,3)<4> 0:uw
mov (4) uwDEST_Y(11,3)<4> 0:uw
mov (4) uwDEST_Y(14,3)<4> 0:uw
mov (4) uwDEST_Y(15,3)<4> 0:uw
mov (4) uwDEST_Y(18,3)<4> 0:uw
mov (4) uwDEST_Y(19,3)<4> 0:uw
mov (4) uwDEST_Y(22,3)<4> 0:uw
mov (4) uwDEST_Y(23,3)<4> 0:uw
mov (4) uwDEST_Y(26,3)<4> 0:uw
mov (4) uwDEST_Y(27,3)<4> 0:uw
mov (4) uwDEST_Y(30,3)<4> 0:uw
mov (4) uwDEST_Y(31,3)<4> 0:uw
 
/* This section will be used if 16-bit output is needed in planar format -vK
// Move first 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0)<1> uwAVS_RESPONSE(2,0)<8;4,1>
mov (8) uwDEST_Y(1)<1> uwAVS_RESPONSE(2,8)<8;4,1>
mov (8) uwDEST_Y(2)<1> uwAVS_RESPONSE(3,0)<8;4,1>
mov (8) uwDEST_Y(3)<1> uwAVS_RESPONSE(3,8)<8;4,1>
mov (8) uwDEST_Y(4)<1> uwAVS_RESPONSE(8,0)<8;4,1>
mov (8) uwDEST_Y(5)<1> uwAVS_RESPONSE(8,8)<8;4,1>
mov (8) uwDEST_Y(6)<1> uwAVS_RESPONSE(9,0)<8;4,1>
mov (8) uwDEST_Y(7)<1> uwAVS_RESPONSE(9,8)<8;4,1>
// Move first 8x8 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(0,0)<8;4,1>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(0,8)<8;4,1>
mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(1,0)<8;4,1>
mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(1,8)<8;4,1>
mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(6,0)<8;4,1>
mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(6,8)<8;4,1>
mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(7,0)<8;4,1>
mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(7,8)<8;4,1>
// Move first 8x8 words of U to dest GRF
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,0)<8;4,1>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8)<8;4,1>
mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,0)<8;4,1>
mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8)<8;4,1>
mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(10,0)<8;4,1>
mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(10,8)<8;4,1>
mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(11,0)<8;4,1>
mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(11,8)<8;4,1>
// Move second 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0,8)<1> uwAVS_RESPONSE_2(2,0)<8;4,1>
mov (8) uwDEST_Y(1,8)<1> uwAVS_RESPONSE_2(2,8)<8;4,1>
mov (8) uwDEST_Y(2,8)<1> uwAVS_RESPONSE_2(3,0)<8;4,1>
mov (8) uwDEST_Y(3,8)<1> uwAVS_RESPONSE_2(3,8)<8;4,1>
mov (8) uwDEST_Y(4,8)<1> uwAVS_RESPONSE_2(8,0)<8;4,1>
mov (8) uwDEST_Y(5,8)<1> uwAVS_RESPONSE_2(8,8)<8;4,1>
mov (8) uwDEST_Y(6,8)<1> uwAVS_RESPONSE_2(9,0)<8;4,1>
mov (8) uwDEST_Y(7,8)<1> uwAVS_RESPONSE_2(9,8)<8;4,1>
// Move second 8x8 words of V to dest GRF
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(0,0)<8;4,1>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(0,8)<8;4,1>
mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(1,0)<8;4,1>
mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(1,8)<8;4,1>
mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(6,0)<8;4,1>
mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(6,8)<8;4,1>
mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(7,0)<8;4,1>
mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(7,8)<8;4,1>
// Move second 8x8 words of U to dest GRF
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,0)<8;4,1>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8)<8;4,1>
mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,0)<8;4,1>
mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8)<8;4,1>
mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(10,0)<8;4,1>
mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(10,8)<8;4,1>
mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(11,0)<8;4,1>
mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(11,8)<8;4,1>
*/
#else /* OUTPUT_8_BIT */
// Move first 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move first 8x8 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;4,2>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(0,8+1)<16;4,2>
mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(1,1)<16;4,2>
mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(1,8+1)<16;4,2>
mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
 
// Move first 8x8 words of U to dest GRF
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
 
// Move second 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move second 8x8 words of V to dest GRF
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(0,1)<16;4,2>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(1,1)<16;4,2>
mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
 
// Move second 8x8 words of U to dest GRF
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
#endif
//------------------------------------------------------------------------------
 
// Re-define new number of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm
0,0 → 1,77
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_Unpack_8x8.asm ----------
 
// Yoni: In order to optimize unpacking, 3 methods are being checked:
// 1. AVS_ORIGINAL
// 2. AVS_ROUND_TO_8_BITS
// 3. AVS_INDIRECT_ACCESS
//
// Only 1 method should stay in the code
 
 
//#define AVS_ROUND_TO_8_BITS
//#define AVS_INDIRECT_ACCESS
 
 
// Move first 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move first 4x8 words of V to dest GRF
mov (4) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;2,4>
mov (4) uwDEST_V(0,8)<1> ubAVS_RESPONSE(1,1)<16;2,4>
mov (4) uwDEST_V(1)<1> ubAVS_RESPONSE(6,1)<16;2,4>
mov (4) uwDEST_V(1,8)<1> ubAVS_RESPONSE(7,1)<16;2,4>
 
// Move first 4x8 words of U to dest GRF
mov (4) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;2,4>
mov (4) uwDEST_U(0,8)<1> ubAVS_RESPONSE(5,1)<16;2,4>
mov (4) uwDEST_U(1)<1> ubAVS_RESPONSE(10,1)<16;2,4>
mov (4) uwDEST_U(1,8)<1> ubAVS_RESPONSE(11,1)<16;2,4>
 
// Move second 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move second 4x8 words of V to dest GRF
mov (4) uwDEST_V(0,4)<1> ubAVS_RESPONSE_2(0,1)<16;2,4>
mov (4) uwDEST_V(0,12)<1> ubAVS_RESPONSE_2(1,1)<16;2,4>
mov (4) uwDEST_V(1,4)<1> ubAVS_RESPONSE_2(6,1)<16;2,4>
mov (4) uwDEST_V(1,12)<1> ubAVS_RESPONSE_2(7,1)<16;2,4>
 
// Move second 4x8 words of U to dest GRF
mov (4) uwDEST_U(0,4)<1> ubAVS_RESPONSE_2(4,1)<16;2,4>
mov (4) uwDEST_U(0,12)<1> ubAVS_RESPONSE_2(5,1)<16;2,4>
mov (4) uwDEST_U(1,4)<1> ubAVS_RESPONSE_2(10,1)<16;2,4>
mov (4) uwDEST_U(1,12)<1> ubAVS_RESPONSE_2(11,1)<16;2,4>
 
//------------------------------------------------------------------------------
 
// Re-define new number of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm
0,0 → 1,93
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_AVS_IEF_Unpack_8x8.asm ----------
 
// Yoni: In order to optimize unpacking, 3 methods are being checked:
// 1. AVS_ORIGINAL
// 2. AVS_ROUND_TO_8_BITS
// 3. AVS_INDIRECT_ACCESS
//
// Only 1 method should stay in the code
 
 
//#define AVS_ROUND_TO_8_BITS
//#define AVS_INDIRECT_ACCESS
 
 
// Move first 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move first 4x8 words of V to dest GRF
mov (4) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;2,4>
mov (4) uwDEST_V(0,8)<1> ubAVS_RESPONSE(0,8+1)<16;2,4>
mov (4) uwDEST_V(1)<1> ubAVS_RESPONSE(1,1)<16;2,4>
mov (4) uwDEST_V(1,8)<1> ubAVS_RESPONSE(1,8+1)<16;2,4>
mov (4) uwDEST_V(2)<1> ubAVS_RESPONSE(6,1)<16;2,4>
mov (4) uwDEST_V(2,8)<1> ubAVS_RESPONSE(6,8+1)<16;2,4>
mov (4) uwDEST_V(3)<1> ubAVS_RESPONSE(7,1)<16;2,4>
mov (4) uwDEST_V(3,8)<1> ubAVS_RESPONSE(7,8+1)<16;2,4>
 
// Move first 4x8 words of U to dest GRF
mov (4) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;2,4>
mov (4) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,8+1)<16;2,4>
mov (4) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;2,4>
mov (4) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,8+1)<16;2,4>
mov (4) uwDEST_U(2)<1> ubAVS_RESPONSE(10,1)<16;2,4>
mov (4) uwDEST_U(2,8)<1> ubAVS_RESPONSE(10,8+1)<16;2,4>
mov (4) uwDEST_U(3)<1> ubAVS_RESPONSE(11,1)<16;2,4>
mov (4) uwDEST_U(3,8)<1> ubAVS_RESPONSE(11,8+1)<16;2,4>
 
// Move second 8x8 words of Y to dest GRF
mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move second 4x8 words of V to dest GRF
mov (4) uwDEST_V(0,4)<1> ubAVS_RESPONSE_2(0,1)<16;2,4>
mov (4) uwDEST_V(0,12)<1> ubAVS_RESPONSE_2(0,8+1)<16;2,4>
mov (4) uwDEST_V(1,4)<1> ubAVS_RESPONSE_2(1,1)<16;2,4>
mov (4) uwDEST_V(1,12)<1> ubAVS_RESPONSE_2(1,8+1)<16;2,4>
mov (4) uwDEST_V(2,4)<1> ubAVS_RESPONSE_2(6,1)<16;2,4>
mov (4) uwDEST_V(2,12)<1> ubAVS_RESPONSE_2(6,8+1)<16;2,4>
mov (4) uwDEST_V(3,4)<1> ubAVS_RESPONSE_2(7,1)<16;2,4>
mov (4) uwDEST_V(3,12)<1> ubAVS_RESPONSE_2(7,8+1)<16;2,4>
 
// Move second 4x8 words of U to dest GRF
mov (4) uwDEST_U(0,4)<1> ubAVS_RESPONSE_2(4,1)<16;2,4>
mov (4) uwDEST_U(0,12)<1> ubAVS_RESPONSE_2(4,8+1)<16;2,4>
mov (4) uwDEST_U(1,4)<1> ubAVS_RESPONSE_2(5,1)<16;2,4>
mov (4) uwDEST_U(1,12)<1> ubAVS_RESPONSE_2(5,8+1)<16;2,4>
mov (4) uwDEST_U(2,4)<1> ubAVS_RESPONSE_2(10,1)<16;2,4>
mov (4) uwDEST_U(2,12)<1> ubAVS_RESPONSE_2(10,8+1)<16;2,4>
mov (4) uwDEST_U(3,4)<1> ubAVS_RESPONSE_2(11,1)<16;2,4>
mov (4) uwDEST_U(3,12)<1> ubAVS_RESPONSE_2(11,8+1)<16;2,4>
 
//------------------------------------------------------------------------------
 
// Re-define new number of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_DNDI_ALG.asm
0,0 → 1,139
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
 
#ifdef DI_ONLY
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DI // set the number of GRF
#else
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#endif
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_4 // DN Block Size for Write is 32x4
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_Command.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
//// move the previous frame Y component to internal planar format
//$for (0; <nY_NUM_OF_ROWS/2; 1) {
// mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
//}
//// move the previous frame U,V components to internal planar format
//$for (0; <nUV_NUM_OF_ROWS/2; 1) {
// mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
// mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
//}
//// move the current frame Y component to internal planar format
//$for (0; <nY_NUM_OF_ROWS/2; 1) {
// mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
//}
//// move the current frame U,V components to internal planar format
//$for (0; <nUV_NUM_OF_ROWS/2; 1) {
// mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
// mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
//}
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud NODDCHK // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#ifdef DI_ONLY
#else
 
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Pack and Save the DN Curr Frame for Next Run ///////////////
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:uw
//set the save DN position
shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // X origin * 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud NODDCHK // block width and height (8x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
//$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
// mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 0,2)
// mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,16) // 1st field luma from current frame (line 1,3)
// mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 0,2)
// mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 0,2)
// mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16+1)<16;8,2> // 1st field U from current frame (line 1,3)
// mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16)<16;8,2> // 1st field U from current frame (line 1,3)
//}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 0,2)
mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,16) // 1st field luma from current frame (line 1,3)
}
 
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 0,2)
mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16+1)<16;8,2> // 1st field U from current frame (line 1,3)
}
 
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 0,2)
mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16)<16;8,2> // 1st field U from current frame (line 1,3)
}
 
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
//$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
// mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0) // 1st field luma from current frame (line 0,2)
// mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 1,3)
// mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,1)<16;8,2> // 1st field U from current frame (line 0,2)
// mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,0)<16;8,2> // 1st field V from current frame (line 0,2)
// mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 1,3)
// mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 1,3)
//}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0) // 1st field luma from current frame (line 0,2)
mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 1,3)
}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,1)<16;8,2> // 1st field U from current frame (line 0,2)
mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 1,3)
}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,0)<16;8,2> // 1st field V from current frame (line 0,2)
mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 1,3)
}
SAVE_DN_CURR:
$for(0; <nY_NUM_OF_ROWS/2; 1) {
mov (8) mudMSGHDR_DN(%1+1)<1> udDN_YUV(%1)REGION(8,1)
}
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PA_DN_DI+nBI_DESTINATION_YUV:ud
#endif
 
// Save Processed frames
#include "DI_Save_PA.asm"
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_DN_ALG.asm
0,0 → 1,54
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_DISABLE
 
#include "DNDI.inc"
 
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DN_PA // Set the Number of GRFs in DNDI response
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // DN Curr Block Size for Write is 32x8
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_2 // HIST Block Size for Write is 4x2
 
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_COMMAND.asm"
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DNDI_Hist_Save.asm"
 
////////////////////////////////////// Pack and Save the DN Curr Frame for Next Run ///////////////
add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub npDN_YUV:w
$for (0; <nY_NUM_OF_ROWS; 1) {
mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nNODI_LUMA_OFFSET,%1*16)<16;16,1> // copy line of Y
}
$for (0; <nUV_NUM_OF_ROWS; 1) {
mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nNODI_CHROMA_OFFSET,%1*16+1)<16;8,2> // copy line of U
mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nNODI_CHROMA_OFFSET,%1*16)<16;8,2> // copy line of V
}
 
shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin * 2 (422 output)
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (32x8)
mov (8) mMSGHDR_DN<1>:ud rMSGSRC<8;8,1>:ud // message header
 
$for(0; <nY_NUM_OF_ROWS; 2) {
mov (16) mudMSGHDR_DN(1+%1)<1> udDN_YUV(%1)REGION(8,1) // Move DN Curr to MRF
}
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PA_DN_NODI+nBI_DESTINATION_YUV:ud
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PA_Scaling.asm
0,0 → 1,70
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PA_Scaling.asm ----------
#include "Scaling.inc"
 
// Build 16 elements ramp in float32 and normalized it
// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
 
//Module: PrepareScaleCoord.asm
 
// Setup for sampler msg hdr
mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
 
// Calculate 16 v based on the step Y and vertical origin
mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
 
// Calculate 16 u based on the step X and hori origin
// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
 
//Setup the constants for line instruction
mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
//------------------------------------------------------------------------------
 
$for (0; <nY_NUM_OF_ROWS; 1) {
 
// Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_YUV+nBI_CURRENT_SRC_YUV
 
// Calculate 16 v for next line
add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
 
// Scale back to [0, 255], convert f to ud
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(2) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(2)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(4) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(4)<1> acc0:f { Compr }
 
mov (16) DEST_V(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(2) //possible error due to truncation - vK
mov (16) DEST_U(%1)<1> SCALE_RESPONSE_YB(4) //possible error due to truncation - vK
 
}
 
#define nSRC_REGION nREGION_1
 
//------------------------------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_16x8.asm
0,0 → 1,60
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_16x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y each
// 2 sampler read for 8x8 U and 8x8 V (NV11\P208 input surface)
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 8x8 U and V sampling
// Enable red and blue channels
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
 
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
// Return U and V in 8 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
 
// 2nd 8x8 U and V sampling
// Enable red and blue channels
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
 
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
// Return U and V in 8 GRFs
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:4:4 internal planar
//------------------------------------------------------------------------------
#include "PL2_AVS_IEF_Unpack_16x8.asm"
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x4.asm
0,0 → 1,58
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_8x4.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y each
// 1 sampler read for 8x8 U and 8x8 V (NV11\NV12 input surface)
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 8x8 U and V sampling
// Enable red and blue channels
//Only 8x4 wil be used
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
 
// Calculate Chroma Step Size:
// for H direction: 16 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_X = 2 * Luma_Step_X
// for V direction: 8 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_Y = Luma_Step_Y
mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Step X for chroma
 
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
// Return U and V in 8 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:2:0 internal planar
//------------------------------------------------------------------------------
#include "PL2_AVS_IEF_Unpack_8x4.asm"
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x8.asm
0,0 → 1,57
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_8x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y each
// 1 sampler read for 8x8 U and 8x8 V (NV11\NV12 input surface)
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 8x8 U and V sampling
// Enable red and blue channels
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
 
// Calculate Chroma Step Size:
// for H direction: 16 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_X = 2 * Luma_Step_X
// for V direction: 8 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_Y = Luma_Step_Y
mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Step X for chroma
 
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
// Return U and V in 8 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
// Enable green channel only
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
 
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:2:2 internal planar
//------------------------------------------------------------------------------
#include "PL2_AVS_IEF_Unpack_8x8.asm"
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm
0,0 → 1,271
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_Unpack_16x8.asm ----------
#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
// Move first 8x8 words of Y to dest GRF (as packed)
mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(0,0)<4;4,1>
mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(0,8)<4;4,1>
mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(0,4)<4;4,1>
mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(0,12)<4;4,1>
mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(1,0)<4;4,1>
mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(1,8)<4;4,1>
mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(1,4)<4;4,1>
mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(1,12)<4;4,1>
mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
 
// Move first 8x8 words of U to dest GRF (as packed)
mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
 
// Move first 8x8 words of V to dest GRF (as packed)
mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(6,0)<4;4,1>
mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(6,8)<4;4,1>
mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(6,4)<4;4,1>
mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(6,12)<4;4,1>
mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(7,0)<4;4,1>
mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(7,8)<4;4,1>
mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(7,4)<4;4,1>
mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(7,12)<4;4,1>
mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(10,0)<4;4,1>
mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(10,8)<4;4,1>
mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(10,4)<4;4,1>
mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(10,12)<4;4,1>
mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(11,0)<4;4,1>
mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(11,8)<4;4,1>
mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(11,4)<4;4,1>
mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(11,12)<4;4,1>
 
// Move first 8x8 words of A to dest GRF (as packed)
mov (4) uwDEST_Y(0,3)<4> 0:uw
mov (4) uwDEST_Y(1,3)<4> 0:uw
mov (4) uwDEST_Y(4,3)<4> 0:uw
mov (4) uwDEST_Y(5,3)<4> 0:uw
mov (4) uwDEST_Y(8,3)<4> 0:uw
mov (4) uwDEST_Y(9,3)<4> 0:uw
mov (4) uwDEST_Y(12,3)<4> 0:uw
mov (4) uwDEST_Y(13,3)<4> 0:uw
mov (4) uwDEST_Y(16,3)<4> 0:uw
mov (4) uwDEST_Y(17,3)<4> 0:uw
mov (4) uwDEST_Y(20,3)<4> 0:uw
mov (4) uwDEST_Y(21,3)<4> 0:uw
mov (4) uwDEST_Y(24,3)<4> 0:uw
mov (4) uwDEST_Y(25,3)<4> 0:uw
mov (4) uwDEST_Y(28,3)<4> 0:uw
mov (4) uwDEST_Y(29,3)<4> 0:uw
 
// Move second 8x8 words of Y to dest GRF
mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
 
// Move second 8x8 words of U to dest GRF
mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
 
// Move second 8x8 words of V to dest GRF
mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
 
// Move second 8x8 words of A to dest GRF
mov (4) uwDEST_Y(2,3)<4> 0:uw
mov (4) uwDEST_Y(3,3)<4> 0:uw
mov (4) uwDEST_Y(6,3)<4> 0:uw
mov (4) uwDEST_Y(7,3)<4> 0:uw
mov (4) uwDEST_Y(10,3)<4> 0:uw
mov (4) uwDEST_Y(11,3)<4> 0:uw
mov (4) uwDEST_Y(14,3)<4> 0:uw
mov (4) uwDEST_Y(15,3)<4> 0:uw
mov (4) uwDEST_Y(18,3)<4> 0:uw
mov (4) uwDEST_Y(19,3)<4> 0:uw
mov (4) uwDEST_Y(22,3)<4> 0:uw
mov (4) uwDEST_Y(23,3)<4> 0:uw
mov (4) uwDEST_Y(26,3)<4> 0:uw
mov (4) uwDEST_Y(27,3)<4> 0:uw
mov (4) uwDEST_Y(30,3)<4> 0:uw
mov (4) uwDEST_Y(31,3)<4> 0:uw
 
/* This section will be used if 16-bit output is needed in planar format -vK
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> uwAVS_RESPONSE(%1,0)<8;4,1>
mov (8) uwDEST_Y(%1*2+1)<1> uwAVS_RESPONSE(%1,8)<8;4,1>
}
// Move 1st 8x8 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0)<1> uwAVS_RESPONSE(4,0)<8;4,1>
mov (8) uwDEST_U(1)<1> uwAVS_RESPONSE(4,8)<8;4,1>
mov (8) uwDEST_U(2)<1> uwAVS_RESPONSE(5,0)<8;4,1>
mov (8) uwDEST_U(3)<1> uwAVS_RESPONSE(5,8)<8;4,1>
mov (8) uwDEST_U(4)<1> uwAVS_RESPONSE(8,0)<8;4,1>
mov (8) uwDEST_U(5)<1> uwAVS_RESPONSE(8,8)<8;4,1>
mov (8) uwDEST_U(6)<1> uwAVS_RESPONSE(9,0)<8;4,1>
mov (8) uwDEST_U(7)<1> uwAVS_RESPONSE(9,8)<8;4,1>
 
// Move 1st 8x8 words of V to dest GRF
mov (8) uwDEST_V(0)<1> uwAVS_RESPONSE(6,0)<8;4,1>
mov (8) uwDEST_V(1)<1> uwAVS_RESPONSE(6,8)<8;4,1>
mov (8) uwDEST_V(2)<1> uwAVS_RESPONSE(7,0)<8;4,1>
mov (8) uwDEST_V(3)<1> uwAVS_RESPONSE(7,8)<8;4,1>
mov (8) uwDEST_V(4)<1> uwAVS_RESPONSE(10,0)<8;4,1>
mov (8) uwDEST_V(5)<1> uwAVS_RESPONSE(10,8)<8;4,1>
mov (8) uwDEST_V(6)<1> uwAVS_RESPONSE(11,0)<8;4,1>
mov (8) uwDEST_V(7)<1> uwAVS_RESPONSE(11,8)<8;4,1>
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> uwAVS_RESPONSE_2(%1,0)<8;4,1>
mov (8) uwDEST_Y(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1,8)<8;4,1>
}
 
// Move 2st 8x8 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0,8)<1> uwAVS_RESPONSE_2(4,0)<8;4,1>
mov (8) uwDEST_U(1,8)<1> uwAVS_RESPONSE_2(4,8)<8;4,1>
mov (8) uwDEST_U(2,8)<1> uwAVS_RESPONSE_2(5,0)<8;4,1>
mov (8) uwDEST_U(3,8)<1> uwAVS_RESPONSE_2(5,8)<8;4,1>
mov (8) uwDEST_U(4,8)<1> uwAVS_RESPONSE_2(8,0)<8;4,1>
mov (8) uwDEST_U(5,8)<1> uwAVS_RESPONSE_2(8,8)<8;4,1>
mov (8) uwDEST_U(6,8)<1> uwAVS_RESPONSE_2(9,0)<8;4,1>
mov (8) uwDEST_U(7,8)<1> uwAVS_RESPONSE_2(9,8)<8;4,1>
 
// Move 2st 8x8 words of V to dest GRF
mov (8) uwDEST_V(0,8)<1> uwAVS_RESPONSE_2(6,0)<8;4,1>
mov (8) uwDEST_V(1,8)<1> uwAVS_RESPONSE_2(6,8)<8;4,1>
mov (8) uwDEST_V(2,8)<1> uwAVS_RESPONSE_2(7,0)<8;4,1>
mov (8) uwDEST_V(3,8)<1> uwAVS_RESPONSE_2(7,8)<8;4,1>
mov (8) uwDEST_V(4,8)<1> uwAVS_RESPONSE_2(10,0)<8;4,1>
mov (8) uwDEST_V(5,8)<1> uwAVS_RESPONSE_2(10,8)<8;4,1>
mov (8) uwDEST_V(6,8)<1> uwAVS_RESPONSE_2(11,0)<8;4,1>
mov (8) uwDEST_V(7,8)<1> uwAVS_RESPONSE_2(11,8)<8;4,1>
*/
#else
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 1st 8x8 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move 1st 8x8 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 2st 8x8 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move 2st 8x8 words of V to dest GRF
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
#endif
 
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm
0,0 → 1,45
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_8x4.asm ----------
// Move first 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x4 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(9,1)<16;4,2>
 
// Move 8x4 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(11,1)<16;4,2>
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
//------------------------------------------------------------------------------
 
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 4
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm
0,0 → 1,53
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_AVS_IEF_8x8.asm ----------
// Move first 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x8 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move 8x8 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(11,1)<16;4,2>
mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
//------------------------------------------------------------------------------
 
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL2_Scaling.asm
0,0 → 1,71
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL2_Scaling.asm ----------
#include "Scaling.inc"
 
// Build 16 elements ramp in float32 and normalized it
// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
//Module: PrepareScaleCoord.asm
 
// Setup for sampler msg hdr
mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
 
// Calculate 16 v based on the step Y and vertical origin
mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
 
// Calculate 16 u based on the step X and hori origin
// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
 
//Setup the constants for line instruction
mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
 
//------------------------------------------------------------------------------
 
$for (0; <nY_NUM_OF_ROWS; 1) {
 
// Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_Y+nBI_CURRENT_SRC_Y
send (16) SCALE_RESPONSE_UW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_UV+nBI_CURRENT_SRC_UV
 
// Calculate 16 v for next line
add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
 
// Scale back to [0, 255], convert f to ud
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_UD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(2) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_UD(2)<1> acc0:f { Compr }
 
mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
mov (16) DEST_U(%1)<1> SCALE_RESPONSE_UB(0) //possible error due to truncation - vK
mov (16) DEST_V(%1)<1> SCALE_RESPONSE_UB(2) //possible error due to truncation - vK
 
}
 
#define nSRC_REGION nREGION_1
 
//------------------------------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_16x8.asm
0,0 → 1,69
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_16x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y surface
// 2 sampler read for 8x8 U surface
// 2 sampler read for 8x8 V surface
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// 1st 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 1st 8x8 U sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
// Return U in 4 GRFs
 
// 1st 8x8 V sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction to avoid back-2-back send instructions
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
// Return V in 4 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 2nd 8x8 U sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
// Return U in 4 GRFs
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
 
// 2nd 8x8 V sampling
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
// Return V in 4 GRFs
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:4:4 internal planar
//------------------------------------------------------------------------------
#include "PL3_AVS_IEF_Unpack_16x8.asm"
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x4.asm
0,0 → 1,60
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_8x4.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y surface
// 1 sampler read for 8x8 U surface
// 1 sampler read for 8x8 V surface
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// 1st 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 8x8 U sampling ; Only 8x4 will be used
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Calculate Step X for chroma
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
// Return U in 4 GRFs
 
// 8x8 V sampling ; Only 8x4 will be used
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
// Return V in 4 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f // Restore Step X for luma
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(12)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:2:0 internal planar
//------------------------------------------------------------------------------
#include "PL3_AVS_IEF_Unpack_8x4.asm"
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x8.asm
0,0 → 1,60
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_8x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 Y surface
// 1 sampler read for 8x8 U surface
// 1 sampler read for 8x8 V surface
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
// 1st 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
// 8x8 U sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Calculate Step X for chroma
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
// Return U in 4 GRFs
 
// 8x8 V sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
// Return V in 4 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
 
// 2nd 8x8 Y sampling
mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f // Restore Step X for luma
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(12)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
// Return Y in 4 GRFs
 
//------------------------------------------------------------------------------
// Unpacking sampler reads to 4:2:2 internal planar
//------------------------------------------------------------------------------
#include "PL3_AVS_IEF_Unpack_8x8.asm"
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm
0,0 → 1,240
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_Unpack_16x8.asm ----------
#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
// Move first 8x8 words of Y to dest GRF (as packed)
mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(0,0)<4;4,1>
mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(0,8)<4;4,1>
mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(0,4)<4;4,1>
mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(0,12)<4;4,1>
mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(1,0)<4;4,1>
mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(1,8)<4;4,1>
mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(1,4)<4;4,1>
mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(1,12)<4;4,1>
mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
 
// Move first 8x8 words of U to dest GRF (as packed)
mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(6,0)<4;4,1>
mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(6,8)<4;4,1>
mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(6,4)<4;4,1>
mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(6,12)<4;4,1>
mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(7,0)<4;4,1>
mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(7,8)<4;4,1>
mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(7,4)<4;4,1>
mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(7,12)<4;4,1>
 
// Move first 8x8 words of V to dest GRF (as packed)
mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(8,0)<4;4,1>
mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(8,8)<4;4,1>
mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(8,4)<4;4,1>
mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(8,12)<4;4,1>
mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(9,0)<4;4,1>
mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(9,8)<4;4,1>
mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(9,4)<4;4,1>
mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(9,12)<4;4,1>
mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(10,0)<4;4,1>
mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(10,8)<4;4,1>
mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(10,4)<4;4,1>
mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(10,12)<4;4,1>
mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(11,0)<4;4,1>
mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(11,8)<4;4,1>
mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(11,4)<4;4,1>
mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(11,12)<4;4,1>
 
// Move first 8x8 words of A to dest GRF (as packed)
mov (4) uwDEST_Y(0,3)<4> 0:uw
mov (4) uwDEST_Y(1,3)<4> 0:uw
mov (4) uwDEST_Y(4,3)<4> 0:uw
mov (4) uwDEST_Y(5,3)<4> 0:uw
mov (4) uwDEST_Y(8,3)<4> 0:uw
mov (4) uwDEST_Y(9,3)<4> 0:uw
mov (4) uwDEST_Y(12,3)<4> 0:uw
mov (4) uwDEST_Y(13,3)<4> 0:uw
mov (4) uwDEST_Y(16,3)<4> 0:uw
mov (4) uwDEST_Y(17,3)<4> 0:uw
mov (4) uwDEST_Y(20,3)<4> 0:uw
mov (4) uwDEST_Y(21,3)<4> 0:uw
mov (4) uwDEST_Y(24,3)<4> 0:uw
mov (4) uwDEST_Y(25,3)<4> 0:uw
mov (4) uwDEST_Y(28,3)<4> 0:uw
mov (4) uwDEST_Y(29,3)<4> 0:uw
 
// Move second 8x8 words of Y to dest GRF
mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
 
// Move second 8x8 words of U to dest GRF
mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
 
// Move second 8x8 words of V to dest GRF
mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
 
// Move second 8x8 words of A to dest GRF
mov (4) uwDEST_Y(2,3)<4> 0:uw
mov (4) uwDEST_Y(3,3)<4> 0:uw
mov (4) uwDEST_Y(6,3)<4> 0:uw
mov (4) uwDEST_Y(7,3)<4> 0:uw
mov (4) uwDEST_Y(10,3)<4> 0:uw
mov (4) uwDEST_Y(11,3)<4> 0:uw
mov (4) uwDEST_Y(14,3)<4> 0:uw
mov (4) uwDEST_Y(15,3)<4> 0:uw
mov (4) uwDEST_Y(18,3)<4> 0:uw
mov (4) uwDEST_Y(19,3)<4> 0:uw
mov (4) uwDEST_Y(22,3)<4> 0:uw
mov (4) uwDEST_Y(23,3)<4> 0:uw
mov (4) uwDEST_Y(26,3)<4> 0:uw
mov (4) uwDEST_Y(27,3)<4> 0:uw
mov (4) uwDEST_Y(30,3)<4> 0:uw
mov (4) uwDEST_Y(31,3)<4> 0:uw
 
/* This section will be used if 16-bit output is needed in planar format -vK
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> uwAVS_RESPONSE(%1)<8;4,1>
mov (8) uwDEST_Y(%1*2+1)<1> uwAVS_RESPONSE(%1,8)<8;4,1>
}
 
// Move 8x8 words of U to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_U(%1*2)<1> uwAVS_RESPONSE(%1+4)<8;4,1>
mov (8) uwDEST_U(%1*2+1)<1> uwAVS_RESPONSE(%1+4,8)<8;4,1>
}
 
// Move 8x8 words of V to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_V(%1*2)<1> uwAVS_RESPONSE(%1+8)<8;4,1>
mov (8) uwDEST_V(%1*2+1)<1> uwAVS_RESPONSE(%1+8,8)<8;4,1>
}
 
// Move 2nd 8x8 words of Y to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> uwAVS_RESPONSE_2(%1)<8;4,1>
mov (8) uwDEST_Y(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1,8)<8;4,1>
}
 
// Move 2nd 8x8 words of U to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_U(%1*2,8)<1> uwAVS_RESPONSE_2(%1+4)<8;4,1>
mov (8) uwDEST_U(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1+4,8)<8;4,1>
}
 
// Move 2nd 8x8 words of V to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_V(%1*2,8)<1> uwAVS_RESPONSE_2(%1+8)<8;4,1>
mov (8) uwDEST_V(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1+8,8)<8;4,1>
}
*/
#else /* OUTPUT_8_BIT */
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x8 words of U to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_U(%1*2)<1> ubAVS_RESPONSE(%1+4,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_U(%1*2+1)<1> ubAVS_RESPONSE(%1+4,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x8 words of V to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_V(%1*2)<1> ubAVS_RESPONSE(%1+8,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_V(%1*2+1)<1> ubAVS_RESPONSE(%1+8,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 2nd 8x8 words of U to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_U(%1*2,8)<1> ubAVS_RESPONSE_2(%1+4,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_U(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1+4,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 2nd 8x8 words of V to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_V(%1*2,8)<1> ubAVS_RESPONSE_2(%1+8,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_V(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1+8,8+1)<16;4,2> // Copy high byte in a word
}
#endif
//------------------------------------------------------------------------------
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm
0,0 → 1,45
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_Unpack_8x4.asm ----------
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x4 words of U to dest GRF (Copy high byte in a word)
mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,9)<16;4,2>
mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,9)<16;4,2>
 
// Move 8x4 words of V to dest GRF
mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(8,9)<16;4,2>
mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(9,9)<16;4,2>
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE(%1+12,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE(%1+12,8+1)<16;4,2> // Copy high byte in a word
}
 
//------------------------------------------------------------------------------
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 4
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm
0,0 → 1,44
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_AVS_IEF_Unpack_8x8.asm ----------
// Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
}
// Move 8x8 words of U to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_U(%1)<1> ubAVS_RESPONSE(%1+4,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_U(%1,8)<1> ubAVS_RESPONSE(%1+4,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 8x8 words of V to dest GRF
$for(0; <8/2; 1) {
mov (8) uwDEST_V(%1)<1> ubAVS_RESPONSE(%1+8,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_V(%1,8)<1> ubAVS_RESPONSE(%1+8,8+1)<16;4,2> // Copy high byte in a word
}
 
// Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
$for(0; <8/2; 1) {
mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE(%1+12,1)<16;4,2> // Copy high byte in a word
mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE(%1+12,8+1)<16;4,2> // Copy high byte in a word
}
 
//------------------------------------------------------------------------------
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL3_Scaling.asm
0,0 → 1,72
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- PL3_Scaling.asm ----------
#include "Scaling.inc"
 
// Build 16 elements ramp in float32 and normalized it
// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf { NoDDClr }//3, 2, 1, 0 in float vector
mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf { NoDDChk }//7, 6, 5, 4 in float vector
add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
 
//Module: PrepareScaleCoord.asm
 
// Setup for sampler msg hdr
mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
 
// Calculate 16 v based on the step Y and vertical origin
mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
 
// Calculate 16 u based on the step X and hori origin
// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
 
//Setup the constants for line instruction
mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
 
//------------------------------------------------------------------------------
 
$for (0; <nY_NUM_OF_ROWS; 1) {
// Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
mov (8) MSGHDR_SCALE<1>:ud rMSGSRC<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (16) SCALE_RESPONSE_VW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_V+nBI_CURRENT_SRC_V
send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_Y+nBI_CURRENT_SRC_Y
send (16) SCALE_RESPONSE_UW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_U+nBI_CURRENT_SRC_U
 
// Calculate 16 v for next line
add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
 
// Scale back to [0, 255], convert f to ud
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_VF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_VD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_UD(0)<1> acc0:f { Compr }
 
mov (16) DEST_V(%1)<1> SCALE_RESPONSE_VB(0) //possible error due to truncation - vK
mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
mov (16) DEST_U(%1)<1> SCALE_RESPONSE_UB(0) //possible error due to truncation - vK
 
}
 
#define nSRC_REGION nREGION_1
 
//------------------------------------------------------------------------------
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG.asm
0,0 → 1,85
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
 
#ifdef DI_ONLY
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DI // set the number of GRF
#else
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#endif
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_Command.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR_NODDCHK // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud NODDCHK // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
#ifdef DI_ONLY
#else
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
//set the save DN parameters
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w NODDCLR // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud NODDCLR_NODDCHK // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
}
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
SAVE_DN_CURR:
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
#endif
 
// Save Processed frames
#include "DI_Save_PA.asm"
 
 
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm
0,0 → 1,103
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
#undef nDPR_BLOCK_SIZE_UV
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // DN Block Size for UV Write/Read is 8x4
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_Command.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
// move the previous frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
}
// move the previous frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
// move the current frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
// move the current frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
SAVE_DN_CURR:
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
 
 
/////////////////////////////P208 UV Copy 422/////////////////////////////////////////////////////
//Read UV through DATAPORT
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x2)
mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
send (8) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_UV:ud
 
//Write UV through DATAPORT
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (16x2)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
mov (8) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<8;8,1>
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_UV:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm
0,0 → 1,107
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
#undef nDPR_BLOCK_SIZE_UV
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_2 // DN Block Size for UV Write/Read is 16x2
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_COMMAND.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
// move the previous frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
}
// move the previous frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
// move the current frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
// move the current frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
SAVE_DN_CURR:
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) mubMSGHDR_DN(1, %1*16)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
 
 
/////////////////////////////NV12 UV Copy 422/////////////////////////////////////////////////////
//Read UV through DATAPORT
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x2)
mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
send (8) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_UV:ud
 
//Write UV through DATAPORT
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (16x2)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
mov (8) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<8;8,1>
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_UV:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm
0,0 → 1,101
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_Command.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
// move the previous frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
}
// move the previous frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
// move the current frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
// move the current frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
SAVE_DN_CURR:
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
 
 
/////////////////////////////P208 UV Copy 422/////////////////////////////////////////////////////
//Read UV through DATAPORT
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // Y Block width and height (16x4) (U/V block size is the same)
mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
send (8) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_2+nBI_CURRENT_SRC_UV:ud
 
//Write UV through DATAPORT
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
mov (8) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<8;8,1>
mov (8) mudMSGHDR_DN(2)<1> udBOT_U_IO(1)<8;8,1>
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_UV:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm
0,0 → 1,106
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_ENABLE
 
#include "DNDI.inc"
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
#undef nUV_NUM_OF_ROWS
#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
#undef nDPR_BLOCK_SIZE_UV
#define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_2 // DN Block Size for UV Write/Read is 8x2
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_Command.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
// move the previous frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
}
// move the previous frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
// move the current frame Y component to internal planar format
$for (0; <nY_NUM_OF_ROWS/2; 1) {
mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
}
// move the current frame U,V components to internal planar format
$for (0; <nUV_NUM_OF_ROWS/2; 1) {
mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
}
 
////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
// Write STMM to memory
shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DI_Hist_Save.asm"
 
////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
jmpi (1) SAVE_DN_CURR
TOP_FIELD_FIRST:
$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
}
SAVE_DN_CURR:
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
 
 
/////////////////////////////IMC3 UV Copy 422/////////////////////////////////////////////////////
//Read UV through DATAPORT
add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x2)
mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
send (4) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_U:ud
send (4) udBOT_V_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_V:ud
 
//Write UV through DATAPORT
mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (8x2)
mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
mov (4) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<4;4,1>
send (4) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_U:ud
mov (4) mudMSGHDR_DN(1)<1> udBOT_V_IO(0)<4;4,1>
send (4) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_V:ud
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/PL_DN_ALG.asm
0,0 → 1,35
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
#define DI_DISABLE
 
#include "DNDI.inc"
 
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
 
#undef nSMPL_RESP_LEN
#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DN_PL // Set the Number of GRFs in DNDI response
#undef nDPW_BLOCK_SIZE_DN
#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // DN Curr Block Size for Write is 16x8
#undef nDPW_BLOCK_SIZE_HIST
#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_2 // HIST Block Size for Write is 4x2
 
////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
#include "DNDI_COMMAND.asm"
 
////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
$for (0; <nY_NUM_OF_ROWS; 1) {
mov (16) uwDEST_Y(0,%1*16)<1> ubRESP(nNODI_LUMA_OFFSET,%1*16)<16;16,1> // copy line of Y
}
 
////////////////////////////////////// Save the History Data for Next Run /////////////////////////
#include "DNDI_Hist_Save.asm"
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_16x8.asm
0,0 → 1,33
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- RGB_AVS_IEF_16x8.asm ----------
 
#include "AVS_IEF.inc"
 
//------------------------------------------------------------------------------
// 2 sampler reads for 8x8 ARGB packed
//------------------------------------------------------------------------------
 
// 1st 8x8 setup
#include "AVS_SetupFirstBlock.asm"
 
mov (1) rAVS_8x8_HDR.2:ud nAVS_ALL_CHANNELS:ud // Enable ARGB channels
mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_4CH+nSI_SRC_RGB+nBI_CURRENT_SRC_YUV
// Return ARGB in 16 GRFs
 
// 2nd 8x8 setup
#include "AVS_SetupSecondBlock.asm"
mov (16) mAVS_8x8_HDR_2.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR_2 udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_4CH+nSI_SRC_RGB+nBI_CURRENT_SRC_YUV
// Return ARGB in 16 GRFs
 
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm
0,0 → 1,251
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- RGB_AVS_IEF_Unpack_16x8.asm ----------
#include "AVS_IEF.inc"
 
#ifdef AVS_OUTPUT_16_BIT
// Move first 8x8 words of B to dest GRF (as packed)
mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(4,0)<4;4,1>
mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(4,8)<4;4,1>
mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(4,4)<4;4,1>
mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(4,12)<4;4,1>
mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(5,0)<4;4,1>
mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(5,8)<4;4,1>
mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(5,4)<4;4,1>
mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(5,12)<4;4,1>
mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(12,0)<4;4,1>
mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(12,8)<4;4,1>
mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(12,4)<4;4,1>
mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(12,12)<4;4,1>
mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(13,0)<4;4,1>
mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(13,8)<4;4,1>
mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(13,4)<4;4,1>
mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(13,12)<4;4,1>
 
// Move first 8x8 words of G to dest GRF (as packed)
mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(10,0)<4;4,1>
mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(10,8)<4;4,1>
mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(10,4)<4;4,1>
mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(10,12)<4;4,1>
mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(11,0)<4;4,1>
mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(11,8)<4;4,1>
mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(11,4)<4;4,1>
mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(11,12)<4;4,1>
 
// Move first 8x8 words of R to dest GRF (as packed)
mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(0,0)<4;4,1>
mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(0,8)<4;4,1>
mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(0,4)<4;4,1>
mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(0,12)<4;4,1>
mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(1,0)<4;4,1>
mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(1,8)<4;4,1>
mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(1,4)<4;4,1>
mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(1,12)<4;4,1>
mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
 
// Move first 8x8 words of A to dest GRF (as packed)
mov (4) uwDEST_Y(0,3)<4> uwAVS_RESPONSE(6,0)<4;4,1>
mov (4) uwDEST_Y(1,3)<4> uwAVS_RESPONSE(6,8)<4;4,1>
mov (4) uwDEST_Y(4,3)<4> uwAVS_RESPONSE(6,4)<4;4,1>
mov (4) uwDEST_Y(5,3)<4> uwAVS_RESPONSE(6,12)<4;4,1>
mov (4) uwDEST_Y(8,3)<4> uwAVS_RESPONSE(7,0)<4;4,1>
mov (4) uwDEST_Y(9,3)<4> uwAVS_RESPONSE(7,8)<4;4,1>
mov (4) uwDEST_Y(12,3)<4> uwAVS_RESPONSE(7,4)<4;4,1>
mov (4) uwDEST_Y(13,3)<4> uwAVS_RESPONSE(7,12)<4;4,1>
mov (4) uwDEST_Y(16,3)<4> uwAVS_RESPONSE(14,0)<4;4,1>
mov (4) uwDEST_Y(17,3)<4> uwAVS_RESPONSE(14,8)<4;4,1>
mov (4) uwDEST_Y(20,3)<4> uwAVS_RESPONSE(14,4)<4;4,1>
mov (4) uwDEST_Y(21,3)<4> uwAVS_RESPONSE(14,12)<4;4,1>
mov (4) uwDEST_Y(24,3)<4> uwAVS_RESPONSE(15,0)<4;4,1>
mov (4) uwDEST_Y(25,3)<4> uwAVS_RESPONSE(15,8)<4;4,1>
mov (4) uwDEST_Y(28,3)<4> uwAVS_RESPONSE(15,4)<4;4,1>
mov (4) uwDEST_Y(29,3)<4> uwAVS_RESPONSE(15,12)<4;4,1>
 
// Move second 8x8 words of B to dest GRF
mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(12,0)<4;4,1>
mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(12,8)<4;4,1>
mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(12,4)<4;4,1>
mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(12,12)<4;4,1>
mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(13,0)<4;4,1>
mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(13,8)<4;4,1>
mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(13,4)<4;4,1>
mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(13,12)<4;4,1>
 
// Move second 8x8 words of G to dest GRF
mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
 
// Move second 8x8 words of R to dest GRF
mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
 
// Move second 8x8 words of A to dest GRF
mov (4) uwDEST_Y(2,3)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
mov (4) uwDEST_Y(3,3)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
mov (4) uwDEST_Y(6,3)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
mov (4) uwDEST_Y(7,3)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
mov (4) uwDEST_Y(10,3)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
mov (4) uwDEST_Y(11,3)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
mov (4) uwDEST_Y(14,3)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
mov (4) uwDEST_Y(15,3)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
mov (4) uwDEST_Y(18,3)<4> uwAVS_RESPONSE_2(14,0)<4;4,1>
mov (4) uwDEST_Y(19,3)<4> uwAVS_RESPONSE_2(14,8)<4;4,1>
mov (4) uwDEST_Y(22,3)<4> uwAVS_RESPONSE_2(14,4)<4;4,1>
mov (4) uwDEST_Y(23,3)<4> uwAVS_RESPONSE_2(14,12)<4;4,1>
mov (4) uwDEST_Y(26,3)<4> uwAVS_RESPONSE_2(15,0)<4;4,1>
mov (4) uwDEST_Y(27,3)<4> uwAVS_RESPONSE_2(15,8)<4;4,1>
mov (4) uwDEST_Y(30,3)<4> uwAVS_RESPONSE_2(15,4)<4;4,1>
mov (4) uwDEST_Y(31,3)<4> uwAVS_RESPONSE_2(15,12)<4;4,1>
 
#else /* OUTPUT_8_BIT */
// Move first 8x8 words of B to dest GRF
mov (8) ubDEST_Y(0,2)<4> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) ubDEST_Y(2,2)<4> ubAVS_RESPONSE(4,8+1)<16;4,2>
mov (8) ubDEST_Y(4,2)<4> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) ubDEST_Y(6,2)<4> ubAVS_RESPONSE(5,8+1)<16;4,2>
mov (8) ubDEST_Y(8,2)<4> ubAVS_RESPONSE(12,1)<16;4,2>
mov (8) ubDEST_Y(10,2)<4> ubAVS_RESPONSE(12,8+1)<16;4,2>
mov (8) ubDEST_Y(12,2)<4> ubAVS_RESPONSE(13,1)<16;4,2>
mov (8) ubDEST_Y(14,2)<4> ubAVS_RESPONSE(13,8+1)<16;4,2>
 
// Move first 8x8 words of G to dest GRF
mov (8) ubDEST_Y(0,1)<4> ubAVS_RESPONSE(2,1)<16;4,2>
mov (8) ubDEST_Y(2,1)<4> ubAVS_RESPONSE(2,8+1)<16;4,2>
mov (8) ubDEST_Y(4,1)<4> ubAVS_RESPONSE(3,1)<16;4,2>
mov (8) ubDEST_Y(6,1)<4> ubAVS_RESPONSE(3,8+1)<16;4,2>
mov (8) ubDEST_Y(8,1)<4> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) ubDEST_Y(10,1)<4> ubAVS_RESPONSE(10,8+1)<16;4,2>
mov (8) ubDEST_Y(12,1)<4> ubAVS_RESPONSE(11,1)<16;4,2>
mov (8) ubDEST_Y(14,1)<4> ubAVS_RESPONSE(11,8+1)<16;4,2>
 
// Move first 8x8 words of R to dest GRF
mov (8) ubDEST_Y(0,0)<4> ubAVS_RESPONSE(0,1)<16;4,2>
mov (8) ubDEST_Y(2,0)<4> ubAVS_RESPONSE(0,8+1)<16;4,2>
mov (8) ubDEST_Y(4,0)<4> ubAVS_RESPONSE(1,1)<16;4,2>
mov (8) ubDEST_Y(6,0)<4> ubAVS_RESPONSE(1,8+1)<16;4,2>
mov (8) ubDEST_Y(8,0)<4> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) ubDEST_Y(10,0)<4> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) ubDEST_Y(12,0)<4> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) ubDEST_Y(14,0)<4> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move first 8x8 words of A to dest GRF
mov (8) ubDEST_Y(0,3)<4> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) ubDEST_Y(2,3)<4> ubAVS_RESPONSE(6,8+1)<16;4,2>
mov (8) ubDEST_Y(4,3)<4> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) ubDEST_Y(6,3)<4> ubAVS_RESPONSE(7,8+1)<16;4,2>
mov (8) ubDEST_Y(8,3)<4> ubAVS_RESPONSE(14,1)<16;4,2>
mov (8) ubDEST_Y(10,3)<4> ubAVS_RESPONSE(14,8+1)<16;4,2>
mov (8) ubDEST_Y(12,3)<4> ubAVS_RESPONSE(15,1)<16;4,2>
mov (8) ubDEST_Y(14,3)<4> ubAVS_RESPONSE(15,8+1)<16;4,2>
 
// Move second 8x8 words of B to dest GRF
mov (8) ubDEST_Y(1,2)<4> ubAVS_RESPONSE_2(4,1)<16;4,2>
mov (8) ubDEST_Y(3,2)<4> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
mov (8) ubDEST_Y(5,2)<4> ubAVS_RESPONSE_2(5,1)<16;4,2>
mov (8) ubDEST_Y(7,2)<4> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
mov (8) ubDEST_Y(9,2)<4> ubAVS_RESPONSE_2(12,1)<16;4,2>
mov (8) ubDEST_Y(11,2)<4> ubAVS_RESPONSE_2(12,8+1)<16;4,2>
mov (8) ubDEST_Y(13,2)<4> ubAVS_RESPONSE_2(13,1)<16;4,2>
mov (8) ubDEST_Y(15,2)<4> ubAVS_RESPONSE_2(13,8+1)<16;4,2>
 
// Move second 8x8 words of G to dest GRF
mov (8) ubDEST_Y(1,1)<4> ubAVS_RESPONSE_2(2,1)<16;4,2>
mov (8) ubDEST_Y(3,1)<4> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
mov (8) ubDEST_Y(5,1)<4> ubAVS_RESPONSE_2(3,1)<16;4,2>
mov (8) ubDEST_Y(7,1)<4> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
mov (8) ubDEST_Y(9,1)<4> ubAVS_RESPONSE_2(10,1)<16;4,2>
mov (8) ubDEST_Y(11,1)<4> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
mov (8) ubDEST_Y(13,1)<4> ubAVS_RESPONSE_2(11,1)<16;4,2>
mov (8) ubDEST_Y(15,1)<4> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
 
// Move second 8x8 words of R to dest GRF
mov (8) ubDEST_Y(1,0)<4> ubAVS_RESPONSE_2(0,1)<16;4,2>
mov (8) ubDEST_Y(3,0)<4> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
mov (8) ubDEST_Y(5,0)<4> ubAVS_RESPONSE_2(1,1)<16;4,2>
mov (8) ubDEST_Y(7,0)<4> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
mov (8) ubDEST_Y(9,0)<4> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) ubDEST_Y(11,0)<4> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) ubDEST_Y(13,0)<4> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) ubDEST_Y(15,0)<4> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move second 8x8 words of A to dest GRF
mov (8) ubDEST_Y(1,3)<4> ubAVS_RESPONSE_2(6,1)<16;4,2>
mov (8) ubDEST_Y(3,3)<4> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
mov (8) ubDEST_Y(5,3)<4> ubAVS_RESPONSE_2(7,1)<16;4,2>
mov (8) ubDEST_Y(7,3)<4> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
mov (8) ubDEST_Y(9,3)<4> ubAVS_RESPONSE_2(14,1)<16;4,2>
mov (8) ubDEST_Y(11,3)<4> ubAVS_RESPONSE_2(14,8+1)<16;4,2>
mov (8) ubDEST_Y(13,3)<4> ubAVS_RESPONSE_2(15,1)<16;4,2>
mov (8) ubDEST_Y(15,3)<4> ubAVS_RESPONSE_2(15,8+1)<16;4,2>
#endif
//------------------------------------------------------------------------------
 
// Set to write bottom region to memory
#define SRC_REGION REGION_2
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm
0,0 → 1,260
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- RGB_AVS_IEF_Unpack_16x8.asm ----------
#include "AVS_IEF.inc"
 
.declare DEST_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
 
 
#ifdef AVS_OUTPUT_16_BIT
//This portion will need to be changed if unpacking is required for Y416 kernels (in case of blending etc) - vK
 
//// Move first 8x8 words of B to dest GRF (as packed)
// mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(4,0)<4;4,1>
// mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(4,8)<4;4,1>
// mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(4,4)<4;4,1>
// mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(4,12)<4;4,1>
// mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(5,0)<4;4,1>
// mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(5,8)<4;4,1>
// mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(5,4)<4;4,1>
// mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(5,12)<4;4,1>
// mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(12,0)<4;4,1>
// mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(12,8)<4;4,1>
// mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(12,4)<4;4,1>
// mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(12,12)<4;4,1>
// mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(13,0)<4;4,1>
// mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(13,8)<4;4,1>
// mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(13,4)<4;4,1>
// mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(13,12)<4;4,1>
//
//// Move first 8x8 words of G to dest GRF (as packed)
// mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
// mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
// mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
// mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
// mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
// mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
// mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
// mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
// mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(10,0)<4;4,1>
// mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(10,8)<4;4,1>
// mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(10,4)<4;4,1>
// mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(10,12)<4;4,1>
// mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(11,0)<4;4,1>
// mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(11,8)<4;4,1>
// mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(11,4)<4;4,1>
// mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(11,12)<4;4,1>
//
//// Move first 8x8 words of R to dest GRF (as packed)
// mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(0,0)<4;4,1>
// mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(0,8)<4;4,1>
// mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(0,4)<4;4,1>
// mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(0,12)<4;4,1>
// mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(1,0)<4;4,1>
// mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(1,8)<4;4,1>
// mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(1,4)<4;4,1>
// mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(1,12)<4;4,1>
// mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
// mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
// mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
// mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
// mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
// mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
// mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
// mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
//
//// Move first 8x8 words of A to dest GRF (as packed)
// mov (4) uwDEST_Y(0,3)<4> uwAVS_RESPONSE(6,0)<4;4,1>
// mov (4) uwDEST_Y(1,3)<4> uwAVS_RESPONSE(6,8)<4;4,1>
// mov (4) uwDEST_Y(4,3)<4> uwAVS_RESPONSE(6,4)<4;4,1>
// mov (4) uwDEST_Y(5,3)<4> uwAVS_RESPONSE(6,12)<4;4,1>
// mov (4) uwDEST_Y(8,3)<4> uwAVS_RESPONSE(7,0)<4;4,1>
// mov (4) uwDEST_Y(9,3)<4> uwAVS_RESPONSE(7,8)<4;4,1>
// mov (4) uwDEST_Y(12,3)<4> uwAVS_RESPONSE(7,4)<4;4,1>
// mov (4) uwDEST_Y(13,3)<4> uwAVS_RESPONSE(7,12)<4;4,1>
// mov (4) uwDEST_Y(16,3)<4> uwAVS_RESPONSE(14,0)<4;4,1>
// mov (4) uwDEST_Y(17,3)<4> uwAVS_RESPONSE(14,8)<4;4,1>
// mov (4) uwDEST_Y(20,3)<4> uwAVS_RESPONSE(14,4)<4;4,1>
// mov (4) uwDEST_Y(21,3)<4> uwAVS_RESPONSE(14,12)<4;4,1>
// mov (4) uwDEST_Y(24,3)<4> uwAVS_RESPONSE(15,0)<4;4,1>
// mov (4) uwDEST_Y(25,3)<4> uwAVS_RESPONSE(15,8)<4;4,1>
// mov (4) uwDEST_Y(28,3)<4> uwAVS_RESPONSE(15,4)<4;4,1>
// mov (4) uwDEST_Y(29,3)<4> uwAVS_RESPONSE(15,12)<4;4,1>
//
//// Move second 8x8 words of B to dest GRF
// mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
// mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
// mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
// mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
// mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
// mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
// mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
// mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
// mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(12,0)<4;4,1>
// mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(12,8)<4;4,1>
// mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(12,4)<4;4,1>
// mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(12,12)<4;4,1>
// mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(13,0)<4;4,1>
// mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(13,8)<4;4,1>
// mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(13,4)<4;4,1>
// mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(13,12)<4;4,1>
//
//// Move second 8x8 words of G to dest GRF
// mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
// mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
// mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
// mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
// mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
// mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
// mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
// mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
// mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
// mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
// mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
// mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
// mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
// mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
// mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
// mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
//
//// Move second 8x8 words of R to dest GRF
// mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
// mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
// mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
// mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
// mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
// mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
// mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
// mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
// mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
// mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
// mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
// mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
// mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
// mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
// mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
// mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
//
//// Move second 8x8 words of A to dest GRF
// mov (4) uwDEST_Y(2,3)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
// mov (4) uwDEST_Y(3,3)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
// mov (4) uwDEST_Y(6,3)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
// mov (4) uwDEST_Y(7,3)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
// mov (4) uwDEST_Y(10,3)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
// mov (4) uwDEST_Y(11,3)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
// mov (4) uwDEST_Y(14,3)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
// mov (4) uwDEST_Y(15,3)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
// mov (4) uwDEST_Y(18,3)<4> uwAVS_RESPONSE_2(14,0)<4;4,1>
// mov (4) uwDEST_Y(19,3)<4> uwAVS_RESPONSE_2(14,8)<4;4,1>
// mov (4) uwDEST_Y(22,3)<4> uwAVS_RESPONSE_2(14,4)<4;4,1>
// mov (4) uwDEST_Y(23,3)<4> uwAVS_RESPONSE_2(14,12)<4;4,1>
// mov (4) uwDEST_Y(26,3)<4> uwAVS_RESPONSE_2(15,0)<4;4,1>
// mov (4) uwDEST_Y(27,3)<4> uwAVS_RESPONSE_2(15,8)<4;4,1>
// mov (4) uwDEST_Y(30,3)<4> uwAVS_RESPONSE_2(15,4)<4;4,1>
// mov (4) uwDEST_Y(31,3)<4> uwAVS_RESPONSE_2(15,12)<4;4,1>
 
#else /* OUTPUT_8_BIT */
 
// Move first 8x8 words of B to dest GRF
mov (8) DEST_B(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
mov (8) DEST_B(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
mov (8) DEST_B(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
mov (8) DEST_B(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
mov (8) DEST_B(4)<1> ubAVS_RESPONSE(12,1)<16;4,2>
mov (8) DEST_B(5)<1> ubAVS_RESPONSE(12,8+1)<16;4,2>
mov (8) DEST_B(6)<1> ubAVS_RESPONSE(13,1)<16;4,2>
mov (8) DEST_B(7)<1> ubAVS_RESPONSE(13,8+1)<16;4,2>
 
// Move first 8x8 words of G to dest GRF
mov (8) DEST_G(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
mov (8) DEST_G(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
mov (8) DEST_G(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
mov (8) DEST_G(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
mov (8) DEST_G(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
mov (8) DEST_G(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
mov (8) DEST_G(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
mov (8) DEST_G(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
 
// Move first 8x8 words of R to dest GRF
mov (8) DEST_R(0)<1> ubAVS_RESPONSE(0,1)<16;4,2>
mov (8) DEST_R(1)<1> ubAVS_RESPONSE(0,8+1)<16;4,2>
mov (8) DEST_R(2)<1> ubAVS_RESPONSE(1,1)<16;4,2>
mov (8) DEST_R(3)<1> ubAVS_RESPONSE(1,8+1)<16;4,2>
mov (8) DEST_R(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
mov (8) DEST_R(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
mov (8) DEST_R(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
mov (8) DEST_R(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
 
// Move first 8x8 words of A to dest GRF
mov (8) DEST_A(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
mov (8) DEST_A(1)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
mov (8) DEST_A(2)<1> ubAVS_RESPONSE(7,1)<16;4,2>
mov (8) DEST_A(3)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
mov (8) DEST_A(4)<1> ubAVS_RESPONSE(14,1)<16;4,2>
mov (8) DEST_A(5)<1> ubAVS_RESPONSE(14,8+1)<16;4,2>
mov (8) DEST_A(6)<1> ubAVS_RESPONSE(15,1)<16;4,2>
mov (8) DEST_A(7)<1> ubAVS_RESPONSE(15,8+1)<16;4,2>
 
// Move second 8x8 words of B to dest GRF
mov (8) DEST_B(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
mov (8) DEST_B(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
mov (8) DEST_B(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
mov (8) DEST_B(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
mov (8) DEST_B(4,8)<1> ubAVS_RESPONSE_2(12,1)<16;4,2>
mov (8) DEST_B(5,8)<1> ubAVS_RESPONSE_2(12,8+1)<16;4,2>
mov (8) DEST_B(6,8)<1> ubAVS_RESPONSE_2(13,1)<16;4,2>
mov (8) DEST_B(7,8)<1> ubAVS_RESPONSE_2(13,8+1)<16;4,2>
 
// Move second 8x8 words of G to dest GRF
mov (8) DEST_G(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
mov (8) DEST_G(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
mov (8) DEST_G(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
mov (8) DEST_G(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
mov (8) DEST_G(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
mov (8) DEST_G(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
mov (8) DEST_G(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
mov (8) DEST_G(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
 
// Move second 8x8 words of R to dest GRF
mov (8) DEST_R(0,8)<1> ubAVS_RESPONSE_2(0,1)<16;4,2>
mov (8) DEST_R(1,8)<1> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
mov (8) DEST_R(2,8)<1> ubAVS_RESPONSE_2(1,1)<16;4,2>
mov (8) DEST_R(3,8)<1> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
mov (8) DEST_R(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
mov (8) DEST_R(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
mov (8) DEST_R(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
mov (8) DEST_R(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
 
// Move second 8x8 words of A to dest GRF
mov (8) DEST_A(0,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
mov (8) DEST_A(1,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
mov (8) DEST_A(2,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
mov (8) DEST_A(3,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
mov (8) DEST_A(4,8)<1> ubAVS_RESPONSE_2(14,1)<16;4,2>
mov (8) DEST_A(5,8)<1> ubAVS_RESPONSE_2(14,8+1)<16;4,2>
mov (8) DEST_A(6,8)<1> ubAVS_RESPONSE_2(15,1)<16;4,2>
mov (8) DEST_A(7,8)<1> ubAVS_RESPONSE_2(15,8+1)<16;4,2>
#endif
//------------------------------------------------------------------------------
 
// Set to write bottom region to memory
#define SRC_REGION REGION_1
// Re-define new # of lines
#undef nUV_NUM_OF_ROWS
#undef nY_NUM_OF_ROWS
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/RGB_Scaling.asm
0,0 → 1,72
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
//---------- RGB_Scaling.asm ----------
#include "Scaling.inc"
 
// Build 16 elements ramp in float32 and normalized it
// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
 
//Module: PrepareScaleCoord.asm
 
// Setup for sampler msg hdr
mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
 
// Calculate 16 v based on the step Y and vertical origin
mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
 
// Calculate 16 u based on the step X and hori origin
// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
 
//Setup the constants for line instruction
mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
 
//------------------------------------------------------------------------------
 
$for (0; <nY_NUM_OF_ROWS; 1) {
 
// Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_RGB+nBI_CURRENT_SRC_RGB
 
// Calculate 16 v for next line
add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
 
// Scale back to [0, 255], convert f to ud
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(2) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(2)<1> acc0:f { Compr }
 
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(4) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(4)<1> acc0:f { Compr }
 
//#if defined(SAVE_ARGB) //Only needed if Alpha value is written to the destination
line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(6) { Compr } // Process B, V
mov (16) SCALE_RESPONSE_YD(6)<1> acc0:f { Compr }
//#endif
 
mov (16) DEST_R(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
mov (16) DEST_G(%1)<1> SCALE_RESPONSE_YB(2) //possible error due to truncation - vK
mov (16) DEST_B(%1)<1> SCALE_RESPONSE_YB(4) //possible error due to truncation - vK
mov (16) DEST_A(%1)<1> SCALE_RESPONSE_YB(6) //possible error due to truncation - vK
}
/drivers/video/i965/shaders/post_processing/gen5_6/Core_Kernels/Scaling.inc
0,0 → 1,75
/*
* All Video Processing kernels
* Copyright © <2010>, Intel Corporation.
*
* This program is licensed under the terms and conditions of the
* Eclipse Public License (EPL), version 1.0. The full text of the EPL is at
* http://www.opensource.org/licenses/eclipse-1.0.php.
*
*/
 
// File name: Scaling.inc
 
#ifndef _SCALING_INC_
#define _SCALING_INC_
 
// Local variables----------------------------------------------------------------------------------
#define MSGHDR_SCALE m1 // Message Payload Header (Uses m2, m3, m4, m5 implicitly)
 
//--------------------------------------------------------------------------------------------------
//r10.0 thru r33.0; Primary surface read from sampler (16x8)
#define DEST_Y uwTOP_Y
#define DEST_U uwTOP_U
#define DEST_V uwTOP_V
 
//r10.0 thru r41.0
.declare DEST_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
.declare DEST_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
 
//r56.0 thru r79.0
.declare SCALE_RESPONSE_YF Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=f
.declare SCALE_RESPONSE_UF Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=f
.declare SCALE_RESPONSE_VF Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=f
 
.declare SCALE_RESPONSE_YW Base=REG(r,nBOT_Y) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
.declare SCALE_RESPONSE_UW Base=REG(r,nBOT_U) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
.declare SCALE_RESPONSE_VW Base=REG(r,nBOT_V) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
 
.declare SCALE_RESPONSE_YD Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare SCALE_RESPONSE_UD Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
.declare SCALE_RESPONSE_VD Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
 
.declare SCALE_RESPONSE_YB Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
.declare SCALE_RESPONSE_UB Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
.declare SCALE_RESPONSE_VB Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
 
.declare SAMPLER_RAMP Base=REG(r,42) ElementSize=4 SrcRegion=<8;8,1> Type=f // 2 GRFs, 16 elements
 
//#define SCALE_STEP_X REG2(r,43,0)
//#define SCALE_COORD_X REG2(r,43,3)
 
#define SCALE_LINE_P255 REG2(r,43,4) // = 255.0 Used in 'line' inst to multiply 255, add 0.5, and round to int.
#define SCALE_LINE_P0_5 REG2(r,43,7) // = 0.5
 
//r44.0 thru r45.0
#define SCALE_COORD_Y REG(r,44) //2GRF
 
 
// Send Message [DevILK] Message Descriptor
// MBZ MsgL=5 MsgR=8 H MBZ SIMD MsgType SmplrIndx BindTab
// 000 0 101 0 1000 1 0 10 0000 0000 00000000
// 0 A 8 A 0 0 0 0
// MsgL=1+2*2(u,v)=5 MsgR=8
#define SMPLR_MSG_DSC 0x0A8A0000 // ILK Sampler Message Descriptor
 
// Re-define new number of lines
#undef nY_NUM_OF_ROWS
#undef nUV_NUM_OF_ROWS
 
#define nY_NUM_OF_ROWS 8
#define nUV_NUM_OF_ROWS 8
 
 
#endif //_SCALING_INC_
/drivers/video/i965/shaders/post_processing/gen5_6/null.g4a
0,0 → 1,3
/* Just for test */
 
send(16) 0 acc0<1>UW g0<8,8,1>UW thread_spawner(0, 0, 0) mlen 1 rlen 0 {align1 EOT};
/drivers/video/i965/shaders/post_processing/gen5_6/null.g4b
0,0 → 1,0
{ 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
/drivers/video/i965/shaders/post_processing/gen5_6/null.g4b.gen5
0,0 → 1,0
{ 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/null.g6a
0,0 → 1,3
/* Just for test */
 
send(16) 0 acc0<1>UW g0<8,8,1>UW thread_spawner(0, 0, 0) mlen 1 rlen 0 {align1 EOT};
/drivers/video/i965/shaders/post_processing/gen5_6/null.g6b
0,0 → 1,0
{ 0x07800031, 0x24001cc8, 0x00000000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_avs_nv12.asm
0,0 → 1,20
// Module name: NV12_AVS_NV12
.kernel NV12_AVS_NV12
.code
 
#define INC_SCALING
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "PL2_AVS_IEF_16x8.asm"
#include "PL16x8_PL8x4.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_avs_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5
0,0 → 1,170
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x01000005, 0x20002d2c, 0x00000088, 0x80008000 },
{ 0x00010001, 0x20c003fd, 0x00000000, 0x00000000 },
{ 0x00000001, 0x212003bd, 0x000000c0, 0x00000000 },
{ 0x00000001, 0x212403bd, 0x000000bc, 0x00000000 },
{ 0x00000001, 0x213403bd, 0x00000038, 0x00000000 },
{ 0x00200001, 0x612803bd, 0x004500a4, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
{ 0x00802001, 0x20000022, 0x008d0100, 0x00000000 },
{ 0x00000031, 0x25401c09, 0x208d0000, 0x044bb401 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x25c01c09, 0x208d0000, 0x048bb802 },
{ 0x00000001, 0x240803bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x000000bc, 0x41000000 },
{ 0x00000048, 0x21287fbd, 0x000000c0, 0x41e00000 },
{ 0x00000001, 0x240403bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x21247fbd, 0x000000c0, 0x41000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
{ 0x00802001, 0x20000022, 0x008d0100, 0x00000000 },
{ 0x00000031, 0x27401c09, 0x208d0000, 0x044bb401 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
{ 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x27c01c09, 0x208d0000, 0x048bb802 },
{ 0x00600001, 0x21400229, 0x00aa0541, 0x00000000 },
{ 0x00600001, 0x21600229, 0x00aa0549, 0x00000000 },
{ 0x00600001, 0x21800229, 0x00aa0561, 0x00000000 },
{ 0x00600001, 0x21a00229, 0x00aa0569, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x00aa0581, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x00aa0589, 0x00000000 },
{ 0x00600001, 0x22000229, 0x00aa05a1, 0x00000000 },
{ 0x00600001, 0x22200229, 0x00aa05a9, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00aa05c1, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00aa05c9, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00aa05e1, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00aa05e9, 0x00000000 },
{ 0x00600001, 0x22c00229, 0x00aa0641, 0x00000000 },
{ 0x00600001, 0x22e00229, 0x00aa0649, 0x00000000 },
{ 0x00600001, 0x23000229, 0x00aa0661, 0x00000000 },
{ 0x00600001, 0x23200229, 0x00aa0669, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00aa0601, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00aa0609, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00aa0621, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00aa0629, 0x00000000 },
{ 0x00600001, 0x23c00229, 0x00aa0681, 0x00000000 },
{ 0x00600001, 0x23e00229, 0x00aa0689, 0x00000000 },
{ 0x00600001, 0x24000229, 0x00aa06a1, 0x00000000 },
{ 0x00600001, 0x24200229, 0x00aa06a9, 0x00000000 },
{ 0x00600001, 0x21500229, 0x00aa0741, 0x00000000 },
{ 0x00600001, 0x21700229, 0x00aa0749, 0x00000000 },
{ 0x00600001, 0x21900229, 0x00aa0761, 0x00000000 },
{ 0x00600001, 0x21b00229, 0x00aa0769, 0x00000000 },
{ 0x00600001, 0x21d00229, 0x00aa0781, 0x00000000 },
{ 0x00600001, 0x21f00229, 0x00aa0789, 0x00000000 },
{ 0x00600001, 0x22100229, 0x00aa07a1, 0x00000000 },
{ 0x00600001, 0x22300229, 0x00aa07a9, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00aa07c1, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00aa07c9, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00aa07e1, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00aa07e9, 0x00000000 },
{ 0x00600001, 0x22d00229, 0x00aa0841, 0x00000000 },
{ 0x00600001, 0x22f00229, 0x00aa0849, 0x00000000 },
{ 0x00600001, 0x23100229, 0x00aa0861, 0x00000000 },
{ 0x00600001, 0x23300229, 0x00aa0869, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00aa0801, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00aa0809, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00aa0821, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00aa0829, 0x00000000 },
{ 0x00600001, 0x23d00229, 0x00aa0881, 0x00000000 },
{ 0x00600001, 0x23f00229, 0x00aa0889, 0x00000000 },
{ 0x00600001, 0x24100229, 0x00aa08a1, 0x00000000 },
{ 0x00600001, 0x24300229, 0x00aa08a9, 0x00000000 },
{ 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
{ 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
{ 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
{ 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
{ 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0xfffffece },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
{ 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
{ 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffec2 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_avs_nv12.g6b
0,0 → 1,243
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x01000005, 0x20002d2c, 0x00000088, 0x80008000 },
{ 0x00010001, 0x20c003fd, 0x00000000, 0x00000000 },
{ 0x00000001, 0x212003bd, 0x000000c0, 0x00000000 },
{ 0x00000001, 0x212403bd, 0x000000bc, 0x00000000 },
{ 0x00000001, 0x213403bd, 0x00000038, 0x00000000 },
{ 0x00200001, 0x612803bd, 0x004500a4, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
{ 0x00800001, 0x20000022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x25401cc9, 0x00000000, 0x044bb401 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
{ 0x00800001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x25c01cc9, 0x00000040, 0x048bb802 },
{ 0x00000001, 0x240803bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x000000bc, 0x41000000 },
{ 0x00000048, 0x21287fbd, 0x000000c0, 0x41e00000 },
{ 0x00000001, 0x240403bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x21247fbd, 0x000000c0, 0x41000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
{ 0x00800001, 0x20000022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x27401cc9, 0x00000000, 0x044bb401 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
{ 0x00800001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02000031, 0x27c01cc9, 0x00000040, 0x048bb802 },
{ 0x00600001, 0x21400229, 0x00aa0541, 0x00000000 },
{ 0x00600001, 0x21600229, 0x00aa0549, 0x00000000 },
{ 0x00600001, 0x21800229, 0x00aa0561, 0x00000000 },
{ 0x00600001, 0x21a00229, 0x00aa0569, 0x00000000 },
{ 0x00600001, 0x21c00229, 0x00aa0581, 0x00000000 },
{ 0x00600001, 0x21e00229, 0x00aa0589, 0x00000000 },
{ 0x00600001, 0x22000229, 0x00aa05a1, 0x00000000 },
{ 0x00600001, 0x22200229, 0x00aa05a9, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00aa05c1, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00aa05c9, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00aa05e1, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00aa05e9, 0x00000000 },
{ 0x00600001, 0x22c00229, 0x00aa0641, 0x00000000 },
{ 0x00600001, 0x22e00229, 0x00aa0649, 0x00000000 },
{ 0x00600001, 0x23000229, 0x00aa0661, 0x00000000 },
{ 0x00600001, 0x23200229, 0x00aa0669, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00aa0601, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00aa0609, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00aa0621, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00aa0629, 0x00000000 },
{ 0x00600001, 0x23c00229, 0x00aa0681, 0x00000000 },
{ 0x00600001, 0x23e00229, 0x00aa0689, 0x00000000 },
{ 0x00600001, 0x24000229, 0x00aa06a1, 0x00000000 },
{ 0x00600001, 0x24200229, 0x00aa06a9, 0x00000000 },
{ 0x00600001, 0x21500229, 0x00aa0741, 0x00000000 },
{ 0x00600001, 0x21700229, 0x00aa0749, 0x00000000 },
{ 0x00600001, 0x21900229, 0x00aa0761, 0x00000000 },
{ 0x00600001, 0x21b00229, 0x00aa0769, 0x00000000 },
{ 0x00600001, 0x21d00229, 0x00aa0781, 0x00000000 },
{ 0x00600001, 0x21f00229, 0x00aa0789, 0x00000000 },
{ 0x00600001, 0x22100229, 0x00aa07a1, 0x00000000 },
{ 0x00600001, 0x22300229, 0x00aa07a9, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00aa07c1, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00aa07c9, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00aa07e1, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00aa07e9, 0x00000000 },
{ 0x00600001, 0x22d00229, 0x00aa0841, 0x00000000 },
{ 0x00600001, 0x22f00229, 0x00aa0849, 0x00000000 },
{ 0x00600001, 0x23100229, 0x00aa0861, 0x00000000 },
{ 0x00600001, 0x23300229, 0x00aa0869, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00aa0801, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00aa0809, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00aa0821, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00aa0829, 0x00000000 },
{ 0x00600001, 0x23d00229, 0x00aa0881, 0x00000000 },
{ 0x00600001, 0x23f00229, 0x00aa0889, 0x00000000 },
{ 0x00600001, 0x24100229, 0x00aa08a1, 0x00000000 },
{ 0x00600001, 0x24300229, 0x00aa08a9, 0x00000000 },
{ 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
{ 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
{ 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
{ 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
{ 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0xfffffece },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
{ 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
{ 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffec2 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dn_nv12.asm
0,0 → 1,26
// Module name: NV12_DN_NV12
.kernel NV12_DN_NV12
.code
 
#define INC_DN
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
 
#define LOAD_UV_ONLY
#include "NV12_Load_8x4.asm"
#undef LOAD_UV_ONLY
 
#include "PL_DN_ALG.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_dn_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5
0,0 → 1,113
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
{ 0x01600031, 0x24400c01, 0x208d0000, 0x045b8004 },
{ 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10480, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10490, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b104a0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00b104b0, 0x00000000 },
{ 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
{ 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00010003 },
{ 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x21c00022, 0x004504c0, 0x00000000 },
{ 0x0d600031, 0x20000c04, 0x508d0000, 0x04082014 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff3a },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff34 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dn_nv12.g6b
0,0 → 1,186
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
{ 0x02600031, 0x24400cc1, 0x00000020, 0x045b8004 },
{ 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10480, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10490, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b104a0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00b104b0, 0x00000000 },
{ 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
{ 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00010003 },
{ 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x21c00022, 0x004504c0, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x000001a0, 0x04094014 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff3a },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff34 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dndi_nv12.asm
0,0 → 1,18
// Module name: NV12_DNDI_NV12
.kernel NV12_DNDI_NV12
.code
 
#define INC_DNDI
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "PL_DNDI_ALG_UVCopy_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_dndi_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5
0,0 → 1,90
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
{ 0x01600031, 0x24400c01, 0x208d0000, 0x04cb8004 },
{ 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00ae0481, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00ae0491, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00ae0490, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00ae04a1, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00ae04b1, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00ae04b0, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b104d0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00b104f0, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00ae0501, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00ae0500, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00ae0511, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00ae0510, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00ae0521, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00ae0520, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00ae0531, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00ae0530, 0x00000000 },
{ 0x00000008, 0x21003da1, 0x000000a0, 0x00010001 },
{ 0x00000001, 0x210401a1, 0x000000a2, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x21600022, 0x008d0100, 0x00000000 },
{ 0x00600001, 0x21800022, 0x008d0540, 0x00000000 },
{ 0x0b600031, 0x20000c04, 0x508d0000, 0x04082014 },
{ 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
{ 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00000003 },
{ 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x21c00022, 0x00000560, 0x00000000 },
{ 0x0d600031, 0x20000c04, 0x508d0000, 0x04082014 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x01000010, 0x20003e2c, 0x0000003b, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00400001, 0x20400022, 0x00690580, 0x00000000 },
{ 0x00400001, 0x20500022, 0x006904d0, 0x00000000 },
{ 0x00400001, 0x20600022, 0x00690590, 0x00000000 },
{ 0x00400001, 0x20700022, 0x006904f0, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00400001, 0x20400022, 0x006904c0, 0x00000000 },
{ 0x00400001, 0x20500022, 0x00690580, 0x00000000 },
{ 0x00400001, 0x20600022, 0x006904e0, 0x00000000 },
{ 0x00400001, 0x20700022, 0x00690590, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b104d0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b104f0, 0x00000000 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082007 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0218a002 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0800, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff68 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff62 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b
0,0 → 1,163
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
{ 0x02600031, 0x24400cc1, 0x00000020, 0x04cb8004 },
{ 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00ae0481, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00ae0480, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00ae0491, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00ae0490, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00ae04a1, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00ae04a0, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00ae04b1, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00ae04b0, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b104d0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00b104f0, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00ae0501, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00ae0500, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00ae0511, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00ae0510, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00ae0521, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00ae0520, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00ae0531, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00ae0530, 0x00000000 },
{ 0x00000008, 0x21003da1, 0x000000a0, 0x00010001 },
{ 0x00000001, 0x210401a1, 0x000000a2, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x21600022, 0x008d0100, 0x00000000 },
{ 0x00600001, 0x21800022, 0x008d0540, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000160, 0x04094014 },
{ 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
{ 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00000003 },
{ 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x21c00022, 0x00000560, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x000001a0, 0x04094014 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x01000010, 0x20003e2c, 0x0000003b, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000a },
{ 0x00400001, 0x20400022, 0x00690580, 0x00000000 },
{ 0x00400001, 0x20500022, 0x006904d0, 0x00000000 },
{ 0x00400001, 0x20600022, 0x00690590, 0x00000000 },
{ 0x00400001, 0x20700022, 0x006904f0, 0x00000000 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00400001, 0x20400022, 0x006904c0, 0x00000000 },
{ 0x00400001, 0x20500022, 0x00690580, 0x00000000 },
{ 0x00400001, 0x20600022, 0x006904e0, 0x00000000 },
{ 0x00400001, 0x20700022, 0x00690590, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00b104c0, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00b104d0, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00b104e0, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00b104f0, 0x00000000 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094007 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02198002 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0800, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff68 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff62 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_nv12.asm
0,0 → 1,17
// Module name: NV12_LOAD_SAVE_NV12
.kernel NV12_LOAD_SAVE_NV12
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "NV12_Load_8x4.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_load_save_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5
0,0 → 1,106
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff48 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff42 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b
0,0 → 1,179
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff48 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff42 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pa.asm
0,0 → 1,18
// Module name: NV12_LOAD_SAVE_pl1
.kernel NV12_LOAD_SAVE_PL1 // what's usage of it? just a name?
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "NV12_Load_8x5.asm"
#include "PL8x5_PL8x8.asm"
#include "PL8x8_Save_PA.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_load_save_pl1.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5
0,0 → 1,117
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0004000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0238a002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x00ae0840, 0x00000000 },
{ 0x00800001, 0x23800229, 0x00ae0841, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00ae0820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00ae0821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00ae0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00ae0801, 0x00000000 },
{ 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
{ 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
{ 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
{ 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
{ 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
{ 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
{ 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
{ 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
{ 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
{ 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
{ 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
{ 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
{ 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
{ 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
{ 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
{ 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
{ 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
{ 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
{ 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
{ 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
{ 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
{ 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
{ 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
{ 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
{ 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
{ 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
{ 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
{ 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
{ 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
{ 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
{ 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
{ 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
{ 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
{ 0x01600031, 0x21400c01, 0x408d0000, 0x0288a007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
{ 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
{ 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
{ 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
{ 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
{ 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
{ 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff32 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff2c },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pa.g6b
0,0 → 1,190
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0004000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02398002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x00ae0840, 0x00000000 },
{ 0x00800001, 0x23800229, 0x00ae0841, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00ae0820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00ae0821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00ae0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00ae0801, 0x00000000 },
{ 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
{ 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
{ 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
{ 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
{ 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
{ 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
{ 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
{ 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
{ 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
{ 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
{ 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
{ 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
{ 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
{ 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
{ 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
{ 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
{ 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
{ 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
{ 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
{ 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
{ 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
{ 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
{ 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
{ 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
{ 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
{ 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
{ 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
{ 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
{ 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
{ 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
{ 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
{ 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
{ 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
{ 0x04600031, 0x21400cc1, 0x00000020, 0x02898007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
{ 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
{ 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
{ 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
{ 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
{ 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
{ 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff32 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff2c },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pl3.asm
0,0 → 1,17
// Module name: NV12_LOAD_SAVE_PL3
.kernel NV12_LOAD_SAVE_PL3
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "NV12_Load_8x4.asm"
#include "PL8x4_Save_IMC3.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_load_save_pl3.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5
0,0 → 1,105
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff4a },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff44 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b
0,0 → 1,178
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff4a },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff44 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_scaling_nv12.asm
0,0 → 1,20
// Module name: NV12_SCALING_NV12
.kernel NV12_SCALING_NV12
.code
 
#define INC_SCALING
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "PL2_Scaling.asm"
#include "PL16x8_PL8x4.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_scaling_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5
0,0 → 1,222
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00400001, 0x254002fd, 0x00000000, 0x48403000 },
{ 0x00400001, 0x255002fd, 0x00000000, 0x5c585450 },
{ 0x00600040, 0x25607fbd, 0x008d0540, 0x41000000 },
{ 0x00200401, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x00000000 },
{ 0x00802001, 0x208003be, 0x000000a8, 0x00000000 },
{ 0x00802001, 0x258003bd, 0x000000a8, 0x00000000 },
{ 0x00802001, 0x240003bc, 0x000000a4, 0x00000000 },
{ 0x00802048, 0x204077be, 0x000000bc, 0x008d0540 },
{ 0x00000401, 0x257003fd, 0x00000000, 0x437f0000 },
{ 0x00000801, 0x257c03fd, 0x00000000, 0x3f000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23800229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22a00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23a00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22c00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23c00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22e00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23e00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x23000229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x24000229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
{ 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
{ 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
{ 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x23200229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
{ 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
{ 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
{ 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
{ 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0xfffffe66 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
{ 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
{ 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffe5a },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/nv12_scaling_nv12.g6b
0,0 → 1,295
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00400001, 0x254002fd, 0x00000000, 0x48403000 },
{ 0x00400001, 0x255002fd, 0x00000000, 0x5c585450 },
{ 0x00600040, 0x25607fbd, 0x008d0540, 0x41000000 },
{ 0x00200401, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x208003be, 0x000000a8, 0x00000000 },
{ 0x00800001, 0x258003bd, 0x000000a8, 0x00000000 },
{ 0x00800001, 0x240003bc, 0x000000a4, 0x00000000 },
{ 0x00800048, 0x204077be, 0x000000bc, 0x008d0540 },
{ 0x00000401, 0x257003fd, 0x00000000, 0x437f0000 },
{ 0x00000801, 0x257c03fd, 0x00000000, 0x3f000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22400229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23600229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23800229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22a00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23a00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22c00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23c00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x22e00229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x23e00229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x23000229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x24000229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
{ 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
{ 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
{ 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
{ 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
{ 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
{ 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
{ 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00cf0700, 0x00000000 },
{ 0x00800001, 0x23200229, 0x00cf0800, 0x00000000 },
{ 0x00800001, 0x24200229, 0x00cf0840, 0x00000000 },
{ 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
{ 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
{ 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
{ 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
{ 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00010220, 0x34001c00, 0x02001400, 0xfffffe66 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
{ 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
{ 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xfffffe5a },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_nv12.asm
0,0 → 1,18
// Module name: PA_LOAD_SAVE_NV12
.kernel PA_LOAD_SAVE_NV12
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "PA_Load_8x8.asm"
#include "PL8x8_PL8x4.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of nv12_load_save_pl1.asm
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5
0,0 → 1,120
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
{ 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
{ 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
{ 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff2c },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff26 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_nv12.g6b
0,0 → 1,193
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
{ 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
{ 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
{ 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff2c },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff26 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_pl3.asm
0,0 → 1,18
// Module name: PA_LOAD_SAVE_PL3
.kernel PA_LOAD_SAVE_PL3
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "PA_Load_8x8.asm"
#include "PL8x8_PL8x4.asm"
#include "PL8x4_Save_IMC3.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of pa_load_save_pl3.asm
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5
0,0 → 1,123
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
{ 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
{ 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
{ 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
{ 0x00800001, 0x28600229, 0x008d0830, 0x00000000 },
{ 0x00800001, 0x29600229, 0x008d0930, 0x00000000 },
{ 0x00800001, 0x28400229, 0x008d0820, 0x00000000 },
{ 0x00800001, 0x29400229, 0x008d0920, 0x00000000 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff26 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff20 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/pa_load_save_pl3.g6b
0,0 → 1,196
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
{ 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
{ 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
{ 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
{ 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
{ 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
{ 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
{ 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
{ 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
{ 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
{ 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
{ 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
{ 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
{ 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
{ 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
{ 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
{ 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
{ 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
{ 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
{ 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
{ 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
{ 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
{ 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
{ 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000005a },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
{ 0x00800001, 0x28600229, 0x008d0830, 0x00000000 },
{ 0x00800001, 0x29600229, 0x008d0930, 0x00000000 },
{ 0x00800001, 0x28400229, 0x008d0820, 0x00000000 },
{ 0x00800001, 0x29400229, 0x008d0920, 0x00000000 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff26 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff20 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_nv12.asm
0,0 → 1,17
// Module name: PL3_LOAD_SAVE_NV12
.kernel PL3_LOAD_SAVE_NV12
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "IMC3_Load_8x4.asm"
#include "PL8x4_Save_NV12.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of pl3_load_save_nv12.asm
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5
0,0 → 1,108
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0218a002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x29000c01, 0x408d0000, 0x0218a003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff44 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff3e },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b
0,0 → 1,181
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02198002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000040, 0x02198003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
{ 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
{ 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
{ 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
{ 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
{ 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
{ 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
{ 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
{ 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
{ 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
{ 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
{ 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
{ 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff44 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff3e },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pa.asm
0,0 → 1,18
// Module name: PL3_LOAD_SAVE_pa
.kernel PL3_LOAD_SAVE_PA // what's usage of it? just a name?
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "IMC3_Load_8x5.asm"
#include "PL8x5_PL8x8.asm"
#include "PL8x8_Save_PA.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of pl3_load_save_pa.asm
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5
0,0 → 1,119
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00040007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x29000c01, 0x408d0000, 0x0228a003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x008d0820, 0x00000000 },
{ 0x00800001, 0x23800229, 0x008d0920, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
{ 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
{ 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
{ 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
{ 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
{ 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
{ 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
{ 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
{ 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
{ 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
{ 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
{ 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
{ 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
{ 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
{ 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
{ 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
{ 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
{ 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
{ 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
{ 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
{ 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
{ 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
{ 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
{ 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
{ 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
{ 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
{ 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
{ 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
{ 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
{ 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
{ 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
{ 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
{ 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
{ 0x01600031, 0x21400c01, 0x408d0000, 0x0288a007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
{ 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
{ 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
{ 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
{ 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
{ 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
{ 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff2e },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff28 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pa.g6b
0,0 → 1,192
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00040007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000040, 0x02298003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22800229, 0x008d0820, 0x00000000 },
{ 0x00800001, 0x23800229, 0x008d0920, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
{ 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
{ 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
{ 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
{ 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
{ 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
{ 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
{ 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
{ 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
{ 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
{ 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
{ 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
{ 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
{ 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
{ 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
{ 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
{ 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
{ 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
{ 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
{ 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
{ 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
{ 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
{ 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
{ 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
{ 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
{ 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
{ 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
{ 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
{ 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
{ 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
{ 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
{ 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
{ 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
{ 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
{ 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
{ 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
{ 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
{ 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
{ 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
{ 0x04600031, 0x21400cc1, 0x00000020, 0x02898007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
{ 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
{ 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
{ 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
{ 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
{ 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
{ 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff2e },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff28 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pl3.asm
0,0 → 1,17
// Module name: PL3_LOAD_SAVE_pl3
.kernel PL3_LOAD_SAVE_PL3
.code
 
#include "SetupVPKernel.asm"
#include "Multiple_Loop_Head.asm"
#include "IMC3_Load_8x4.asm"
#include "PL8x4_Save_IMC3.asm"
#include "Multiple_Loop.asm"
 
END_THREAD // End of Thread
 
.end_code
 
.end_kernel
 
// end of pl3_load_save_pl3.asm
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5
0,0 → 1,107
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x28000c01, 0x408d0000, 0x0218a002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x02600031, 0x29000c01, 0x408d0000, 0x0218a003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff46 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff40 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
/drivers/video/i965/shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b
0,0 → 1,180
{ 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
{ 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
{ 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
{ 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
{ 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
{ 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
{ 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
{ 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000040, 0x02198002 },
{ 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000040, 0x02198003 },
{ 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
{ 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
{ 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
{ 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
{ 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
{ 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
{ 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
{ 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
{ 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
{ 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
{ 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
{ 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
{ 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
{ 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
{ 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
{ 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
{ 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
{ 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
{ 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
{ 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
{ 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
{ 0x00910001, 0x41410231, 0x02b10701, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
{ 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
{ 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
{ 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
{ 0x00910001, 0x41810231, 0x02b10721, 0x00000000 },
{ 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
{ 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
{ 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
{ 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
{ 0x00910001, 0x41c10231, 0x02b10741, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
{ 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
{ 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
{ 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
{ 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
{ 0x00910001, 0x42010231, 0x02b10761, 0x00000000 },
{ 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
{ 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
{ 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
{ 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
{ 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
{ 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
{ 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
{ 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
{ 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
{ 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
{ 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
{ 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
{ 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
{ 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
{ 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
{ 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
{ 0x00010220, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00010220, 0x34001c00, 0x02001400, 0xffffff46 },
{ 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
{ 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
{ 0x00000220, 0x34001c00, 0x00001400, 0xffffff40 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
{ 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/DI_Core.g4a
0,0 → 1,309
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 22 // Total instruction count
// 1 // Total kernel count
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// End of common.inc
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
/drivers/video/i965/shaders/post_processing/gen7/DI_Save_NV12_16x4.g4a
0,0 → 1,279
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 20 // Total instruction count
// 1 // Total kernel count
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// End of common.inc
 
// FileName: DI_Save_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in NV12 format
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
mov (2) r27.0<1>:d r7.0<2;2,1>:w { NoDDClr }
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDChk } // Block width and height (16x4)
 
//Bottom field Y
mov (8) mudMSGHDR_DI_OUT1(1)<1> udDNDI_RESP(0,0)
mov (8) mudMSGHDR_DI_OUT1(2)<1> udDNDI_RESP(0,8)
// Top field Y
mov (8) mudMSGHDR_DI_OUT2(1)<1> udDNDI_RESP(4,0)
mov (8) mudMSGHDR_DI_OUT2(2)<1> udDNDI_RESP(4,8)
 
//copy message desrcptor to the message header
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
//Change origin to U/V block
asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // Block width and height (16x2)
 
// Bottom field U/V
mov (16) r21.0<2>:ub ubDNDI_RESP(2, 1)<32;8,2> { NoDDClr }
mov (16) r21.1<2>:ub ubDNDI_RESP(2, 0)<32;8,2> { NoDDChk }
 
// Top field U/V
mov (16) r26.0<2>:ub ubDNDI_RESP(6, 1)<32;8,2> { NoDDClr }
mov (16) r26.1<2>:ub ubDNDI_RESP(6, 0)<32;8,2> { NoDDChk }
 
//copy message desrcptor to the message header
mov (8) r21<1>:ud r27<8;8,1>:ud
mov (8) r26<1>:ud r27<8;8,1>:ud
 
//Send out Y component on previous frame to surface
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
//Send out Y component on current frame to surface
send (8) null<1>:d r23.0 0x5 0x60A801E:ud
//Send out U/V component on previous frame to surface
send (8) null<1>:d r21 0x5 0x40A801C:ud
//Send out U/V component on current frame to surface
send (8) null<1>:d r26 0x5 0x40A801F:ud
/drivers/video/i965/shaders/post_processing/gen7/DI_Save_PA_16x4.g4a
0,0 → 1,289
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 33 // Total instruction count
// 1 // Total kernel count
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// End of common.inc
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
/drivers/video/i965/shaders/post_processing/gen7/EOT.g4a
0,0 → 1,166
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 2 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
/drivers/video/i965/shaders/post_processing/gen7/Makefile.am
0,0 → 1,97
INTEL_PP_G7B = \
avs.g7b \
dndi.g7b \
nv12_dn_nv12.g7b \
pa_to_pl2.g7b \
pa_to_pl3.g7b \
pl2_to_pa.g7b \
pl2_to_pl2.g7b \
pl2_to_pl3.g7b \
pl3_to_pa.g7b \
pl3_to_pl2.g7b \
pl3_to_pl3.g7b \
$(NULL)
 
INTEL_PP_G4A = \
DI_Core.g4a \
DI_Save_NV12_16x4.g4a \
DI_Save_PA_16x4.g4a \
EOT.g4a \
NV12_DI_NV12.g4a \
NV12_DNDI_422CP.g4a \
NV12_DNDI_PA.g4a \
NV12_DNUV_NV12.g4a \
NV12_DN_422CP.g4a \
NV12_DN_NV12.g4a \
PA_AVS_Buf_0.g4a \
PA_AVS_Buf_1.g4a \
PA_AVS_Buf_2.g4a \
PA_AVS_Buf_3.g4a \
PA_DI_422CP.g4a \
PA_DI_PA.g4a \
PA_DNDI_422CP.g4a \
PA_DNDI_PA.g4a \
PA_DNUV_PA.g4a \
PA_DN_422CP.g4a \
PA_DN_PA.g4a \
PL2_AVS_Buf_0.g4a \
PL2_AVS_Buf_1.g4a \
PL2_AVS_Buf_2.g4a \
PL2_AVS_Buf_3.g4a \
PL3_AVS_Buf_0.g4a \
PL3_AVS_Buf_1.g4a \
PL3_AVS_Buf_2.g4a \
PL3_AVS_Buf_3.g4a \
PL3_DNDI_422CP.g4a \
PL3_DNDI_PA.g4a \
PL3_DNUV_PL3.g4a \
PL3_DN_422CP.g4a \
PL3_DN_PL3.g4a \
PL_DI_422CP.g4a \
PL_DI_PA.g4a \
Save_AVS_PA.g4a \
Save_AVS_PL3.g4a \
Save_AVS_NV12.g4a \
Save_AVS_RGB.g4a \
Set_AVS_Buf_0123_BGRA.g4a \
Set_AVS_Buf_0123_PL2.g4a \
Set_AVS_Buf_0123_PL3.g4a \
Set_AVS_Buf_0123_VUYA.g4a \
Set_AVS_Buf_0123_VYUA.g4a \
Set_Layer_0.g4a \
VP_Setup.g4a \
$(NULL)
 
INTEL_PP_ASM = $(INTEL_PP_G7B:%.g7b=%.asm)
INTEL_PP_GEN7_ASM = $(INTEL_PP_G7B:%.g7b=%.g7s)
 
INTEL_PP_G75B = $(INTEL_PP_G7B:%.g7b=%.g75b)
 
TARGETS =
if HAVE_GEN4ASM
TARGETS += $(INTEL_PP_G7B) $(INTEL_PP_G75B)
endif
 
all-local: $(TARGETS)
 
SUFFIXES = .g7b .g7s .asm
 
$(INTEL_PP_GEN7_ASM): $(INTEL_PP_ASM) $(INTEL_PP_G4A)
.asm.g7s:
$(AM_V_GEN)cpp $< > _pp0.$@; \
../../gpp.py _pp0.$@ $@; \
rm _pp0.$@
.g7s.g7b:
$(AM_V_GEN)intel-gen4asm -a -o $@ -g 7 $<
 
.g7s.g75b:
$(AM_V_GEN)intel-gen4asm -a -o $@ -g 7.5 $<
 
CLEANFILES = $(INTEL_PP_GEN7_ASM)
 
EXTRA_DIST = \
$(INTEL_PP_G7B) \
$(INTEL_PP_G75B)
 
# Extra clean files so that maintainer-clean removes *everything*
MAINTAINERCLEANFILES = Makefile.in
/drivers/video/i965/shaders/post_processing/gen7/NV12_DI_NV12.g4a
0,0 → 1,392
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 57 // Total instruction count
// 1 // Total kernel count
 
.kernel NV12_DI_NV12
.code
 
 
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DI_Save_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
// add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r28.0<1>:ud r0.0<8;8,1>:ud
mov (1) r28.0<1>:d r7.0<0;1,0>:w { NoDDClr } // H. block origin need to be doubled
mov (1) r28.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r28.2<1>:ud 0x3000F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r28<8;8,1>:ud
mov (8) r23.0<1>:ud r28<8;8,1>:ud
 
//Bottom field Y
mov (8) mudMSGHDR_DI_OUT1(1)<1> udDNDI_RESP(0,0)
mov (8) mudMSGHDR_DI_OUT1(2)<1> udDNDI_RESP(0,8)
// Top field Y
mov (8) mudMSGHDR_DI_OUT2(1)<1> udDNDI_RESP(4,0)
mov (8) mudMSGHDR_DI_OUT2(2)<1> udDNDI_RESP(4,8)
 
//Change origin to U/V block
asr (1) r28.1<1>:d r28.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r28.2<1>:ud 0x1000F:ud { NoDDChk } // Block width and height (16x2)
 
// Bottom field U/V
mov (16) r22.0<2>:ub ubDNDI_RESP(2, 1)<32;8,2> { NoDDClr }
mov (16) r22.1<2>:ub ubDNDI_RESP(2, 0)<32;8,2> { NoDDChk }
 
// Top field U/V
mov (16) r27.0<2>:ub ubDNDI_RESP(6, 1)<32;8,2> { NoDDClr }
mov (16) r27.1<2>:ub ubDNDI_RESP(6, 0)<32;8,2> { NoDDChk }
 
//copy message desrcptor to the message header
mov (8) r21<1>:ud r28<8;8,1>:ud
mov (8) r26<1>:ud r28<8;8,1>:ud
 
//Send out Y component on previous frame to surface
send (8) null<1>:d r18 0x5 0x60A801B:ud
//Send out Y component on current frame to surface
send (8) null<1>:d r23 0x5 0x60A801E:ud
//Send out U/V component on previous frame to surface
send (8) null<1>:d r21 0x5 0x40A801C:ud
//Send out U/V component on current frame to surface
send (8) null<1>:d r26 0x5 0x40A801F:ud
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/NV12_DNDI_422CP.g4a
0,0 → 1,557
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 116 // Total instruction count
// 1 // Total kernel count
 
.kernel NV12_DNDI_422CP
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // U/V block width and height (8x4)
mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
 
 
 
// FileName: DN_Save_Y_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of Y channel of DN output for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
mov (2) mdMSGHDR_DN_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
 
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x60A8018:ud
 
 
 
// FileName: DI_Save_422CP_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
 
 
.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
 
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:ud r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:ud r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) r27.3<1>:ud r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r24.0<1>:ud r27<8;8,1>:ud
 
 
// Pack 2nd field Y; First 8x4 block
mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; First 8x4 block
mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
 
// Pack 2nd field Y; Second 8x4 block
mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; Second 8x4 block
mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
send (8) null<1>:d r21.0 0x5 0x60A801B:ud
 
// Pack 1st field Y; 1st 8x4 block
mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U,V; 1st 8x4 block
mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Pack 1st field Y; 2nd 8x4 block
mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U, V; 2nd 8x4 block
mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r24.0 0x5 0x60A801E:ud
send (8) null<1>:d r27.0 0x5 0x60A801E:ud
 
 
 
// FileName: DN_Save_UV_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
//Reuse the header from Load component
 
mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
send (8) null<1>:d r36 0x5 0x40A8019:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/NV12_DNDI_PA.g4a
0,0 → 1,495
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 86 // Total instruction count
// 1 // Total kernel count
 
.kernel NV12_DNDI_PA
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // U/V block width and height (8x4)
mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
 
 
 
// FileName: DN_Save_Y_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of Y channel of DN output for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
mov (2) mdMSGHDR_DN_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
 
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x60A8018:ud
 
 
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
 
 
 
// FileName: DN_Save_UV_NV12_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
//Reuse the header from Load component
 
mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
send (8) null<1>:d r36 0x5 0x40A8019:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/NV12_DNUV_NV12.g4a
0,0 → 1,2491
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 1153 // Total instruction count
// 1 // Total kernel count
 
 
.kernel NV12_DNUV_NV12
.code
 
 
 
//Module : DN_UV_Setup
//Author : Tatiya, Rupesh
//Description : Initial Set-up for DN_UV
 
 
 
 
// Module name : ChromaDenoise.inc
// Author : Tatiya, Rupesh
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//======================================================
//Interface for serpent mode Chroma Denoise, added by Le
//======================================================
//r1
 
 
//noise history thresholds (low and high)
 
 
//temporal difference thresholds (high and low)
 
 
//noise history thresholds (low and high)
//#define ubNoiseHistMaxHigh r1.22
//#define ubNoiseHistMaxLow r1.23
//#define ubNoiseHistDeltaHigh r1.24
//#define ubNoiseHistDeltaLow r1.25
 
//Gaussian thresholds
 
 
//temporal difference thresholds (default)
 
 
//r2
//history thresholds (default)
 
 
//denoise factor (0-63)
 
 
//====================== Binding table (Explicit To DNUV)=========================================
//Used by DN_UV kernels
 
 
//Pointer to Current Frame UV
 
 
//r1-r6
//CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
 
 
.declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
.declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
.declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
.declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
.declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
.declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
 
//r1
 
 
//r3
 
 
//r4
 
//r7
//All of the following has to defined in Same GRF for optimal performance.
 
 
//r8-24
//Previous Frame UV
 
.declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
.declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
 
 
//r25-48
//TEMP Space for any Usage.
 
 
//=========================================================================
//Definations and declarations for serpent mode Chroma Denoise, added by Le
//=========================================================================
 
 
.declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
.declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
.declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
 
.declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
.declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
 
 
.declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
.declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
.declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
.declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
.declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
.declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
 
 
//====================================================================================
 
 
//TEMP23: To hold V data for PL3 surfaces
.declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
.declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//GRFs to calculate Median: r25-r42
.declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//18 GRFs to hold difference : r25-r42
.declare wDIFF Base=r25.0 ElementSize=2 Type=w
.declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
 
//Temporal Diff
.declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
.declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
 
//4 GRFs to hold Sobel Value : r43-46
.declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
.declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
 
 
//2 GRFs to hold SOAD temporarily: r47-48
.declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
 
//Temp GRFs to hold extra YUYV pixels: r43-r48
.declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
 
//Temp GRFs in Median Calculation: r47-r48
.declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
 
.declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
.declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
 
//Temp Space to store Median : r49-50
 
.declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
 
//r49
 
 
//r50
//Message Source
 
 
//r51
//DN_UV History Surface
 
.declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
.declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
 
//r52 - r91
//r52
//Current Frame UV
 
 
.declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
.declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
 
//r54
//CURBE COPY
 
 
//r55
 
 
.declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
 
//r61
 
 
//r62
 
 
//History Surface Temp Origin
 
 
//r63
//Current Frame Y Temp Origin
 
 
//BNE Surface Origin
 
 
//r70
 
.declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
 
//r74-91 : For Saving Dest UV (PL2/PL3)
 
 
.declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
 
//r90
 
.declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
 
//r92-127
//Current Frame Y
 
 
//r92
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
//r101
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
//r110
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
//r119
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
 
.declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
.declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
.declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
.declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
.declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
.declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
.declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
.declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
 
//r92: To hold U data for PL3 surfaces
.declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
.declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
 
//r112: To hold U data for PL3 surfaces
.declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
.declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
 
//r120: To hold U data for PL3 surfaces
.declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
.declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
 
 
// Initialize message source with r0.
mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
 
 
 
//Module Name : DN_UV_PL2_Load_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame UV data for PL2 input.
 
 
 
//Module name : DN_UV_Load_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame (UV only).
// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
 
 
 
 
//36x20 interleaved UV block is partitioned as follows:
// <------ 18 --------> <--------18 ------->
// -----------------------------------------
// | 20x8 A !| 20x8 D !
// | (overlapped) !| (overlapped) !
// |-------------------!|------------------!
// | 20x8 B !| 20x8 E !
// | (overlapped) !| (overlapped) !
// |-------------------!|------------------!
// | 20x4 C !| 20x4 F !
// | (overlapped) !| (overlapped) !
// -----------------------------------------
//
// Cordinates: (x-2, y-2), (x+14, y-2), (x-2, y+6), (x+14, y+6), (x-2, y+14), (x+14, y+14)
 
//UV surface origin: (ORIX, ORIY/2)
add (2) r7.4<1>:w r7.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
shr (1) r7.5<1>:w acc0.5<0;1,0>:w 1:w
mov (2) acc0.0<1>:d r7.4<2;2,1>:w
 
//A
add (2) r50.0<1>:d acc0.0<2;2,1>:d -2:d { AccWrEn }
mov (1) r50.2<1>:ud 0x70013:ud
send (8) udCURR_UV(0)<1> r50 0x4 0x2890004:ud
 
//B
add (1) r50.1<1>:d acc0.1<0;1,0>:d 8:d
send (8) udCURR_UV(8)<1> r50 0x4 0x2890004:ud
 
//C
add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
mov (1) r50.2<1>:ud 0x30013:ud
send (8) udCURR_UV(16)<1> r50 0x4 0x2490004:ud
 
//D
add (1) r50.0<1>:d acc0.0<0;1,0>:d 16:d { AccWrEn }
mov (1) r50.1<1>:d acc0.1<0;1,0>:d
mov (1) r50.2<1>:ud 0x70013:ud
send (8) udCURR_UV(20)<1> r50 0x4 0x2890004:ud
 
//E
add (1) r50.1<1>:d acc0.1<0;1,0>:d 8:d
send (8) udCURR_UV(28)<1> r50 0x4 0x2890004:ud
 
//F
add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
mov (1) r50.2<1>:ud 0x30013:ud
send (8) udCURR_UV(36)<1> r50 0x4 0x2490004:ud
 
//History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
 
//Calculate Origin For History Surface: (ORIX/4, ORIY/8)
mov (16) acc0.0<1>:w r7.0<0;2,1>:w
shr (1) r7.2<1>:w acc0.2<0;1,0>:w 2:w
shr (1) r7.3<1>:w acc0.3<0;1,0>:w 3:w
 
//Calculate Origin For BNE Surface: (ORIX/8, ORIY/16)
shr (1) r7.6<1>:w acc0.6<0;1,0>:w 3:w
shr (1) r7.7<1>:w acc0.7<0;1,0>:w 4:w
 
 
 
//Module Name : DN_UV_PL2_Load_Prev_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Pevious Frame UV data for PL2 input.
 
 
 
//Module Name : DN_UV_Load_Prev_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
 
 
 
 
mov (2) r50.0<1>:d r7.4<2;2,1>:w { AccWrEn } // Source lock origin
mov (1) r50.2<1>:ud 0xF000F:ud // U/V block width and height (16x16)
send (8) udPREV_UV(0)<1> r50 0x4 0x2890001:ud
 
add (1) r50.0<1>:ud acc0.0<0;1,0>:d 16:w // Add 16 to X origin
send (8) udPREV_UV(8)<1> r50 0x4 0x2890001:ud
 
 
//TODO - See if History loading can be combined with Prev Frame Load. - rT
 
 
//Module name : DN_UV_Load_Hist_UV
//Author : Tatiya, Rupesh
//Description : Load DN History for UV denoise. 4x4 for each U & V.
 
 
 
 
mov (2) r50.0<1>:d r7.2<2;2,1>:w
mov (1) r50.2<1>:ud 0x30007:ud
send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
 
 
 
//Module Name : DN_UV_420_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Load Curr Frame Y data for 420 Input
 
 
 
//Module Name : DN_UV_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Loads Y of Current frame.
 
 
 
 
//For 16x16 U and 16x16 V for 420, we need to read 32x32 Y.
 
mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
mov (1) acc0.2<1>:ud 0xF000F:ud
add (2) acc0.0<1>:ud r7.0<2;2,1>:w r4.4<2;2,1>:w
 
mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
 
mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
 
add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
 
add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
 
add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
 
send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
 
 
 
//Module Name : DN_UV_Noise_Detection_UV
//Author : Tatiya, Rupesh
//Description : Performs noise detection on 16x16 U and 16x16 V each.
 
 
 
//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
//Author : Tatiya, Rupesh
 
 
 
 
//Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
 
mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
 
//Move Inline Data to another space - so that it can be used as Temp Space --> r7
mov (4) r62.10<1>:w r7.0<4;4,1>:w
mov (4) r63.10<1>:w r7.4<4;4,1>:w
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 1664:uw
mov (1) a0.1:uw 1816:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1792:uw
mov (1) a0.1:uw 1820:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1920:uw
mov (1) a0.1:uw 1848:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2048:uw
mov (1) a0.1:uw 1852:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 2304:uw
mov (1) a0.1:uw 1880:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2432:uw
mov (1) a0.1:uw 1884:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2560:uw
mov (1) a0.1:uw 1912:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2688:uw
mov (1) a0.1:uw 1916:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
//Module : DN_UV_Noise_Reduction_UV
//Author : Tatiya, Rupesh
//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
//Tasks : 1. Update weight history
// 2. Find if it block is motion block
// 3. Compute Denoised Pixel.
 
 
 
 
//History is 1+1 byte every 4x4 U and 4x4 V.
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
 
mov (16) uwCURBE_TEMP(0)<1> 0:w
mov (16) uwCURBE_TEMP(1)<1> 0:w
 
//Compute diff betn curr and prev. - First 16 lines
// 8 lines here
add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
 
//Update WT HIST
(-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
 
//Compute diff betn curr and prev. - First 16 lines
// 8 more lines here
add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
 
(-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
 
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
 
//Compute diff betn curr and prev. - Second 16 lines
//13 lines.
add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
 
//3 more lines
add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
 
//16x4 to 8x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
 
//Find if block is motion block - First 16 lines
cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - First 16 lines
(-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
 
//Actual DN - First 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
 
 
//16x4 to 8x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//Find if block is motion block - Second 16 lines
cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - Second 16 lines
(-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
 
//Actual DN - Second 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
 
//Pack Weight History WORD -> BYTE
mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
 
 
 
//Module Name : DN_UV_Compute_BNE_UV
//Author : Tatiya, Rupesh
//Description : Computes minimum SOAD for each 16x4 block.
 
cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
(f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
 
mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
 
 
 
//Module Name : DN_UV_PL2_Pack_Denoised_UV
//Name : Tatiya, Rupesh
//Description : Pack UV denoised data based on PL2 input.
 
 
 
//Module Name : DN_UV_Pack_Denoised_UV
//Name : Tatiya, Rupesh
//Description : Pack UV denoised data based on PL2/PL3/PA.
 
 
//First 16 lines.
mov (16) ubMSGPAYLOAD_UV0(0,0)<1> ubDIFF_TEMPORAL(0)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(0,16)<1> ubDIFF_TEMPORAL(1)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(1,0)<1> ubDIFF_TEMPORAL(2)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(1,16)<1> ubDIFF_TEMPORAL(3)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(2,0)<1> ubDIFF_TEMPORAL(4)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(2,16)<1> ubDIFF_TEMPORAL(5)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(3,0)<1> ubDIFF_TEMPORAL(6)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(3,16)<1> ubDIFF_TEMPORAL(7)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(4,0)<1> ubDIFF_TEMPORAL(8)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(4,16)<1> ubDIFF_TEMPORAL(9)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(5,0)<1> ubDIFF_TEMPORAL(10)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(5,16)<1> ubDIFF_TEMPORAL(11)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(6,0)<1> ubDIFF_TEMPORAL(12)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(6,16)<1> ubDIFF_TEMPORAL(13)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(7,0)<1> ubDIFF_TEMPORAL(14)<32;16,2>
mov (16) ubMSGPAYLOAD_UV0(7,16)<1> ubDIFF_TEMPORAL(15)<32;16,2>
 
//Second 16 lines.
//12 lines first
mov (16) ubMSGPAYLOAD_UV1(0,0)<1> ubDIFF_TEMPORAL(16)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(0,16)<1> ubDIFF_TEMPORAL(17)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(1,0)<1> ubDIFF_TEMPORAL(18)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(1,16)<1> ubDIFF_TEMPORAL(19)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(2,0)<1> ubDIFF_TEMPORAL(20)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(2,16)<1> ubDIFF_TEMPORAL(21)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(3,0)<1> ubDIFF_TEMPORAL(22)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(3,16)<1> ubDIFF_TEMPORAL(23)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(4,0)<1> ubDIFF_TEMPORAL(24)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(4,16)<1> ubDIFF_TEMPORAL(25)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(5,0)<1> ubDIFF_TEMPORAL(26)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(5,16)<1> ubDIFF_TEMPORAL(27)<32;16,2>
 
//3 lines next
mov (16) ubMSGPAYLOAD_UV1(6,0)<1> ubDIFF_TEMPORAL(28)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(6,16)<1> ubCURBE_TEMP(4)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(7,0)<1> ubCURBE_TEMP(5)<32;16,2>
mov (16) ubMSGPAYLOAD_UV1(7,16)<1> ubCURBE_TEMP(6)<32;16,2>
 
 
 
//Module Name : DN_UV_420_Save_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Save Curr Frame Y data for 420 Input
 
 
 
//Module Name : DN_UV_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Saves Y or YUY2 of Current frame.
 
 
 
 
mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
mov (2) acc0.0<1>:d r62.10<2;2,1>:w
 
mov (1) acc0.2<1>:d 0xF000F:ud
 
mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
 
mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
 
add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
 
add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
 
add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
 
send (8) null<1>:d r92 0x5 0x120A8018:ud
send (8) null<1>:d r101 0x5 0x120A8018:ud
send (8) null<1>:d r110 0x5 0x120A8018:ud
send (8) null<1>:d r119 0x5 0x120A8018:ud
 
 
//TODO - See if History saving can be combined with Curr Frame Save. - rT
 
 
//Module Name : DN_UV_Save_Hist_UV
//Author : Tatiya, Rupesh
//Description : Saves DN history for UV data.
 
mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
mov (2) r3.0<1>:d r62.12<2;2,1>:w
mov (1) r3.2<1>:d 0x30007:ud
 
send (8) null<1>:d r3 0x5 0x40A8021:ud
 
 
 
//Module Name : DN_UV_Save_BNE_UV
//Author : Tatiya, Rupesh
//Description : Saves BNE values for 16x16 U and 16x16 V.
 
mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
mov (2) r1.0<1>:d r63.12<2;2,1>:w
mov (1) r1.2<1>:d 0x10003:ud
 
send (8) null<1>:d r1 0x5 0x40A8023:ud
 
 
 
//Module Name : DN_UV_PL2_Save_Curr_Frame_UV
//Author : Tatiya, Rupesh
 
 
 
//Module name : DN_UV_Save_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Saves Current Frame (UV only).
 
 
 
 
mov (8) r74<1>:ud r0.0<8;8,1>:ud
mov (8) r83<1>:ud r0.0<8;8,1>:ud
 
mov (1) r74.0<1>:d r62.10<0;1,0>:w
shr (1) r74.1<1>:d r62.11<0;1,0>:w 1:w
mov (1) r74.2<1>:d 0xF000F:ud
 
add (1) r83.0<1>:d r62.10<0;1,0>:w 16:d
shr (1) r83.1<1>:d r62.11<0;1,0>:w 1:w
mov (1) r83.2<1>:d 0xF000F:ud
 
send (8) null<1>:d r74 0x5 0x120A8019:ud
send (8) null<1>:d r83 0x5 0x120A8019:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
//All sub-routines here
 
 
// Module Name : Noise_Detection
// Author : Tatiya, Rupesh
// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
 
DN_UV_NOISE_DETECTION_UV:
 
// Find Field Block Median
//
// Purpose : Find the median value of the nine pixels in the same field
// which are centered at current pixel.
//
// Works on 9 pixels centered at the current pixel
// NOTE: pixels are within same field.
// v4 - current pixel
//
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
 
// Algorithm to find median modifies the data.
// Copy the data needed to calculate median so the original source data stays intact.
//
 
//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
 
//Delete Later - rT
//mov (1) pCUR_UV:uw 52*32:uw
 
// v0
mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
// v0
mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// MedianSwap
//
// MedianSwap(inOutLeft, inOutRight)
// {
// if (inOutLeft > inOutRight)
// {
// temp = inOutLeft
// inOutLeft = inOutRight
// inOutRight = temp
// }
// }
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
 
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
// Sobel Value calculation for the current pixel v4
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
//
// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
//
// Sobel = (|Gx| + |Gy|) >> 3
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
 
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
 
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
 
shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
 
shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
 
shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
 
shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
 
//Mov Median in CURBE_TEMP to free up temp space.
mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
 
// Find:
// absDiff = abs(ubCurY - ubMedian)
// Find the difference between pixel and median value.
 
//Median is interleaved. So difference is also interleaved.
 
//------------------------------------------------------------------------------------------
//Process 16 U and 16 V pixels here and rest later.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//First 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
// if (sigma_mb_min > sigma)
// sigma_mb_min = sigma;
 
//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
// So just do -
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
// sigma_mb_min = sigma;
 
//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
//Compare first 8 bytes with max possible (255).
//Start above condition from second 8 bytes.
 
//TODO - Change Later - rT
// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
 
//First row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
 
//Second row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//Second 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//Third row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
 
//Fourth row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
 
cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
 
cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
 
 
 
 
 
 
// End of common.inc
 
mov (1) ip:ud r7.7<0;1,0>:d
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/NV12_DN_422CP.g4a
0,0 → 1,539
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 113 // Total instruction count
// 1 // Total kernel count
 
.kernel NV12_DN_422CP
.code
 
 
 
// FileName: DN_PL_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for planar format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_NV12_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
//CHANGE : Read extra UV data to convert to 422. -rT
//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x4000F:ud { NoDDChk } // U/V block width and height (8x5)
mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2390001:ud
 
//Update Header for Save
mov (1) mudMSGHDR_UVCOPY(0,2)<1> 0x3000F:ud // U/V block width and height (8x4)
 
 
 
// FileName: DN_Save_Y_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of Y channel of DN output for reference
 
 
mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
mov (2) mudDN_Y_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin
mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
 
//send out data through data port
send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
 
 
 
// FileName: DN_Save_UV_NV12_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
//Reuse the header from Load component
//Header is modified at the end of load - to be usable for save.
 
mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
mov (8) mudMSGHDR_UVCOPY(2)<1> udDNDI_UV_RESP(1)<8;8,1>
send (8) null<1>:d r36 0x5 0x60A8019:ud
 
 
 
// FileName: DN_Upsample_UV_NV12_16x8.asm
// Author: Tatiya, Rupesh
// Description: Upconvert 420 UV to 422
 
 
 
// FileName: UVCopy_Upsample_UV_16x8.asm
// Author: Tatiya, Rupesh
// Description: Convert 42X UV to 422 - to be used for IECP.
 
 
avg.sat (16) uwDNDI_UVCOPY_TEMP(0) ubDNDI_UV_RESP(0,0)<16;16,1> ubDNDI_UV_RESP(0,0)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(1) ubDNDI_UV_RESP(0,0)<16;16,1> ubDNDI_UV_RESP(0,16)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(2) ubDNDI_UV_RESP(0,16)<16;16,1> ubDNDI_UV_RESP(0,16)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(3) ubDNDI_UV_RESP(0,16)<16;16,1> ubDNDI_UV_RESP(0,32)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(4) ubDNDI_UV_RESP(0,32)<16;16,1> ubDNDI_UV_RESP(0,32)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(5) ubDNDI_UV_RESP(0,32)<16;16,1> ubDNDI_UV_RESP(0,48)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(6) ubDNDI_UV_RESP(0,48)<16;16,1> ubDNDI_UV_RESP(0,48)<16;16,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(7) ubDNDI_UV_RESP(0,48)<16;16,1> ubDNDI_UV_RESP(0,64)<16;16,1>
 
mov (16) ubDNDI_RESP(5,1)<2> ubDNDI_UVCOPY_TEMP(0,0)<32;8,4> { NoDDClr } //Copy U data
mov (16) ubDNDI_RESP(5,0)<2> ubDNDI_UVCOPY_TEMP(0,2)<32;8,4> { NoDDChk } //Copy V data
mov (16) ubDNDI_RESP(5,33)<2> ubDNDI_UVCOPY_TEMP(2,0)<32;8,4> { NoDDClr } //Copy U data
mov (16) ubDNDI_RESP(5,32)<2> ubDNDI_UVCOPY_TEMP(2,2)<32;8,4> { NoDDChk } //Copy V data
mov (16) ubDNDI_RESP(5,65)<2> ubDNDI_UVCOPY_TEMP(4,0)<32;8,4> { NoDDClr } //Copy U data
mov (16) ubDNDI_RESP(5,64)<2> ubDNDI_UVCOPY_TEMP(4,2)<32;8,4> { NoDDChk } //Copy V data
mov (16) ubDNDI_RESP(5,97)<2> ubDNDI_UVCOPY_TEMP(6,0)<32;8,4> { NoDDClr } //Copy U data
mov (16) ubDNDI_RESP(5,96)<2> ubDNDI_UVCOPY_TEMP(6,2)<32;8,4> { NoDDChk } //Copy V data
 
 
 
// FileName: DN_Save_422CP_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
 
 
.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
 
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
// First 8 x 8 Block
mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Second 8 x 8 Block
mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
//send out data through data port
send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/NV12_DN_NV12.g4a
0,0 → 1,420
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 40 // Total instruction count
// 1 // Total kernel count
 
.kernel NV12_DN_NV12
.code
 
 
 
// FileName: DN_PL_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for planar format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_NV12_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
//CHANGE : Read extra UV data to convert to 422. -rT
//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x4000F:ud { NoDDChk } // U/V block width and height (8x5)
mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2390001:ud
 
//Update Header for Save
mov (1) mudMSGHDR_UVCOPY(0,2)<1> 0x3000F:ud // U/V block width and height (8x4)
 
 
 
// FileName: DN_Save_Y_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of Y channel of DN output for reference
 
 
mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
mov (2) mudDN_Y_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin
mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
 
//send out data through data port
send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
 
 
 
// FileName: DN_Save_UV_NV12_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
//Reuse the header from Load component
//Header is modified at the end of load - to be usable for save.
 
mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
mov (8) mudMSGHDR_UVCOPY(2)<1> udDNDI_UV_RESP(1)<8;8,1>
send (8) null<1>:d r36 0x5 0x60A8019:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_AVS_Buf_0.g4a
0,0 → 1,539
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 39 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PA_AVS_Buf_0.asm
// Author: Vivek Kumar
// Description: Loads 8x8 AVS/IEF Packed data into Buffer 0
 
 
 
// FileName : PA_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
 
//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
//Change it to Sample Unorm layout in Shuffle modules.
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
//Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
mov (1) r22.4<1>:ud 0x400040:ud
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
 
mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
 
 
//OPT: rAVS_PAYLOAD.1 and .7 --> use NODDCLR, NODDCHK -rT
mov (1) r25.7<1>:ud r7.7:ud { NoDDClr }
mov (1) r25.1<1>:ud r7.12:uw { NoDDChk }
 
 
// set the vertical block number
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_0_
 
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
 
GEN7_AVS_WA_DONE_L0_0_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
// Returns packed data in 16 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_0_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PA_AVS_Buf_1.g4a
0,0 → 1,531
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 37 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PA_AVS_Buf_1.asm
// Author: Vivek Kumar
// Description: Loads 8x8 AVS/IEF Packed data into Buffer 1
 
 
 
// FileName : PA_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
 
//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
//Change it to Sample Unorm layout in Shuffle modules.
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
 
mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
 
 
// set the vertical block number
 
add (1) r25.1<1>:ud r7.12:uw 1:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_1_
 
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
 
GEN7_AVS_WA_DONE_L0_1_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
// Returns packed data in 16 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_1_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PA_AVS_Buf_2.g4a
0,0 → 1,532
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 37 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PA_AVS_Buf_2.asm
// Author: Vivek Kumar
// Description: Loads 8x8 AVS/IEF Packed data into Buffer 2
 
 
 
// FileName : PA_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
 
//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
//Change it to Sample Unorm layout in Shuffle modules.
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
 
mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 2:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_2_
 
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
 
GEN7_AVS_WA_DONE_L0_2_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
// Returns packed data in 16 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_2_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PA_AVS_Buf_3.g4a
0,0 → 1,532
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 37 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PA_AVS_Buf_3.asm
// Author: Vivek Kumar
// Description: Loads 8x8 AVS/IEF Packed data into Buffer 3
 
 
 
// FileName : PA_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
 
//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
//Change it to Sample Unorm layout in Shuffle modules.
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
 
mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 3:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_3_
 
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
 
GEN7_AVS_WA_DONE_L0_3_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
// Returns packed data in 16 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_3_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PA_DI_422CP.g4a
0,0 → 1,461
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 87 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DI_422CP
.code
 
 
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DI_Save_422CP_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
 
 
.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
 
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:ud r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:ud r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) r27.3<1>:ud r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r24.0<1>:ud r27<8;8,1>:ud
 
 
// Pack 2nd field Y; First 8x4 block
mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; First 8x4 block
mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
 
// Pack 2nd field Y; Second 8x4 block
mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; Second 8x4 block
mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
send (8) null<1>:d r21.0 0x5 0x60A801B:ud
 
// Pack 1st field Y; 1st 8x4 block
mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U,V; 1st 8x4 block
mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Pack 1st field Y; 2nd 8x4 block
mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U, V; 2nd 8x4 block
mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r24.0 0x5 0x60A801E:ud
send (8) null<1>:d r27.0 0x5 0x60A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DI_PA.g4a
0,0 → 1,399
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 57 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DI_PA
.code
 
 
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DNDI_422CP.g4a
0,0 → 1,537
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 127 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DNDI_422CP
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4CE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of DN output in Packed format for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
add (4) a0.4<1>:uw r4.0<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3001F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(4,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(5,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(7,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(7,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(4,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 1,3)
mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(5,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 1,3)
mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(7,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(7,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0xA0A8018:ud
 
 
 
// FileName: DI_Save_422CP_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
 
 
.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
 
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:ud r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:ud r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) r27.3<1>:ud r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r24.0<1>:ud r27<8;8,1>:ud
 
 
// Pack 2nd field Y; First 8x4 block
mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; First 8x4 block
mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
 
// Pack 2nd field Y; Second 8x4 block
mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; Second 8x4 block
mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
send (8) null<1>:d r21.0 0x5 0x60A801B:ud
 
// Pack 1st field Y; 1st 8x4 block
mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U,V; 1st 8x4 block
mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Pack 1st field Y; 2nd 8x4 block
mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U, V; 2nd 8x4 block
mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r24.0 0x5 0x60A801E:ud
send (8) null<1>:d r27.0 0x5 0x60A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DNDI_PA.g4a
0,0 → 1,475
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 97 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DNDI_PA
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4CE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of DN output in Packed format for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
add (4) a0.4<1>:uw r4.0<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3001F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(4,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(5,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(7,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(7,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(4,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 1,3)
mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(5,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 1,3)
mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(7,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(7,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0xA0A8018:ud
 
 
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DNUV_PA.g4a
0,0 → 1,2704
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 1319 // Total instruction count
// 1 // Total kernel count
 
 
.kernel YUY2_DNUV_YUY2
.code
 
 
 
//Module : DN_UV_Setup
//Author : Tatiya, Rupesh
//Description : Initial Set-up for DN_UV
 
 
 
 
// Module name : ChromaDenoise.inc
// Author : Tatiya, Rupesh
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//======================================================
//Interface for serpent mode Chroma Denoise, added by Le
//======================================================
//r1
 
 
//noise history thresholds (low and high)
 
 
//temporal difference thresholds (high and low)
 
 
//noise history thresholds (low and high)
//#define ubNoiseHistMaxHigh r1.22
//#define ubNoiseHistMaxLow r1.23
//#define ubNoiseHistDeltaHigh r1.24
//#define ubNoiseHistDeltaLow r1.25
 
//Gaussian thresholds
 
 
//temporal difference thresholds (default)
 
 
//r2
//history thresholds (default)
 
 
//denoise factor (0-63)
 
 
//====================== Binding table (Explicit To DNUV)=========================================
//Used by DN_UV kernels
 
 
//Pointer to Current Frame UV
 
 
//r1-r6
//CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
 
 
.declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
.declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
.declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
.declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
.declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
.declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
 
//r1
 
 
//r3
 
 
//r4
 
//r7
//All of the following has to defined in Same GRF for optimal performance.
 
 
//r8-24
//Previous Frame UV
 
.declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
.declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
 
 
//r25-48
//TEMP Space for any Usage.
 
 
//=========================================================================
//Definations and declarations for serpent mode Chroma Denoise, added by Le
//=========================================================================
 
 
.declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
.declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
.declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
 
.declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
.declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
 
 
.declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
.declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
.declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
.declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
.declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
.declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
 
 
//====================================================================================
 
 
//TEMP23: To hold V data for PL3 surfaces
.declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
.declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//GRFs to calculate Median: r25-r42
.declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//18 GRFs to hold difference : r25-r42
.declare wDIFF Base=r25.0 ElementSize=2 Type=w
.declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
 
//Temporal Diff
.declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
.declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
 
//4 GRFs to hold Sobel Value : r43-46
.declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
.declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
 
 
//2 GRFs to hold SOAD temporarily: r47-48
.declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
 
//Temp GRFs to hold extra YUYV pixels: r43-r48
.declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
 
//Temp GRFs in Median Calculation: r47-r48
.declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
 
.declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
.declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
 
//Temp Space to store Median : r49-50
 
.declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
 
//r49
 
 
//r50
//Message Source
 
 
//r51
//DN_UV History Surface
 
.declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
.declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
 
//r52 - r91
//r52
//Current Frame UV
 
 
.declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
.declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
 
//r54
//CURBE COPY
 
 
//r55
 
 
.declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
 
//r61
 
 
//r62
 
 
//History Surface Temp Origin
 
 
//r63
//Current Frame Y Temp Origin
 
 
//BNE Surface Origin
 
 
//r70
 
.declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
 
//r74-91 : For Saving Dest UV (PL2/PL3)
 
 
.declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
 
//r90
 
.declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
 
//r92-127
//Current Frame Y
 
 
//r92
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
//r101
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
//r110
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
//r119
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
 
.declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
.declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
.declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
.declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
.declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
.declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
.declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
.declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
 
//r92: To hold U data for PL3 surfaces
.declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
.declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
 
//r112: To hold U data for PL3 surfaces
.declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
.declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
 
//r120: To hold U data for PL3 surfaces
.declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
.declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
 
 
// Initialize message source with r0.
mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
 
 
 
//Module Name : DN_UV_YUY2_Load_Curr_Frame_YUV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame YUV data for YUY2 input.
 
 
 
//Module name : DN_UV_Load_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame (UV only).
// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
 
 
 
 
//72x20 interleaved YUYV block is partitioned as follows:
// <------ 36 --------> <--------36 ------->
// ------------------------------------------
// | | 32x2 B1 | 32x2 B2 | |
// | 4 |--------------------------------| 4 |
// | x | | | x |
// |20 | 32x8 A1 | 32x8 A3 | 20|
// | |---------------|----------------| |
// | C1| 32x8 A2 | 32x8 A4 | C2|
// | | | | |
// | |--------------------------------| |
// | | 32x2 B3 | 32x2 B4 | |
// ------------------------------------------
//
// Cordinates: (x, y), (x, y+8), (x+32, y), (x+32, y+8), (x-4, y-2), (x+64, y-2),(x, y-2), (x+32, y-2), (x, y+16), (x+32, y+16)
 
//UV surface origin: (2xORIX, ORIY)
add (2) r7.4<1>:w r7.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
shl (1) r7.4<1>:w acc0.4<0;1,0>:w 1:w
 
//A1
mov (2) r92.0<1>:d r7.4<2;2,1>:w { AccWrEn } // Source Block origin
mov (1) r92.2<1>:ud 0x7001F:ud
send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
 
//A2
mov (1) r101.0<1>:d acc0.0<0;1,0>:d
add (1) r101.1<1>:d acc0.1<0;1,0>:d 8:d
mov (1) r101.2<1>:ud 0x7001F:ud
send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
 
//B1
mov (1) r50.0<1>:d acc0.0<0;1,0>:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x1001F:ud
send (8) udCURR_UV(0)<1> r50 0x4 0x2290003:ud
 
//B3
mov (1) r50.0<1>:d acc0.0<0;1,0>:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
send (8) udCURR_UV(18)<1> r50 0x4 0x2290003:ud
 
//C1
add (1) r50.0<1>:d acc0.0<0;1,0>:d -4:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x130003:ud
send (8) ubTEMP5(0)<1> r50 0x4 0x2390003:ud
 
//A3
add (1) r110.0<1>:d acc0.0<0;1,0>:d 32:d
mov (1) r110.1<1>:d acc0.1<0;1,0>:d
mov (1) r110.2<1>:ud 0x7001F:ud
send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
 
//A4
add (1) r119.0<1>:d acc0.0<0;1,0>:d 32:d
add (1) r119.1<1>:d acc0.1<0;1,0>:d 8:d
mov (1) r119.2<1>:ud 0x7001F:ud
send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
 
//B2
add (1) r50.0<1>:d acc0.0<0;1,0>:d 32:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x1001F:ud
send (8) udCURR_UV(20)<1> r50 0x4 0x2290003:ud
 
//B4
add (1) r50.0<1>:d acc0.0<0;1,0>:d 32:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
send (8) udCURR_UV(38)<1> r50 0x4 0x2290003:ud
 
//C2
add (1) r50.0<1>:d acc0.0<0;1,0>:d 64:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x130003:ud
send (8) ubTEMP5(3)<1> r50 0x4 0x2390003:ud
 
//History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
 
//Calculate Origin For History Surface: (ORIX/4, ORIY/4)
shr (2) r7.2<1>:w r7.0<2;2,1>:w 2:w
 
//Calculate Origin For BNE Surface: (ORIX/8, ORIY/8)
shr (2) r7.6<1>:w r7.0<2;2,1>:w 3:w
 
 
 
//Module Name : DN_UV_YUY2_Load_Prev_Frame_YUV.asm
//Author : Tatiya, Rupesh
//Description : Loads Pevious Frame YUV data for YUY2 input.
 
 
 
//Module Name : DN_UV_Load_Prev_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
 
 
 
 
mov (2) r50.0<1>:d r7.4<2;2,1>:w { AccWrEn } // Source lock origin
mov (1) r50.2<1>:ud 0x7001F:ud // U/V block width and height (16x16)
send (8) udPREV_UV(0)<1> r50 0x4 0x2890000:ud
 
add (1) r50.1<1>:ud acc0.1<0;1,0>:d 8:w // Add 16 to X origin
send (8) udPREV_UV(8)<1> r50 0x4 0x2890000:ud
 
add (1) r50.0<1>:ud acc0.0<0;1,0>:d 32:w
mov (1) r50.1<1>:ud acc0.1<0;1,0>:d
send (8) udPREV_UV(16)<1> r50 0x4 0x2890000:ud
 
add (1) r50.1<1>:ud acc0.0<0;1,0>:d 8:w
send (8) udPREV_UV(24)<1> r50 0x4 0x2890000:ud
 
 
//TODO - See if History loading can be combined with Prev Frame Load. - rT
 
 
//Module name : DN_UV_Load_Hist_UV
//Author : Tatiya, Rupesh
//Description : Load DN History for UV denoise. 4x4 for each U & V.
 
 
 
 
mov (2) r50.0<1>:d r7.2<2;2,1>:w
mov (1) r50.2<1>:ud 0x30007:ud
send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
 
 
 
//Module Name: DN_UV_YUY2_Extract_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description: Extract UV data from current YUY2 frame.
 
//72x20 interleaved YUYV block is partitioned as follows:
// <------ 36 --------> <--------36 ------->
// ------------------------------------------
// | | 32x2 B1 | 32x2 B2 | |
// | 4 |--------------------------------| 4 |
// | x | | | x |
// |20 | 32x8 A1 | 32x8 A3 | 20|
// | |---------------|----------------| |
// | C1| 32x8 A2 | 32x8 A4 | C2|
// | | | | |
// | |--------------------------------| |
// | | 32x2 B3 | 32x2 B4 | |
// ------------------------------------------
 
// Set SRC pointers according to Input packing i.e. YUYV, YVYU, UYVY, VYUY
add (1) a0.0<1>:uw r4.1<0;1,0>:ub 2976:w //A1
add (1) a0.1<1>:uw r4.1<0;1,0>:ub 3264:w //A2
add (1) a0.2<1>:uw r4.1<0;1,0>:ub 3552:w //A3
add (1) a0.3<1>:uw r4.1<0;1,0>:ub 3840:w //A4
add (1) a0.4<1>:uw r4.1<0;1,0>:ub 1664:w //B1
add (1) a0.5<1>:uw r4.1<0;1,0>:ub 2240:w //B3B2
add (1) a0.6<1>:uw r4.1<0;1,0>:ub 2880:w //B4
add (1) a0.7<1>:uw r4.1<0;1,0>:ub 1376:w //C1C2
 
//Left 20x20 UV : 16x16 UV (Original)+4 extra rows(2 per field on top/bottom)+4 extra pixels(2 on left/right)
 
//A1
mov (16) ubCURR_UV(2,2)<1> r[a0.0, 0]<32;16,2>
mov (16) ubCURR_UV(3,2)<1> r[a0.0, 32]<32;16,2>
mov (16) ubCURR_UV(4,2)<1> r[a0.0, 64]<32;16,2>
mov (16) ubCURR_UV(5,2)<1> r[a0.0, 96]<32;16,2>
mov (16) ubCURR_UV(6,2)<1> r[a0.0, 128]<32;16,2>
mov (16) ubCURR_UV(7,2)<1> r[a0.0, 160]<32;16,2>
mov (16) ubCURR_UV(8,2)<1> r[a0.0, 192]<32;16,2>
mov (16) ubCURR_UV(9,2)<1> r[a0.0, 224]<32;16,2>
 
//A2
mov (16) ubCURR_UV(10,2)<1> r[a0.1, 0]<32;16,2>
mov (16) ubCURR_UV(11,2)<1> r[a0.1, 32]<32;16,2>
mov (16) ubCURR_UV(12,2)<1> r[a0.1, 64]<32;16,2>
mov (16) ubCURR_UV(13,2)<1> r[a0.1, 96]<32;16,2>
mov (16) ubCURR_UV(14,2)<1> r[a0.1, 128]<32;16,2>
mov (16) ubCURR_UV(15,2)<1> r[a0.1, 160]<32;16,2>
mov (16) ubCURR_UV(16,2)<1> r[a0.1, 192]<32;16,2>
mov (16) ubCURR_UV(17,2)<1> r[a0.1, 224]<32;16,2>
 
//B1
mov (16) ubCURR_UV(0,2)<1> r[a0.4, 0]<32;16,2>
mov (16) ubCURR_UV(1,2)<1> r[a0.4, 32]<32;16,2>
 
//B3
mov (16) ubCURR_UV(18,2)<1> r[a0.5, 0]<32;16,2>
mov (16) ubCURR_UV(19,2)<1> r[a0.5, 32]<32;16,2>
 
//TODO - Find a way to reduce this 40 SIMD2 instructions - rT
//C1
mov (2) ubCURR_UV(0,0)<1> r[a0.7, 0]<4;2,2>
mov (2) ubCURR_UV(1,0)<1> r[a0.7, 4]<4;2,2>
mov (2) ubCURR_UV(2,0)<1> r[a0.7, 8]<4;2,2>
mov (2) ubCURR_UV(3,0)<1> r[a0.7, 12]<4;2,2>
mov (2) ubCURR_UV(4,0)<1> r[a0.7, 16]<4;2,2>
mov (2) ubCURR_UV(5,0)<1> r[a0.7, 20]<4;2,2>
mov (2) ubCURR_UV(6,0)<1> r[a0.7, 24]<4;2,2>
mov (2) ubCURR_UV(7,0)<1> r[a0.7, 28]<4;2,2>
mov (2) ubCURR_UV(8,0)<1> r[a0.7, 32]<4;2,2>
mov (2) ubCURR_UV(9,0)<1> r[a0.7, 36]<4;2,2>
mov (2) ubCURR_UV(10,0)<1> r[a0.7, 40]<4;2,2>
mov (2) ubCURR_UV(11,0)<1> r[a0.7, 44]<4;2,2>
mov (2) ubCURR_UV(12,0)<1> r[a0.7, 48]<4;2,2>
mov (2) ubCURR_UV(13,0)<1> r[a0.7, 52]<4;2,2>
mov (2) ubCURR_UV(14,0)<1> r[a0.7, 56]<4;2,2>
mov (2) ubCURR_UV(15,0)<1> r[a0.7, 60]<4;2,2>
mov (2) ubCURR_UV(16,0)<1> r[a0.7, 64]<4;2,2>
mov (2) ubCURR_UV(17,0)<1> r[a0.7, 68]<4;2,2>
mov (2) ubCURR_UV(18,0)<1> r[a0.7, 72]<4;2,2>
mov (2) ubCURR_UV(19,0)<1> r[a0.7, 76]<4;2,2>
 
//2 right bytes from B2 - 2 rows
mov (2) ubCURR_UV(0,18)<1> r[a0.5, 64]<4;2,2>
mov (2) ubCURR_UV(1,18)<1> r[a0.5, 96]<4;2,2>
 
//2 right bytes from A3 - 8 rows
mov (2) ubCURR_UV(2,18)<1> r[a0.2, 0]<4;2,2>
mov (2) ubCURR_UV(3,18)<1> r[a0.2, 32]<4;2,2>
mov (2) ubCURR_UV(4,18)<1> r[a0.2, 64]<4;2,2>
mov (2) ubCURR_UV(5,18)<1> r[a0.2, 96]<4;2,2>
mov (2) ubCURR_UV(6,18)<1> r[a0.2, 128]<4;2,2>
mov (2) ubCURR_UV(7,18)<1> r[a0.2, 160]<4;2,2>
mov (2) ubCURR_UV(8,18)<1> r[a0.2, 192]<4;2,2>
mov (2) ubCURR_UV(9,18)<1> r[a0.2, 224]<4;2,2>
 
//2 right bytes from A4 - 8 rows
mov (2) ubCURR_UV(10,18)<1> r[a0.3, 0]<4;2,2>
mov (2) ubCURR_UV(11,18)<1> r[a0.3, 32]<4;2,2>
mov (2) ubCURR_UV(12,18)<1> r[a0.3, 64]<4;2,2>
mov (2) ubCURR_UV(13,18)<1> r[a0.3, 96]<4;2,2>
mov (2) ubCURR_UV(14,18)<1> r[a0.3, 128]<4;2,2>
mov (2) ubCURR_UV(15,18)<1> r[a0.3, 160]<4;2,2>
mov (2) ubCURR_UV(16,18)<1> r[a0.3, 192]<4;2,2>
mov (2) ubCURR_UV(17,18)<1> r[a0.3, 224]<4;2,2>
 
//2 right bytes from B4 - 2 rows
mov (2) ubCURR_UV(18,18)<1> r[a0.6, 0]<4;2,2>
mov (2) ubCURR_UV(19,18)<1> r[a0.6, 32]<4;2,2>
 
//Right 20x20 UV : 16x16 UV (Original)+4 extra rows(2 per field on top/bottom)+4 extra pixels(2 on left/right)
 
//A3
mov (16) ubCURR_UV(22,2)<1> r[a0.2, 0]<32;16,2>
mov (16) ubCURR_UV(23,2)<1> r[a0.2, 32]<32;16,2>
mov (16) ubCURR_UV(24,2)<1> r[a0.2, 64]<32;16,2>
mov (16) ubCURR_UV(25,2)<1> r[a0.2, 96]<32;16,2>
mov (16) ubCURR_UV(26,2)<1> r[a0.2, 128]<32;16,2>
mov (16) ubCURR_UV(27,2)<1> r[a0.2, 160]<32;16,2>
mov (16) ubCURR_UV(28,2)<1> r[a0.2, 192]<32;16,2>
mov (16) ubCURR_UV(29,2)<1> r[a0.2, 224]<32;16,2>
 
//A4
mov (16) ubCURR_UV(30,2)<1> r[a0.3, 0]<32;16,2>
mov (16) ubCURR_UV(31,2)<1> r[a0.3, 32]<32;16,2>
mov (16) ubCURR_UV(32,2)<1> r[a0.3, 64]<32;16,2>
mov (16) ubCURR_UV(33,2)<1> r[a0.3, 96]<32;16,2>
mov (16) ubCURR_UV(34,2)<1> r[a0.3, 128]<32;16,2>
mov (16) ubCURR_UV(35,2)<1> r[a0.3, 160]<32;16,2>
mov (16) ubCURR_UV(36,2)<1> r[a0.3, 192]<32;16,2>
mov (16) ubCURR_UV(37,2)<1> r[a0.3, 224]<32;16,2>
 
//B2
mov (16) ubCURR_UV(20,2)<1> r[a0.5, 64]<32;16,2>
mov (16) ubCURR_UV(21,2)<1> r[a0.5, 96]<32;16,2>
 
//B4
mov (16) ubCURR_UV(38,2)<1> r[a0.6, 0]<32;16,2>
mov (16) ubCURR_UV(39,2)<1> r[a0.6, 32]<32;16,2>
 
//TODO - Find a way to reduce this 40 SIMD2 instructions - rT
//C2
mov (2) ubCURR_UV(20,18)<1> r[a0.7, 96]<4;2,2>
mov (2) ubCURR_UV(21,18)<1> r[a0.7, 100]<4;2,2>
mov (2) ubCURR_UV(22,18)<1> r[a0.7, 104]<4;2,2>
mov (2) ubCURR_UV(23,18)<1> r[a0.7, 108]<4;2,2>
mov (2) ubCURR_UV(24,18)<1> r[a0.7, 112]<4;2,2>
mov (2) ubCURR_UV(25,18)<1> r[a0.7, 116]<4;2,2>
mov (2) ubCURR_UV(26,18)<1> r[a0.7, 120]<4;2,2>
mov (2) ubCURR_UV(27,18)<1> r[a0.7, 124]<4;2,2>
mov (2) ubCURR_UV(28,18)<1> r[a0.7, 128]<4;2,2>
mov (2) ubCURR_UV(29,18)<1> r[a0.7, 132]<4;2,2>
mov (2) ubCURR_UV(30,18)<1> r[a0.7, 136]<4;2,2>
mov (2) ubCURR_UV(31,18)<1> r[a0.7, 140]<4;2,2>
mov (2) ubCURR_UV(32,18)<1> r[a0.7, 144]<4;2,2>
mov (2) ubCURR_UV(33,18)<1> r[a0.7, 148]<4;2,2>
mov (2) ubCURR_UV(34,18)<1> r[a0.7, 152]<4;2,2>
mov (2) ubCURR_UV(35,18)<1> r[a0.7, 156]<4;2,2>
mov (2) ubCURR_UV(36,18)<1> r[a0.7, 160]<4;2,2>
mov (2) ubCURR_UV(37,18)<1> r[a0.7, 164]<4;2,2>
mov (2) ubCURR_UV(38,18)<1> r[a0.7, 168]<4;2,2>
mov (2) ubCURR_UV(39,18)<1> r[a0.7, 172]<4;2,2>
 
//2 left bytes from B1 - 2 rows
mov (2) ubCURR_UV(20,0)<1> r[a0.4, 28]<4;2,2>
mov (2) ubCURR_UV(21,0)<1> r[a0.4, 60]<4;2,2>
 
//2 left bytes from A1 - 8 rows
mov (2) ubCURR_UV(22,0)<1> r[a0.0, 28]<4;2,2>
mov (2) ubCURR_UV(23,0)<1> r[a0.0, 60]<4;2,2>
mov (2) ubCURR_UV(24,0)<1> r[a0.0, 92]<4;2,2>
mov (2) ubCURR_UV(25,0)<1> r[a0.0, 124]<4;2,2>
mov (2) ubCURR_UV(26,0)<1> r[a0.0, 156]<4;2,2>
mov (2) ubCURR_UV(27,0)<1> r[a0.0, 188]<4;2,2>
mov (2) ubCURR_UV(28,0)<1> r[a0.0, 220]<4;2,2>
mov (2) ubCURR_UV(29,0)<1> r[a0.0, 252]<4;2,2>
 
//2 left bytes from A2 - 8 rows
mov (2) ubCURR_UV(30,0)<1> r[a0.1, 28]<4;2,2>
mov (2) ubCURR_UV(31,0)<1> r[a0.1, 60]<4;2,2>
mov (2) ubCURR_UV(32,0)<1> r[a0.1, 92]<4;2,2>
mov (2) ubCURR_UV(33,0)<1> r[a0.1, 124]<4;2,2>
mov (2) ubCURR_UV(34,0)<1> r[a0.1, 156]<4;2,2>
mov (2) ubCURR_UV(35,0)<1> r[a0.1, 188]<4;2,2>
mov (2) ubCURR_UV(36,0)<1> r[a0.1, 220]<4;2,2>
mov (2) ubCURR_UV(37,0)<1> r[a0.1, 252]<4;2,2>
 
//2 left bytes from B3 - 2 rows
mov (2) ubCURR_UV(38,0)<1> r[a0.5, 28]<4;2,2>
mov (2) ubCURR_UV(39,0)<1> r[a0.5, 60]<4;2,2>
 
 
 
// Module Name : DN_UV_YUY2_Extract_Prev_Frame_UV
// Author : Tatiya, Rupesh
// Description : Extract UV from previous frame YUY2.
 
// Set SRC pointers according to Input packing i.e. YUYV, YVYU, UYVY, VYUY
add (1) a0.0<1>:uw r4.1<0;1,0>:ub 256:w
add (1) a0.1<1>:uw r4.1<0;1,0>:ub 768:w
 
mov (16) ubPREV_UV(0,0)<1> r[a0.0, 0]<32;16,2>:ub
mov (16) ubPREV_UV(0,16)<1> r[a0.0, 32]<32;16,2>:ub
mov (16) ubPREV_UV(1,0)<1> r[a0.0, 64]<32;16,2>:ub
mov (16) ubPREV_UV(1,16)<1> r[a0.0, 96]<32;16,2>:ub
mov (16) ubPREV_UV(2,0)<1> r[a0.0, 128]<32;16,2>:ub
mov (16) ubPREV_UV(2,16)<1> r[a0.0, 160]<32;16,2>:ub
mov (16) ubPREV_UV(3,0)<1> r[a0.0, 192]<32;16,2>:ub
mov (16) ubPREV_UV(3,16)<1> r[a0.0, 224]<32;16,2>:ub
mov (16) ubPREV_UV(4,0)<1> r[a0.0, 256]<32;16,2>:ub
mov (16) ubPREV_UV(4,16)<1> r[a0.0, 288]<32;16,2>:ub
mov (16) ubPREV_UV(5,0)<1> r[a0.0, 320]<32;16,2>:ub
mov (16) ubPREV_UV(5,16)<1> r[a0.0, 352]<32;16,2>:ub
mov (16) ubPREV_UV(6,0)<1> r[a0.0, 384]<32;16,2>:ub
mov (16) ubPREV_UV(6,16)<1> r[a0.0, 416]<32;16,2>:ub
mov (16) ubPREV_UV(7,0)<1> r[a0.0, 448]<32;16,2>:ub
mov (16) ubPREV_UV(7,16)<1> r[a0.0, 480]<32;16,2>:ub
 
mov (16) ubPREV_UV(8,0)<1> r[a0.1, 0]<32;16,2>:ub
mov (16) ubPREV_UV(8,16)<1> r[a0.1, 32]<32;16,2>:ub
mov (16) ubPREV_UV(9,0)<1> r[a0.1, 64]<32;16,2>:ub
mov (16) ubPREV_UV(9,16)<1> r[a0.1, 96]<32;16,2>:ub
mov (16) ubPREV_UV(10,0)<1> r[a0.1, 128]<32;16,2>:ub
mov (16) ubPREV_UV(10,16)<1> r[a0.1, 160]<32;16,2>:ub
mov (16) ubPREV_UV(11,0)<1> r[a0.1, 192]<32;16,2>:ub
mov (16) ubPREV_UV(11,16)<1> r[a0.1, 224]<32;16,2>:ub
mov (16) ubPREV_UV(12,0)<1> r[a0.1, 256]<32;16,2>:ub
mov (16) ubPREV_UV(12,16)<1> r[a0.1, 288]<32;16,2>:ub
mov (16) ubPREV_UV(13,0)<1> r[a0.1, 320]<32;16,2>:ub
mov (16) ubPREV_UV(13,16)<1> r[a0.1, 352]<32;16,2>:ub
mov (16) ubPREV_UV(14,0)<1> r[a0.1, 384]<32;16,2>:ub
mov (16) ubPREV_UV(14,16)<1> r[a0.1, 416]<32;16,2>:ub
mov (16) ubPREV_UV(15,0)<1> r[a0.1, 448]<32;16,2>:ub
mov (16) ubPREV_UV(15,16)<1> r[a0.1, 480]<32;16,2>:ub
 
 
 
//Module Name : DN_UV_Noise_Detection_UV
//Author : Tatiya, Rupesh
//Description : Performs noise detection on 16x16 U and 16x16 V each.
 
 
 
//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
//Author : Tatiya, Rupesh
 
 
 
 
//Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
 
mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
 
//Move Inline Data to another space - so that it can be used as Temp Space --> r7
mov (4) r62.10<1>:w r7.0<4;4,1>:w
mov (4) r63.10<1>:w r7.4<4;4,1>:w
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 1664:uw
mov (1) a0.1:uw 1816:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1792:uw
mov (1) a0.1:uw 1820:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1920:uw
mov (1) a0.1:uw 1848:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2048:uw
mov (1) a0.1:uw 1852:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 2304:uw
mov (1) a0.1:uw 1880:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2432:uw
mov (1) a0.1:uw 1884:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2560:uw
mov (1) a0.1:uw 1912:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2688:uw
mov (1) a0.1:uw 1916:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
//Module : DN_UV_Noise_Reduction_UV
//Author : Tatiya, Rupesh
//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
//Tasks : 1. Update weight history
// 2. Find if it block is motion block
// 3. Compute Denoised Pixel.
 
 
 
 
//History is 1+1 byte every 4x4 U and 4x4 V.
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
 
mov (16) uwCURBE_TEMP(0)<1> 0:w
mov (16) uwCURBE_TEMP(1)<1> 0:w
 
//Compute diff betn curr and prev. - First 16 lines
// 8 lines here
add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
 
//Update WT HIST
(-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
 
//Compute diff betn curr and prev. - First 16 lines
// 8 more lines here
add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
 
(-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
 
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
 
//Compute diff betn curr and prev. - Second 16 lines
//13 lines.
add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
 
//3 more lines
add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
 
//16x4 to 8x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
 
//Find if block is motion block - First 16 lines
cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - First 16 lines
(-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
 
//Actual DN - First 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
 
 
//16x4 to 8x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//Find if block is motion block - Second 16 lines
cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - Second 16 lines
(-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
 
//Actual DN - Second 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
 
//Pack Weight History WORD -> BYTE
mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
 
 
 
//Module Name : DN_UV_Compute_BNE_UV
//Author : Tatiya, Rupesh
//Description : Computes minimum SOAD for each 16x4 block.
 
cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
(f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
 
mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
 
 
 
//Module Name : DN_UV_YUY2_Pack_Denoised_UV
//Name : Tatiya, Rupesh
//Description : Pack UV denoised data based on YUY2 input.
 
 
 
//Module Name : DN_UV_Pack_Denoised_UV
//Name : Tatiya, Rupesh
//Description : Pack UV denoised data based on PL2/PL3/PA.
 
 
add (1) a0.0<1>:uw r54.21<0;1,0>:ub 2976:w
add (1) a0.1<1>:uw r54.21<0;1,0>:ub 3264:w
add (1) a0.2<1>:uw r54.21<0;1,0>:ub 3552:w
add (1) a0.3<1>:uw r54.21<0;1,0>:ub 3840:w
 
//First 8 lines.
mov (16) r[a0.0, 0]<2>:ub ubDIFF_TEMPORAL(0)<32;16,2>
mov (16) r[a0.0, 32]<2>:ub ubDIFF_TEMPORAL(1)<32;16,2>
mov (16) r[a0.0, 64]<2>:ub ubDIFF_TEMPORAL(2)<32;16,2>
mov (16) r[a0.0, 96]<2>:ub ubDIFF_TEMPORAL(3)<32;16,2>
mov (16) r[a0.0, 128]<2>:ub ubDIFF_TEMPORAL(4)<32;16,2>
mov (16) r[a0.0, 160]<2>:ub ubDIFF_TEMPORAL(5)<32;16,2>
mov (16) r[a0.0, 192]<2>:ub ubDIFF_TEMPORAL(6)<32;16,2>
mov (16) r[a0.0, 224]<2>:ub ubDIFF_TEMPORAL(7)<32;16,2>
 
//Second 8 lines
mov (16) r[a0.1, 0]<2>:ub ubDIFF_TEMPORAL(8)<32;16,2>
mov (16) r[a0.1, 32]<2>:ub ubDIFF_TEMPORAL(9)<32;16,2>
mov (16) r[a0.1, 64]<2>:ub ubDIFF_TEMPORAL(10)<32;16,2>
mov (16) r[a0.1, 96]<2>:ub ubDIFF_TEMPORAL(11)<32;16,2>
mov (16) r[a0.1, 128]<2>:ub ubDIFF_TEMPORAL(12)<32;16,2>
mov (16) r[a0.1, 160]<2>:ub ubDIFF_TEMPORAL(13)<32;16,2>
mov (16) r[a0.1, 192]<2>:ub ubDIFF_TEMPORAL(14)<32;16,2>
mov (16) r[a0.1, 224]<2>:ub ubDIFF_TEMPORAL(15)<32;16,2>
 
//Third 8 lines
mov (16) r[a0.2, 0]<2>:ub ubDIFF_TEMPORAL(16)<32;16,2>
mov (16) r[a0.2, 32]<2>:ub ubDIFF_TEMPORAL(17)<32;16,2>
mov (16) r[a0.2, 64]<2>:ub ubDIFF_TEMPORAL(18)<32;16,2>
mov (16) r[a0.2, 96]<2>:ub ubDIFF_TEMPORAL(19)<32;16,2>
mov (16) r[a0.2, 128]<2>:ub ubDIFF_TEMPORAL(20)<32;16,2>
mov (16) r[a0.2, 160]<2>:ub ubDIFF_TEMPORAL(21)<32;16,2>
mov (16) r[a0.2, 192]<2>:ub ubDIFF_TEMPORAL(22)<32;16,2>
mov (16) r[a0.2, 224]<2>:ub ubDIFF_TEMPORAL(23)<32;16,2>
 
//Fourth 8 lines
//5 lines first
mov (16) r[a0.3, 0]<2>:ub ubDIFF_TEMPORAL(24)<32;16,2>
mov (16) r[a0.3, 32]<2>:ub ubDIFF_TEMPORAL(25)<32;16,2>
mov (16) r[a0.3, 64]<2>:ub ubDIFF_TEMPORAL(26)<32;16,2>
mov (16) r[a0.3, 96]<2>:ub ubDIFF_TEMPORAL(27)<32;16,2>
mov (16) r[a0.3, 128]<2>:ub ubDIFF_TEMPORAL(28)<32;16,2>
 
//3 more lines
mov (16) r[a0.3, 160]<2>:ub ubCURBE_TEMP(4)<32;16,2>
mov (16) r[a0.3, 192]<2>:ub ubCURBE_TEMP(5)<32;16,2>
mov (16) r[a0.3, 224]<2>:ub ubCURBE_TEMP(6)<32;16,2>
 
 
//TODO - See if History saving can be combined with Curr Frame Save. - rT
 
 
//Module Name : DN_UV_Save_Hist_UV
//Author : Tatiya, Rupesh
//Description : Saves DN history for UV data.
 
mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
mov (2) r3.0<1>:d r62.12<2;2,1>:w
mov (1) r3.2<1>:d 0x30007:ud
 
send (8) null<1>:d r3 0x5 0x40A8021:ud
 
 
 
//Module Name : DN_UV_Save_BNE_UV
//Author : Tatiya, Rupesh
//Description : Saves BNE values for 16x16 U and 16x16 V.
 
mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
mov (2) r1.0<1>:d r63.12<2;2,1>:w
mov (1) r1.2<1>:d 0x10003:ud
 
send (8) null<1>:d r1 0x5 0x40A8023:ud
 
 
 
//Module Name : DN_UV_YUY2_Save_Curr_Frame_YUV
//Author : Tatiya, Rupesh
 
 
 
//Module Name : DN_UV_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Saves Y or YUY2 of Current frame.
 
 
 
 
mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
shl (1) r62.10<1>:w r62.10<0;1,0>:w 1:w
mov (1) acc0.0<1>:d r62.10<0;1,0>:w
mov (1) acc0.1<1>:d r62.11<0;1,0>:w
 
mov (1) acc0.2<1>:d 0x7001F:ud
 
mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
 
mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
 
add (1) r101.1<1>:d acc0.1<0;1,0>:d 8:d
 
add (1) r110.0<1>:d acc0.0<0;1,0>:d 32:d
 
add (1) r119.0<1>:d acc0.0<0;1,0>:d 32:d
add (1) r119.1<1>:d acc0.1<0;1,0>:d 8:d
 
send (8) null<1>:d r92 0x5 0x120A8018:ud
send (8) null<1>:d r101 0x5 0x120A8018:ud
send (8) null<1>:d r110 0x5 0x120A8018:ud
send (8) null<1>:d r119 0x5 0x120A8018:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
//All sub-routines here
 
 
// Module Name : Noise_Detection
// Author : Tatiya, Rupesh
// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
 
DN_UV_NOISE_DETECTION_UV:
 
// Find Field Block Median
//
// Purpose : Find the median value of the nine pixels in the same field
// which are centered at current pixel.
//
// Works on 9 pixels centered at the current pixel
// NOTE: pixels are within same field.
// v4 - current pixel
//
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
 
// Algorithm to find median modifies the data.
// Copy the data needed to calculate median so the original source data stays intact.
//
 
//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
 
//Delete Later - rT
//mov (1) pCUR_UV:uw 52*32:uw
 
// v0
mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
// v0
mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// MedianSwap
//
// MedianSwap(inOutLeft, inOutRight)
// {
// if (inOutLeft > inOutRight)
// {
// temp = inOutLeft
// inOutLeft = inOutRight
// inOutRight = temp
// }
// }
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
 
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
// Sobel Value calculation for the current pixel v4
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
//
// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
//
// Sobel = (|Gx| + |Gy|) >> 3
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
 
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
 
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
 
shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
 
shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
 
shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
 
shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
 
//Mov Median in CURBE_TEMP to free up temp space.
mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
 
// Find:
// absDiff = abs(ubCurY - ubMedian)
// Find the difference between pixel and median value.
 
//Median is interleaved. So difference is also interleaved.
 
//------------------------------------------------------------------------------------------
//Process 16 U and 16 V pixels here and rest later.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//First 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
// if (sigma_mb_min > sigma)
// sigma_mb_min = sigma;
 
//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
// So just do -
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
// sigma_mb_min = sigma;
 
//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
//Compare first 8 bytes with max possible (255).
//Start above condition from second 8 bytes.
 
//TODO - Change Later - rT
// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
 
//First row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
 
//Second row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//Second 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//Third row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
 
//Fourth row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
 
cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
 
cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
 
 
 
 
 
 
// End of common.inc
 
mov (1) ip:ud r7.7<0;1,0>:d
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DN_422CP.g4a
0,0 → 1,491
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 114 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DN_422CP
.code
 
 
 
// FileName: DN_PA_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for Packed format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x49E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Save_PA.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of DN output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7001F:ud { NoDDChk } // block width and height (32x8)
 
mov (16) r[a0.4,0]<2>:ub ubDNDI_RESP(0,0)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,32]<2>:ub ubDNDI_RESP(0,16)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,64]<2>:ub ubDNDI_RESP(0,32)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,96]<2>:ub ubDNDI_RESP(0,48)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,128]<2>:ub ubDNDI_RESP(0,64)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,160]<2>:ub ubDNDI_RESP(0,80)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,192]<2>:ub ubDNDI_RESP(0,96)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,224]<2>:ub ubDNDI_RESP(0,112)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) r[a0.5,0]<4>:ub ubDNDI_RESP(5,1)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,0]<4>:ub ubDNDI_RESP(5,0)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,32]<4>:ub ubDNDI_RESP(5,17)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,32]<4>:ub ubDNDI_RESP(5,16)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,64]<4>:ub ubDNDI_RESP(5,33)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,64]<4>:ub ubDNDI_RESP(5,32)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,96]<4>:ub ubDNDI_RESP(5,49)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,96]<4>:ub ubDNDI_RESP(5,48)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,128]<4>:ub ubDNDI_RESP(5,65)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,128]<4>:ub ubDNDI_RESP(5,64)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,160]<4>:ub ubDNDI_RESP(5,81)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,160]<4>:ub ubDNDI_RESP(5,80)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,192]<4>:ub ubDNDI_RESP(5,97)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,192]<4>:ub ubDNDI_RESP(5,96)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,224]<4>:ub ubDNDI_RESP(5,113)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,224]<4>:ub ubDNDI_RESP(5,112)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
 
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x120A8018:ud
 
 
 
// FileName: DN_Save_422CP_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
 
 
.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
 
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
// First 8 x 8 Block
mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Second 8 x 8 Block
mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
//send out data through data port
send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PA_DN_PA.g4a
0,0 → 1,403
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 57 // Total instruction count
// 1 // Total kernel count
 
.kernel PA_DN_PA
.code
 
 
 
// FileName: DN_PA_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for Packed format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x49E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Save_PA.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of DN output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7001F:ud { NoDDChk } // block width and height (32x8)
 
mov (16) r[a0.4,0]<2>:ub ubDNDI_RESP(0,0)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,32]<2>:ub ubDNDI_RESP(0,16)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,64]<2>:ub ubDNDI_RESP(0,32)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,96]<2>:ub ubDNDI_RESP(0,48)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,128]<2>:ub ubDNDI_RESP(0,64)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,160]<2>:ub ubDNDI_RESP(0,80)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,192]<2>:ub ubDNDI_RESP(0,96)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (16) r[a0.4,224]<2>:ub ubDNDI_RESP(0,112)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) r[a0.5,0]<4>:ub ubDNDI_RESP(5,1)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,0]<4>:ub ubDNDI_RESP(5,0)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,32]<4>:ub ubDNDI_RESP(5,17)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,32]<4>:ub ubDNDI_RESP(5,16)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,64]<4>:ub ubDNDI_RESP(5,33)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,64]<4>:ub ubDNDI_RESP(5,32)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,96]<4>:ub ubDNDI_RESP(5,49)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,96]<4>:ub ubDNDI_RESP(5,48)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,128]<4>:ub ubDNDI_RESP(5,65)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,128]<4>:ub ubDNDI_RESP(5,64)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,160]<4>:ub ubDNDI_RESP(5,81)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,160]<4>:ub ubDNDI_RESP(5,80)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,192]<4>:ub ubDNDI_RESP(5,97)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,192]<4>:ub ubDNDI_RESP(5,96)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (8) r[a0.5,224]<4>:ub ubDNDI_RESP(5,113)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (8) r[a0.6,224]<4>:ub ubDNDI_RESP(5,112)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
 
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x120A8018:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL2_AVS_Buf_0.g4a
0,0 → 1,542
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 44 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL2_AVS_Buf_0.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
 
 
 
// FileName : PL2_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
//Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
mov (1) r22.4<1>:ud 0x400040:ud
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
mov (1) r25.7<1>:ud r7.7:ud { NoDDClr }
mov (1) r25.1<1>:ud r7.12:uw { NoDDChk }
 
 
// set the vertical block number
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_0_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL2_AVS_WA_DONE_L0_0_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
 
send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
// Returns UV data in 8 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_0_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL2_AVS_Buf_1.g4a
0,0 → 1,535
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 42 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL2_AVS_Buf_1.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 1
 
 
 
// FileName : PL2_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
add (1) r25.1<1>:ud r7.12:uw 1:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_1_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL2_AVS_WA_DONE_L0_1_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
 
send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
// Returns UV data in 8 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_1_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL2_AVS_Buf_2.g4a
0,0 → 1,536
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 42 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL2_AVS_Buf_2.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 2
 
 
 
// FileName : PL2_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 2:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_2_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL2_AVS_WA_DONE_L0_2_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
 
send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
// Returns UV data in 8 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_2_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL2_AVS_Buf_3.g4a
0,0 → 1,536
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 42 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL2_AVS_Buf_3.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
 
 
 
// FileName : PL2_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 3:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_3_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL2_AVS_WA_DONE_L0_3_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
 
send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
// Returns UV data in 8 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_3_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL3_AVS_Buf_0.g4a
0,0 → 1,549
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 47 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL3_AVS_Buf_0.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 0
 
 
 
// FileName : PL3_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
//Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
mov (1) r22.4<1>:ud 0x400040:ud
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
mov (1) r25.7<1>:ud r7.7:ud { NoDDClr }
mov (1) r25.1<1>:ud r7.12:uw { NoDDChk }
 
 
// set the vertical block number
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_0_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL3_AVS_WA_DONE_L0_0_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
 
send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
// Returns U data in 4 GRFs in scrambled order
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_0(8)<1> r16 0x2 a0.0:ud
// Returns V data in 4 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_0_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL3_AVS_Buf_1.g4a
0,0 → 1,542
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 45 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL3_AVS_Buf_1.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 1
 
 
 
// FileName : PL3_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
add (1) r25.1<1>:ud r7.12:uw 1:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_1_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL3_AVS_WA_DONE_L0_1_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
 
send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
// Returns U data in 4 GRFs in scrambled order
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_1(8)<1> r16 0x2 a0.0:ud
// Returns V data in 4 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_1_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL3_AVS_Buf_2.g4a
0,0 → 1,543
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 45 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL3_AVS_Buf_2.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 2
 
 
 
// FileName : PL3_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 2:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_2_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL3_AVS_WA_DONE_L0_2_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
 
send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
// Returns U data in 4 GRFs in scrambled order
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_2(8)<1> r16 0x2 a0.0:ud
// Returns V data in 4 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_2_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL3_AVS_Buf_3.g4a
0,0 → 1,543
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 45 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: PL3_AVS_Buf_3.asm
// Author: Tatiya, Rupesh
// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 3
 
 
 
// FileName : PL3_AVS_Buf.asm
// Author : Tatiya, Rupesh
// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
 
 
 
// Module name: Scaling.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
// Message Header
// m0.7 31:0 Debug
// m0.6 31:0 Debug
// m0.5 31:0 Ignored
// m0.4 31:0 Ignored
// m0.3 31:0 Ignored
// m0.2 31:16 Ignored
// 15 Alpha Write Channel Mask enable=0, disable=1
// 14 Blue Write Channel Mask (U)
// 13 Green Write Channel Mask (Y)
// 12 Red Write Channel Mask (V)
// 11:0 Ignored
// m0.1 Ignored
// m0.0 Ignored
 
 
// AVS payload
// m1.7 Group ID Number
// m1.6 U 2nd Derivative ---> NLAS dx
// m1.5 Delta V ---> Step Y
// m1.4 Delta U ---> Step X
// m1.3 Pixel 0 V Address ---> ORIY (Y0)
// m1.2 Pixel 0 U Address ---> ORIX (X0)
// m1.1 Vertical Block Number
// m1.0 Reserved
 
// Sampler Message Descriptor
// 31:29 Reserved 000
// 28:25 Message length 0010
// 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
// 19 Header Present 1
// 18:17 SIMD Mode 11 ---> SIMD32/64
// 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
// 11:8 Sampler Index xxxx
// 7:0 Binding Table Index xxxxxxxx
 
 
// Msg Header M0.2
// 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
// 14:14 Blue Write Channel Mask
// 13:13 Green Write Channel Mask
// 12:12 Red Write Channel Mask
 
 
//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
 
 
//used to generate LABELS at compile time.
 
 
// 18:17 SIMD Mode 10 ---> SIMD16
// 16:12 Message Type xxxxx ---> 00000 (SIMD16)
 
 
//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
//r18-19 - 2 GRFs to store sampler ramp.
 
.declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
 
 
.declare fSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare udSCALING_0X_34X_TEMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ub4SCALING_0X_34X_TEMP Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
.declare uwSCALING_0X_34X_TEMP Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
// Sampler ramp is used for Scaling 0X_0.34X
.declare fSAMPLER_RAMP Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
 
 
//#define rMSGDSC_UV r23.0
 
 
//End of _SCALING_
 
 
//Check if layer is to be skipped
 
 
// f0.1 pre-computed in Set_Layer_0
(-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
 
 
//AVS_PAYLOAD already has all the data loaded at this point
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
 
mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
 
 
// set the vertical block number
 
 
add (1) r25.1<1>:ud r7.12:uw 3:ud
 
 
mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
 
// Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
// if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
// {
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
// }
// else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
// {
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
// }
// else{
// modified_u_coord = u_coord;
// }
// Where u_left = u – 2*du + 3*ddu for IEF On
// And u_left = u for IEF Off case
//
 
// check whether Gen7 AVS WA is enabled,
mov (1) r14.8:uw f0.0:uw // save f0.0
mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
 
and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
(-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_3_
 
// Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
 
and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
(f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
(f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
(f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
(f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
(-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
 
and (1) r14.1:ud r2.3:uw 0xFFF8:uw
asr (1) r14.1:ud r14.1:ud 3:d
mov (1) r14.1:f r14.1:ud
 
// Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
 
//Check if the values are < 0 and account for (int) cast of negative numbers
 
//(int)(u_left*width)
cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
mov (1) r14.0:d r14.0:f
(f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
 
//(int)(u_left*width + 5.0/256)
cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
mov (1) r14.2:d r14.2:f
(f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
 
//(int)(u_left*width + 255.0/256)
cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
mov (1) r14.3:d r14.3:f
(f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
 
mov (1) f0.0:uw 0:uw // clear flag
//if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
// modified_u_coord = u_coord – 5.0/(256*width); //floating point
(f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
//else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
(-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
// modified_u_coord = u_coord + 1.0/(256*width); //floating point
(f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
 
GEN7_PL3_AVS_WA_DONE_L0_3_:
mov (1) f0.0:uw r14.8:uw // restore f0.0
 
 
send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
// Returns Y data in 4 GRFs in scrambled order
 
mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
// Returns U data in 4 GRFs in scrambled order
 
add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
 
send (1) uwBUFFER_3(8)<1> r16 0x2 a0.0:ud
// Returns V data in 4 GRFs in scrambled order
 
SKIP_AVS_LOAD_L0_3_:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/PL3_DNDI_422CP.g4a
0,0 → 1,562
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 120 // Total instruction count
// 1 // Total kernel count
 
.kernel PL3_DNDI_422CP
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_IMC3_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x10007:ud { NoDDChk } // U/V block width and height (8x2)
mov (8) r36<1>:ud r27.0<8;8,1>:ud
mov (8) r38<1>:ud r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
send (8) udDNDI_UV_RESP(1)<1> r38 0x4 0x2190002:ud
 
 
 
// FileName: DN_Save_Y_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of Y channel of DN output for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
mov (2) mdMSGHDR_DN_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
 
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x60A8018:ud
 
 
 
// FileName: DI_Save_422CP_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
 
 
.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
 
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:ud r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:ud r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) r27.3<1>:ud r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r24.0<1>:ud r27<8;8,1>:ud
 
 
// Pack 2nd field Y; First 8x4 block
mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; First 8x4 block
mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
 
// Pack 2nd field Y; Second 8x4 block
mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; Second 8x4 block
mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
send (8) null<1>:d r21.0 0x5 0x60A801B:ud
 
// Pack 1st field Y; 1st 8x4 block
mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U,V; 1st 8x4 block
mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Pack 1st field Y; 2nd 8x4 block
mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U, V; 2nd 8x4 block
mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r24.0 0x5 0x60A801E:ud
send (8) null<1>:d r27.0 0x5 0x60A801E:ud
 
 
 
// FileName: DN_Save_UV_IMC3_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
//Reuse the header from Load component
 
 
mov (4) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<4;4,1>
mov (4) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(1)<4;4,1>
send (4) null<1>:d r36 0x5 0x40A8019:ud
send (4) null<1>:d r38 0x5 0x40A801A:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL3_DNDI_PA.g4a
0,0 → 1,500
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 90 // Total instruction count
// 1 // Total kernel count
 
.kernel PL3_DNDI_PA
.code
 
 
 
// FileName: DNDI_PL_Core.asm
// Author: Tatiya, Rupesh
 
 
 
// FileName: DNDI_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN+DI case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_IMC3_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x4.asm
// Author: Vivek Kumar
// Description: Read UV for 16x4 block through DATAPORT
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x10007:ud { NoDDChk } // U/V block width and height (8x2)
mov (8) r36<1>:ud r27.0<8;8,1>:ud
mov (8) r38<1>:ud r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
send (8) udDNDI_UV_RESP(1)<1> r38 0x4 0x2190002:ud
 
 
 
// FileName: DN_Save_Y_16x4.asm
// Author: Vivek Kumar
// Description: Save one 16x4 blocks of Y channel of DN output for reference
 
 
// check top/bottom field first
cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
mov (2) mdMSGHDR_DN_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
 
(f0.0) jmpi (1) TOP_FIELD_FIRST
 
BOTTOM_FIELD_FIRST:
 
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
jmpi (1) SAVE_DN_CURR
 
TOP_FIELD_FIRST:
mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
 
SAVE_DN_CURR:
//send out data through data port
send (8) null<1>:d r31.0 0x5 0x60A8018:ud
 
 
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
 
 
 
// FileName: DN_Save_UV_IMC3_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x4.asm
// Author: Vivek Kumar
// Description: Save UV for 16x4 block through DATAPORT
 
 
//Reuse the header from Load component
 
 
mov (4) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<4;4,1>
mov (4) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(1)<4;4,1>
send (4) null<1>:d r36 0x5 0x40A8019:ud
send (4) null<1>:d r38 0x5 0x40A801A:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL3_DNUV_PL3.g4a
0,0 → 1,2684
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 1295 // Total instruction count
// 1 // Total kernel count
 
 
.kernel PL3_DNUV_PL3
.code
 
 
 
//Module : DN_UV_Setup
//Author : Tatiya, Rupesh
//Description : Initial Set-up for DN_UV
 
 
 
 
// Module name : ChromaDenoise.inc
// Author : Tatiya, Rupesh
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//======================================================
//Interface for serpent mode Chroma Denoise, added by Le
//======================================================
//r1
 
 
//noise history thresholds (low and high)
 
 
//temporal difference thresholds (high and low)
 
 
//noise history thresholds (low and high)
//#define ubNoiseHistMaxHigh r1.22
//#define ubNoiseHistMaxLow r1.23
//#define ubNoiseHistDeltaHigh r1.24
//#define ubNoiseHistDeltaLow r1.25
 
//Gaussian thresholds
 
 
//temporal difference thresholds (default)
 
 
//r2
//history thresholds (default)
 
 
//denoise factor (0-63)
 
 
//====================== Binding table (Explicit To DNUV)=========================================
//Used by DN_UV kernels
 
 
//Pointer to Current Frame UV
 
 
//r1-r6
//CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
 
 
.declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
.declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
.declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
.declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
.declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
.declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
 
//r1
 
 
//r3
 
 
//r4
 
//r7
//All of the following has to defined in Same GRF for optimal performance.
 
 
//r8-24
//Previous Frame UV
 
.declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
.declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
 
 
//r25-48
//TEMP Space for any Usage.
 
 
//=========================================================================
//Definations and declarations for serpent mode Chroma Denoise, added by Le
//=========================================================================
 
 
.declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
.declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
.declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
 
.declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
.declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
 
 
.declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
.declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
.declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
.declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
.declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
.declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
 
 
//====================================================================================
 
 
//TEMP23: To hold V data for PL3 surfaces
.declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
.declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//GRFs to calculate Median: r25-r42
.declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
 
//18 GRFs to hold difference : r25-r42
.declare wDIFF Base=r25.0 ElementSize=2 Type=w
.declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
 
//Temporal Diff
.declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
.declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
 
//4 GRFs to hold Sobel Value : r43-46
.declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
.declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
 
 
//2 GRFs to hold SOAD temporarily: r47-48
.declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
 
//Temp GRFs to hold extra YUYV pixels: r43-r48
.declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
 
//Temp GRFs in Median Calculation: r47-r48
.declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
 
.declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
.declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
 
//Temp Space to store Median : r49-50
 
.declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
 
//r49
 
 
//r50
//Message Source
 
 
//r51
//DN_UV History Surface
 
.declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
.declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
 
//r52 - r91
//r52
//Current Frame UV
 
 
.declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
.declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
 
//r54
//CURBE COPY
 
 
//r55
 
 
.declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
 
//r61
 
 
//r62
 
 
//History Surface Temp Origin
 
 
//r63
//Current Frame Y Temp Origin
 
 
//BNE Surface Origin
 
 
//r70
 
.declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
 
//r74-91 : For Saving Dest UV (PL2/PL3)
 
 
.declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
 
 
.declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
 
//r90
 
.declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
 
//r92-127
//Current Frame Y
 
 
//r92
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
//r101
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
//r110
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
//r119
.declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
 
.declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
.declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
.declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
.declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
.declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
.declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
.declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
.declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
 
//r92: To hold U data for PL3 surfaces
.declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
.declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
 
//r112: To hold U data for PL3 surfaces
.declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
.declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
 
//r120: To hold U data for PL3 surfaces
.declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
.declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
 
 
// Initialize message source with r0.
mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
 
 
 
//Module Name : DN_UV_PL3_Load_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame U/V data for PL3 input.
 
 
 
//Module name : DN_UV_Load_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Current Frame (UV only).
// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
 
 
 
 
//18x20 U/V block is partitioned as follows:
// <------ 18 ------>
// ------------------
// | 18x8 A1 |
// | |
// |----------------|
// | 18x8 A2 |
// | |
// |----------------|
// | 18x4 A2 |
// |----------------|
//
// Cordinates: (x-1, y-2), (x-1, y+6), (x-1, y+14)
 
//1. Load U data into starting at CURR_Y0 (r93-r122)
//2. Load V data into TEMP space (r25-r44)
 
//U/V surface origin: (ORIX/2, ORIY/2)
add (2) r7.4<1>:w r7.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
shr (2) r7.4<1>:w acc0.4<2;2,1>:w 1:w //U Data
mov (2) acc0.0<1>:d r7.4<2;2,1>:w
 
//A1
add (1) r50.0<1>:d acc0.0<0;1,0>:d -1:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x70011:ud
send (8) udCURR_U_TEMP(0)<1> r50 0x4 0x2890004:ud
 
//A2
add (1) r50.1<1>:d acc0.1<0;1,0>:d 6:d
send (8) udCURR_U_TEMP(8)<1> r50 0x4 0x2890004:ud
 
//A3
add (1) r50.1<1>:d acc0.1<0;1,0>:d 14:d
mov (1) r50.2<1>:ud 0x30011:ud
send (8) udCURR_U_TEMP(16)<1> r50 0x4 0x2490004:ud
 
//V Data
//A1
add (1) r50.0<1>:d acc0.0<0;1,0>:d -1:d
add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
mov (1) r50.2<1>:ud 0x70011:ud
send (8) udCURR_V_TEMP(0)<1> r50 0x4 0x2890005:ud
 
//A2
add (1) r50.1<1>:d acc0.1<0;1,0>:d 6:d
send (8) udCURR_V_TEMP(8)<1> r50 0x4 0x2890005:ud
 
//A3
add (1) r50.1<1>:d acc0.1<0;1,0>:d 14:d
mov (1) r50.2<1>:ud 0x30011:ud
send (8) udCURR_V_TEMP(16)<1> r50 0x4 0x2490005:ud
 
//History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
 
//Calculate Origin For History Surface: (ORIX/4, ORIY/8)
mov (16) acc0.0<1>:w r7.0<0;2,1>:w { AccWrEn }
shr (1) r7.2<1>:w acc0.2<0;1,0>:w 2:w
shr (1) r7.3<1>:w acc0.3<0;1,0>:w 3:w
 
//Calculate Origin For BNE Surface: (ORIX/8, ORIY/16)
shr (1) r7.6<1>:w acc0.6<0;1,0>:w 3:w
shr (1) r7.7<1>:w acc0.7<0;1,0>:w 4:w
 
 
 
//Module Name : DN_UV_PL3_Load_Prev_Frame_UV.asm
//Author : Tatiya, Rupesh
//Description : Loads Pevious Frame UV data for PL3 input.
 
 
 
//Module Name : DN_UV_Load_Prev_Frame_UV
//Author : Tatiya, Rupesh
//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
 
 
 
 
//1. Load U in bottom half of UV space for prev frame (r17-r24)
//2. Load V in bottom quarter of Y space for curr frame (r120-r127)
 
mov (2) r50.0<1>:d r7.4<2;2,1>:w { AccWrEn } // Source lock origin
mov (1) r50.2<1>:ud 0xF000F:ud // U/V block width and height (16x16)
 
mov (8) r49.0<1>:ud r50<8;8,1>:ud
 
send (8) udPREV_U_TEMP(0)<1> r50 0x4 0x2890001:ud //U data
send (8) udPREV_V_TEMP(0)<1> r49 0x4 0x2890002:ud //V data
 
 
//TODO - See if History loading can be combined with Prev Frame Load. - rT
 
 
//Module name : DN_UV_Load_Hist_UV
//Author : Tatiya, Rupesh
//Description : Load DN History for UV denoise. 4x4 for each U & V.
 
 
 
 
mov (2) r50.0<1>:d r7.2<2;2,1>:w
mov (1) r50.2<1>:ud 0x30007:ud
send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
 
 
 
//File Name : DN_UV_PL3_Interleave_Curr_Frame_UV.asm
//Author : Tatiya, Rupesh
//Description : Interleave separately loaded U and V for PL3 format.
// This is needed because Noise Detection and Noise Reduction works on interleaved UV data.
 
//1. U data: Starting at CURR_Y0 (r93-r122)
//2. V data: TEMP space (r25-r44)
 
//In one GRF, we need 10 U (1+8+1) bytes, but there's no SIMD10. So use SIMD16 and discard last 6 bytes.
 
 
//Move U data
mov (16) ubCURR_UV(0,0)<2> ubCURR_U_TEMP(0,0)<16;16,1>
mov (16) ubCURR_UV(20,0)<2> ubCURR_U_TEMP(0,8)<16;16,1>
 
mov (16) ubCURR_UV(1,0)<2> ubCURR_U_TEMP(1,0)<16;16,1>
mov (16) ubCURR_UV(21,0)<2> ubCURR_U_TEMP(1,8)<16;16,1>
 
mov (16) ubCURR_UV(2,0)<2> ubCURR_U_TEMP(2,0)<16;16,1>
mov (16) ubCURR_UV(22,0)<2> ubCURR_U_TEMP(2,8)<16;16,1>
 
mov (16) ubCURR_UV(3,0)<2> ubCURR_U_TEMP(3,0)<16;16,1>
mov (16) ubCURR_UV(23,0)<2> ubCURR_U_TEMP(3,8)<16;16,1>
 
mov (16) ubCURR_UV(4,0)<2> ubCURR_U_TEMP(4,0)<16;16,1>
mov (16) ubCURR_UV(24,0)<2> ubCURR_U_TEMP(4,8)<16;16,1>
 
mov (16) ubCURR_UV(5,0)<2> ubCURR_U_TEMP(5,0)<16;16,1>
mov (16) ubCURR_UV(25,0)<2> ubCURR_U_TEMP(5,8)<16;16,1>
 
mov (16) ubCURR_UV(6,0)<2> ubCURR_U_TEMP(6,0)<16;16,1>
mov (16) ubCURR_UV(26,0)<2> ubCURR_U_TEMP(6,8)<16;16,1>
 
mov (16) ubCURR_UV(7,0)<2> ubCURR_U_TEMP(7,0)<16;16,1>
mov (16) ubCURR_UV(27,0)<2> ubCURR_U_TEMP(7,8)<16;16,1>
 
mov (16) ubCURR_UV(8,0)<2> ubCURR_U_TEMP(8,0)<16;16,1>
mov (16) ubCURR_UV(28,0)<2> ubCURR_U_TEMP(8,8)<16;16,1>
 
mov (16) ubCURR_UV(9,0)<2> ubCURR_U_TEMP(9,0)<16;16,1>
mov (16) ubCURR_UV(29,0)<2> ubCURR_U_TEMP(9,8)<16;16,1>
 
mov (16) ubCURR_UV(10,0)<2> ubCURR_U_TEMP(10,0)<16;16,1>
mov (16) ubCURR_UV(30,0)<2> ubCURR_U_TEMP(10,8)<16;16,1>
 
mov (16) ubCURR_UV(11,0)<2> ubCURR_U_TEMP(11,0)<16;16,1>
mov (16) ubCURR_UV(31,0)<2> ubCURR_U_TEMP(11,8)<16;16,1>
 
mov (16) ubCURR_UV(12,0)<2> ubCURR_U_TEMP(12,0)<16;16,1>
mov (16) ubCURR_UV(32,0)<2> ubCURR_U_TEMP(12,8)<16;16,1>
 
mov (16) ubCURR_UV(13,0)<2> ubCURR_U_TEMP(13,0)<16;16,1>
mov (16) ubCURR_UV(33,0)<2> ubCURR_U_TEMP(13,8)<16;16,1>
 
mov (16) ubCURR_UV(14,0)<2> ubCURR_U_TEMP(14,0)<16;16,1>
mov (16) ubCURR_UV(34,0)<2> ubCURR_U_TEMP(14,8)<16;16,1>
 
mov (16) ubCURR_UV(15,0)<2> ubCURR_U_TEMP(15,0)<16;16,1>
mov (16) ubCURR_UV(35,0)<2> ubCURR_U_TEMP(15,8)<16;16,1>
 
mov (16) ubCURR_UV(16,0)<2> ubCURR_U_TEMP(16,0)<16;16,1>
mov (16) ubCURR_UV(36,0)<2> ubCURR_U_TEMP(16,8)<16;16,1>
 
mov (16) ubCURR_UV(17,0)<2> ubCURR_U_TEMP(17,0)<16;16,1>
mov (16) ubCURR_UV(37,0)<2> ubCURR_U_TEMP(17,8)<16;16,1>
 
mov (16) ubCURR_UV(18,0)<2> ubCURR_U_TEMP(18,0)<16;16,1>
mov (16) ubCURR_UV(38,0)<2> ubCURR_U_TEMP(18,8)<16;16,1>
 
mov (16) ubCURR_UV(19,0)<2> ubCURR_U_TEMP(19,0)<16;16,1>
mov (16) ubCURR_UV(39,0)<2> ubCURR_U_TEMP(19,8)<16;16,1>
 
 
//Move V data
mov (16) ubCURR_UV(0,1)<2> ubCURR_V_TEMP(0,0)<16;16,1>
mov (16) ubCURR_UV(20,1)<2> ubCURR_V_TEMP(0,8)<16;16,1>
mov (16) ubCURR_UV(1,1)<2> ubCURR_V_TEMP(1,0)<16;16,1>
mov (16) ubCURR_UV(21,1)<2> ubCURR_V_TEMP(1,8)<16;16,1>
mov (16) ubCURR_UV(2,1)<2> ubCURR_V_TEMP(2,0)<16;16,1>
mov (16) ubCURR_UV(22,1)<2> ubCURR_V_TEMP(2,8)<16;16,1>
mov (16) ubCURR_UV(3,1)<2> ubCURR_V_TEMP(3,0)<16;16,1>
mov (16) ubCURR_UV(23,1)<2> ubCURR_V_TEMP(3,8)<16;16,1>
mov (16) ubCURR_UV(4,1)<2> ubCURR_V_TEMP(4,0)<16;16,1>
mov (16) ubCURR_UV(24,1)<2> ubCURR_V_TEMP(4,8)<16;16,1>
mov (16) ubCURR_UV(5,1)<2> ubCURR_V_TEMP(5,0)<16;16,1>
mov (16) ubCURR_UV(25,1)<2> ubCURR_V_TEMP(5,8)<16;16,1>
mov (16) ubCURR_UV(6,1)<2> ubCURR_V_TEMP(6,0)<16;16,1>
mov (16) ubCURR_UV(26,1)<2> ubCURR_V_TEMP(6,8)<16;16,1>
mov (16) ubCURR_UV(7,1)<2> ubCURR_V_TEMP(7,0)<16;16,1>
mov (16) ubCURR_UV(27,1)<2> ubCURR_V_TEMP(7,8)<16;16,1>
mov (16) ubCURR_UV(8,1)<2> ubCURR_V_TEMP(8,0)<16;16,1>
mov (16) ubCURR_UV(28,1)<2> ubCURR_V_TEMP(8,8)<16;16,1>
mov (16) ubCURR_UV(9,1)<2> ubCURR_V_TEMP(9,0)<16;16,1>
mov (16) ubCURR_UV(29,1)<2> ubCURR_V_TEMP(9,8)<16;16,1>
mov (16) ubCURR_UV(10,1)<2> ubCURR_V_TEMP(10,0)<16;16,1>
mov (16) ubCURR_UV(30,1)<2> ubCURR_V_TEMP(10,8)<16;16,1>
mov (16) ubCURR_UV(11,1)<2> ubCURR_V_TEMP(11,0)<16;16,1>
mov (16) ubCURR_UV(31,1)<2> ubCURR_V_TEMP(11,8)<16;16,1>
mov (16) ubCURR_UV(12,1)<2> ubCURR_V_TEMP(12,0)<16;16,1>
mov (16) ubCURR_UV(32,1)<2> ubCURR_V_TEMP(12,8)<16;16,1>
mov (16) ubCURR_UV(13,1)<2> ubCURR_V_TEMP(13,0)<16;16,1>
mov (16) ubCURR_UV(33,1)<2> ubCURR_V_TEMP(13,8)<16;16,1>
mov (16) ubCURR_UV(14,1)<2> ubCURR_V_TEMP(14,0)<16;16,1>
mov (16) ubCURR_UV(34,1)<2> ubCURR_V_TEMP(14,8)<16;16,1>
mov (16) ubCURR_UV(15,1)<2> ubCURR_V_TEMP(15,0)<16;16,1>
mov (16) ubCURR_UV(35,1)<2> ubCURR_V_TEMP(15,8)<16;16,1>
mov (16) ubCURR_UV(16,1)<2> ubCURR_V_TEMP(16,0)<16;16,1>
mov (16) ubCURR_UV(36,1)<2> ubCURR_V_TEMP(16,8)<16;16,1>
mov (16) ubCURR_UV(17,1)<2> ubCURR_V_TEMP(17,0)<16;16,1>
mov (16) ubCURR_UV(37,1)<2> ubCURR_V_TEMP(17,8)<16;16,1>
mov (16) ubCURR_UV(18,1)<2> ubCURR_V_TEMP(18,0)<16;16,1>
mov (16) ubCURR_UV(38,1)<2> ubCURR_V_TEMP(18,8)<16;16,1>
mov (16) ubCURR_UV(19,1)<2> ubCURR_V_TEMP(19,0)<16;16,1>
mov (16) ubCURR_UV(39,1)<2> ubCURR_V_TEMP(19,8)<16;16,1>
 
 
 
//File Name : DN_UV_PL3_Interleave_Prev_Frame_UV.asm
//Author : Tatiya, Rupesh
//Description : Interleave separately loaded U and V for PL3 format.
// This is needed because Noise Detection and Noise Reduction works on interleaved UV data.
 
//1.U Data: bottom half of UV space for prev frame (r17-r24)
//2.V Data: bottom quarter of Y space for curr frame (r120-r127)
 
mov (16) ubPREV_UV(0,0)<2> ubPREV_U_TEMP(0,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(8,0)<2> ubPREV_U_TEMP(0,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(1,0)<2> ubPREV_U_TEMP(1,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(9,0)<2> ubPREV_U_TEMP(1,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(2,0)<2> ubPREV_U_TEMP(2,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(10,0)<2> ubPREV_U_TEMP(2,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(3,0)<2> ubPREV_U_TEMP(3,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(11,0)<2> ubPREV_U_TEMP(3,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(4,0)<2> ubPREV_U_TEMP(4,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(12,0)<2> ubPREV_U_TEMP(4,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(5,0)<2> ubPREV_U_TEMP(5,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(13,0)<2> ubPREV_U_TEMP(5,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(6,0)<2> ubPREV_U_TEMP(6,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(14,0)<2> ubPREV_U_TEMP(6,8)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(7,0)<2> ubPREV_U_TEMP(7,0)<16;8,1> { NoDDClr }
mov (16) ubPREV_UV(15,0)<2> ubPREV_U_TEMP(7,8)<16;8,1> { NoDDClr }
 
mov (16) ubPREV_UV(0,1)<2> ubPREV_V_TEMP(0,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(8,1)<2> ubPREV_V_TEMP(0,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(1,1)<2> ubPREV_V_TEMP(1,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(9,1)<2> ubPREV_V_TEMP(1,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(2,1)<2> ubPREV_V_TEMP(2,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(10,1)<2> ubPREV_V_TEMP(2,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(3,1)<2> ubPREV_V_TEMP(3,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(11,1)<2> ubPREV_V_TEMP(3,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(4,1)<2> ubPREV_V_TEMP(4,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(12,1)<2> ubPREV_V_TEMP(4,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(5,1)<2> ubPREV_V_TEMP(5,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(13,1)<2> ubPREV_V_TEMP(5,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(6,1)<2> ubPREV_V_TEMP(6,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(14,1)<2> ubPREV_V_TEMP(6,8)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(7,1)<2> ubPREV_V_TEMP(7,0)<16;8,1> { NoDDChk }
mov (16) ubPREV_UV(15,1)<2> ubPREV_V_TEMP(7,8)<16;8,1> { NoDDChk }
 
 
 
//Module Name : DN_UV_420_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Load Curr Frame Y data for 420 Input
 
 
 
//Module Name : DN_UV_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Loads Y of Current frame.
 
 
 
 
//For 16x16 U and 16x16 V for 420, we need to read 32x32 Y.
 
mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
mov (1) acc0.2<1>:ud 0xF000F:ud
add (2) acc0.0<1>:ud r7.0<2;2,1>:w r4.4<2;2,1>:w
 
mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
 
mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
 
add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
 
add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
 
add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
 
send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
 
 
 
//Module Name : DN_UV_Noise_Detection_UV
//Author : Tatiya, Rupesh
//Description : Performs noise detection on 16x16 U and 16x16 V each.
 
 
 
//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
//Author : Tatiya, Rupesh
 
 
 
 
//Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
 
mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
 
//Move Inline Data to another space - so that it can be used as Temp Space --> r7
mov (4) r62.10<1>:w r7.0<4;4,1>:w
mov (4) r63.10<1>:w r7.4<4;4,1>:w
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 1664:uw
mov (1) a0.1:uw 1816:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1792:uw
mov (1) a0.1:uw 1820:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 1920:uw
mov (1) a0.1:uw 1848:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2048:uw
mov (1) a0.1:uw 1852:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
mov (1) a0.0:uw 2304:uw
mov (1) a0.1:uw 1880:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2432:uw
mov (1) a0.1:uw 1884:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2560:uw
mov (1) a0.1:uw 1912:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
 
 
//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
//Author : Tatiya, Rupesh
//Description : Sets sub-region region N from Top region.
 
 
//TODO - remove one instruction here using arithmatic. -rT
mov (1) a0.0:uw 2688:uw
mov (1) a0.1:uw 1916:uw
 
 
 
 
add (1) r7.7<1>:d ip:ud 32:d { NoCompact }
jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
 
 
 
//Module : DN_UV_Noise_Reduction_UV
//Author : Tatiya, Rupesh
//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
//Tasks : 1. Update weight history
// 2. Find if it block is motion block
// 3. Compute Denoised Pixel.
 
 
 
 
//History is 1+1 byte every 4x4 U and 4x4 V.
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
 
mov (16) uwCURBE_TEMP(0)<1> 0:w
mov (16) uwCURBE_TEMP(1)<1> 0:w
 
//Compute diff betn curr and prev. - First 16 lines
// 8 lines here
add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
 
//Update WT HIST
(-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
 
//Compute diff betn curr and prev. - First 16 lines
// 8 more lines here
add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
 
(-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
(f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
(f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
(-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
 
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
//16x16 to 16x4 - First 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
 
//Compute diff betn curr and prev. - Second 16 lines
//13 lines.
add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
 
//3 more lines
add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
 
//16x4 to 8x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - First 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
 
//16x16 to 16x4 - Second 16 lines
add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
 
//Find if block is motion block - First 16 lines
cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - First 16 lines
(-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
 
//Actual DN - First 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
 
 
//16x4 to 8x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
 
//8x4 to 4x4 - Second 16 lines
add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
 
//Find if block is motion block - Second 16 lines
cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
 
//Move TEMPORAL_SUM4x4 for SIMD16 use later.
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
 
//Pick Appropriate Weight History Based on motion. - Second 16 lines
(-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
 
//Actual DN - Second 16 lines
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
 
cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
add (16) acc0<1>:w acc0<16;16,1>:w 128:w
(f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
(-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
(-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
 
//Pack Weight History WORD -> BYTE
mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
 
 
 
//Module Name : DN_UV_Compute_BNE_UV
//Author : Tatiya, Rupesh
//Description : Computes minimum SOAD for each 16x4 block.
 
cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
(f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
 
mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
 
 
 
//File Name : DN_UV_PL3_Unpack_Denoised_UV.asm
//Author : Tatiya, Rupesh
//Description : Upack the interleaved UV data
 
//First 16 lines.
mov (8) ubMSGPAYLOAD_U(0,0)<1> ubDIFF_TEMPORAL(0,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(0,16)<1> ubDIFF_TEMPORAL(1,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(0,0)<1> ubDIFF_TEMPORAL(0,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(0,16)<1> ubDIFF_TEMPORAL(1,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(1,0)<1> ubDIFF_TEMPORAL(2,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(1,16)<1> ubDIFF_TEMPORAL(3,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(1,0)<1> ubDIFF_TEMPORAL(2,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(1,16)<1> ubDIFF_TEMPORAL(3,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(2,0)<1> ubDIFF_TEMPORAL(4,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(2,16)<1> ubDIFF_TEMPORAL(5,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(2,0)<1> ubDIFF_TEMPORAL(4,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(2,16)<1> ubDIFF_TEMPORAL(5,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(3,0)<1> ubDIFF_TEMPORAL(6,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(3,16)<1> ubDIFF_TEMPORAL(7,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(3,0)<1> ubDIFF_TEMPORAL(6,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(3,16)<1> ubDIFF_TEMPORAL(7,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(4,0)<1> ubDIFF_TEMPORAL(8,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(4,16)<1> ubDIFF_TEMPORAL(9,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(4,0)<1> ubDIFF_TEMPORAL(8,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(4,16)<1> ubDIFF_TEMPORAL(9,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(5,0)<1> ubDIFF_TEMPORAL(10,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(5,16)<1> ubDIFF_TEMPORAL(11,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(5,0)<1> ubDIFF_TEMPORAL(10,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(5,16)<1> ubDIFF_TEMPORAL(11,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(6,0)<1> ubDIFF_TEMPORAL(12,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(6,16)<1> ubDIFF_TEMPORAL(13,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(6,0)<1> ubDIFF_TEMPORAL(12,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(6,16)<1> ubDIFF_TEMPORAL(13,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(7,0)<1> ubDIFF_TEMPORAL(14,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(7,16)<1> ubDIFF_TEMPORAL(15,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(7,0)<1> ubDIFF_TEMPORAL(14,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(7,16)<1> ubDIFF_TEMPORAL(15,2)<32;8,4>
 
//Second 16 lines.
//12 lines first
mov (8) ubMSGPAYLOAD_U(0,8)<1> ubDIFF_TEMPORAL(16,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(0,24)<1> ubDIFF_TEMPORAL(17,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(0,8)<1> ubDIFF_TEMPORAL(16,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(0,24)<1> ubDIFF_TEMPORAL(17,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(1,8)<1> ubDIFF_TEMPORAL(18,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(1,24)<1> ubDIFF_TEMPORAL(19,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(1,8)<1> ubDIFF_TEMPORAL(18,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(1,24)<1> ubDIFF_TEMPORAL(19,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(2,8)<1> ubDIFF_TEMPORAL(20,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(2,24)<1> ubDIFF_TEMPORAL(21,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(2,8)<1> ubDIFF_TEMPORAL(20,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(2,24)<1> ubDIFF_TEMPORAL(21,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(3,8)<1> ubDIFF_TEMPORAL(22,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(3,24)<1> ubDIFF_TEMPORAL(23,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(3,8)<1> ubDIFF_TEMPORAL(22,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(3,24)<1> ubDIFF_TEMPORAL(23,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(4,8)<1> ubDIFF_TEMPORAL(24,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(4,24)<1> ubDIFF_TEMPORAL(25,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(4,8)<1> ubDIFF_TEMPORAL(24,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(4,24)<1> ubDIFF_TEMPORAL(25,2)<32;8,4>
mov (8) ubMSGPAYLOAD_U(5,8)<1> ubDIFF_TEMPORAL(26,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(5,24)<1> ubDIFF_TEMPORAL(27,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(5,8)<1> ubDIFF_TEMPORAL(26,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(5,24)<1> ubDIFF_TEMPORAL(27,2)<32;8,4>
 
//3 lines next
mov (8) ubMSGPAYLOAD_U(6,8)<1> ubDIFF_TEMPORAL(28,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(6,24)<1> ubCURBE_TEMP(4,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(6,8)<1> ubDIFF_TEMPORAL(28,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(6,24)<1> ubCURBE_TEMP(4,2)<32;8,4>
 
mov (8) ubMSGPAYLOAD_U(7,8)<1> ubCURBE_TEMP(5,0)<32;8,4>
mov (8) ubMSGPAYLOAD_U(7,24)<1> ubCURBE_TEMP(6,0)<32;8,4>
mov (8) ubMSGPAYLOAD_V(7,8)<1> ubCURBE_TEMP(5,2)<32;8,4>
mov (8) ubMSGPAYLOAD_V(7,24)<1> ubCURBE_TEMP(6,2)<32;8,4>
 
 
 
//Module Name : DN_UV_420_Save_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Save Curr Frame Y data for 420 Input
 
 
 
//Module Name : DN_UV_Load_Curr_Frame_Y
//Author : Tatiya, Rupesh
//Description : Saves Y or YUY2 of Current frame.
 
 
 
 
mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
mov (2) acc0.0<1>:d r62.10<2;2,1>:w
 
mov (1) acc0.2<1>:d 0xF000F:ud
 
mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
 
mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
 
add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
 
add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
 
add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
 
send (8) null<1>:d r92 0x5 0x120A8018:ud
send (8) null<1>:d r101 0x5 0x120A8018:ud
send (8) null<1>:d r110 0x5 0x120A8018:ud
send (8) null<1>:d r119 0x5 0x120A8018:ud
 
 
//TODO - See if History saving can be combined with Curr Frame Save. - rT
 
 
//Module Name : DN_UV_Save_Hist_UV
//Author : Tatiya, Rupesh
//Description : Saves DN history for UV data.
 
mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
mov (2) r3.0<1>:d r62.12<2;2,1>:w
mov (1) r3.2<1>:d 0x30007:ud
 
send (8) null<1>:d r3 0x5 0x40A8021:ud
 
 
 
//Module Name : DN_UV_Save_BNE_UV
//Author : Tatiya, Rupesh
//Description : Saves BNE values for 16x16 U and 16x16 V.
 
mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
mov (2) r1.0<1>:d r63.12<2;2,1>:w
mov (1) r1.2<1>:d 0x10003:ud
 
send (8) null<1>:d r1 0x5 0x40A8023:ud
 
 
 
//File Name : DN_UV_PL3_Save_Curr_Frame_UV.asm
//Author : Tatiya, Rupesh
//Description : Save U and V data for PL3 surface
 
 
 
//Module name : DN_UV_Save_Curr_Frame_UV
//Author : Tatiya, Rupesh
//Description : Saves Current Frame (UV only).
 
 
 
 
mov (8) r74<1>:ud r0.0<8;8,1>:ud
mov (8) r83<1>:ud r0.0<8;8,1>:ud
 
shr (2) r74.0<1>:d r62.10<2;2,1>:w 1:w
mov (1) r74.2<1>:d 0xF000F:ud
 
mov (8) r83.0<1>:ud r74.0<8;8,1>:ud
 
send (8) null<1>:d r74 0x5 0x120A8019:ud
send (8) null<1>:d r83 0x5 0x120A801A:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
//All sub-routines here
 
 
// Module Name : Noise_Detection
// Author : Tatiya, Rupesh
// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
 
DN_UV_NOISE_DETECTION_UV:
 
// Find Field Block Median
//
// Purpose : Find the median value of the nine pixels in the same field
// which are centered at current pixel.
//
// Works on 9 pixels centered at the current pixel
// NOTE: pixels are within same field.
// v4 - current pixel
//
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
 
// Algorithm to find median modifies the data.
// Copy the data needed to calculate median so the original source data stays intact.
//
 
//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
 
//Delete Later - rT
//mov (1) pCUR_UV:uw 52*32:uw
 
// v0
mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
// v0
mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
// v0
mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
// v1
mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
// v2
mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
// v3
mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
// v4
mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
// v5
mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
// v6
mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
// v7
mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
// v8
mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
 
//TODO - Optimize one instruction here.
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// MedianSwap
//
// MedianSwap(inOutLeft, inOutRight)
// {
// if (inOutLeft > inOutRight)
// {
// temp = inOutLeft
// inOutLeft = inOutRight
// inOutRight = temp
// }
// }
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
 
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v1) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v1) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v3, v4) - U
// MedianSwap(v6, v7) - U
// MedianSwap(v3, v4) - V
// MedianSwap(v6, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v1, v2) - U
// MedianSwap(v4, v5) - U
// MedianSwap(v1, v2) - V
// MedianSwap(v4, v5) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
 
// MedianSwap(v7, v8) - U
// MedianSwap(v0, v3) - U
// MedianSwap(v7, v8) - V
// MedianSwap(v0, v3) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v0 to v6 to find the minimum.
// Store the minimum for future use.
//TODO - Find if MIN is needed.
//cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
 
// MedianSwap(v5, v8) - U
// MedianSwap(v4, v7) - U
// MedianSwap(v5, v8) - V
// MedianSwap(v4, v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
(f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
(f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
 
// NOTE:
// Compare v2 to v8 to find the maximum.
// Store the maximum for future use.
//TODO - Find if MAX is needed.
// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
 
// MedianSwap(v3, v6) - U
// MedianSwap(v1, v4) - U
// MedianSwap(v3, v6) - V
// MedianSwap(v1, v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
 
// MedianSwap(v2,v5) - U
// MedianSwap(v4,v7) - U
// MedianSwap(v2,v5) - V
// MedianSwap(v4,v7) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
(f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
 
// MedianSwap(v6,v4) - U
// MedianSwap(v6,v4) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
 
// MedianSwap(v4,v2) - U
// MedianSwap(v4,v2) - V
cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
(f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
(f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
 
// Sobel Value calculation for the current pixel v4
// v2 v1 v0
// * * * <--- Different field - not used
// v5 v4 v3
// * * * <--- Different field - not used
// v8 v7 v6
//
// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
//
// Sobel = (|Gx| + |Gy|) >> 3
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
 
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
// - 2 * v3
mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
// + v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
// - v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// + 2 * v5
mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
 
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
 
shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
 
shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
 
shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
// + 2 * v1
mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
// + v0
mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
// - v8
mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
// + v2
mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
// - v6
mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
// - 2 * v7
mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
 
add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
 
shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
 
//Mov Median in CURBE_TEMP to free up temp space.
mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
 
// Find:
// absDiff = abs(ubCurY - ubMedian)
// Find the difference between pixel and median value.
 
//Median is interleaved. So difference is also interleaved.
 
//------------------------------------------------------------------------------------------
//Process 16 U and 16 V pixels here and rest later.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
// third row - v6,v7,v8
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
 
//TODO - Change Later - rT
add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//First 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
//------------
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//------------
//DIFF(0-7) is not needed here. Populate it.
// first row - v0,v1,v2
add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// second row - v3,v4,v5
add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
 
// third row - v6,v7
add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//------------
//Load v8 - DIFF(8)
add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
//------------
 
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
// if (sigma_mb_min > sigma)
// sigma_mb_min = sigma;
 
//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
// So just do -
//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
// sigma_mb_min = sigma;
 
//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
//Compare first 8 bytes with max possible (255).
//Start above condition from second 8 bytes.
 
//TODO - Change Later - rT
// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
 
//First row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
 
//Second row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
// Find sum of all absolute differences AND
// maximum absolute difference for 16 U and 16 V here.
//Second 2 rows of 8x4
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
//Compare 0-1, 2-3, 4-5, 6-7
cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Calculate SAD
add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
 
(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
 
//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
 
//Compare Max(0,1,2,3) - Max(4,5,6,7)
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
 
//Compare Max(0,1,2,3,4,5,6,7) - 8
cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
 
//Third row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
 
//Fourth row of 8x4
cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
 
cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
 
cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
 
cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
 
 
 
 
 
 
// End of common.inc
 
mov (1) ip:ud r7.7<0;1,0>:d
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL3_DN_422CP.g4a
0,0 → 1,544
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 117 // Total instruction count
// 1 // Total kernel count
 
.kernel PL3_DN_422CP
.code
 
 
 
// FileName: DN_PL_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for planar format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_IMC3_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
//CHANGE : Read extra UV data to convert to 422. -rT
//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x40007:ud { NoDDChk } // U/V block width and height (8x5)
mov (8) r36<1>:ud r27.0<8;8,1>:ud
mov (8) r38<1>:ud r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2290001:ud
send (8) udDNDI_UV_RESP(2)<1> r38 0x4 0x2290002:ud
 
//Update Header for Save
mov (1) mudMSGHDR_UCOPY(0,2)<1> 0x30007:ud // U block width and height (8x4)
mov (1) mudMSGHDR_VCOPY(0,2)<1> 0x30007:ud // V block width and height (8x4)
 
 
 
// FileName: DN_Save_Y_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of Y channel of DN output for reference
 
 
mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
mov (2) mudDN_Y_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin
mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
 
//send out data through data port
send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
 
 
 
// FileName: DN_Save_UV_IMC3_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
//Reuse the header from Load component
//Header is modified at the end of load - to be usable for save.
 
 
mov (8) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
mov (8) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(2)<8;8,1>
send (4) null<1>:d r36 0x5 0x40A8019:ud
send (4) null<1>:d r38 0x5 0x40A801A:ud
 
 
 
// FileName: DN_Upsample_UV_IMC3_16x8.asm
// Author: Tatiya, Rupesh
// Description: Upconvert 420 UV to 422
 
 
 
// FileName: UVCopy_Upsample_UV_16x8.asm
// Author: Tatiya, Rupesh
// Description: Convert 42X UV to 422 - to be used for IECP.
 
 
avg.sat (16) uwDNDI_UVCOPY_TEMP(0) ubDNDI_UV_RESP(0,0)<0;8,1> ubDNDI_UV_RESP(0,0)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(4) ubDNDI_UV_RESP(2,0)<0;8,1> ubDNDI_UV_RESP(2,0)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(1) ubDNDI_UV_RESP(0,8)<0;8,1> ubDNDI_UV_RESP(0,8)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(5) ubDNDI_UV_RESP(2,8)<0;8,1> ubDNDI_UV_RESP(2,8)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(2) ubDNDI_UV_RESP(0,16)<0;8,1> ubDNDI_UV_RESP(0,16)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(6) ubDNDI_UV_RESP(2,16)<0;8,1> ubDNDI_UV_RESP(2,16)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(3) ubDNDI_UV_RESP(0,24)<0;8,1> ubDNDI_UV_RESP(0,24)<8;8,1>
avg.sat (16) uwDNDI_UVCOPY_TEMP(7) ubDNDI_UV_RESP(2,24)<0;8,1> ubDNDI_UV_RESP(2,24)<8;8,1>
 
mov (16) ubDNDI_RESP(5, 1)<2> ubDNDI_UVCOPY_TEMP(0,0)<32;16,2> { NoDDClr }
mov (16) ubDNDI_RESP(5, 0)<2> ubDNDI_UVCOPY_TEMP(4,0)<32;16,2> { NoDDChk }
mov (16) ubDNDI_RESP(5, 33)<2> ubDNDI_UVCOPY_TEMP(1,0)<32;16,2> { NoDDClr }
mov (16) ubDNDI_RESP(5, 32)<2> ubDNDI_UVCOPY_TEMP(5,0)<32;16,2> { NoDDChk }
mov (16) ubDNDI_RESP(5, 65)<2> ubDNDI_UVCOPY_TEMP(2,0)<32;16,2> { NoDDClr }
mov (16) ubDNDI_RESP(5, 64)<2> ubDNDI_UVCOPY_TEMP(6,0)<32;16,2> { NoDDChk }
mov (16) ubDNDI_RESP(5, 97)<2> ubDNDI_UVCOPY_TEMP(3,0)<32;16,2> { NoDDClr }
mov (16) ubDNDI_RESP(5, 96)<2> ubDNDI_UVCOPY_TEMP(7,0)<32;16,2> { NoDDChk }
 
 
 
// FileName: DN_Save_422CP_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
 
 
.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
 
 
mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
shl (1) mdMSGHDR_DN_OUT(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
mov (1) mdMSGHDR_DN_OUT(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
// First 8 x 8 Block
mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Second 8 x 8 Block
mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
//send out data through data port
send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL3_DN_PL3.g4a
0,0 → 1,425
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 44 // Total instruction count
// 1 // Total kernel count
 
.kernel PL3_DN_PL3
.code
 
 
 
// FileName: DN_PL_Core.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block) for planar format
 
 
 
// FileName: DN.asm
// Author: Vivek Kumar
// Description: Tasks for DN only case (16x8 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DN_Hist_Save.asm
// Author: Vivek Kumar
// Description: Saves DN history data to statistics surface
 
// Write denoise history to memory
mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
 
 
mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
 
 
shr (2) r27.0<1>:ud r7.0<2;2,1>:w 2:w // X,Y origin / 4
add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
 
mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
send (8) null<1>:d r22 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | X | X | X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
//| X | X |
//----------------------------------------------------
//| X | SVCM | X |
//----------------------------------------------------
//| SHCM | STAD | X |
//----------------------------------------------------
mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DN_Load_UV_IMC3_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Load_16x8.asm
// Author: Vivek Kumar
// Description: Read UV for 16x8 block through DATAPORT
 
//CHANGE : Read extra UV data to convert to 422. -rT
//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
 
 
add (2) r27.0<1>:d r7.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
mov (1) r27.2<1>:ud 0x40007:ud { NoDDChk } // U/V block width and height (8x5)
mov (8) r36<1>:ud r27.0<8;8,1>:ud
mov (8) r38<1>:ud r27.0<8;8,1>:ud
send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2290001:ud
send (8) udDNDI_UV_RESP(2)<1> r38 0x4 0x2290002:ud
 
//Update Header for Save
mov (1) mudMSGHDR_UCOPY(0,2)<1> 0x30007:ud // U block width and height (8x4)
mov (1) mudMSGHDR_VCOPY(0,2)<1> 0x30007:ud // V block width and height (8x4)
 
 
 
// FileName: DN_Save_Y_16x8.asm
// Author: Vivek Kumar
// Description: Save one 16x8 blocks of Y channel of DN output for reference
 
 
mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
mov (2) mudDN_Y_OUT(0,0)<1> r7.0<2;2,1>:w { NoDDClr } // X origin
mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
 
//send out data through data port
send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
 
 
 
// FileName: DN_Save_UV_IMC3_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
 
// FileName: UVCopy_Save_16x8.asm
// Author: Vivek Kumar
// Description: Save UV for 16x8 block through DATAPORT
 
 
//Reuse the header from Load component
//Header is modified at the end of load - to be usable for save.
 
 
mov (8) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
mov (8) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(2)<8;8,1>
send (4) null<1>:d r36 0x5 0x40A8019:ud
send (4) null<1>:d r38 0x5 0x40A801A:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL_DI_422CP.g4a
0,0 → 1,461
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 87 // Total instruction count
// 1 // Total kernel count
 
.kernel PL_DI_422CP
.code
 
 
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DI_Save_422CP_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
 
 
.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
 
 
.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
 
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:ud r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:ud r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
 
//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
//Compose area-of-interest bit + color pipe state pointer
or (1) r27.3<1>:ud r2.4<0;1,0>:ud r7.26<0;1,0>:b { NoDDChk }
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r24.0<1>:ud r27<8;8,1>:ud
 
 
// Pack 2nd field Y; First 8x4 block
mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; First 8x4 block
mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
 
// Pack 2nd field Y; Second 8x4 block
mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 2nd field U, V; Second 8x4 block
mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r18.0 0x5 0x60A801B:ud
send (8) null<1>:d r21.0 0x5 0x60A801B:ud
 
// Pack 1st field Y; 1st 8x4 block
mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U,V; 1st 8x4 block
mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
// Pack 1st field Y; 2nd 8x4 block
mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
 
mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
 
// Pack 1st field U, V; 2nd 8x4 block
mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
 
mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
 
send (8) null<1>:d r24.0 0x5 0x60A801E:ud
send (8) null<1>:d r27.0 0x5 0x60A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/PL_DI_PA.g4a
0,0 → 1,399
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 57 // Total instruction count
// 1 // Total kernel count
 
.kernel PL_DI_PA
.code
 
 
 
// FileName: DI.asm
// Author: Vivek Kumar
// Description: Tasks for DI only case (16x4 block)
 
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: DNDI.inc
// Author: Vivek Kumar
// Description: Include file for DN, DI and DNDI
// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
 
 
 
 
// End of common.inc
 
 
//Interface:
//Static Parameters:
//r1
 
 
//====================== Binding table (Explicit To DNDI)=========================================
 
 
.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
 
 
.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
 
 
.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
 
 
.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
 
//r45
//Use r45 as message header, so no need to "mov" the data.
 
.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
// Message response (UV Copy); Use buffer 5
.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
//Temp GRFs: For 42X to 422 Conversion
.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
//---------------------------------------------------------------------------
// Message descriptors
//---------------------------------------------------------------------------
// Extended message descriptor
// Message descriptor for sampler read
// = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
// 1 (header present 1) 0 11 (SIMD32/64 mode)
// 1000 (message type) 0000 (DI state index)
// 00000000 (binding table index - set later)
// = 0x040b8000
 
 
// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
 
 
//---------------------------------------------------------------------------
// VDI Return Data format
//---------------------------------------------------------------------------
// Defines for DI enabled
 
 
// Defines for DI disabled
 
 
 
// FileName: DNDI_Command.asm
// Author: Vivek Kumar
// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
 
// Prepare the DNDI send command
mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
mov (1) mwMSGHDR_DNDI(1,4)<1> r7.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
mov (1) mwMSGHDR_DNDI(1,12)<1> r7.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
 
send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
 
// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
mov (2) r7.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
 
 
 
// FileName: DI_STMM_Save.asm
// Author: Vivek Kumar
// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write STMM to memory
mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
 
shr (1) mudMSGHDR_STMM(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
mov (1) mudMSGHDR_STMM(0,1)<1> r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
 
send (8) null<1>:d r20 0x5 0x40A8021:ud
 
 
 
// FileName: DNDI_Enc_Stats_Save.asm
// Author: Vivek Kumar
// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
 
// Write encoder statistics to memory
//Currently enable this only on Gen6 validation
mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
 
shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r7.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
mul (1) acc0.1<1>:ud r7.1<0;1,0>:w 3:w // Y origin * 3
shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
 
 
//Data block for Encoder Statistics
//----------------------------------------------------
//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
//----------------------------------------------------
//| BNE | MCNT | FCNT | TCNT | X | X | X | X |
//----------------------------------------------------
//| DcTpT | SVCM | DcBpT | DcTpB |
//----------------------------------------------------
//| SHCM | STAD | DcTcB | DcBpB |
//----------------------------------------------------
mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
 
 
send (8) null<1>:d r24 0x5 0x40A8021:ud
 
 
 
// FileName: DI_Save_PA_16x4.asm
// Author: Vivek Kumar
// Description: Save two 16x4 blocks of DI output in Packed format
 
 
add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
 
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
 
//prepare the message headers
mov (8) r18.0<1>:ud r27<8;8,1>:ud
mov (8) r23.0<1>:ud r27<8;8,1>:ud
 
// Pack 2nd field Y
mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
// Pack 2nd field U
mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 2nd field V
mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
 
// Pack 1st field Y
mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
// Pack 1st field U
mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
// Pack 1st field V
mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
 
//save the previous frame
send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
 
//save the current frame
send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
 
 
 
//End of Thread message
 
mov (8) r127<1>:ud r0.0<8;8,1>:ud
send (1) null<1>:d r127 0x27 0x02000010
 
 
.end_code
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/Save_AVS_NV12.g4a
0,0 → 1,621
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 131 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// Module name: Save_AVS_NV12.asm
//
// Save NV12 420 frame data block of size 16x16
//
// To save 16x16 block (16x16 bytes of Y and 16x8 bytes of interleaved UV), we need 2 send instructions with of size 16x16 and 16x8 each.
// ---------------
// | 16x16 |
// | YUYV |
// ---------------
// | 16x8 UV |
// ---------------
 
//-----------------------------------------------------------------
//The layout of data is as follows:
//mMSGHDR0 : Y data header (16x16)
//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
//mMSGHDR1 : U data header (16x8)
//mubMSGPAYLOAD1 : U data payload (4 GRFs)
//------------------------------------------------------------------
 
 
 
// Module name: Save.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Msg payload buffers; upto 4 full-size messages can be written
 
 
.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
 
.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
 
.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
 
 
// the r17 register (nTEMP0) is originally defined from "Common.inc"
// instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
 
.declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
 
 
//_SAVE_INC_
 
 
// At the save module we have all 8 address sub-registers available.
// So we will use PING-PONG type of scheme to save the data using
// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
// reduce dependency. - rT
 
//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
//Offsets are zero for buffer 0 and buffer 4.
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
 
//Set up header for Y,U and V data
mov (8) r28<1>:ud r27<8;8,1>:ud
mov (8) r37<1>:ud r27<8;8,1>:ud
 
mov (2) r28.0<1>:d r7.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
mov (1) r37.0<1>:d r7.0<0;1,0>:w { NoDDClr } //H ORI (CHROMA) = H ORI
shr (1) r37.1<1>:d r7.1<0;1,0>:w 1:w { NoDDClr, NoDDChk } //V ORI (CHROMA) = V ORI/2
 
mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
mov (1) r37.2<1>:ud 0x7000F:ud { NoDDChk } // UV Block width and height(16x8)
 
// Unscramble, and pack data directly to MRFs
 
// Data 16x16 block is divided as -
// ---------
// | 0 |
// ---------
// | 1 |
// ---------
// | 2 |
// ---------
// | 3 |
// ---------
// All sub-blocks are of size 16x4
// 0: ubBUFFER_0
// 1: ubBUFFER_1, ubBUFFER_0+16
// 2: ubBUFFER_2
// 3: ubBUFFER_3, ubBUFFER_2+16
 
//Y Rounding 16x4 top part
add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
 
// U Averaging and Rounding, 8x2 top part
shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2>
add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2>
add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw
 
// V Averaging and Rounding, 8x2 top part
shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2>
add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2>
add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
 
//Y Rounding, 16x4 bottom part
add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
 
// U Averaging and Rounding, 8x2 bottom part
shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2>
add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2>
add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw
 
// V Averaging and Rounding, 8x2 bottom part
shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2>
add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2>
add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw
 
add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
//Y Rounding 16x4 top part
add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
 
// U Averaging and Rounding, 8x2 top part
shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2>
add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2>
add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw
 
// V Averaging and Rounding, 8x2 top part
shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2>
add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2>
add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
 
//Y Rounding, 16x4 bottom part
add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
 
// U Averaging and Rounding, 8x2 bottom part
shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2>
add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2>
add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw
 
// V Averaging and Rounding, 8x2 bottom part
shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w
shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w
 
add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2>
add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw
 
add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2>
add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw
 
add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
// restore pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4 registers
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
 
//Buffer 0
//Move Y to msg payload
mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
 
//Move U to msg payload
mov (8) mubMSGPAYLOAD1(0,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(0,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
//Move V to msg payload
mov (8) mubMSGPAYLOAD1(0,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
 
//Buffer 1
mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(1,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
 
add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
 
//Buffer 2
mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(2,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(2,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
mov (8) mubMSGPAYLOAD1(2,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(2,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
 
//Buffer 3
mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(3,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(3,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
mov (8) mubMSGPAYLOAD1(3,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(3,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
//===========================================================================
 
send (1) null<1>:d r28 0x5 0x120A8018:ud
send (1) null<1>:d r37 0x5 0xA0A8019:ud
/drivers/video/i965/shaders/post_processing/gen7/Save_AVS_PA.g4a
0,0 → 1,625
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 174 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// Module name: Save_AVS_PA.asm
//
// Save PA 422 frame data block of size 16x16
//
// To save 16x16 block (32x16 bytes of YUYV) we need 2 send instructions with of size 16x16 each.
// -------------------------------
// | 16x16 | 16x16 |
// | YUYV | YUYV |
// -------------------------------
// these 2 sends are replaced by 8 32x2 sends to improve performance
 
 
 
// Module name: Save.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Msg payload buffers; upto 4 full-size messages can be written
 
 
.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
 
.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
 
.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
 
 
// the r17 register (nTEMP0) is originally defined from "Common.inc"
// instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
 
.declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
 
 
//_SAVE_INC_
 
 
//wBUFF_CHNL_PTR points to buffer 0.
//Add appropriate offsets to get pointers for all buffers (1,2,3).
//Offset is zero for buffer 0.
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
 
//Set DEST pointers according to output packing i.e. YUYV, YVYU, UYVY, VYUY
add (4) a0.4<1>:w r2.28<4;4,1>:ub 928:uw
 
shl (1) r27.0<1>:d r7.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be 2 times
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
mov (1) r27.2<1>:ud 0x1001F:ud { NoDDChk } // Block width and height (32x2)
 
// Rounding
// left
add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
 
// right
add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
// left
add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
 
// right
add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
// left
add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
 
// right
add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
// left
add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
 
// right
add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
 
add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
 
add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 2048:uw
// restore pointer
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
 
mov (8) r28<1>:ud r27<8;8,1>:ud
mov (8) r37<1>:ud r27<8;8,1>:ud
add (1) r37.1<1>:d r27.1<0;1,0>:d 2:d // Point to 2nd part
 
 
mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
 
mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
 
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
 
// restore pointer
add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
 
add (1) r28.1<1>:d r27.1<0;1,0>:d 4:d // Point to 2nd part
add (1) r37.1<1>:d r27.1<0;1,0>:d 6:d // Point to 2nd part
 
 
mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
 
mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
 
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
 
// restore pointer
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
 
add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d // Point to 2nd part
add (1) r37.1<1>:d r27.1<0;1,0>:d 10:d // Point to 2nd part
 
 
mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
 
mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
 
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
 
// restore pointer
add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
 
add (1) r28.1<1>:d r27.1<0;1,0>:d 12:d // Point to 2nd part
add (1) r37.1<1>:d r27.1<0;1,0>:d 14:d // Point to 2nd part
 
mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
 
mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
 
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
 
/drivers/video/i965/shaders/post_processing/gen7/Save_AVS_PL3.g4a
0,0 → 1,564
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 84 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// Module name: Save_AVS_PL3.asm
//
// Save PL3 420 frame data block of size 16x16
//
// To save 16x16 block (16x16 byte of Y and 8x8 byte of U and V each) we need 3 send instructions with one of size 16x16 and two of size 8x8.
// -----------------
// | 16x16 Y |
// | |
// -----------------
// | 8x8 U |
// ---------
// | 8x8 V |
// ---------
 
//-----------------------------------------------------------------
//The layout of data is as follows:
//mMSGHDR0 : Y data header (16x16)
//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
//mMSGHDR1 : U data header (8x8)
//mubMSGPAYLOAD1 : U data payload (2 GRFs)
//mMSGHDR2 : V data header (8x8)
//mubMSGPAYLOAD2 : V data payload (2 GRFs)
//------------------------------------------------------------------
 
 
 
// Module name: Save.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Msg payload buffers; upto 4 full-size messages can be written
 
 
.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
 
.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
 
.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
 
 
// the r17 register (nTEMP0) is originally defined from "Common.inc"
// instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
 
.declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
 
 
//_SAVE_INC_
 
 
// At the save module we have all 8 address sub-registers available.
// So we will use PING-PONG type of scheme to save the data using
// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
// reduce dependency. - rT
 
//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
//Offsets are zero for buffer 0 and buffer 4.
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
 
//Set up header for Y,U and V data
mov (8) r28<1>:ud r27<8;8,1>:ud
mov (8) r37<1>:ud r27<8;8,1>:ud
mov (8) r46<1>:ud r27<8;8,1>:ud
 
mov (2) r28.0<1>:d r7.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
shr (2) r37.0<1>:d r7.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI U = H/V ORI/2
shr (2) r46.0<1>:d r7.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI V = H/V ORI/2
 
mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
mov (1)r37.2<1>:ud 0x70007:ud { NoDDChk } // U Block width and height (8x8)
mov (1)r46.2<1>:ud 0x70007:ud { NoDDChk } // V Block width and height (8x8)
 
// Unscramble, and pack data directly to MRFs
 
// Data 16x16 block is divided as -
// ---------
// | 0 |
// ---------
// | 1 |
// ---------
// | 2 |
// ---------
// | 3 |
// ---------
// All sub-blocks are of size 16x4
// 0: ubBUFFER_0
// 1: ubBUFFER_1, ubBUFFER_0+16
// 2: ubBUFFER_2
// 3: ubBUFFER_3, ubBUFFER_2+16
 
//Y Rounding, first
add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
 
// U rounding
add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
 
// V rounding
add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
 
//Y Rounding, second
add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
 
// U rounding
add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
 
// V rounding
add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
 
add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
 
//Y Rounding, third
add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
 
// U rounding
add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
 
// V rounding
add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
 
 
//Y Rounding, fourth
add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
 
// U rounding
add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
 
// V rounding
add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
 
// restore the TOP and BOT pointers
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
 
//Buffer 0
//Move Y to msg payload
mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
 
//Move U to msg payload
mov (8) mubMSGPAYLOAD1(0,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(0,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
//Move V to msg payload
mov (8) mubMSGPAYLOAD2(0,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD2(0,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
 
//Buffer 1
mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(0,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(0,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(0,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
 
add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
 
//Buffer 2
mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD1(1,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
mov (8) mubMSGPAYLOAD2(1,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
mov (8) mubMSGPAYLOAD2(1,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
 
//Buffer 3
mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(1,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(1,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
 
//===========================================================================
 
send (1) null<1>:d r28 0x5 0x120A8018:ud
send (1) null<1>:d r37 0x5 0x60A8019:ud
send (1) null<1>:d r46 0x5 0x60A801A:ud
/drivers/video/i965/shaders/post_processing/gen7/Save_AVS_RGB.g4a
0,0 → 1,668
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 198 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// Module name: Save_AVS_RGB.asm
//
// Save packed ARGB 444 frame data block of size 16x16
//
// To save 16x16 block (64x16 byte layout for ARGB8888) we need 4 send instructions with 16x16 in each
// -----------------
// | 0 | 1 | 2 | 3 |
// -----------------
// the 4 16x16 block send has been replaced by 16 32x2 sends to get better performance
 
 
 
// Module name: Save.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Msg payload buffers; upto 4 full-size messages can be written
 
 
.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
 
.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
 
.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
 
 
// the r17 register (nTEMP0) is originally defined from "Common.inc"
// instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
 
.declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
 
 
//_SAVE_INC_
 
 
// At the save module we have all 8 address sub-registers available.
// So we will use PING-PONG type of scheme to save the data using
// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
// reduce dependency. - rT
 
// channel switching based on bit 0 of uWRGB_BGR_CH_SWITCH
 
// if channel swap?
and.nz.f0.0 null<1>:w r2.3<0;1,0>:uw 0x01:w
 
//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
//Offsets are zero for buffer 0 and buffer 4.
add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
 
// pointer swap
(f0.0) mov (1) uwTemp0<1> a0.0:uw
(f0.0) mov (1) a0.0:uw a0.2:uw
(f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
 
shl (1) r27.0<1>:d r7.0<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
mov (1) r27.1<1>:d r7.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
mov (1) r27.2<1>:ud 0x1001F:ud { NoDDChk } // Block width and height (32x2)
 
add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
 
mov (8) r28<1>:ud r27<8;8,1>:ud
mov (8) r37<1>:ud r27<8;8,1>:ud
mov (8) r46<1>:ud r27<8;8,1>:ud
mov (8) r55<1>:ud r27<8;8,1>:ud
 
mov (8) r31<1>:ud r27<8;8,1>:ud
mov (8) r40<1>:ud r27<8;8,1>:ud
mov (8) r49<1>:ud r27<8;8,1>:ud
mov (8) r58<1>:ud r27<8;8,1>:ud
 
 
//for BUFFER 0
add (1) r37.1<1>:d r27.1<0;1,0>:d 2:d
add (1) r46.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r55.1<1>:d r27.1<0;1,0>:d 2:d
 
// for BUFFER 1
add (1) r31.1<1>:d r27.1<0;1,0>:d 4:d
add (1) r40.1<1>:d r27.1<0;1,0>:d 6:d
add (1) r49.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r49.1<1>:d r27.1<0;1,0>:d 4:d
add (1) r58.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r58.1<1>:d r27.1<0;1,0>:d 6:d
// write Buf_0 to 1st quarter of four horizontal output blocks
 
// Please note the scattered order of NODDCLR, NODDCHK flags. Since the sub-registers
// of destination reg are not updated at one place and hence even flags are scattered. -rT
 
mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub { NoDDChk }
 
// write Buf_1 to 2nd quarter of four horizontal output blocks
add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
 
// pointer swap
(f0.0) mov (1) uwTemp0<1> a0.0:uw
(f0.0) mov (1) a0.0:uw a0.2:uw
(f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
 
add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
 
mov (8) mubMSGPAYLOAD4(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD4(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD4(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD4(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD5(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD5(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD5(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD5(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD6(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD6(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD6(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD6(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD7(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD7(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD7(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD7(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(1, 3)<4> r2.31:ub { NoDDChk }
 
// send buffer 0 and buffer 1
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
send (1) null<1>:d r46 0x5 0x60A8018:ud
send (1) null<1>:d r55 0x5 0x60A8018:ud
 
send (1) null<1>:d r31 0x5 0x60A8018:ud
send (1) null<1>:d r40 0x5 0x60A8018:ud
send (1) null<1>:d r49 0x5 0x60A8018:ud
send (1) null<1>:d r58 0x5 0x60A8018:ud
 
//==========
//prepare headers
//for BUFFER 2
add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d
add (1) r37.1<1>:d r27.1<0;1,0>:d 10:d
add (1) r46.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r46.1<1>:d r27.1<0;1,0>:d 8:d
add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r55.1<1>:d r27.1<0;1,0>:d 10:d
// for BUFFER 3
add (1) r31.1<1>:d r27.1<0;1,0>:d 12:d
add (1) r40.1<1>:d r27.1<0;1,0>:d 14:d
add (1) r49.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r49.1<1>:d r27.1<0;1,0>:d 12:d
add (1) r58.0<1>:d r27.0<0;1,0>:d 32:d
add (1) r58.1<1>:d r27.1<0;1,0>:d 14:d
 
//===========
 
// write Buf_2 to 3rd quarter of four horizontal output blocks
add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
 
// pointer swap
(f0.0) mov (1) uwTemp0<1> a0.0:uw
(f0.0) mov (1) a0.0:uw a0.2:uw
(f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
 
add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
 
mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub { NoDDChk }
 
// write Buf_3 to 4th quarter of four horizontal output blocks
add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
 
// pointer swap
(f0.0) mov (1) uwTemp0<1> a0.0:uw
(f0.0) mov (1) a0.0:uw a0.2:uw
(f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
 
add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
 
mov (8) mubMSGPAYLOAD4(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD4(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD4(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD4(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD4(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD5(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD5(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD5(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD5(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD5(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD6(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD6(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD6(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD6(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD6(1, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD7(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD7(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(0, 3)<4> r2.31:ub { NoDDChk }
 
mov (8) mubMSGPAYLOAD7(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
mov (8) mubMSGPAYLOAD7(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
mov (8) mubMSGPAYLOAD7(1, 3)<4> r2.31:ub { NoDDChk }
 
// send buffer 2 and buffer 3
send (1) null<1>:d r28 0x5 0x60A8018:ud
send (1) null<1>:d r37 0x5 0x60A8018:ud
send (1) null<1>:d r46 0x5 0x60A8018:ud
send (1) null<1>:d r55 0x5 0x60A8018:ud
 
send (1) null<1>:d r31 0x5 0x60A8018:ud
send (1) null<1>:d r40 0x5 0x60A8018:ud
send (1) null<1>:d r49 0x5 0x60A8018:ud
send (1) null<1>:d r58 0x5 0x60A8018:ud
/drivers/video/i965/shaders/post_processing/gen7/Set_AVS_Buf_0123_BGRA.g4a
0,0 → 1,362
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 7 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Module Name: Set_AVS_Buf_0123_BGRA.asm
 
 
 
//Module Name: Set_Buf_0123_BGRA
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//AVS LAYOUT:(UUYYVVAA)
//Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
// V = 8, Y= 4, U = 0, A = 12.
mov (4) acc0.0<1>:w 0x6AE2:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
 
//OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
 
//SU LAYOUT:(VYUAVYUA)
//V = 4, Y = 2, U = 0, A = 6
mov (4) acc0.0<1>:w 0x6024:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
 
//OFFSET:
mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
 
 
/drivers/video/i965/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL2.g4a
0,0 → 1,361
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 7 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Module Name: Set_AVS_Buf_0123_PL2.asm
 
 
 
//Module Name: Set_Buf_0123_PL2
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//AVS LAYOUT: (YYUUVVAA)
//Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
//For PL2-AVS: V = 8, Y= 0, U = 4, A = 12.
mov (4) acc0.0<1>:w 0x6EA2:v //Subtract 6 from 0,4,8,12
add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
 
//OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
//SU LAYOUT:(YUVAYUVA)
//V = 4, Y = 0, U = 2, A = 6
mov (4) acc0.0<1>:w 0x6204:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
 
//OFFSET:
mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
 
 
/drivers/video/i965/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL3.g4a
0,0 → 1,361
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 7 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Module Name: Set_AVS_Buf_0123_PL3.asm
 
 
 
//Module Name: Set_Buf_0123_PL3
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//AVS LAYOUT: (YYUUVVAA)
//Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
//For PL3-AVS: V = 8, Y= 0, U = 4, A = 12.
mov (4) acc0.0<1>:w 0x6EA2:v //Subtract 6 from 0,4,8,12
add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
 
//OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
//SU LAYOUT:(YUVAYUVA)
//V = 4, Y = 0, U = 2, A = 6
mov (4) acc0.0<1>:w 0x6204:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
 
//OFFSET:
mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
 
 
/drivers/video/i965/shaders/post_processing/gen7/Set_AVS_Buf_0123_VUYA.g4a
0,0 → 1,362
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 7 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Module Name: Set_AVS_Buf_0123_YUVA.asm
 
 
 
// Module Name : Set_Buf_0123_VUYA
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//For AVS: We use surface state as R8G8B8A8_UNORM and hence set pointers to VUYA.
//AVS LAYOUT:(VVUUYYAA)
//Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
//V = 0, Y= 8, U = 4, A = 12.
mov (4) acc0.0<1>:w 0x6E2A:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
 
//Used by Shuffle.
//SU LAYOUT:(VUYAVUYA)
//V = 0, Y = 4, U = 2, A = 6
mov (4) acc0.0<1>:w 0x6240:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
 
//OFFSET:
mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
 
 
/drivers/video/i965/shaders/post_processing/gen7/Set_AVS_Buf_0123_VYUA.g4a
0,0 → 1,362
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 7 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
//Module Name: Set_AVS_Buf_0123_VYUA.asm
 
 
 
//Module Name: Set_Buf_0123_VYUA
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//AVS LAYOUT:(VVYYUUAA)
//Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
// V = 0, Y= 4, U = 8, A = 12.
mov (4) acc0.0<1>:w 0x62EA:v //Subtract 6 from 0,4,8,12
add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
 
//OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
 
//SU LAYOUT:(VYUAVYUA)
//V = 0, Y = 2, U = 4, A = 6
mov (4) acc0.0<1>:w 0x6420:v
add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
 
//OFFSET:
mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
 
 
/drivers/video/i965/shaders/post_processing/gen7/Set_Layer_0.g4a
0,0 → 1,467
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 18 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
 
 
 
 
//Module name: Set_Layer_N.inc
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Used to generate LABELS at compile time.
 
 
//definitions for Expand Mask
.declare uwMask_Temp1 Base=r17.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
.declare ubMask_Temp1 Base=r17.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
.declare udMask_Temp1 Base=r17.0 ElementSize=4 Type=ud // 1 GRF
.declare uwMask_Temp2 Base=r16.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
.declare ubMask_Temp2 Base=r16.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
.declare udMask_Temp2 Base=r16.0 ElementSize=4 Type=ud // 1 GRF
 
.declare uwMask_Temp3 Base=r15.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
.declare ubMask_Temp3 Base=r15.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
 
.declare udALPHA_MASK_REG Base=r21.0 ElementSize=4 Type=ud // 1 GRF
.declare udALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=4 Type=ud // 1 GRF
 
 
//Initialize mask reg to FFFF
 
mov (16) uwALPHA_MASK_REG(0)<1> 0xFFFF:uw
 
 
//Fast jump for -
//LAYER0: we determine whether layer 0 is to be loaded and processed or not based
// on block mask in module "Set_Layer_0" and store result in f0.1.
// This flag is then directly used to while loading buf0-3 and colorfill.
// (So flag f0.1 should not be changed from Set_Layer_0 till Colorfill)
//
//LAYER1-7: For all other layers, we compute whether layer is to be loaded and processed
// based on block mask in module "Set_Layer_1-7" and store result in SKIP_LAYER
// variable.
// While Loading buf 4 and 5, we move SKIP_LAYER to f0.0 every time and use it
// for Loading.
// For processing though, we move SKIP_LAYER only once to f0.1 in module
// "Set_Buf0_Buf4" and use f0.1 for deciding whether layer 1-7 (all 4 sub blocks)
// is to be processed or not.
// (So flag f0.1) should not be modififed from module "Set_Buf0_Buf4" till module
// that processess sub-block 3).
//
//None of the above fast jumps, apply to CSC modules. We always perform CSC irrespective of mask.
//
//Example: (Without going into finer details)
// Typical Combined kernel:
//
// (let var = decision whether to load/process that layer)
//
// Set_Layer_0 //f0.1 <- var
// ..
// Set_Layer_1 //f0.1 <- var, SKIP_LAYER <- var
// ..
// Load buf 0 //use f0.1
// Load buf 4 //f0.0 <- SKIP_LAYER
// Load buf 1 //use f0.1
// Load buf 5 //f0.0 <- SKIP_LAYER
// Load buf 2 //use f0.1
// Load buf 3 //use f0.1
// ..
// ..
// Colorfill
// ..
// Set_Buf0_Buf4 //f0.1 <- SKIP_LAYER
// process0-4 //Use f0.1
// Load buf 4
// Set_Buf1_Buf5
// process1-5
// Load buf 5
// ..
// Set_Layer_2 //f0.1 <-var, SKIP_LAYER <- var
// ..
// Set_Buf2_Buf4
// process2-4
// Load buf 4
// Set_Buf3_Buf5
// process3-5
// Load buf 5
// ..
 
 
//For layer 0, use f0.1 directly
cmp.ne.f0.1 (1) null<1>:d r7.2:uw 0:uw
(f0.1)cmp.ne.f0.1 (1) null<1>:d r7.3:uw 0:uw
(-f0.1) jmpi (1) SKIP_LAYER_L0
 
 
and (1) r24.2:ub r2.2<0;1,0>:uw 3:uw
 
 
//Copy all AVS Payload data
// Setup Message Payload Header for 1st block of Media Sampler 8x8 (16x4 for IVB+)
mov (1) r25.6:f r7.5:f { NoDDClr } //NLAS dx
mov (1) r25.4:f r3.0:f { NoDDClr, NoDDChk } //Step X
mov (1) r25.5:f r4.0:f { NoDDClr, NoDDChk } //Step Y
 
 
mov (1) r25.2:f r6.0<0;1,0>:f { NoDDClr, NoDDChk } //Orig X
mov (1) r25.3:f r5.0<0;1,0>:f { NoDDChk } //Orig Y
 
//NLAS calculations for 2nd half of blocks of Media Sampler 8x8:
// X(i) = X0 + dx*i + ddx*i*(i-1)/2 ==> X(8) = X0 + dx*8 +ddx*28
// dx(i)= dx(0) + ddx*i ==> dx(8)= dx + ddx*8
 
//OPTIMIZATION: fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY - are sub registers of same GRF. Use NODDCLR NODDCHK. -rT
 
// Calculating X(8)
mov (1) acc0.2:f r6.0:f
mac (1) acc0.2:f r3.0:f 8.0:f
mac (1) r23.2:f r7.5:f 28.0:f { NoDDClr }
 
// Calculating Y(4)
mul (1) r23.1<1>:f r4.0:f 4.0:f { NoDDClr, NoDDChk } //dY*4
 
// Calculating dx(8)
mov (1) acc0.4:f r3.0:f
mac (1) r23.4:f r7.5:f 8.0:f { NoDDClr, NoDDChk }
 
// Binding Index
mov (1) r23.5:ud 0:ud { NoDDChk }
 
 
SKIP_LAYER_L0:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/VP_Setup.g4a
0,0 → 1,853
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Copyright 2000-2011 Intel Corporation All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
 
// 326 // Total instruction count
// 1 // Total kernel count
 
 
 
// Module name: common.inc
//
// Common header file for all Video-Processing kernels
//
 
.default_execution_size (16)
.default_register_type :ub
 
.reg_count_total 128
.reg_count_payload 7
 
//========== Common constants ==========
 
 
//========== Macros ==========
 
 
//Fast Jump, For more details see "Set_Layer_N.asm"
 
 
//========== Defines ====================
 
//========== Static Parameters (Common To All) ==========
//r1
 
 
//r2
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
//Color Pipe (IECP) parameters
 
 
//ByteCopy
 
 
//r4
 
// e.g. byte0 byte1 byte2
// YUYV 0 1 3
// YVYU 0 3 1
 
 
//========== Inline parameters (Common To All) ===========
 
 
//============== Binding Index Table===========
//Common between DNDI and DNUV
 
 
//================= Common Message Descriptor =====
// Message descriptor for thread spawning
// Message Descriptors
// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
// 0000,0000,0000
// 0001(Spawn a root thread),0001 (Root thread spawn thread)
// = 0x02000011
// Thread Spawner Message Descriptor
 
 
// Message descriptor for atomic operation add
// Message Descriptors
// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
// 0000,0000 (Binding table index, added later)
// = 0x02000011
 
// Atomic Operation Add Message Descriptor
 
 
// Message descriptor for dataport media write
// Message Descriptors
// = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
// 1 (header present 1) 0 1010 (media block write) 000000
// 00000000 (binding table index - set later)
// = 0x020A8000
 
 
// Message Length defines
 
 
// Response Length defines
 
 
// Block Width and Height Size defines
 
 
// Extended Message Descriptors
 
 
// Common message descriptors:
 
 
//===================== Math Function Control ===================================
 
 
//============ Message Registers ===============
// buf4 starts from r28
 
 
//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
 
 
.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
 
//=================== End of thread instruction ===========================
 
 
//=====================Pointers Used=====================================
 
 
//=======================================================================
 
 
//r9-r17
// Define temp space for any usages
 
 
// Common Buffers
 
 
// temp space for rotation
 
.declare fROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udROBUF Base=r9.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwROBUF Base=r9.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubROBUF Base=r9.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4ROBUF Base=r9.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
 
// End of common.inc
 
 
// FileName: VP_Setup.asm
// Author: Vivek Kumar
// Description: Sets up all parameters for the Video Processing Kernel
 
 
 
 
// Description: Includes all definitions explicit to Fast Composite.
 
 
 
 
// End of common.inc
 
 
//========== GRF partition ==========
// r0 header : r0 (1 GRF)
// Static parameters : r1 - r6 (6 GRFS)
// Inline parameters : r7 - r8 (2 GRFs)
// MSGSRC : r27 (1 GRF)
//===================================
 
//Interface:
//========== Static Parameters (Explicit To Fast Composite) ==========
//r1
//CSC Set 0
 
 
.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
 
//Constant alpha
 
 
//r2
 
 
// Gen7 AVS WA
 
 
// WiDi Definitions
 
 
//Colorfill
 
 
// 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
 
.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
 
//r3
//Normalised Ratio of Horizontal step size with main video for all layers
 
 
//Normalised Ratio of Horizontal step size with main video for all layers becomes
//Normalised Horizontal step size for all layers in VP_Setup.asm
 
 
//r4
//Normalised Vertical step size for all layers
 
 
//r5
//Normalised Vertical Frame Origin for all layers
 
 
//r6
//Normalised Horizontal Frame Origin for all layers
 
 
//========== Inline Parameters (Explicit To Fast Composite) ==========
 
 
//Main video Step X
 
 
//====================== Binding table (Explicit To Fast Composite)=========================================
 
 
//Used by Interlaced Scaling Kernels
 
 
//========== Sampler State Table Index (Explicit To Fast Composite)==========
//Sampler Index for AVS/IEF messages
 
 
//Sampler Index for SIMD16 sampler messages
 
 
//=============================================================================
 
.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
 
.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
 
.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
 
.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
 
.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
 
//Pointer to mask reg
 
 
//r18
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
 
//r19
 
 
.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
 
 
//r20
 
.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r21
 
.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
 
//r22
 
 
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
// NODDCLR, NODDCHK flags. -rT
 
 
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
 
//r23
 
 
//Lumakey
 
 
//r24
 
 
//r25
 
 
//r26
 
 
//defines to generate LABELS during compile time.
 
 
//Setup pointer to the inline parameter
 
// Copy MSG HDR
mov (8) r27.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
 
 
//temp; remove it once unread msg warnings are resolved -vK
mov (8) r25:ud r0.0<8;8,1>:ud
mov (8) r26:ud r0.0<8;8,1>:ud
 
// Calculate StepX for all layers and overwrite it on the ratio
mul (8) r3.0<1>:f r3.0<8;8,1>:f r7.4<0;1,0>:f //StepX_ratio = StepX / VideoStepX
 
//Normalised Ratio of Horizontal step size with main video for all layers now becomes
//Normalised Horizontal step size for all layers
 
// Calculate block origin for all layers and overwrite it on the frame origin
mov (2) r8.5<1>:f r7.0<2;2,1>:w //Convert origin from word to float
 
cmp.e.f0.0 (8) null<1>:d r2.26:ub 1:uw
 
 
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 0:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L0
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L0
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L0
 
// rotate 0 degree
ROTATE_0_L0:
(-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
(-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.0:f r5.0<0;1,0>:f
mac (1) r5.0<1>:f r4.0<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
 
// rotate 90 degree
ROTATE_90_L0:
(-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
(-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.0:f r5.0<0;1,0>:f
mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
 
// rotate 180 degree
ROTATE_180_L0:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
(-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.0:f r5.0<0;1,0>:f
mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
 
// rotate 270 degree
ROTATE_270_L0:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
(-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.0:f r5.0<0;1,0>:f
mac (1) r5.0<1>:f r4.0<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L0:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 2:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L1
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L1
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L1
 
// rotate 0 degree
ROTATE_0_L1:
(-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
(-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.1:f r5.1<0;1,0>:f
mac (1) r5.1<1>:f r4.1<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
 
// rotate 90 degree
ROTATE_90_L1:
(-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
(-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.1:f r5.1<0;1,0>:f
mac (1) r5.1<1>:f r4.1<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
 
// rotate 180 degree
ROTATE_180_L1:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
(-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.1:f r5.1<0;1,0>:f
mac (1) r5.1<1>:f r4.1<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
 
// rotate 270 degree
ROTATE_270_L1:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
(-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.1:f r5.1<0;1,0>:f
mac (1) r5.1<1>:f r4.1<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L1:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 4:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L2
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L2
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L2
 
// rotate 0 degree
ROTATE_0_L2:
(-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
(-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.2:f r5.2<0;1,0>:f
mac (1) r5.2<1>:f r4.2<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
 
// rotate 90 degree
ROTATE_90_L2:
(-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
(-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.2:f r5.2<0;1,0>:f
mac (1) r5.2<1>:f r4.2<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
 
// rotate 180 degree
ROTATE_180_L2:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
(-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.2:f r5.2<0;1,0>:f
mac (1) r5.2<1>:f r4.2<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
 
// rotate 270 degree
ROTATE_270_L2:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
(-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.2:f r5.2<0;1,0>:f
mac (1) r5.2<1>:f r4.2<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L2:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 6:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L3
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L3
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L3
 
// rotate 0 degree
ROTATE_0_L3:
(-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
(-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.3:f r5.3<0;1,0>:f
mac (1) r5.3<1>:f r4.3<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
 
// rotate 90 degree
ROTATE_90_L3:
(-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
(-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.3:f r5.3<0;1,0>:f
mac (1) r5.3<1>:f r4.3<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
 
// rotate 180 degree
ROTATE_180_L3:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
(-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.3:f r5.3<0;1,0>:f
mac (1) r5.3<1>:f r4.3<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
 
// rotate 270 degree
ROTATE_270_L3:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
(-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.3:f r5.3<0;1,0>:f
mac (1) r5.3<1>:f r4.3<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L3:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 8:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L4
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L4
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L4
 
// rotate 0 degree
ROTATE_0_L4:
(-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
(-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.4:f r5.4<0;1,0>:f
mac (1) r5.4<1>:f r4.4<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
 
// rotate 90 degree
ROTATE_90_L4:
(-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
(-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.4:f r5.4<0;1,0>:f
mac (1) r5.4<1>:f r4.4<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
 
// rotate 180 degree
ROTATE_180_L4:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
(-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.4:f r5.4<0;1,0>:f
mac (1) r5.4<1>:f r4.4<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
 
// rotate 270 degree
ROTATE_270_L4:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
(-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.4:f r5.4<0;1,0>:f
mac (1) r5.4<1>:f r4.4<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L4:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 10:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L5
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L5
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L5
 
// rotate 0 degree
ROTATE_0_L5:
(-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
(-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.5:f r5.5<0;1,0>:f
mac (1) r5.5<1>:f r4.5<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
 
// rotate 90 degree
ROTATE_90_L5:
(-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
(-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.5:f r5.5<0;1,0>:f
mac (1) r5.5<1>:f r4.5<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
 
// rotate 180 degree
ROTATE_180_L5:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
(-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.5:f r5.5<0;1,0>:f
mac (1) r5.5<1>:f r4.5<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
 
// rotate 270 degree
ROTATE_270_L5:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
(-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.5:f r5.5<0;1,0>:f
mac (1) r5.5<1>:f r4.5<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L5:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 12:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L6
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L6
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L6
 
// rotate 0 degree
ROTATE_0_L6:
(-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
(-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.6:f r5.6<0;1,0>:f
mac (1) r5.6<1>:f r4.6<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
 
// rotate 90 degree
ROTATE_90_L6:
(-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
(-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.6:f r5.6<0;1,0>:f
mac (1) r5.6<1>:f r4.6<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
 
// rotate 180 degree
ROTATE_180_L6:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
(-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.6:f r5.6<0;1,0>:f
mac (1) r5.6<1>:f r4.6<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
 
// rotate 270 degree
ROTATE_270_L6:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
(-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.6:f r5.6<0;1,0>:f
mac (1) r5.6<1>:f r4.6<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L6:
nop
shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 14:uw
and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
(f0.1) jmpi (1) ROTATE_90_L7
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
(f0.1) jmpi (1) ROTATE_180_L7
cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
(f0.1) jmpi (1) ROTATE_270_L7
 
// rotate 0 degree
ROTATE_0_L7:
(-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
(-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r8.5<0;1,0>:f
 
mov (1) acc0.7:f r5.7<0;1,0>:f
mac (1) r5.7<1>:f r4.7<0;1,0>:f r8.6<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
 
// rotate 90 degree
ROTATE_90_L7:
(-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
(-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r8.6<0;1,0>:f
 
mov (1) r16.0<1>:f r2.0<0;1,0>:uw
add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
 
mov (1) acc0.7:f r5.7<0;1,0>:f
mac (1) r5.7<1>:f r4.7<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
 
// rotate 180 degree
ROTATE_180_L7:
(-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
(-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) r16.0<1>:f r2.1<0;1,0>:uw
add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
mov (1) acc0.7:f r5.7<0;1,0>:f
mac (1) r5.7<1>:f r4.7<0;1,0>:f r17.0<0;1,0>:f
jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
 
// rotate 270 degree
ROTATE_270_L7:
(-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
(-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
(-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
(-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
(-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r17.0<0;1,0>:f
 
mov (1) acc0.7:f r5.7<0;1,0>:f
mac (1) r5.7<1>:f r4.7<0;1,0>:f r8.5<0;1,0>:f
 
END_SRC_BLOCK_ORIG_COMP_L7:
nop
 
 
/drivers/video/i965/shaders/post_processing/gen7/avs.asm
0,0 → 1,19
// Module name: AVS
.kernel AVS
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL2.g4a"
#include "PL2_AVS_Buf_0.g4a"
#include "PL2_AVS_Buf_1.g4a"
#include "PL2_AVS_Buf_2.g4a"
#include "PL2_AVS_Buf_3.g4a"
#include "Save_AVS_NV12.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
 
// end of DNDI
/drivers/video/i965/shaders/post_processing/gen7/avs.g75b
0,0 → 1,654
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/avs.g7b
0,0 → 1,654
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/dndi.asm
0,0 → 1,11
// Module name: DNDI
.kernel DNDI
.code
 
#include "NV12_DI_NV12.g4a"
 
.end_code
 
.end_kernel
 
// end of DNDI
/drivers/video/i965/shaders/post_processing/gen7/dndi.g75b
0,0 → 1,46
{ 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x226801ad, 0x000000e0, 0x00000000 },
{ 0x00000801, 0x227801ad, 0x000000e2, 0x00000000 },
{ 0x02600031, 0x25c00e21, 0x00000240, 0x04ae8003 },
{ 0x00200001, 0x20e0012d, 0x004506fc, 0x00000000 },
{ 0x00600001, 0x22800021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x22a00021, 0x008d06c0, 0x00000000 },
{ 0x00000408, 0x22803da1, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x228401a1, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x22880061, 0x00000000, 0x00030007 },
{ 0x05600031, 0x20000e24, 0x00000280, 0x040a8021 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
{ 0x00000408, 0x23003da1, 0x000000e0, 0x00010001 },
{ 0x00000041, 0x24043da0, 0x000000e2, 0x00030003 },
{ 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
{ 0x00000801, 0x23080061, 0x00000000, 0x00020007 },
{ 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
{ 0x00000401, 0x23200021, 0x000006e4, 0x00000000 },
{ 0x00200c01, 0x432c0021, 0x004506ec, 0x00000000 },
{ 0x00200801, 0x43280021, 0x004506f4, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
{ 0x00600001, 0x23800021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x238001a5, 0x000000e0, 0x00000000 },
{ 0x00000c01, 0x238401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23880061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x22400021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x22e00021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x22600021, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x22800021, 0x008d05e0, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0660, 0x00000000 },
{ 0x0000040c, 0x23843ca5, 0x00000384, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x0001000f },
{ 0x00800401, 0x42c00231, 0x00ce0601, 0x00000000 },
{ 0x00800801, 0x42c10231, 0x00ce0600, 0x00000000 },
{ 0x00800401, 0x43600231, 0x00ce0681, 0x00000000 },
{ 0x00800801, 0x43610231, 0x00ce0680, 0x00000000 },
{ 0x00600001, 0x22a00021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0380, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000240, 0x060a801b },
{ 0x05600031, 0x20000e24, 0x000002e0, 0x060a801e },
{ 0x05600031, 0x20000e24, 0x000002a0, 0x040a801c },
{ 0x05600031, 0x20000e24, 0x00000340, 0x040a801f },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/dndi.g7b
0,0 → 1,46
{ 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x226801ad, 0x000000e0, 0x00000000 },
{ 0x00000801, 0x227801ad, 0x000000e2, 0x00000000 },
{ 0x02600031, 0x25c00e21, 0x00000240, 0x04ae8003 },
{ 0x00200001, 0x20e0012d, 0x004506fc, 0x00000000 },
{ 0x00600001, 0x22800021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x22a00021, 0x008d06c0, 0x00000000 },
{ 0x00000408, 0x22803da1, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x228401a1, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x22880061, 0x00000000, 0x00030007 },
{ 0x05600031, 0x20000e24, 0x00000280, 0x040a8021 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
{ 0x00000408, 0x23003da1, 0x000000e0, 0x00010001 },
{ 0x00000041, 0x24043da0, 0x000000e2, 0x00030003 },
{ 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
{ 0x00000801, 0x23080061, 0x00000000, 0x00020007 },
{ 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
{ 0x00000401, 0x23200021, 0x000006e4, 0x00000000 },
{ 0x00200c01, 0x432c0021, 0x004506ec, 0x00000000 },
{ 0x00200801, 0x43280021, 0x004506f4, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
{ 0x00600001, 0x23800021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x238001a5, 0x000000e0, 0x00000000 },
{ 0x00000c01, 0x238401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23880061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x22400021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x22e00021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x22600021, 0x008d05c0, 0x00000000 },
{ 0x00600001, 0x22800021, 0x008d05e0, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0640, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0660, 0x00000000 },
{ 0x0000040c, 0x23843ca5, 0x00000384, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x0001000f },
{ 0x00800401, 0x42c00231, 0x00ce0601, 0x00000000 },
{ 0x00800801, 0x42c10231, 0x00ce0600, 0x00000000 },
{ 0x00800401, 0x43600231, 0x00ce0681, 0x00000000 },
{ 0x00800801, 0x43610231, 0x00ce0680, 0x00000000 },
{ 0x00600001, 0x22a00021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0380, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000240, 0x060a801b },
{ 0x05600031, 0x20000e24, 0x000002e0, 0x060a801e },
{ 0x05600031, 0x20000e24, 0x000002a0, 0x040a801c },
{ 0x05600031, 0x20000e24, 0x00000340, 0x040a801f },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/nv12_dn_nv12.asm
0,0 → 1,5
// Module name: DN
 
#include "NV12_DN_NV12.g4a"
 
// end of DNDI
/drivers/video/i965/shaders/post_processing/gen7/nv12_dn_nv12.g75b
0,0 → 1,40
{ 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x226801ad, 0x000000e0, 0x00000000 },
{ 0x00000801, 0x227801ad, 0x000000e2, 0x00000000 },
{ 0x02600031, 0x25c00e21, 0x00000240, 0x045e8003 },
{ 0x00200001, 0x20e0012d, 0x0045065c, 0x00000000 },
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00200001, 0x22e00021, 0x00450640, 0x00000000 },
{ 0x00200008, 0x23603da1, 0x004500e0, 0x00020002 },
{ 0x00000440, 0x23602421, 0x00000360, 0x00000038 },
{ 0x00000801, 0x23680061, 0x00000000, 0x00010003 },
{ 0x00600001, 0x22c00021, 0x008d0360, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x000002c0, 0x040a8021 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
{ 0x00000408, 0x23003da1, 0x000000e0, 0x00010001 },
{ 0x00000041, 0x24043da0, 0x000000e2, 0x00030003 },
{ 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
{ 0x00000801, 0x23080061, 0x00000000, 0x00050003 },
{ 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
{ 0x00000401, 0x23200231, 0x00000648, 0x00000000 },
{ 0x00000c01, 0x23260129, 0x00000656, 0x00000000 },
{ 0x00200c01, 0x23280129, 0x00450658, 0x00000000 },
{ 0x00000c01, 0x23320129, 0x00000650, 0x00000000 },
{ 0x00200801, 0x23340129, 0x00450652, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
{ 0x00200040, 0x236035a5, 0x004500e0, 0x00450088 },
{ 0x0000040c, 0x23643ca5, 0x00000364, 0x00010001 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0004000f },
{ 0x00600001, 0x24800021, 0x008d0360, 0x00000000 },
{ 0x04600031, 0x27400e21, 0x00000480, 0x02390001 },
{ 0x00000001, 0x24880061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x25a00021, 0x008d0000, 0x00000000 },
{ 0x00200401, 0x25a001a1, 0x004500e0, 0x00000000 },
{ 0x00000801, 0x25a80061, 0x00000000, 0x0007000f },
{ 0x05600031, 0x20000e24, 0x000005a0, 0x0a0a8018 },
{ 0x00600001, 0x24a00021, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x24c00021, 0x008d0760, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000480, 0x060a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/nv12_dn_nv12.g7b
0,0 → 1,40
{ 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
{ 0x00000401, 0x226801ad, 0x000000e0, 0x00000000 },
{ 0x00000801, 0x227801ad, 0x000000e2, 0x00000000 },
{ 0x02600031, 0x25c00e21, 0x00000240, 0x045e8003 },
{ 0x00200001, 0x20e0012d, 0x0045065c, 0x00000000 },
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00200001, 0x22e00021, 0x00450640, 0x00000000 },
{ 0x00200008, 0x23603da1, 0x004500e0, 0x00020002 },
{ 0x00000440, 0x23602421, 0x00000360, 0x00000038 },
{ 0x00000801, 0x23680061, 0x00000000, 0x00010003 },
{ 0x00600001, 0x22c00021, 0x008d0360, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x000002c0, 0x040a8021 },
{ 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
{ 0x00000408, 0x23003da1, 0x000000e0, 0x00010001 },
{ 0x00000041, 0x24043da0, 0x000000e2, 0x00030003 },
{ 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
{ 0x00000801, 0x23080061, 0x00000000, 0x00050003 },
{ 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
{ 0x00000401, 0x23200231, 0x00000648, 0x00000000 },
{ 0x00000c01, 0x23260129, 0x00000656, 0x00000000 },
{ 0x00200c01, 0x23280129, 0x00450658, 0x00000000 },
{ 0x00000c01, 0x23320129, 0x00000650, 0x00000000 },
{ 0x00200801, 0x23340129, 0x00450652, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
{ 0x00200040, 0x236035a5, 0x004500e0, 0x00450088 },
{ 0x0000040c, 0x23643ca5, 0x00000364, 0x00010001 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0004000f },
{ 0x00600001, 0x24800021, 0x008d0360, 0x00000000 },
{ 0x04600031, 0x27400e21, 0x00000480, 0x02390001 },
{ 0x00000001, 0x24880061, 0x00000000, 0x0003000f },
{ 0x00600001, 0x25a00021, 0x008d0000, 0x00000000 },
{ 0x00200401, 0x25a001a1, 0x004500e0, 0x00000000 },
{ 0x00000801, 0x25a80061, 0x00000000, 0x0007000f },
{ 0x05600031, 0x20000e24, 0x000005a0, 0x0a0a8018 },
{ 0x00600001, 0x24a00021, 0x008d0740, 0x00000000 },
{ 0x00600001, 0x24c00021, 0x008d0760, 0x00000000 },
{ 0x05600031, 0x20000e24, 0x00000480, 0x060a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl2.asm
0,0 → 1,17
// Module name: AVS
.kernel PA_TO_pl2
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_VYUA.g4a"
#include "PA_AVS_Buf_0.g4a"
#include "PA_AVS_Buf_1.g4a"
#include "PA_AVS_Buf_2.g4a"
#include "PA_AVS_Buf_3.g4a"
#include "Save_AVS_NV12.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl2.g75b
0,0 → 1,634
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl2.g7b
0,0 → 1,634
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl3.asm
0,0 → 1,17
// Module name: AVS
.kernel PA_TO_PL3
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_VYUA.g4a"
#include "PA_AVS_Buf_0.g4a"
#include "PA_AVS_Buf_1.g4a"
#include "PA_AVS_Buf_2.g4a"
#include "PA_AVS_Buf_3.g4a"
#include "Save_AVS_PL3.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl3.g75b
0,0 → 1,587
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pa_to_pl3.g7b
0,0 → 1,587
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pa.asm
0,0 → 1,17
// Module name: AVS
.kernel PL2_TO_PA
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL2.g4a"
#include "PL2_AVS_Buf_0.g4a"
#include "PL2_AVS_Buf_1.g4a"
#include "PL2_AVS_Buf_2.g4a"
#include "PL2_AVS_Buf_3.g4a"
#include "Save_AVS_PA.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pa.g75b
0,0 → 1,697
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
{ 0x00000409, 0x23603da5, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x236401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pa.g7b
0,0 → 1,697
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
{ 0x00000409, 0x23603da5, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x236401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl2.asm
0,0 → 1,17
// Module name: AVS
.kernel PL2_TO_PL2
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL2.g4a"
#include "PL2_AVS_Buf_0.g4a"
#include "PL2_AVS_Buf_1.g4a"
#include "PL2_AVS_Buf_2.g4a"
#include "PL2_AVS_Buf_3.g4a"
#include "Save_AVS_NV12.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl2.g75b
0,0 → 1,654
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl2.g7b
0,0 → 1,654
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl3.asm
0,0 → 1,17
// Module name: AVS
.kernel PL2_TO_PL3
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL2.g4a"
#include "PL2_AVS_Buf_0.g4a"
#include "PL2_AVS_Buf_1.g4a"
#include "PL2_AVS_Buf_2.g4a"
#include "PL2_AVS_Buf_3.g4a"
#include "Save_AVS_PL3.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl3.g75b
0,0 → 1,607
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl2_to_pl3.g7b
0,0 → 1,607
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pa.asm
0,0 → 1,17
// Module name: AVS
.kernel PL3_TO_PA
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL3.g4a"
#include "PL3_AVS_Buf_0.g4a"
#include "PL3_AVS_Buf_1.g4a"
#include "PL3_AVS_Buf_2.g4a"
#include "PL3_AVS_Buf_3.g4a"
#include "Save_AVS_PA.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pa.g75b
0,0 → 1,709
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
{ 0x00000409, 0x23603da5, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x236401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pa.g7b
0,0 → 1,709
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
{ 0x00000409, 0x23603da5, 0x000000e0, 0x00010001 },
{ 0x00000c01, 0x236401a5, 0x000000e2, 0x00000000 },
{ 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
{ 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
{ 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
{ 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
{ 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
{ 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
{ 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
{ 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
{ 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
{ 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
{ 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
{ 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
{ 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
{ 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
{ 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
{ 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
{ 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
{ 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
{ 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
{ 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
{ 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
{ 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
{ 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
{ 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
{ 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
{ 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
{ 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
{ 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
{ 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
{ 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
{ 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
{ 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
{ 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
{ 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
{ 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
{ 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
{ 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
{ 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl2.asm
0,0 → 1,17
// Module name: AVS
.kernel PL3_TO_PL2
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL3.g4a"
#include "PL3_AVS_Buf_0.g4a"
#include "PL3_AVS_Buf_1.g4a"
#include "PL3_AVS_Buf_2.g4a"
#include "PL3_AVS_Buf_3.g4a"
#include "Save_AVS_NV12.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl2.g75b
0,0 → 1,666
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl2.g7b
0,0 → 1,666
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00000401, 0x24a001a5, 0x000000e0, 0x00000000 },
{ 0x00000c08, 0x24a43da5, 0x000000e2, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 },
{ 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 },
{ 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 },
{ 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 },
{ 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 },
{ 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 },
{ 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 },
{ 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 },
{ 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 },
{ 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 },
{ 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 },
{ 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 },
{ 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 },
{ 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 },
{ 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 },
{ 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
{ 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
{ 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
{ 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl3.asm
0,0 → 1,17
// Module name: AVS
.kernel PL3_TO_PL3
.code
 
#include "VP_Setup.g4a"
#include "Set_Layer_0.g4a"
#include "Set_AVS_Buf_0123_PL3.g4a"
#include "PL3_AVS_Buf_0.g4a"
#include "PL3_AVS_Buf_1.g4a"
#include "PL3_AVS_Buf_2.g4a"
#include "PL3_AVS_Buf_3.g4a"
#include "Save_AVS_PL3.g4a"
#include "EOT.g4a"
 
.end_code
 
.end_kernel
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl3.g75b
0,0 → 1,619
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/post_processing/gen7/pl3_to_pl3.g7b
0,0 → 1,619
{ 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
{ 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
{ 0x00600041, 0x206077bd, 0x008d0060, 0x000000f0 },
{ 0x00200001, 0x211401bd, 0x004500e0, 0x00000000 },
{ 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
{ 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
{ 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
{ 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
{ 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
{ 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
{ 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
{ 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
{ 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
{ 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
{ 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
{ 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
{ 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
{ 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
{ 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
{ 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
{ 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
{ 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
{ 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
{ 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
{ 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
{ 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
{ 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
{ 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
{ 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
{ 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
{ 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
{ 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
{ 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
{ 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
{ 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
{ 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
{ 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
{ 0x02000010, 0x20002d24, 0x020000e4, 0x00000000 },
{ 0x02010010, 0x20002d24, 0x020000e6, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
{ 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
{ 0x00000401, 0x233803bd, 0x000000f4, 0x00000000 },
{ 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
{ 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
{ 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
{ 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
{ 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
{ 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
{ 0x00000448, 0x22e87fbd, 0x000000f4, 0x41e00000 },
{ 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
{ 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
{ 0x00000c48, 0x22f07fbd, 0x000000f4, 0x41000000 },
{ 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
{ 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
{ 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
{ 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
{ 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
{ 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
{ 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000401, 0x233c0021, 0x000000fc, 0x00000000 },
{ 0x00000801, 0x23240121, 0x000000f8, 0x00000000 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000001 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000002 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
{ 0x00000040, 0x23240d21, 0x000000f8, 0x00000003 },
{ 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
{ 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
{ 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
{ 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
{ 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
{ 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
{ 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
{ 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
{ 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
{ 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
{ 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
{ 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
{ 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
{ 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
{ 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
{ 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
{ 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
{ 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
{ 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
{ 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
{ 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
{ 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
{ 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
{ 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
{ 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
{ 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
{ 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
{ 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
{ 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
{ 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
{ 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
{ 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
{ 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
{ 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
{ 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
{ 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
{ 0x00200401, 0x238001a5, 0x004500e0, 0x00000000 },
{ 0x00200408, 0x24a03da5, 0x004500e0, 0x00010001 },
{ 0x00200408, 0x25c03da5, 0x004500e0, 0x00010001 },
{ 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
{ 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
{ 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
{ 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
{ 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
{ 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
{ 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
{ 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
{ 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
{ 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
{ 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
{ 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
{ 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
{ 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
{ 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
{ 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
{ 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
{ 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
{ 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
{ 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
{ 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
{ 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
{ 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
{ 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
{ 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
{ 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
{ 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
{ 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
{ 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
{ 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
{ 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
{ 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
{ 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
{ 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
{ 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
{ 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
{ 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
{ 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
{ 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
{ 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
{ 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
{ 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
{ 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
/drivers/video/i965/shaders/render/exa_sf.g4b
0,0 → 1,15
{ 0x00400031, 0x20c01fbd, 0x0069002c, 0x01110001 },
{ 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
{ 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
{ 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
{ 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
{ 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
{ 0x00600031, 0x20001fbc, 0x008d0000, 0x8640c800 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_sf.g4b.gen5
0,0 → 1,15
{ 0x00400031, 0x20c01fbd, 0x1069002c, 0x02100001 },
{ 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
{ 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
{ 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
{ 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
{ 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
{ 0x00600031, 0x20001fbc, 0x648d0000, 0x8808c800 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_wm_src_affine.g4b
0,0 → 1,8
{ 0x00802041, 0x23c077bd, 0x008d0100, 0x00000060 },
{ 0x00802041, 0x238077bd, 0x008d0140, 0x00000064 },
{ 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
{ 0x00802040, 0x204077be, 0x008d03c0, 0x0000006c },
{ 0x00802041, 0x23c077bd, 0x008d0100, 0x00000070 },
{ 0x00802041, 0x238077bd, 0x008d0140, 0x00000074 },
{ 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
{ 0x00802040, 0x208077be, 0x008d03c0, 0x0000007c },
/drivers/video/i965/shaders/render/exa_wm_src_affine.g4b.gen5
0,0 → 1,8
{ 0x00802041, 0x23c077bd, 0x008d0100, 0x00000060 },
{ 0x00802041, 0x238077bd, 0x008d0140, 0x00000064 },
{ 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
{ 0x00802040, 0x204077be, 0x008d03c0, 0x0000006c },
{ 0x00802041, 0x23c077bd, 0x008d0100, 0x00000070 },
{ 0x00802041, 0x238077bd, 0x008d0140, 0x00000074 },
{ 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
{ 0x00802040, 0x208077be, 0x008d03c0, 0x0000007c },
/drivers/video/i965/shaders/render/exa_wm_src_affine.g6b
0,0 → 1,4
{ 0x0060005a, 0x204077be, 0x000000e0, 0x008d0040 },
{ 0x0060005a, 0x206077be, 0x000000e0, 0x008d0080 },
{ 0x0060005a, 0x208077be, 0x000000f0, 0x008d0040 },
{ 0x0060005a, 0x20a077be, 0x000000f0, 0x008d0080 },
/drivers/video/i965/shaders/render/exa_wm_src_affine.g7b
0,0 → 1,4
{ 0x0060005a, 0x284077bd, 0x000000e0, 0x008d0040 },
{ 0x0060005a, 0x286077bd, 0x000000e0, 0x008d0080 },
{ 0x0060005a, 0x288077bd, 0x000000f0, 0x008d0040 },
{ 0x0060005a, 0x28a077bd, 0x000000f0, 0x008d0080 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_argb.g4b
0,0 → 1,4
{ 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
{ 0x01800031, 0x21c01d29, 0x008d0000, 0x02580001 },
{ 0x00600041, 0x228077bd, 0x00200280, 0x00000040 },
{ 0x00600041, 0x22a077bd, 0x002002a0, 0x00000040 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_argb.g4b.gen5
0,0 → 1,4
{ 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
{ 0x01800031, 0x21c01d29, 0x208d0000, 0x0a8a0001 },
{ 0x00600041, 0x228077bd, 0x00200280, 0x00000040 },
{ 0x00600041, 0x22a077bd, 0x002002a0, 0x00000040 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_argb.g6b
0,0 → 1,5
{ 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
{ 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x21c01cc9, 0x00000020, 0x0a8a0001 },
{ 0x00600041, 0x228077bd, 0x00200280, 0x000000c0 },
{ 0x00600041, 0x22a077bd, 0x002002a0, 0x000000c0 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_argb.g7b
0,0 → 1,5
{ 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x21c01ca9, 0x00000820, 0x0a8c0001 },
{ 0x00600241, 0x228077bd, 0x00200280, 0x000000c0 },
{ 0x00600241, 0x22a077bd, 0x002002a0, 0x000000c0 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_planar.g4b
0,0 → 1,10
{ 0x02000005, 0x20002d3c, 0x00000040, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x01800031, 0x22001d29, 0x008d0000, 0x02520203 },
{ 0x01800031, 0x22401d29, 0x008d0000, 0x02520405 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000003 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
{ 0x01800031, 0x22001d29, 0x008d0000, 0x02540203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x01800031, 0x21c01d29, 0x008d0000, 0x02520001 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_planar.g4b.gen5
0,0 → 1,10
{ 0x02000005, 0x20002d3c, 0x00000040, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x01800031, 0x22001d29, 0x208d0000, 0x0a2a0203 },
{ 0x01800031, 0x22401d29, 0x208d0000, 0x0a2a0405 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
{ 0x01800031, 0x22001d29, 0x208d0000, 0x0a4a0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x01800031, 0x21c01d29, 0x208d0000, 0x0a2a0001 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_planar.g6b
0,0 → 1,15
{ 0x03000010, 0x20002d3c, 0x000000c0, 0x00000000 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001cc9, 0x00000020, 0x0a2a0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22401cc9, 0x00000020, 0x0a2a0405 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
{ 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001cc9, 0x00000020, 0x0a4a0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x21c01cc9, 0x00000020, 0x0a2a0001 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_planar.g7b
0,0 → 1,20
{ 0x01000010, 0x20002d3c, 0x000000c0, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
{ 0x01000010, 0x20002d3c, 0x000000c0, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001ca9, 0x00000820, 0x0a2c0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22401ca9, 0x00000820, 0x0a2c0405 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
{ 0x00800201, 0x220003fd, 0x00000000, 0x3f000000 },
{ 0x00800201, 0x224003fd, 0x00000000, 0x3f000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001ca9, 0x00000820, 0x0a4c0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x21c01ca9, 0x00000820, 0x0a2c0001 },
/drivers/video/i965/shaders/render/exa_wm_src_sample_planar.g7b.haswell
0,0 → 1,20
{ 0x01000010, 0x20002d3c, 0x000000c0, 0x00010001 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
{ 0x01000010, 0x20002d3c, 0x000000c0, 0x00020002 },
{ 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001ca9, 0x00000820, 0x0a2c0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22401ca9, 0x00000820, 0x0a2c0405 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000060 },
{ 0x00800201, 0x220003fd, 0x00000000, 0x3f000000 },
{ 0x00800201, 0x224003fd, 0x00000000, 0x3f000000 },
{ 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x22001ca9, 0x00000820, 0x0a4c0203 },
{ 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
{ 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
{ 0x02800031, 0x21c01ca9, 0x00000820, 0x0a2c0001 },
/drivers/video/i965/shaders/render/exa_wm_write.g4b
0,0 → 1,26
{ 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
{ 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
{ 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
{ 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
{ 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
{ 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
{ 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
{ 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
{ 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
{ 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
{ 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
{ 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
{ 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x008d0000, 0x85a04800 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_wm_write.g4b.gen5
0,0 → 1,26
{ 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
{ 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
{ 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
{ 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
{ 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
{ 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
{ 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
{ 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
{ 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
{ 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
{ 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
{ 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
{ 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
{ 0x00800031, 0x24001d28, 0x548d0000, 0x94084800 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_wm_write.g6b
0,0 → 1,17
{ 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x206003be, 0x008d01e0, 0x00000000 },
{ 0x00600001, 0x208003be, 0x008d0200, 0x00000000 },
{ 0x00600001, 0x20a003be, 0x008d0220, 0x00000000 },
{ 0x00600001, 0x20c003be, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x20e003be, 0x008d0260, 0x00000000 },
{ 0x00600001, 0x210003be, 0x008d0280, 0x00000000 },
{ 0x00600001, 0x212003be, 0x008d02a0, 0x00000000 },
{ 0x05800031, 0x24001cc8, 0x00000040, 0x90019000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_wm_write.g7b
0,0 → 1,19
{ 0x00600201, 0x28000021, 0x008d0000, 0x00000000 },
{ 0x00600201, 0x28200021, 0x008d0020, 0x00000000 },
{ 0x00600201, 0x284003bd, 0x002001c0, 0x00000000 },
{ 0x00600201, 0x286003bd, 0x002001e0, 0x00000000 },
{ 0x00600201, 0x288003bd, 0x00200200, 0x00000000 },
{ 0x00600201, 0x28a003bd, 0x00200220, 0x00000000 },
{ 0x00600201, 0x28c003bd, 0x00200240, 0x00000000 },
{ 0x00600201, 0x28e003bd, 0x00200260, 0x00000000 },
{ 0x00600201, 0x290003bd, 0x00200280, 0x00000000 },
{ 0x00600201, 0x292003bd, 0x002002a0, 0x00000000 },
{ 0x05800031, 0x20001ca8, 0x00000800, 0x940b1000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
{ 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
/drivers/video/i965/shaders/render/exa_wm_xy.g4b
0,0 → 1,4
{ 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
{ 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
{ 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
{ 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
/drivers/video/i965/shaders/render/exa_wm_xy.g4b.gen5
0,0 → 1,4
{ 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
{ 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
{ 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
{ 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
/drivers/video/i965/shaders/render/exa_wm_yuv_rgb.g4b
0,0 → 1,12
{ 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbd808081 },
{ 0x00802041, 0x22c07fbd, 0x008d02c0, 0x3f94fdf4 },
{ 0x00802040, 0x23007fbd, 0x008d0240, 0xbf008084 },
{ 0x00802040, 0x23407fbd, 0x008d0200, 0xbf008084 },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80802048, 0x21c07fbd, 0x008d0300, 0x3fcc49ba },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x00802048, 0x24007fbc, 0x008d0300, 0xbf5020c5 },
{ 0x80802048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80802048, 0x22407fbd, 0x008d0340, 0x40011687 },
{ 0x00802001, 0x228003fd, 0x00000000, 0x3f800000 },
/drivers/video/i965/shaders/render/exa_wm_yuv_rgb.g4b.gen5
0,0 → 1,12
{ 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbd808081 },
{ 0x00802041, 0x22c07fbd, 0x008d02c0, 0x3f94fdf4 },
{ 0x00802040, 0x23007fbd, 0x008d0240, 0xbf008084 },
{ 0x00802040, 0x23407fbd, 0x008d0200, 0xbf008084 },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80802048, 0x21c07fbd, 0x008d0300, 0x3fcc49ba },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x00802048, 0x24007fbc, 0x008d0300, 0xbf5020c5 },
{ 0x80802048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
{ 0x00802001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80802048, 0x22407fbd, 0x008d0340, 0x40011687 },
{ 0x00802001, 0x228003fd, 0x00000000, 0x3f800000 },
/drivers/video/i965/shaders/render/exa_wm_yuv_rgb.g6b
0,0 → 1,12
{ 0x00800040, 0x22c07fbd, 0x008d01c0, 0xbd808081 },
{ 0x00800041, 0x22c07fbd, 0x008d02c0, 0x3f94fdf4 },
{ 0x00800040, 0x23007fbd, 0x008d0240, 0xbf008084 },
{ 0x00800040, 0x23407fbd, 0x008d0200, 0xbf008084 },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80800048, 0x21c07fbd, 0x008d0300, 0x3fcc49ba },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x00800048, 0x24007fbc, 0x008d0300, 0xbf5020c5 },
{ 0x80800048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80800048, 0x22407fbd, 0x008d0340, 0x40011687 },
{ 0x00800001, 0x228003fd, 0x00000000, 0x3f800000 },
/drivers/video/i965/shaders/render/exa_wm_yuv_rgb.g7b
0,0 → 1,12
{ 0x00800040, 0x22c07fbd, 0x008d01c0, 0xbd808081 },
{ 0x00800041, 0x22c07fbd, 0x008d02c0, 0x3f94fdf4 },
{ 0x00800040, 0x23007fbd, 0x008d0240, 0xbf008084 },
{ 0x00800040, 0x23407fbd, 0x008d0200, 0xbf008084 },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80800048, 0x21c07fbd, 0x008d0300, 0x3fcc49ba },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x00800048, 0x24007fbc, 0x008d0300, 0xbf5020c5 },
{ 0x80800048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
{ 0x00800001, 0x240003bc, 0x008d02c0, 0x00000000 },
{ 0x80800048, 0x22407fbd, 0x008d0340, 0x40011687 },
{ 0x00800001, 0x228003fd, 0x00000000, 0x3f800000 },
/drivers/video/i965/shaders/vme/inter_frame.g6b
0,0 → 1,28
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00200041, 0x24082e29, 0x004500a0, 0x00100010 },
{ 0x00200041, 0x24002e29, 0x004500a0, 0x00100010 },
{ 0x00200040, 0x24003dad, 0x00450400, 0xfff8fff8 },
{ 0x00000001, 0x240c0061, 0x00000000, 0x7e203000 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00000001, 0x24160169, 0x00000000, 0x20202020 },
{ 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
{ 0x00000001, 0x24240061, 0x00000000, 0x00000020 },
{ 0x00000001, 0x24280061, 0x00000000, 0x00003f3f },
{ 0x00600001, 0x20200022, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x20400062, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400062, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20600062, 0x00000000, 0x00000000 },
{ 0x08600031, 0x21801cdd, 0x00000000, 0x08482000 },
{ 0x00000041, 0x24684521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24684421, 0x00000468, 0x000000a0 },
{ 0x00000041, 0x24680c21, 0x00000468, 0x00000004 },
{ 0x00000001, 0x24740231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0460, 0x00000000 },
{ 0x00200001, 0x24600229, 0x004501a0, 0x00000000 },
{ 0x00200040, 0x24603dad, 0x00450460, 0xffe0ffe0 },
{ 0x00600001, 0x20200022, 0x008c0460, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008c0460, 0x00000000 },
{ 0x05800031, 0x22001cdd, 0x00000000, 0x061b0303 },
{ 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001cc8, 0x00000000, 0x82000010 },
/drivers/video/i965/shaders/vme/inter_frame.g7b
0,0 → 1,28
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00200041, 0x24082e29, 0x004500a0, 0x00100010 },
{ 0x00200041, 0x24002e29, 0x004500a0, 0x00100010 },
{ 0x00200040, 0x24003dad, 0x00450400, 0xfff8fff8 },
{ 0x00000001, 0x240c0061, 0x00000000, 0x7e203000 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00000001, 0x24160169, 0x00000000, 0x20202020 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x00000001, 0x24240061, 0x00000000, 0x00000020 },
{ 0x00000001, 0x24280061, 0x00000000, 0x00003f3f },
{ 0x00600001, 0x28200021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
{ 0x08600031, 0x21801cbd, 0x00000800, 0x0a682001 },
{ 0x00000041, 0x24684521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24684421, 0x00000468, 0x000000a0 },
{ 0x00000041, 0x24680c21, 0x00000468, 0x00000004 },
{ 0x00000001, 0x24740231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00200001, 0x24600229, 0x004501a0, 0x00000000 },
{ 0x00200040, 0x24603dad, 0x00450460, 0xffe0ffe0 },
{ 0x00600001, 0x28200021, 0x008c0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008c0460, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x060a0300 },
{ 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001ca8, 0x00000800, 0x82000010 },
/drivers/video/i965/shaders/vme/inter_frame_haswell.g75b
0,0 → 1,137
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
{ 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
{ 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
{ 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
{ 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
{ 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
{ 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
{ 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
{ 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
{ 0x00000041, 0x24880c21, 0x00000488, 0x00000018 },
{ 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
{ 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
{ 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
{ 0x00600001, 0x25600021, 0x008d0020, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
{ 0x00600001, 0x28800021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x28a00231, 0x00cf03a3, 0x00000000 },
{ 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
{ 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00000001, 0x24000169, 0x00000000, 0x00010001 },
{ 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
{ 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
{ 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
{ 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
{ 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
{ 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
{ 0x00000001, 0x244c0061, 0x00000000, 0x00800000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
{ 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
{ 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
{ 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
{ 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
{ 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
{ 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
{ 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
{ 0x00000001, 0x244c0061, 0x00000000, 0x00200000 },
{ 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
{ 0x00000001, 0x24400021, 0x00000448, 0x00000000 },
{ 0x00000040, 0x24403dad, 0x00000440, 0xfff0fff0 },
{ 0x00000040, 0x24423dad, 0x00000442, 0xfff4fff4 },
{ 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
{ 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
{ 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
{ 0x00000001, 0x24640061, 0x00000000, 0x00000020 },
{ 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
{ 0x00000001, 0x28600061, 0x00000000, 0x01010101 },
{ 0x00000001, 0x28640061, 0x00000000, 0x10010101 },
{ 0x00000001, 0x28680061, 0x00000000, 0x0f0f0f0f },
{ 0x00000001, 0x286c0061, 0x00000000, 0x100f0f0f },
{ 0x00000001, 0x28700061, 0x00000000, 0x01010101 },
{ 0x00000001, 0x28740061, 0x00000000, 0x10010101 },
{ 0x00000001, 0x28780061, 0x00000000, 0x0f0f0f0f },
{ 0x00000001, 0x287c0061, 0x00000000, 0x100f0f0f },
{ 0x00000001, 0x28800061, 0x00000000, 0x01010101 },
{ 0x00000001, 0x28840061, 0x00000000, 0x10010101 },
{ 0x00000001, 0x28880061, 0x00000000, 0x0f0f0f0f },
{ 0x00000001, 0x288c0061, 0x00000000, 0x000f0f0f },
{ 0x00400001, 0x28900061, 0x00000000, 0x00000000 },
{ 0x08600031, 0x21801ca1, 0x00000800, 0x0a784000 },
{ 0x00000001, 0x25740061, 0x00000000, 0x00000000 },
{ 0x00000001, 0x25750231, 0x00000199, 0x00000000 },
{ 0x00000001, 0x25760231, 0x0000019a, 0x00000000 },
{ 0x00000005, 0x24002d29, 0x00000180, 0x00030003 },
{ 0x00000001, 0x25740231, 0x00000400, 0x00000000 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000002 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
{ 0x00000001, 0x28240021, 0x00000198, 0x00000000 },
{ 0x00000001, 0x28280021, 0x00000188, 0x00000000 },
{ 0x00000001, 0x282c0021, 0x00000488, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000001 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0240, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
{ 0x00600001, 0x28600021, 0x008d01a0, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x28a00021, 0x008d01e0, 0x00000000 },
{ 0x00600001, 0x28c00021, 0x008d0200, 0x00000000 },
{ 0x00000001, 0x244c0061, 0x00000000, 0x00243000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
{ 0x0d600031, 0x21801ca1, 0x00000800, 0x0e786000 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000002 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
{ 0x00000001, 0x28240021, 0x00000198, 0x00000000 },
{ 0x00000001, 0x28280021, 0x00000188, 0x00000000 },
{ 0x00000001, 0x282c0021, 0x00000574, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000001 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
{ 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
{ 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0240, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
{ 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
/drivers/video/i965/shaders/vme/intra_frame.g6b
0,0 → 1,47
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00200041, 0x24002e25, 0x004500a0, 0x00100010 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
{ 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
{ 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x22401cd1, 0x00000000, 0x02188004 },
{ 0x00200041, 0x24002e25, 0x004500a0, 0x00100010 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfffcfffc },
{ 0x00000001, 0x240800e1, 0x00000000, 0x000f0003 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x22801cd1, 0x00000000, 0x02288004 },
{ 0x00200041, 0x24082e29, 0x004500a0, 0x00100010 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
{ 0x00000001, 0x243c00f1, 0x00000000, 0x00000006 },
{ 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000060 },
{ 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000010 },
{ 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000004 },
{ 0x00000040, 0x24402e2d, 0x000000a0, 0x00010001 },
{ 0x00000040, 0x2440352d, 0x000000a2, 0x00004440 },
{ 0x02000041, 0x200045a0, 0x00000440, 0x000000a1 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000008 },
{ 0x00600001, 0x20200022, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x20400062, 0x00000000, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x206000e2, 0x00000000, 0x00000000 },
{ 0x00800001, 0x20600232, 0x00cf0283, 0x00000000 },
{ 0x00000001, 0x20700062, 0x00000000, 0x11111111 },
{ 0x08600031, 0x21801cdd, 0x00000000, 0x08184000 },
{ 0x00000041, 0x24684521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24684421, 0x00000468, 0x000000a0 },
{ 0x00000001, 0x24740231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0460, 0x00000000 },
{ 0x00000001, 0x20200022, 0x00000180, 0x00000000 },
{ 0x00000001, 0x20240022, 0x00000190, 0x00000000 },
{ 0x00000001, 0x20280022, 0x00000194, 0x00000000 },
{ 0x00000001, 0x202c0022, 0x00000198, 0x00000000 },
{ 0x05800031, 0x22001cdd, 0x00000000, 0x041b0003 },
{ 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001cc8, 0x00000000, 0x82000010 },
/drivers/video/i965/shaders/vme/intra_frame.g7b
0,0 → 1,47
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00200041, 0x24002e25, 0x004500a0, 0x00100010 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
{ 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
{ 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x22401cb1, 0x00000800, 0x02190004 },
{ 0x00200041, 0x24002e25, 0x004500a0, 0x00100010 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfffcfffc },
{ 0x00000001, 0x240800e1, 0x00000000, 0x000f0003 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x22801cb1, 0x00000800, 0x02290004 },
{ 0x00200041, 0x24082e29, 0x004500a0, 0x00100010 },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x00000001, 0x243c00f1, 0x00000000, 0x00000006 },
{ 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000060 },
{ 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000010 },
{ 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000004 },
{ 0x00000040, 0x24402e2d, 0x000000a0, 0x00010001 },
{ 0x00000040, 0x2440352d, 0x000000a2, 0x00004440 },
{ 0x02000041, 0x200045a0, 0x00000440, 0x000000a1 },
{ 0x00010040, 0x243d1e31, 0x0000043d, 0x00000008 },
{ 0x00600001, 0x28200021, 0x008d0420, 0x00000000 },
{ 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28600021, 0x008d0240, 0x00000000 },
{ 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
{ 0x00800001, 0x28800231, 0x00cf0283, 0x00000000 },
{ 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
{ 0x08600031, 0x21801cbd, 0x00000800, 0x0a184001 },
{ 0x00000041, 0x24684521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24684421, 0x00000468, 0x000000a0 },
{ 0x00000001, 0x24740231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
{ 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
{ 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
{ 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
{ 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0000 },
{ 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001ca8, 0x00000800, 0x82000010 },
/drivers/video/i965/shaders/vme/intra_frame_haswell.g75b
0,0 → 1,57
{ 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
{ 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
{ 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
{ 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
{ 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
{ 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
{ 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
{ 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
{ 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
{ 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
{ 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
{ 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
{ 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
{ 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
{ 0x00000041, 0x24880c21, 0x00000488, 0x00000002 },
{ 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
{ 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
{ 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
{ 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
{ 0x00600001, 0x28400021, 0x008d0020, 0x00000000 },
{ 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
{ 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
{ 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
{ 0x00600001, 0x28800021, 0x008d0380, 0x00000000 },
{ 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
{ 0x00800001, 0x28a00231, 0x00cf03a3, 0x00000000 },
{ 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
{ 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
{ 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00000001, 0x24000169, 0x00000000, 0x00010001 },
{ 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
{ 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
{ 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
{ 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
{ 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
{ 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
{ 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
{ 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
{ 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
{ 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
{ 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
{ 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
{ 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
{ 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
{ 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
{ 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
{ 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
/drivers/video/i965/sysdeps.h
0,0 → 1,39
/*
* Copyright (C) 2012 Intel Corporation. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
 
#ifndef SYSDEPS_H
#define SYSDEPS_H
 
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <stdint.h>
#include <assert.h>
 
#endif /* SYSDEPS_H */
/drivers/video/i965/va_backend_compat.h
0,0 → 1,48
/*
* Copyright (C) 2012 Intel Corporation. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
 
#ifndef VA_BACKEND_COMPAT_H
#define VA_BACKEND_COMPAT_H
 
#include <va/va_backend.h>
 
#if VA_CHECK_VERSION(0,33,0)
# include <va/va_drmcommon.h>
 
# define VA_CHECK_DRM_AUTH_TYPE(ctx, type) \
(((struct drm_state *)(ctx)->drm_state)->auth_type == (type))
 
#else
# include <va/va_dricommon.h>
 
# define VA_CHECK_DRM_AUTH_TYPE(ctx, type) \
(((struct dri_state *)(ctx)->dri_state)->driConnectedFlag == (type))
 
# define drm_state dri_state
# define VA_DRM_AUTH_DRI1 VA_DRI1
# define VA_DRM_AUTH_DRI2 VA_DRI2
# define VA_DRM_AUTH_CUSTOM VA_DUMMY
#endif
 
#endif /* VA_BACKEND_COMPAT_H */