libavcodec: Remove dynamic relocs from aarch64/h264idct_neon.S
Some of the assembly functions e.g. ff_h264_idct_dc_add_neon
has code like:
        movrel          x14, X(ff_h264_idct_add_neon)
Linker cannot resolve them fully at link time and emits dynamic
relocations.
Use explicit labels instead so that no dynamic relocations are
needed at all.
This avoids lld complains about text relocations.
For background, see https://crbug.com/917919
Signed-off-by: Manoj Gupta <manojgupta@chromium.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
			
			
This commit is contained in:
		
							parent
							
								
									bf96937a96
								
							
						
					
					
						commit
						6fcf813110
					
				@ -23,6 +23,7 @@
 | 
				
			|||||||
#include "neon.S"
 | 
					#include "neon.S"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ff_h264_idct_add_neon, export=1
 | 
					function ff_h264_idct_add_neon, export=1
 | 
				
			||||||
 | 
					.L_ff_h264_idct_add_neon:
 | 
				
			||||||
        ld1             {v0.4H, v1.4H, v2.4H, v3.4H},  [x1]
 | 
					        ld1             {v0.4H, v1.4H, v2.4H, v3.4H},  [x1]
 | 
				
			||||||
        sxtw            x2,     w2
 | 
					        sxtw            x2,     w2
 | 
				
			||||||
        movi            v30.8H, #0
 | 
					        movi            v30.8H, #0
 | 
				
			||||||
@ -77,6 +78,7 @@ function ff_h264_idct_add_neon, export=1
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ff_h264_idct_dc_add_neon, export=1
 | 
					function ff_h264_idct_dc_add_neon, export=1
 | 
				
			||||||
 | 
					.L_ff_h264_idct_dc_add_neon:
 | 
				
			||||||
        sxtw            x2,  w2
 | 
					        sxtw            x2,  w2
 | 
				
			||||||
        mov             w3,       #0
 | 
					        mov             w3,       #0
 | 
				
			||||||
        ld1r            {v2.8H},  [x1]
 | 
					        ld1r            {v2.8H},  [x1]
 | 
				
			||||||
@ -106,8 +108,8 @@ function ff_h264_idct_add16_neon, export=1
 | 
				
			|||||||
        mov             w9,  w3         // stride
 | 
					        mov             w9,  w3         // stride
 | 
				
			||||||
        movrel          x7,  scan8
 | 
					        movrel          x7,  scan8
 | 
				
			||||||
        mov             x10, #16
 | 
					        mov             x10, #16
 | 
				
			||||||
        movrel          x13, X(ff_h264_idct_dc_add_neon)
 | 
					        movrel          x13, .L_ff_h264_idct_dc_add_neon
 | 
				
			||||||
        movrel          x14, X(ff_h264_idct_add_neon)
 | 
					        movrel          x14, .L_ff_h264_idct_add_neon
 | 
				
			||||||
1:      mov             w2,  w9
 | 
					1:      mov             w2,  w9
 | 
				
			||||||
        ldrb            w3,  [x7], #1
 | 
					        ldrb            w3,  [x7], #1
 | 
				
			||||||
        ldrsw           x0,  [x5], #4
 | 
					        ldrsw           x0,  [x5], #4
 | 
				
			||||||
@ -133,8 +135,8 @@ function ff_h264_idct_add16intra_neon, export=1
 | 
				
			|||||||
        mov             w9,  w3         // stride
 | 
					        mov             w9,  w3         // stride
 | 
				
			||||||
        movrel          x7,  scan8
 | 
					        movrel          x7,  scan8
 | 
				
			||||||
        mov             x10, #16
 | 
					        mov             x10, #16
 | 
				
			||||||
        movrel          x13, X(ff_h264_idct_dc_add_neon)
 | 
					        movrel          x13, .L_ff_h264_idct_dc_add_neon
 | 
				
			||||||
        movrel          x14, X(ff_h264_idct_add_neon)
 | 
					        movrel          x14, .L_ff_h264_idct_add_neon
 | 
				
			||||||
