Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5361 serge 1
/*
2
 *  Copyright 2000-2013 Intel Corporation All Rights Reserved
3
 *
4
 *  Licensed under the Apache License, Version 2.0 (the "License");
5
 *  you may not use this file except in compliance with the License.
6
 *  You may obtain a copy of the License at
7
 *
8
 *      http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 *  Unless required by applicable law or agreed to in writing, software
11
 *  distributed under the License is distributed on an "AS IS" BASIS,
12
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *  See the License for the specific language governing permissions and
14
 *  limitations under the License.
15
 *  Authors:
16
 *    Zhao Yakui 
17
 */
18
 
19
 
20
 
21
// Module name: common.inc
22
//
23
// Common header file for all Video-Processing kernels
24
//
25
 
26
.default_execution_size (16)
27
.default_register_type  :ub
28
 
29
.reg_count_total        128
30
.reg_count_payload      7
31
 
32
//========== Common constants ==========
33
 
34
 
35
//========== Macros ==========
36
 
37
 
38
//Fast Jump, For more details see "Set_Layer_N.asm"
39
 
40
 
41
//========== Defines ====================
42
 
43
//========== Static Parameters (Common To All) ==========
44
//r1
45
 
46
 
47
//r2
48
 
49
                                    //  e.g.            byte0   byte1  byte2
50
                                    // YUYV               0       1      3
51
                                    // YVYU               0       3      1
52
 
53
//Color Pipe (IECP) parameters
54
 
55
 
56
//ByteCopy
57
 
58
 
59
//r4
60
 
61
                                    //  e.g.              byte0           byte1           byte2
62
                                    // YUYV                 0               1               3
63
                                    // YVYU                 0               3               1
64
 
65
 
66
//========== Inline parameters (Common To All) ===========
67
 
68
 
69
//============== Binding Index Table===========
70
//Common between DNDI and DNUV
71
 
72
 
73
//================= Common Message Descriptor =====
74
// Message descriptor for thread spawning
75
// Message Descriptors
76
//                = 000 0001 (min message len 1 ) 0,0000 (resp len 0   -add later)
77
//                  0000,0000,0000
78
//                  0001(Spawn a root thread),0001 (Root thread spawn thread)
79
//                = 0x02000011
80
// Thread Spawner Message Descriptor
81
 
82
 
83
// Message descriptor for atomic operation add
84
// Message Descriptors
85
//                = 000 0110 (min message len 6 ) 0,0000 (resp len 0   -add later)
86
//                  1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
87
//                  0000,0000 (Binding table index, added later)
88
//                = 0x02000011
89
 
90
// Atomic Operation Add Message Descriptor
91
 
92
 
93
// Message descriptor for dataport media write
94
        // Message Descriptors
95
                //                = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
96
                //                  1 (header present 1) 0 1010 (media block write) 000000
97
                //                  00000000 (binding table index - set later)
98
                //                = 0x020A8000
99
 
100
 
101
// Message Length defines
102
 
103
 
104
// Response Length defines
105
 
106
 
107
// Block Width and Height Size defines
108
 
109
 
110
// Extended Message Descriptors
111
 
112
 
113
// Common message descriptors:
114
 
115
 
116
//===================== Math Function Control ===================================
117
 
118
 
119
//============ Message Registers ===============
120
                             // buf4 starts from r28
121
 
122
 
123
//#define mMSGHDR_EOT  r43    // Dummy Message Register for EOT
124
 
125
 
126
.declare    mubMSGPAYLOAD  Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
127
.declare    muwMSGPAYLOAD  Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
128
.declare    mudMSGPAYLOAD  Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
129
.declare    mfMSGPAYLOAD   Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
130
 
131
//=================== End of thread instruction ===========================
132
 
133
 
134
//=====================Pointers Used=====================================
135
 
136
 
137
//=======================================================================
138
 
139
 
140
//r9-r17
141
// Define temp space for any usages
142
 
143
 
144
// Common Buffers
145
 
146
 
147
// temp space for rotation
148
 
149
.declare fROBUF		  Base=r9.0		ElementSize=4		SrcRegion=<8;8,1>		  DstRegion=<1>		Type=f
150
 
