arm: Check the build time constants in av_clip_*intp2
This fixes building for arm targets with optimizations disabled. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
		
							parent
							
								
									3f456dc245
								
							
						
					
					
						commit
						0dd8fe6f4b
					
				| @ -65,17 +65,29 @@ static av_always_inline av_const int av_clip_int16_arm(int a) | |||||||
| #define av_clip_intp2 av_clip_intp2_arm | #define av_clip_intp2 av_clip_intp2_arm | ||||||
| static av_always_inline av_const int av_clip_intp2_arm(int a, int p) | static av_always_inline av_const int av_clip_intp2_arm(int a, int p) | ||||||
| { | { | ||||||
|  |     if (av_builtin_constant_p(p)) { | ||||||
|         unsigned x; |         unsigned x; | ||||||
|         __asm__ ("ssat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p+1)); |         __asm__ ("ssat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p+1)); | ||||||
|         return x; |         return x; | ||||||
|  |     } else { | ||||||
|  |         if (((unsigned)a + (1 << p)) & ~((2 << p) - 1)) | ||||||
|  |             return (a >> 31) ^ ((1 << p) - 1); | ||||||
|  |         else | ||||||
|  |             return a; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define av_clip_uintp2 av_clip_uintp2_arm | #define av_clip_uintp2 av_clip_uintp2_arm | ||||||
| static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p) | static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p) | ||||||
| { | { | ||||||
|  |     if (av_builtin_constant_p(p)) { | ||||||
|         unsigned x; |         unsigned x; | ||||||
|         __asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p)); |         __asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p)); | ||||||
|         return x; |         return x; | ||||||
|  |     } else { | ||||||
|  |         if (a & ~((1<<p) - 1)) return (~a) >> 31 & ((1<<p) - 1); | ||||||
|  |         else                   return  a; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define av_sat_add32 av_sat_add32_arm | #define av_sat_add32 av_sat_add32_arm | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user