21 #ifndef AVUTIL_ARM_INTMATH_H
22 #define AVUTIL_ARM_INTMATH_H
33 #define FASTDIV FASTDIV
37 __asm__ (
"cmp %2, #2 \n\t"
38 "ldr %0, [%3, %2, lsl #2] \n\t"
40 "lsrle %0, %1, #1 \n\t"
41 "smmulgt %0, %0, %1 \n\t"
42 :
"=&r"(r) :
"r"(a),
"r"(b),
"r"(
ff_inverse) :
"cc");
46 #define av_clip_uint8 av_clip_uint8_arm
50 __asm__ (
"usat %0, #8, %1" :
"=r"(x) :
"r"(a));
54 #define av_clip_int8 av_clip_int8_arm
58 __asm__ (
"ssat %0, #8, %1" :
"=r"(x) :
"r"(a));
62 #define av_clip_uint16 av_clip_uint16_arm
66 __asm__ (
"usat %0, #16, %1" :
"=r"(x) :
"r"(a));
70 #define av_clip_int16 av_clip_int16_arm
74 __asm__ (
"ssat %0, #16, %1" :
"=r"(x) :
"r"(a));
78 #define av_clip_uintp2 av_clip_uintp2_arm
82 __asm__ (
"usat %0, %2, %1" :
"=r"(x) :
"r"(a),
"i"(p));
89 #define FASTDIV FASTDIV
93 __asm__ (
"umull %1, %0, %2, %3"
94 :
"=&r"(r),
"=&r"(t) :
"r"(a),
"r"(
ff_inverse[b]));
100 #define av_clipl_int32 av_clipl_int32_arm
104 __asm__ (
"adds %1, %R2, %Q2, lsr #31 \n\t"
106 "mvnne %1, #1<<31 \n\t"
108 "eorne %0, %1, %R2, asr #31 \n\t"
109 :
"=r"(x),
"=&r"(y) :
"r"(a));