151
.declare udROBUF		Base=r9.0		ElementSize=4		SrcRegion=<8;8,1>		  DstRegion=<1>		Type=ud
152
 
153
.declare uwROBUF		Base=r9.0		ElementSize=2		SrcRegion=<16;16,1>		DstRegion=<1>		Type=uw
154
 
155
.declare ubROBUF		Base=r9.0		ElementSize=1		SrcRegion=<16;16,1>		DstRegion=<1>		Type=ub
156
 
157
.declare ub4ROBUF 	Base=r9.0		ElementSize=1		SrcRegion=<32;8,4>		DstRegion=<4>		Type=ub
158
 
159
 
160
// End of common.inc
161
 
162
 
163
// Module name: YUV_to_RGB.asm
164
//
165
// Convert YUV to RGB, handle it by 16x4 block
166
//
167
 
168
 
169
// Description: Includes all definitions explicit to Fast Composite.
170
 
171
 
172
//========== GRF partition ==========
173
     // r0 header            :   r0          (1 GRF)
174
     // Static parameters    :   r1 - r6     (6 GRFS)
175
     // Inline parameters    :   r7 - r8     (2 GRFs)
176
     // MSGSRC               :   r27         (1 GRF)
177
//===================================
178
 
179
//Interface:
180
//========== Static Parameters (Explicit To Fast Composite) ==========
181
//r1
182
//CSC Set 0
183
 
184
 
185
.declare udCSC_CURBE    Base=r1.0      ElementSize=4       Type=ud
186
 
187
//Constant alpha
188
 
189
 
190
//r2
191
 
192
 
193
// Gen7 AVS WA
194
 
195
 
196
// WiDi Definitions
197
 
198
 
199
//Colorfill
200
 
201
 
202
                                      // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
203
 
204
.declare ubCOLOR_PIXEL_VAL      Base=r2.20      ElementSize=1       SrcRegion=<0;1,0>       DstRegion=<1>       Type=ub
205
 
206
//r3
207
//Normalised Ratio of Horizontal step size with main video for all layers
208
 
209
 
210
    //Normalised Ratio of Horizontal step size with main video for all layers becomes
211
    //Normalised Horizontal step size for all layers in VP_Setup.asm
212
 
213
 
214
//r4
215
//Normalised Vertical step size for all layers
216
 
217
 
218
//r5
219
//Normalised Vertical Frame Origin for all layers
220
 
221
 
222
//r6
223
//Normalised Horizontal Frame Origin for all layers
224
 
225
 
226
//========== Inline Parameters (Explicit To Fast Composite) ==========
227
 
228
 
229
//Main video Step X
230
 
231
 
232
//====================== Binding table (Explicit To Fast Composite)=========================================
233
 
234
 
235
//Used by Interlaced Scaling Kernels
236
 
237
 
238
//========== Sampler State Table Index (Explicit To Fast Composite)==========
239
//Sampler Index for AVS/IEF messages
240
 
241
 
242
//Sampler Index for SIMD16 sampler messages
243
 
244
 
245
//=============================================================================
246
 
247
.declare fBUFFER_0      Base=r64.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
248
.declare fBUFFER_1      Base=r80.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
249
.declare fBUFFER_2      Base=r96.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
250
.declare fBUFFER_3      Base=r112.0       ElementSize=4       SrcRegion=<8;8,1>       DstRegion=<1>       Type=f
251
 
252
.declare bBUFFER_0     Base=r64.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
253
.declare bBUFFER_1     Base=r80.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
254
.declare bBUFFER_2     Base=r96.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
255
.declare bBUFFER_3     Base=r112.0       ElementSize=1       SrcRegion=<16;16,1>     DstRegion=<1>       Type=ub
256
 
257
//Pointer to mask reg
258
 
259
 
260
//r18
261
 
262
 
263
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
264
// NODDCLR, NODDCHK flags. -rT
265
 
266
 
267
.declare udCSC_COEFF_0  Base=r18.0    ElementSize=4 Type=ud       // 1 GRF
268
 