1:      mov             w2,  w9
 | 
					1:      mov             w2,  w9
 | 
				
			||||||
        ldrb            w3,  [x7], #1
 | 
					        ldrb            w3,  [x7], #1
 | 
				
			||||||
        ldrsw           x0,  [x5], #4
 | 
					        ldrsw           x0,  [x5], #4
 | 
				
			||||||
@ -160,8 +162,8 @@ function ff_h264_idct_add8_neon, export=1
 | 
				
			|||||||
        add             x5,  x1,  #16*4         // block_offset
 | 
					        add             x5,  x1,  #16*4         // block_offset
 | 
				
			||||||
        add             x9,  x2,  #16*32        // block
 | 
					        add             x9,  x2,  #16*32        // block
 | 
				
			||||||
        mov             w19, w3                 // stride
 | 
					        mov             w19, w3                 // stride
 | 
				
			||||||
        movrel          x13, X(ff_h264_idct_dc_add_neon)
 | 
					        movrel          x13, .L_ff_h264_idct_dc_add_neon
 | 
				
			||||||
        movrel          x14, X(ff_h264_idct_add_neon)
 | 
					        movrel          x14, .L_ff_h264_idct_add_neon
 | 
				
			||||||
        movrel          x7,  scan8, 16
 | 
					        movrel          x7,  scan8, 16
 | 
				
			||||||
        mov             x10, #0
 | 
					        mov             x10, #0
 | 
				
			||||||
        mov             x11, #16
 | 
					        mov             x11, #16
 | 
				
			||||||
@ -263,6 +265,7 @@ endfunc
 | 
				
			|||||||
.endm
 | 
					.endm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ff_h264_idct8_add_neon, export=1
 | 
					function ff_h264_idct8_add_neon, export=1
 | 
				
			||||||
 | 
					.L_ff_h264_idct8_add_neon:
 | 
				
			||||||
        movi            v19.8H,   #0
 | 
					        movi            v19.8H,   #0
 | 
				
			||||||
        sxtw            x2,       w2
 | 
					        sxtw            x2,       w2
 | 
				
			||||||
        ld1             {v24.8H, v25.8H}, [x1]
 | 
					        ld1             {v24.8H, v25.8H}, [x1]
 | 
				
			||||||
@ -326,6 +329,7 @@ function ff_h264_idct8_add_neon, export=1
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ff_h264_idct8_dc_add_neon, export=1
 | 
					function ff_h264_idct8_dc_add_neon, export=1
 | 
				
			||||||
 | 
					.L_ff_h264_idct8_dc_add_neon:
 | 
				
			||||||
        mov             w3,       #0
 | 
					        mov             w3,       #0
 | 
				
			||||||
        sxtw            x2,       w2
 | 
					        sxtw            x2,       w2
 | 
				
			||||||
        ld1r            {v31.8H}, [x1]
 | 
					        ld1r            {v31.8H}, [x1]
 | 
				
			||||||
@ -375,8 +379,8 @@ function ff_h264_idct8_add4_neon, export=1
 | 
				
			|||||||
        mov             w2,  w3
 | 
					        mov             w2,  w3
 | 
				
			||||||
        movrel          x7,  scan8
 | 
					        movrel          x7,  scan8
 | 
				
			||||||
        mov             w10, #16
 | 
					        mov             w10, #16
 | 
				
			||||||
        movrel          x13, X(ff_h264_idct8_dc_add_neon)
 | 
					        movrel          x13, .L_ff_h264_idct8_dc_add_neon
 | 
				
			||||||
        movrel          x14, X(ff_h264_idct8_add_neon)
 | 
					        movrel          x14, .L_ff_h264_idct8_add_neon
 | 
				
			||||||
1:      ldrb            w9,  [x7], #4
 | 
					1:      ldrb            w9,  [x7], #4
 | 
				
			||||||
        ldrsw           x0,  [x5], #16
 | 
					        ldrsw           x0,  [x5], #16
 | 
				
			||||||
        ldrb            w9,  [x4, w9, UXTW]
 | 
					        ldrb            w9,  [x4, w9, UXTW]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user