armVCM4P10_Interpolate_Chroma_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
10c1bc742181ded4930842b46e9507372f0b1b963James Dong/* 20c1bc742181ded4930842b46e9507372f0b1b963James Dong * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 30c1bc742181ded4930842b46e9507372f0b1b963James Dong * 40c1bc742181ded4930842b46e9507372f0b1b963James Dong */ 50c1bc742181ded4930842b46e9507372f0b1b963James Dong 60c1bc742181ded4930842b46e9507372f0b1b963James Dong .eabi_attribute 24, 1 70c1bc742181ded4930842b46e9507372f0b1b963James Dong .eabi_attribute 25, 1 80c1bc742181ded4930842b46e9507372f0b1b963James Dong 90c1bc742181ded4930842b46e9507372f0b1b963James Dong .arm 100c1bc742181ded4930842b46e9507372f0b1b963James Dong .fpu neon 110c1bc742181ded4930842b46e9507372f0b1b963James Dong 120c1bc742181ded4930842b46e9507372f0b1b963James Dong .section .rodata 130c1bc742181ded4930842b46e9507372f0b1b963James Dong .align 4 140c1bc742181ded4930842b46e9507372f0b1b963James Dong 150c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_WidthBranchTableMVIsNotZero: 160c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs2MVIsNotZero, WidthIs2MVIsNotZero 170c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs4MVIsNotZero, WidthIs4MVIsNotZero 180c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs8MVIsNotZero 190c1bc742181ded4930842b46e9507372f0b1b963James Dong 200c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_WidthBranchTableMVIsZero: 210c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs2MVIsZero, WidthIs2MVIsZero 220c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs4MVIsZero, WidthIs4MVIsZero 230c1bc742181ded4930842b46e9507372f0b1b963James Dong .word WidthIs8MVIsZero 240c1bc742181ded4930842b46e9507372f0b1b963James Dong 250c1bc742181ded4930842b46e9507372f0b1b963James Dong .text 260c1bc742181ded4930842b46e9507372f0b1b963James Dong 270c1bc742181ded4930842b46e9507372f0b1b963James Dong .global armVCM4P10_Interpolate_Chroma 280c1bc742181ded4930842b46e9507372f0b1b963James Dong .func armVCM4P10_Interpolate_Chroma 290c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_Interpolate_Chroma: 300c1bc742181ded4930842b46e9507372f0b1b963James Dong PUSH {r4-r12,lr} 310c1bc742181ded4930842b46e9507372f0b1b963James Dong VPUSH {d8-d15} 320c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRD r6,r7,[sp,#0x70] 330c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRD r4,r5,[sp,#0x68] 340c1bc742181ded4930842b46e9507372f0b1b963James Dong RSB r8,r6,#8 350c1bc742181ded4930842b46e9507372f0b1b963James Dong RSB r9,r7,#8 360c1bc742181ded4930842b46e9507372f0b1b963James Dong CMN r6,r7 370c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r10,#1 380c1bc742181ded4930842b46e9507372f0b1b963James Dong LDREQ r11, =armVCM4P10_WidthBranchTableMVIsZero 390c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB lr,r1,r10 400c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRNE r11, =armVCM4P10_WidthBranchTableMVIsNotZero 410c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r10 420c1bc742181ded4930842b46e9507372f0b1b963James Dong SMULBB r12,r8,r9 430c1bc742181ded4930842b46e9507372f0b1b963James Dong SMULBB r9,r6,r9 440c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],lr 450c1bc742181ded4930842b46e9507372f0b1b963James Dong SMULBB r8,r8,r7 460c1bc742181ded4930842b46e9507372f0b1b963James Dong SMULBB r6,r6,r7 470c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP.8 d12,r12 480c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP.8 d13,r9 490c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP.8 d14,r8 500c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP.8 d15,r6 510c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pc,[r11,r4,LSL #1] 520c1bc742181ded4930842b46e9507372f0b1b963James Dong 530c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs8MVIsNotZero: 540c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2},[r0],r10 550c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q2,d0,d12 560c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d3},[r0],lr 570c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q3,d2,d12 580c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d16},[r0],r10 590c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d1,d13 600c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d17},[r0],lr 610c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q11,d16,d12 620c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d3,d13 630c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d18},[r0],r10 640c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d2,d14 650c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q11,d17,d13 660c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q12,d18,d12 670c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d19},[r0],lr 680c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d16,d14 690c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r10 700c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q12,d19,d13 710c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q11,d18,d14 720c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d3,d15 730c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],lr 740c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q12,d0,d14 750c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d17,d15 760c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q11,d19,d15 770c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#4 780c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q12,d1,d15 790c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d8,q2,#6 800c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d9,q3,#6 810c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d20,q11,#6 820c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d8},[r2],r3 830c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d21,q12,#6 840c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d9},[r2],r3 850c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d20},[r2],r3 860c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d21},[r2],r3 870c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs8MVIsNotZero 880c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 890c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 900c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 910c1bc742181ded4930842b46e9507372f0b1b963James Dong 920c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs4MVIsNotZero: 930c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2},[r0],r10 940c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q2,d0,d12 950c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q3,d2,d12 960c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d3},[r0],lr 970c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d1,d13 980c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d3,d13 990c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r10 1000c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d2,d14 1010c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d0,d14 1020c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],lr 1030c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#2 1040c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d1,d15 1050c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d3,d15 1060c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d9,q3,#6 1070c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d8,q2,#6 1080c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.32 {d8[0]},[r2],r3 1090c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.32 {d9[0]},[r2],r3 1100c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs4MVIsNotZero 1110c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1120c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1130c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1140c1bc742181ded4930842b46e9507372f0b1b963James Dong 1150c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs2MVIsNotZero: 1160c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2},[r0],r10 1170c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q2,d0,d12 1180c1bc742181ded4930842b46e9507372f0b1b963James Dong VMULL.U8 q3,d2,d12 1190c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d3},[r0],lr 1200c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d1,d13 1210c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d3,d13 1220c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r10 1230c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d2,d14 1240c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d0,d14 1250c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],lr 1260c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#2 1270c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q3,d1,d15 1280c1bc742181ded4930842b46e9507372f0b1b963James Dong VMLAL.U8 q2,d3,d15 1290c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d9,q3,#6 1300c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRN.U16 d8,q2,#6 1310c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.16 {d8[0]},[r2],r3 1320c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.16 {d9[0]},[r2],r3 1330c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs2MVIsNotZero 1340c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1350c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1360c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1370c1bc742181ded4930842b46e9507372f0b1b963James Dong 1380c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs8MVIsZero: 1390c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,r1 1400c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs8LoopMVIsZero: 1410c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r1 1420c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#2 1430c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],r1 1440c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d0},[r2],r3 1450c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.64 {d1},[r2],r3 1460c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs8LoopMVIsZero 1470c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1480c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1490c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1500c1bc742181ded4930842b46e9507372f0b1b963James Dong 1510c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs4MVIsZero: 1520c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],r1 1530c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#2 1540c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.32 {d0[0]},[r2],r3 1550c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r1 1560c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.32 {d1[0]},[r2],r3 1570c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs4MVIsZero 1580c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1590c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1600c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1610c1bc742181ded4930842b46e9507372f0b1b963James Dong 1620c1bc742181ded4930842b46e9507372f0b1b963James DongWidthIs2MVIsZero: 1630c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d1},[r0],r1 1640c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS r5,r5,#2 1650c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.16 {d0[0]},[r2],r3 1660c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0},[r0],r1 1670c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.16 {d1[0]},[r2],r3 1680c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT WidthIs2MVIsZero 1690c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1700c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1710c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1720c1bc742181ded4930842b46e9507372f0b1b963James Dong .endfunc 1730c1bc742181ded4930842b46e9507372f0b1b963James Dong 1740c1bc742181ded4930842b46e9507372f0b1b963James Dong .end 1750c1bc742181ded4930842b46e9507372f0b1b963James Dong 176