269
//r19
270
 
271
 
272
.declare udCSC_COEFF_1  Base=r19.0    ElementSize=4 Type=ud       // 1 GRF
273
 
274
 
275
//r20
276
 
277
.declare uwALPHA_MASK_REG_TEMP  Base=r20.0    ElementSize=2 SrcRegion=<16;16,1> Type=uw        // 1 GRF
278
 
279
//r21
280
 
281
.declare uwALPHA_MASK_REG       Base=r21.0         ElementSize=2 SrcRegion=<16;16,1> Type=uw        // 1 GRF
282
 
283
//r22
284
 
285
 
286
//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
287
// NODDCLR, NODDCHK flags. -rT
288
 
289
 
290
//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
291
//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
292
 
293
//r23
294
 
295
 
296
//Lumakey
297
 
298
 
299
//r24
300
 
301
 
302
//r25
303
 
304
 
305
//r26
306
 
307
 
308
//defines to generate LABELS during compile time.
309
 
310
 
311
//Msg payload buffers; upto 4 full-size messages can be written
312
 
313
//Unnecessary to use the MSGPayLoad, So it is temporiarily used for conversion of YUV->RGB
314
 
315
.declare    fBUFFER_R       Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
316
.declare    fBUFFER_G       Base=r30.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
317
.declare    fBUFFER_B	    Base=r32.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
318
 
319
.declare    fBUFFER_Y	    Base=r36.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
320
.declare    fBUFFER_U	    Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
321
.declare    fBUFFER_V	    Base=r40.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
322
 
323
 
324
.declare	wTempR		Base=r42.0 ElementSize=2 Type=w
325
.declare	wTempG		Base=r44.0 ElementSize=2 Type=w
326
.declare	wTempB		Base=r46.0 ElementSize=2 Type=w
327
 
328
.declare	ubTempR		Base=r42.0 ElementSize=1 Type=ub
329
.declare	ubTempG		Base=r44.0 ElementSize=1 Type=ub
330
.declare	ubTempB		Base=r46.0 ElementSize=1 Type=ub
331
 
332
	// the r17 register (nTEMP0) is originally defined from "Common.inc"
333
	// instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
334
 
335
	.declare wTemp0 Base=r17.0 ElementSize=2 Type=uw
336
 
337
 
338
//_SAVE_INC_
339
	// NTSC standard
340
	// R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255))
341
	// G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255))
342
    	// B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255))
343
	// ITU-R conversion, Now we are using ITU-R conversion
344
        // R = clip( Y                  + 1.402*(Cr-128))  // ITU-R
345
        // G = clip( Y - 0.344*(Cb-128) - 0.714*(Cr-128))
346
        // B = clip( Y + 1.772*(Cb-128))
347
 
348
	// At the save module we have all 8 address sub-registers available.
349
	// So we will use PING-PONG type of scheme to save the data using
350
	// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
351
	// reduce dependency. - rT
352
 
353
	//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
354
	//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
355
	//Offsets are zero for buffer 0 and buffer 4.
356
	//Y/U/V is also stored as R/G/B for the internal purpose
357
//for BUFFER_0
358
	mov   (4) a0.0<1>:uw		  r22.0<4;4,1>:uw
359
//the first line in the block 0
360
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 1]<16;8,2>:ub
361
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 17]<16;8,2>:ub
362
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 1]<16;8,2>:ub
363
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 17]<16;8,2>:ub
364
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 1]<16;8,2>:ub
365
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 17]<16;8,2>:ub
366
 
367
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
368
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
369
 
370
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
371
	mac   (16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
372
 
373
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
374
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
375
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
376
	mac   (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
377
 
378
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
379
	mac   (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
380
 
381
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
382
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
383
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
384
 
385
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
386
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
387
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
388
 
389
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
390
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
391
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
392
 
393
	mov   (16) r[a0.1,1]<2>:ub	  ubTempR(0, 0)<32;8,4>
394
	mov   (16) r[a0.2,1]<2>:ub	  ubTempG(0, 0)<32;8,4>
395
	mov   (16) r[a0.0,1]<2>:ub	  ubTempB(0, 0)<32;8,4>
396
 
397
//the second line in the block 0
398
 
399
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 33]<16;8,2>:ub
400
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 49]<16;8,2>:ub
401
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 33]<16;8,2>:ub
402
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 49]<16;8,2>:ub
403
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 33]<16;8,2>:ub
404
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 49]<16;8,2>:ub
405
 
