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 .text 120c1bc742181ded4930842b46e9507372f0b1b963James Dong 130c1bc742181ded4930842b46e9507372f0b1b963James Dong .global omxVCM4P10_FilterDeblockingLuma_VerEdge_I 140c1bc742181ded4930842b46e9507372f0b1b963James Dong .func omxVCM4P10_FilterDeblockingLuma_VerEdge_I 150c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingLuma_VerEdge_I: 160c1bc742181ded4930842b46e9507372f0b1b963James Dong PUSH {r4-r12,lr} 170c1bc742181ded4930842b46e9507372f0b1b963James Dong VPUSH {d8-d15} 180c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r7,r2,#1 190c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r8,r3,#1 200c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0[]},[r2] 210c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,#4 220c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2[]},[r3] 230c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR r4,[sp,#0x6c] 240c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR r5,[sp,#0x68] 250c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r6,#0 260c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV.I8 d14,#0 270c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV.I8 d15,#0x1 280c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r9,#0x11000000 290c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r11,r1,r1 300c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38: 310c1bc742181ded4930842b46e9507372f0b1b963James Dong LDRH r12,[r4],#4 320c1bc742181ded4930842b46e9507372f0b1b963James Dong CMP r12,#0 330c1bc742181ded4930842b46e9507372f0b1b963James Dong BEQ L0x160 340c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r10,r0,r1 350c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d7},[r0],r11 360c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d8},[r10],r11 370c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d5},[r0],r11 380c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d7,d8 390c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d10},[r10],r11 400c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d6},[r0],r11 410c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d5,d10 420c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d9},[r10],r11 430c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d4},[r0],r11 440c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d11},[r10],r11 450c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d6,d9 460c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d8,d10 470c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d4,d11 480c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,r1,LSL #3 490c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d7,d5 500c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d9,d11 510c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d6,d4 520c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d8,d9 530c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d5,d4 540c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d10,d11 550c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d7,d6 560c1bc742181ded4930842b46e9507372f0b1b963James Dong VABD.U8 d13,d4,d8 570c1bc742181ded4930842b46e9507372f0b1b963James Dong VABD.U8 d12,d5,d4 580c1bc742181ded4930842b46e9507372f0b1b963James Dong VABD.U8 d18,d9,d8 590c1bc742181ded4930842b46e9507372f0b1b963James Dong VABD.U8 d19,d6,d4 600c1bc742181ded4930842b46e9507372f0b1b963James Dong TST r12,#0xff 610c1bc742181ded4930842b46e9507372f0b1b963James Dong VCGT.U8 d16,d0,d13 620c1bc742181ded4930842b46e9507372f0b1b963James Dong VMAX.U8 d12,d18,d12 630c1bc742181ded4930842b46e9507372f0b1b963James Dong VABD.U8 d17,d10,d8 640c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOVEQ.32 d16[0],r6 650c1bc742181ded4930842b46e9507372f0b1b963James Dong TST r12,#0xff00 660c1bc742181ded4930842b46e9507372f0b1b963James Dong VCGT.U8 d19,d2,d19 670c1bc742181ded4930842b46e9507372f0b1b963James Dong VCGT.U8 d12,d2,d12 680c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOVEQ.32 d16[1],r6 690c1bc742181ded4930842b46e9507372f0b1b963James Dong VCGT.U8 d17,d2,d17 700c1bc742181ded4930842b46e9507372f0b1b963James Dong VAND d16,d16,d12 710c1bc742181ded4930842b46e9507372f0b1b963James Dong TST r12,#4 720c1bc742181ded4930842b46e9507372f0b1b963James Dong VAND d12,d16,d17 730c1bc742181ded4930842b46e9507372f0b1b963James Dong VAND d17,d16,d19 740c1bc742181ded4930842b46e9507372f0b1b963James Dong BNE L0x17c 750c1bc742181ded4930842b46e9507372f0b1b963James Dong BL armVCM4P10_DeblockingLumabSLT4_unsafe 760c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d7,d6 770c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d30,d29 780c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d24,d25 790c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d10,d11 800c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d7,d30 810c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r10,r0,r1 820c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d24,d10 830c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d25,d11 840c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d6,d29 850c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d7,d24 860c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d30,d10 870c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d6,d25 880c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d29,d11 890c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d7},[r0],r11 900c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d24},[r10],r11 910c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d30},[r0],r11 920c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d10},[r10],r11 930c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d6},[r0],r11 940c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d25},[r10],r11 950c1bc742181ded4930842b46e9507372f0b1b963James Dong ADDS r9,r9,r9 960c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d29},[r0],r11 970c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r5,r5,#2 980c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d11},[r10],r1 990c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,r1,LSL #3 1000c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0[]},[r7] 1010c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r0,r0,#4 1020c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2[]},[r8] 1030c1bc742181ded4930842b46e9507372f0b1b963James Dong BCC L0x38 1040c1bc742181ded4930842b46e9507372f0b1b963James Dong B L0x1f0 1050c1bc742181ded4930842b46e9507372f0b1b963James DongL0x160: 1060c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r0,r0,#4 1070c1bc742181ded4930842b46e9507372f0b1b963James Dong ADDS r9,r9,r9 1080c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0[]},[r7] 1090c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r5,r5,#4 1100c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2[]},[r8] 1110c1bc742181ded4930842b46e9507372f0b1b963James Dong BCC L0x38 1120c1bc742181ded4930842b46e9507372f0b1b963James Dong B L0x1f0 1130c1bc742181ded4930842b46e9507372f0b1b963James DongL0x17c: 1140c1bc742181ded4930842b46e9507372f0b1b963James Dong BL armVCM4P10_DeblockingLumabSGE4_unsafe 1150c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d7,d31 1160c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d30,d29 1170c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d24,d25 1180c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.8 d28,d11 1190c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d7,d30 1200c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r10,r0,r1 1210c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d24,d28 1220c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d25,d11 1230c1bc742181ded4930842b46e9507372f0b1b963James Dong VZIP.16 d31,d29 1240c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d7,d24 1250c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d30,d28 1260c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d31,d25 1270c1bc742181ded4930842b46e9507372f0b1b963James Dong VTRN.32 d29,d11 1280c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d7},[r0],r11 1290c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d24},[r10],r11 1300c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d30},[r0],r11 1310c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d28},[r10],r11 1320c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d31},[r0],r11 1330c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d25},[r10],r11 1340c1bc742181ded4930842b46e9507372f0b1b963James Dong ADDS r9,r9,r9 1350c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d29},[r0],r11 1360c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r5,r5,#4 1370c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1.8 {d11},[r10],r11 1380c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,r1,LSL #3 1390c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0[]},[r7] 1400c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r0,r0,#4 1410c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2[]},[r8] 1420c1bc742181ded4930842b46e9507372f0b1b963James Dong BCC L0x38 1430c1bc742181ded4930842b46e9507372f0b1b963James DongL0x1f0: 1440c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r4,r4,#0xe 1450c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r5,r5,#0xe 1460c1bc742181ded4930842b46e9507372f0b1b963James Dong SUB r0,r0,#0x10 1470c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d0[]},[r2] 1480c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD r0,r0,r1,LSL #3 1490c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1.8 {d2[]},[r3] 1500c1bc742181ded4930842b46e9507372f0b1b963James Dong BNE L0x38 1510c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV r0,#0 1520c1bc742181ded4930842b46e9507372f0b1b963James Dong VPOP {d8-d15} 1530c1bc742181ded4930842b46e9507372f0b1b963James Dong POP {r4-r12,pc} 1540c1bc742181ded4930842b46e9507372f0b1b963James Dong .endfunc 1550c1bc742181ded4930842b46e9507372f0b1b963James Dong 1560c1bc742181ded4930842b46e9507372f0b1b963James Dong .end 1570c1bc742181ded4930842b46e9507372f0b1b963James Dong 158