23 #ifndef AVCODEC_PPC_MATHOPS_H
24 #define AVCODEC_PPC_MATHOPS_H
32 #define MAC16(rt, ra, rb) \
33 __asm__ ("maclhw %0, %2, %3" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb));
36 #define MUL16(ra, rb) \
38 __asm__ ("mullhw %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); \
45 __asm__ (
"mulhw %0, %1, %2" :
"=r"(
r) :
"r"(
a),
"r"(
b));
52 union { uint64_t x;
unsigned hl[2]; } x = { d };
54 __asm__ (
"mullw %3, %4, %5 \n\t"
55 "mulhw %2, %4, %5 \n\t"
56 "addc %1, %1, %3 \n\t"
57 "adde %0, %0, %2 \n\t"
58 :
"+r"(x.hl[0]),
"+r"(x.hl[1]),
"=&r"(
h),
"=&r"(l)
62 #define MAC64(d, a, b) ((d) = MAC64(d, a, b))
66 union { uint64_t x;
unsigned hl[2]; } x = { d };
68 __asm__ (
"mullw %3, %4, %5 \n\t"
69 "mulhw %2, %4, %5 \n\t"
70 "subfc %1, %3, %1 \n\t"
71 "subfe %0, %2, %0 \n\t"
72 :
"+r"(x.hl[0]),
"+r"(x.hl[1]),
"=&r"(
h),
"=&r"(l)
76 #define MLS64(d, a, b) ((d) = MLS64(d, a, b))
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
common internal and external API header