406
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
407
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
408
 
409
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
410
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
411
 
412
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
413
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
414
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
415
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
416
 
417
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
418
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
419
 
420
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
421
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
422
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
423
 
424
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
425
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
426
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
427
 
428
 
429
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
430
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
431
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
432
	mov   (16) r[a0.1,33]<2>:ub	  ubTempR(0, 0)<32;8,4>
433
	mov   (16) r[a0.2,33]<2>:ub	  ubTempG(0, 0)<32;8,4>
434
	mov   (16) r[a0.0,33]<2>:ub	  ubTempB(0, 0)<32;8,4>
435
 
436
//the third line in the block 0
437
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 65]<16;8,2>:ub
438
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 81]<16;8,2>:ub
439
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 65]<16;8,2>:ub
440
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 81]<16;8,2>:ub
441
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 65]<16;8,2>:ub
442
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 81]<16;8,2>:ub
443
 
444
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
445
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
446
 
447
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
448
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
449
 
450
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
451
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
452
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
453
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
454
 
455
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
456
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
457
 
458
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
459
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
460
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
461
 
462
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
463
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
464
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
465
 
466
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
467
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
468
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
469
	mov   (16) r[a0.1,65]<2>:ub	  ubTempR(0, 0)<32;8,4>
470
	mov   (16) r[a0.2,65]<2>:ub	  ubTempG(0, 0)<32;8,4>
471
	mov   (16) r[a0.0,65]<2>:ub	  ubTempB(0, 0)<32;8,4>
472
 
473
//the fourth line in the block 0
474
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 97]<16;8,2>:ub
475
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 113]<16;8,2>:ub
476
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 97]<16;8,2>:ub
477
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 113]<16;8,2>:ub
478
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 97]<16;8,2>:ub
479
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 113]<16;8,2>:ub
480
 
481
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
482
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
483
 
484
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
485
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
486
 
487
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
488
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
489
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
490
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
491
 
492
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
493
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
494
 
495
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
496
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
497
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
498
 
499
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
500
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
501
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
502
 
503
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
504
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
505
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
506
	mov   (16) r[a0.1,97]<2>:ub	  ubTempR(0, 0)<32;8,4>
507
	mov   (16) r[a0.2,97]<2>:ub	  ubTempG(0, 0)<32;8,4>
508
	mov   (16) r[a0.0,97]<2>:ub	  ubTempB(0, 0)<32;8,4>
509
 
510
 
511
//for BUFFER_1
512
	add   (4) a0.0<1>:uw		  r22.0<4;4,1>:uw	512:uw
513
//the first line in the block 1
514
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 1]<16;8,2>:ub
515
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 17]<16;8,2>:ub
516
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 1]<16;8,2>:ub
517
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 17]<16;8,2>:ub
518
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 1]<16;8,2>:ub
519
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 17]<16;8,2>:ub
520
 
521
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
522
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
523
 
524
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
525
	mac   (16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
526
 
527
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
528
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
529
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
530
	mac   (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
531
 
532
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
533
	mac   (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
534
 
535
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
536
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
537
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
538
 
539
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
540
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
541
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
542
 
543
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
544
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
545
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
546
 
547
	mov   (16) r[a0.1,1]<2>:ub	  ubTempR(0, 0)<32;8,4>
548
	mov   (16) r[a0.2,1]<2>:ub	  ubTempG(0, 0)<32;8,4>
549
	mov   (16) r[a0.0,1]<2>:ub	  ubTempB(0, 0)<32;8,4>
550
 
551
//the second line in the block 1
552
 
553
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 33]<16;8,2>:ub
554
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 49]<16;8,2>:ub
555
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 33]<16;8,2>:ub
556
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 49]<16;8,2>:ub
557
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 33]<16;8,2>:ub
558
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 49]<16;8,2>:ub
559
 
