178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Copyright (C) 2007-2008 ARM Limited
378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Licensed under the Apache License, Version 2.0 (the "License");
578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// you may not use this file except in compliance with the License.
678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// You may obtain a copy of the License at
778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//      http://www.apache.org/licenses/LICENSE-2.0
978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Unless required by applicable law or agreed to in writing, software
1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// distributed under the License is distributed on an "AS IS" BASIS,
1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// See the License for the specific language governing permissions and
1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// limitations under the License.
1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
160c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
170c1bc742181ded4930842b46e9507372f0b1b963James Dong *
180c1bc742181ded4930842b46e9507372f0b1b963James Dong */
190c1bc742181ded4930842b46e9507372f0b1b963James Dong
200c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    .section .rodata
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    .align 4
270c1bc742181ded4930842b46e9507372f0b1b963James Dong
280c1bc742181ded4930842b46e9507372f0b1b963James Dong
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_QPDivTable
300c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_VMatrixQPModTable
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_PosToVCol4x4
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_PosToVCol2x2
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_VMatrix
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_QPModuloTable
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_VMatrixU16
360c1bc742181ded4930842b46e9507372f0b1b963James Dong
37e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_QPDivTable
38e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_VMatrixQPModTable
39e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_PosToVCol4x4
40e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_PosToVCol2x2
41e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_VMatrix
42e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_QPModuloTable
43e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel    .hidden armVCM4P10_VMatrixU16
44e17bb5cafdbc6089716d8e8c5afbb00f207a59bbArd Biesheuvel
450c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_PosToVCol4x4:
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  0, 2, 0, 2
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  2, 1, 2, 1
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  0, 2, 0, 2
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  2, 1, 2, 1
500c1bc742181ded4930842b46e9507372f0b1b963James Dong
510c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_PosToVCol2x2:
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  0, 2
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  2, 1
540c1bc742181ded4930842b46e9507372f0b1b963James Dong
550c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_VMatrix:
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  10, 16, 13
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  11, 18, 14
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  13, 20, 16
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  14, 23, 18
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  16, 25, 20
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  18, 29, 23
620c1bc742181ded4930842b46e9507372f0b1b963James Dong
630c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
640c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table evaluates the expression [(INT)(QP/6)],
650c1bc742181ded4930842b46e9507372f0b1b963James Dong;// for values of QP from 0 to 51 (inclusive).
660c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_QPDivTable:
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  0,  0,  0,  0,  0,  0
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  1,  1,  1,  1,  1,  1
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  2,  2,  2,  2,  2,  2
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  3,  3,  3,  3,  3,  3
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  4,  4,  4,  4,  4,  4
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  5,  5,  5,  5,  5,  5
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  6,  6,  6,  6,  6,  6
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  7,  7,  7,  7,  7,  7
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte  8,  8,  8,  8,  8,  8
780c1bc742181ded4930842b46e9507372f0b1b963James Dong
790c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------
800c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table contains armVCM4P10_VMatrix[QP%6][0] entires,
810c1bc742181ded4930842b46e9507372f0b1b963James Dong;// for values of QP from 0 to 51 (inclusive).
820c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------
830c1bc742181ded4930842b46e9507372f0b1b963James Dong
840c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_VMatrixQPModTable:
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 10, 11, 13, 14, 16, 18
940c1bc742181ded4930842b46e9507372f0b1b963James Dong
950c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
960c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table evaluates the modulus expression [QP%6]*6,
970c1bc742181ded4930842b46e9507372f0b1b963James Dong;// for values of QP from 0 to 51 (inclusive).
980c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
990c1bc742181ded4930842b46e9507372f0b1b963James Dong
1000c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_QPModuloTable:
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    .byte 0, 6, 12, 18, 24, 30
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table contains the invidual byte values stored as
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong;// halfwords. This avoids unpacking inside the function
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong
1160c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_VMatrixU16:
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 10, 16, 13
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 11, 18, 14
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 13, 20, 16
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 14, 23, 18
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 16, 25, 20
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword 18, 29, 23
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong
126