21 #ifndef AVUTIL_AVR32_INTREADWRITE_H
22 #define AVUTIL_AVR32_INTREADWRITE_H
42 #define AV_RL16 AV_RL16
47 "ldins.b %0:l, %2 \n\t"
49 :
"m"(*(
const uint8_t*)p),
"RKs12"(*((
const uint8_t*)p+1)));
53 #define AV_RB16 AV_RB16
58 "ldins.b %0:l, %1 \n\t"
60 :
"RKs12"(*(
const uint8_t*)p),
"m"(*((
const uint8_t*)p+1)));
64 #define AV_RB24 AV_RB24
69 "ldins.b %0:l, %2 \n\t"
70 "ldins.b %0:u, %1 \n\t"
72 :
"RKs12"(* (
const uint8_t*)p),
73 "RKs12"(*((
const uint8_t*)p+1)),
74 "m" (*((
const uint8_t*)p+2)));
78 #define AV_RL24 AV_RL24
83 "ldins.b %0:l, %2 \n\t"
84 "ldins.b %0:u, %3 \n\t"
86 :
"m" (* (
const uint8_t*)p),
87 "RKs12"(*((
const uint8_t*)p+1)),
88 "RKs12"(*((
const uint8_t*)p+2)));
94 #define AV_RB32 AV_RB32
98 __asm__ (
"ld.w %0, %1" :
"=r"(v) :
"m"(*(
const uint32_t*)p));
102 #define AV_WB32 AV_WB32
105 __asm__ (
"st.w %0, %1" :
"=m"(*(uint32_t*)p) :
"r"(v));
109 #define AV_RL32(p) av_bswap32(AV_RB32(p))
110 #define AV_WL32(p, v) AV_WB32(p, av_bswap32(v))
112 #define AV_WB64 AV_WB64
115 union { uint64_t v; uint32_t hl[2]; } vv = { v };
117 AV_WB32((uint32_t*)p+1, vv.hl[1]);
120 #define AV_WL64 AV_WL64
123 union { uint64_t v; uint32_t hl[2]; } vv = { v };
125 AV_WL32((uint32_t*)p+1, vv.hl[0]);
130 #define AV_RB32 AV_RB32
135 "ldins.b %0:l, %3 \n\t"
136 "ldins.b %0:u, %2 \n\t"
137 "ldins.b %0:t, %1 \n\t"
139 :
"RKs12"(* (
const uint8_t*)p),
140 "RKs12"(*((
const uint8_t*)p+1)),
141 "RKs12"(*((
const uint8_t*)p+2)),
142 "m" (*((
const uint8_t*)p+3)));
146 #define AV_RL32 AV_RL32
151 "ldins.b %0:l, %2 \n\t"
152 "ldins.b %0:u, %3 \n\t"
153 "ldins.b %0:t, %4 \n\t"
155 :
"m" (* (
const uint8_t*)p),
156 "RKs12"(*((
const uint8_t*)p+1)),
157 "RKs12"(*((
const uint8_t*)p+2)),
158 "RKs12"(*((
const uint8_t*)p+3)));
164 #define AV_RB64 AV_RB64
167 union { uint64_t v; uint32_t hl[2]; } v;
169 v.hl[1] =
AV_RB32((
const uint32_t*)p+1);
173 #define AV_RL64 AV_RL64
176 union { uint64_t v; uint32_t hl[2]; } v;
178 v.hl[0] =
AV_RL32((
const uint32_t*)p+1);