560
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
561
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
562
 
563
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
564
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
565
 
566
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
567
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
568
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
569
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
570
 
571
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
572
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
573
 
574
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
575
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
576
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
577
 
578
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
579
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
580
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
581
 
582
 
583
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
584
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
585
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
586
	mov   (16) r[a0.1,33]<2>:ub	  ubTempR(0, 0)<32;8,4>
587
	mov   (16) r[a0.2,33]<2>:ub	  ubTempG(0, 0)<32;8,4>
588
	mov   (16) r[a0.0,33]<2>:ub	  ubTempB(0, 0)<32;8,4>
589
 
590
//the third line in the block 1
591
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 65]<16;8,2>:ub
592
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 81]<16;8,2>:ub
593
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 65]<16;8,2>:ub
594
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 81]<16;8,2>:ub
595
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 65]<16;8,2>:ub
596
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 81]<16;8,2>:ub
597
 
598
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
599
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
600
 
601
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
602
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
603
 
604
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
605
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
606
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
607
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
608
 
609
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
610
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
611
 
612
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
613
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
614
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
615
 
616
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
617
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
618
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
619
 
620
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
621
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
622
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
623
	mov   (16) r[a0.1,65]<2>:ub	  ubTempR(0, 0)<32;8,4>
624
	mov   (16) r[a0.2,65]<2>:ub	  ubTempG(0, 0)<32;8,4>
625
	mov   (16) r[a0.0,65]<2>:ub	  ubTempB(0, 0)<32;8,4>
626
 
627
//the fourth line in the block 1
628
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 97]<16;8,2>:ub
629
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 113]<16;8,2>:ub
630
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 97]<16;8,2>:ub
631
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 113]<16;8,2>:ub
632
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 97]<16;8,2>:ub
633
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 113]<16;8,2>:ub
634
 
635
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
636
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
637
 
638
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
639
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
640
 
641
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
642
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
643
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
644
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
645
 
646
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
647
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
648
 
649
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
650
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
651
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
652
 
653
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
654
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
655
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
656
 
657
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
658
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
659
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
660
	mov   (16) r[a0.1,97]<2>:ub	  ubTempR(0, 0)<32;8,4>
661
	mov   (16) r[a0.2,97]<2>:ub	  ubTempG(0, 0)<32;8,4>
662
	mov   (16) r[a0.0,97]<2>:ub	  ubTempB(0, 0)<32;8,4>
663
 
664
 
665
//for BUFFER_2
666
	add   (4) a0.0<1>:uw		  r22.0<4;4,1>:uw	1024:uw
667
//the first line in the block 2
668
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 1]<16;8,2>:ub
669
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 17]<16;8,2>:ub
670
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 1]<16;8,2>:ub
671
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 17]<16;8,2>:ub
672
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 1]<16;8,2>:ub
673
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 17]<16;8,2>:ub
674
 
675
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
676
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
677
 
678
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
679
	mac   (16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
680
 
681
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
682
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
683
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
684
	mac   (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
685
 
686
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
687
	mac   (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
688
 
689
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
690
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
691
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
692
 
693
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
694
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
695
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
696
 
697
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
698
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
699
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
700
 
701
	mov   (16) r[a0.1,1]<2>:ub	  ubTempR(0, 0)<32;8,4>
702
	mov   (16) r[a0.2,1]<2>:ub	  ubTempG(0, 0)<32;8,4>
703
	mov   (16) r[a0.0,1]<2>:ub	  ubTempB(0, 0)<32;8,4>
704
 
705
//the second line in the block 2
706
 
707
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 33]<16;8,2>:ub
708
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 49]<16;8,2>:ub
709
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 33]<16;8,2>:ub
710
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 49]<16;8,2>:ub
711
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 33]<16;8,2>:ub
712
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 49]<16;8,2>:ub
713
 
714
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
715
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
716
 
717
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
718
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
719
 
720
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
721
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
722
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
723
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
724
 
725
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
726
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
727
 
728
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
729
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
730
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
731
 
732
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
733
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
734
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
735
 
736
 
737
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
738
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
739
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
740
	mov   (16) r[a0.1,33]<2>:ub	  ubTempR(0, 0)<32;8,4>
741
	mov   (16) r[a0.2,33]<2>:ub	  ubTempG(0, 0)<32;8,4>
742
	mov   (16) r[a0.0,33]<2>:ub	  ubTempB(0, 0)<32;8,4>
743
 
744
//the third line in the block 2
745
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 65]<16;8,2>:ub
746
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 81]<16;8,2>:ub
747
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 65]<16;8,2>:ub
748
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 81]<16;8,2>:ub
749
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 65]<16;8,2>:ub
750
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 81]<16;8,2>:ub
751
 
752
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
753
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
754
 
755
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
756
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
757
 
758
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
759
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
760
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
761
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
762
 
763
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
764
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
765
 
766
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
767
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
768
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
769
 
770
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
771
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
772
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
773
 
774
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
775
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
776
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
777
	mov   (16) r[a0.1,65]<2>:ub	  ubTempR(0, 0)<32;8,4>
778
	mov   (16) r[a0.2,65]<2>:ub	  ubTempG(0, 0)<32;8,4>
779
	mov   (16) r[a0.0,65]<2>:ub	  ubTempB(0, 0)<32;8,4>
780
 
781
//the fourth line in the block 2
782
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 97]<16;8,2>:ub
783
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 113]<16;8,2>:ub
784
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 97]<16;8,2>:ub
785
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 113]<16;8,2>:ub
786
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 97]<16;8,2>:ub
787
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 113]<16;8,2>:ub
788
 
789
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
790
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
791
 
792
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
793
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
794
 
795
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
796
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
797
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
798
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
799
 
800
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
801
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
802
 
803
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
804
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
805
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
806
 
807
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
808
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
809
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
810
 
811
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
812
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
813
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
814
	mov   (16) r[a0.1,97]<2>:ub	  ubTempR(0, 0)<32;8,4>
815
	mov   (16) r[a0.2,97]<2>:ub	  ubTempG(0, 0)<32;8,4>
816
	mov   (16) r[a0.0,97]<2>:ub	  ubTempB(0, 0)<32;8,4>
817
 
818
 
819
//for BUFFER_3
820
	add   (4) a0.0<1>:uw		  r22.0<4;4,1>:uw	1536:uw
821
//the first line in the block 3
822
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 1]<16;8,2>:ub
823
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 17]<16;8,2>:ub
824
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 1]<16;8,2>:ub
825
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 17]<16;8,2>:ub
826
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 1]<16;8,2>:ub
827
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 17]<16;8,2>:ub
828
 
829
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
830
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
831
 
832
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
833
	mac   (16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
834
 
835
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
836
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
837
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
838
	mac   (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
839
 
840
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
841
	mac   (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
842
 
843
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
844
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
845
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
846
 
847
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
848
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
849
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
850
 
851
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
852
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
853
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
854
 
855
	mov   (16) r[a0.1,1]<2>:ub	  ubTempR(0, 0)<32;8,4>
856
	mov   (16) r[a0.2,1]<2>:ub	  ubTempG(0, 0)<32;8,4>
857
	mov   (16) r[a0.0,1]<2>:ub	  ubTempB(0, 0)<32;8,4>
858
 
859
//the second line in the block 3
860
 
861
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 33]<16;8,2>:ub
862
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 49]<16;8,2>:ub
863
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 33]<16;8,2>:ub
864
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 49]<16;8,2>:ub
865
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 33]<16;8,2>:ub
866
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 49]<16;8,2>:ub
867
 
868
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
869
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
870
 
871
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
872
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
873
 
874
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
875
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
876
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
877
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
878
 
879
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
880
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
881
 
882
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
883
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
884
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
885
 
886
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
887
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
888
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
889
 
890
 
891
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
892
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
893
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
894
	mov   (16) r[a0.1,33]<2>:ub	  ubTempR(0, 0)<32;8,4>
895
	mov   (16) r[a0.2,33]<2>:ub	  ubTempG(0, 0)<32;8,4>
896
	mov   (16) r[a0.0,33]<2>:ub	  ubTempB(0, 0)<32;8,4>
897
 
898
//the third line in the block 3
899
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 65]<16;8,2>:ub
900
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 81]<16;8,2>:ub
901
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 65]<16;8,2>:ub
902
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 81]<16;8,2>:ub
903
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 65]<16;8,2>:ub
904
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 81]<16;8,2>:ub
905
 
906
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
907
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
908
 
909
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
910
	mac   (16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
911
 
912
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
913
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
914
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
915
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
916
 
917
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
918
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
919
 
920
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
921
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
922
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
923
 
924
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
925
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
926
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
927
 
928
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
929
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
930
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
931
	mov   (16) r[a0.1,65]<2>:ub	  ubTempR(0, 0)<32;8,4>
932
	mov   (16) r[a0.2,65]<2>:ub	  ubTempG(0, 0)<32;8,4>
933
	mov   (16) r[a0.0,65]<2>:ub	  ubTempB(0, 0)<32;8,4>
934
 
935
//the fourth line in the block 3
936
        mov   (8) fBUFFER_Y(0, 0)<1>	  r[a0.1, 97]<16;8,2>:ub
937
        mov   (8) fBUFFER_Y(1, 0)<1>	  r[a0.1, 113]<16;8,2>:ub
938
        mov   (8) fBUFFER_U(0, 0)<1>	  r[a0.2, 97]<16;8,2>:ub
939
        mov   (8) fBUFFER_U(1, 0)<1>	  r[a0.2, 113]<16;8,2>:ub
940
        mov   (8) fBUFFER_V(0, 0)<1>	  r[a0.0, 97]<16;8,2>:ub
941
        mov   (8) fBUFFER_V(1, 0)<1>	  r[a0.0, 113]<16;8,2>:ub
942
 
943
	add   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	-128.0f
944
	add   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-128.0f
945
 
946
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
947
	mac	(16) fBUFFER_R(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	1.402f
948
 
949
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
950
	mac   (8) acc0.0<1>:f		  fBUFFER_U(0, 0)<8;8,1>	-0.344f
951
	mac   (8) acc1.0<1>:f		  fBUFFER_U(1, 0)<8;8,1>	-0.344f
952
	mac (16) fBUFFER_G(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	-0.714f
953
 
954
	mov   (16) acc0.0<1>:f		  fBUFFER_Y(0, 0)<8;8,1>
955
	mac (16) fBUFFER_B(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	1.772f
956
 
957
	mul.sat   (16) fBUFFER_Y(0, 0)<1>	  fBUFFER_R(0, 0)<8;8,1>	0.0039216f
958
	mul.sat   (16) fBUFFER_U(0, 0)<1>	  fBUFFER_G(0, 0)<8;8,1>	0.0039216f
959
	mul.sat   (16) fBUFFER_V(0, 0)<1>	  fBUFFER_B(0, 0)<8;8,1>	0.0039216f
960
 
961
	mul	  (16) fBUFFER_R(0, 0)<1>	  fBUFFER_Y(0, 0)<8;8,1>	255.0f
962
	mul   	  (16) fBUFFER_G(0, 0)<1>	  fBUFFER_U(0, 0)<8;8,1>	255.0f
963
	mul	  (16) fBUFFER_B(0, 0)<1>	  fBUFFER_V(0, 0)<8;8,1>	255.0f
964
 
965
	mov   (16) wTempR(0, 0)<2>	  fBUFFER_R(0, 0)<8;8,1>
966
	mov   (16) wTempG(0, 0)<2>	  fBUFFER_G(0, 0)<8;8,1>
967
	mov   (16) wTempB(0, 0)<2>	  fBUFFER_B(0, 0)<8;8,1>
968
	mov   (16) r[a0.1,97]<2>:ub	  ubTempR(0, 0)<32;8,4>
969
	mov   (16) r[a0.2,97]<2>:ub	  ubTempG(0, 0)<32;8,4>
970
	mov   (16) r[a0.0,97]<2>:ub	  ubTempB(0, 0)<32;8,4>
971