attempt at cleaning up mut.c a bit
This commit is contained in:
parent
56e4863f66
commit
88c19cedec
126
src/utils/mut.c
126
src/utils/mut.c
@ -273,76 +273,72 @@ DEF_G(void, copy, B, (void* a, usz ms, B x, usz xs, usz l), ms, x, x
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define COPY_FN(X,R) simd_copy_##X##_##R
|
#define COPY_FN(X,R) simd_copy_##X##_##R
|
||||||
#define MAKE_CPY(TY, MAKE, GET, WR, XRP, H2T, T, ...) \
|
#define MAKE_CPY(TY, MAKE, GET, WR, XRP, H2T, E, N, ...) \
|
||||||
static copy_fn copy##T##Fns[10]; \
|
static copy_fn copy0_##E##_fns[10]; \
|
||||||
NOINLINE void cpy##T##Arr_BF(void* xp, void* rp, u64 ia, Arr* xa) { \
|
NOINLINE void cpy##N##Arr_BF(void* xp, void* rp, u64 ia, Arr* xa) { \
|
||||||
AS2B fn = TIv(xa,GET); \
|
AS2B fn = TIv(xa,GET); \
|
||||||
for (usz i=0; i<ia; i++) WR(fn(xa,i)); \
|
for (usz i=0; i<ia; i++) WR(fn(xa,i)); \
|
||||||
} \
|
} \
|
||||||
static void cpy##T##Arr_B(void* xp, void* rp, u64 ia, void* xRaw) { \
|
static void cpy##N##Arr_B(void* xp, void* rp, u64 ia, void* xRaw) { \
|
||||||
Arr* xa = (Arr*)xRaw; B* bxp = arrV_bptr(xa); \
|
Arr* xa = (Arr*)xRaw; B* bxp = arrV_bptr(xa); \
|
||||||
if (bxp!=NULL && sizeof(B)==sizeof(f64)) H2T; \
|
if (bxp!=NULL && sizeof(B)==sizeof(f64)) H2T; \
|
||||||
else cpy##T##Arr_BF(xp, rp, ia, xa); \
|
else cpy##N##Arr_BF(xp, rp, ia, xa); \
|
||||||
} \
|
} \
|
||||||
static copy_fn copy##T##Fns[] = __VA_ARGS__; \
|
static copy_fn copy0_##E##_fns[] = __VA_ARGS__; \
|
||||||
Arr* cpy##T##Arr(B x) { \
|
Arr* cpy##N##Arr(B x) { \
|
||||||
usz ia = IA(x); \
|
usz ia = IA(x); \
|
||||||
MAKE; arr_shCopy(r, x); \
|
MAKE; arr_shCopy(r, x); \
|
||||||
if (ia>0) { \
|
if (ia>0) { \
|
||||||
copy##T##Fns[TI(x,elType)](tyany_ptr(x), XRP, ia, a(x)); \
|
copy0_##E##_fns[TI(x,elType)](tyany_ptr(x), XRP, ia, a(x)); \
|
||||||
} \
|
} \
|
||||||
if (TY) ptr_decT(a(x)); \
|
if (TY) ptr_decT(a(x)); \
|
||||||
else decG(x); \
|
else decG(x); \
|
||||||
NOGC_E; return (Arr*)r; \
|
NOGC_E; return (Arr*)r; \
|
||||||
}
|
}
|
||||||
#define BIT_PUT(V) bitp_set((u64*)rp, i, o2bG(V))
|
#define BIT_PUT(V) bitp_set((u64*)rp, i, o2bG(V))
|
||||||
#define H2T_COPY(T) copy##T##Fns[el_MAX](bxp, rp, ia, xRaw)
|
#define H2T_COPY(E) copy0_##E##_fns[el_MAX](bxp, rp, ia, xRaw)
|
||||||
#define MAKE_TYCPY(T, E, F, ...) MAKE_CPY(1, T##Atom* rp; Arr* r = m_##E##arrp(&rp, ia), getU, ((T##Atom*)rp)[i] = F, rp, H2T_COPY(T), T, __VA_ARGS__)
|
#define MAKE_TYCPY(T, E, F, ...) MAKE_CPY(1, T##Atom* rp; Arr* r = m_##E##arrp(&rp, ia), getU, ((T##Atom*)rp)[i] = F, rp, H2T_COPY(E), E, T, __VA_ARGS__)
|
||||||
#define MAKE_CCPY(T,E) MAKE_TYCPY(T, E, o2cG, {badCopy, badCopy, badCopy, badCopy, badCopy, COPY_FN(c8,E),COPY_FN(c16,E),COPY_FN(c32,E),cpy##T##Arr_B,COPY_FN(B,E)})
|
#define MAKE_CCPY(T,E) MAKE_TYCPY(T, E, o2cG, {badCopy, badCopy, badCopy, badCopy, badCopy, COPY_FN(c8,E),COPY_FN(c16,E),COPY_FN(c32,E),cpy##T##Arr_B,COPY_FN(B,E)})
|
||||||
#define MAKE_ICPY(T,E) MAKE_TYCPY(T, E, o2fG, {COPY_FN(1,E),COPY_FN(i8,E),COPY_FN(i16,E),COPY_FN(i32,E),COPY_FN(f64,E),badCopy, badCopy, badCopy, cpy##T##Arr_B,COPY_FN(f64,E)})
|
#define MAKE_ICPY(T,E) MAKE_TYCPY(T, E, o2fG, {COPY_FN(1,E),COPY_FN(i8,E),COPY_FN(i16,E),COPY_FN(i32,E),COPY_FN(f64,E),badCopy, badCopy, badCopy, cpy##T##Arr_B,COPY_FN(f64,E)})
|
||||||
MAKE_CPY(0, HArr_p p = m_harrUp(ia); Arr* r = (Arr*)p.c, get, ((B*)rp)[i] =, p.a, for (usz i=0; i<ia; i++) ((B*)rp)[i] = inc(bxp[i]),
|
MAKE_CPY(0, HArr_p p = m_harrUp(ia); Arr* r = (Arr*)p.c, get, ((B*)rp)[i] =, p.a, for (usz i=0; i<ia; i++) ((B*)rp)[i] = inc(bxp[i]),
|
||||||
H, {COPY_FN(1,B),COPY_FN(i8,B),COPY_FN(i16,B),COPY_FN(i32,B),COPY_FN(f64,B),COPY_FN(c8,B),COPY_FN(c16,B),COPY_FN(c32,B),cpyHArr_B, COPY_FN(f64,B)})
|
B, H, {COPY_FN(1,B),COPY_FN(i8,B),COPY_FN(i16,B),COPY_FN(i32,B),COPY_FN(f64,B),COPY_FN(c8,B),COPY_FN(c16,B),COPY_FN(c32,B),cpyHArr_B, COPY_FN(f64,B)})
|
||||||
MAKE_CPY(1, u64* rp; Arr* r = m_bitarrp(&rp, ia), getU, BIT_PUT, rp, H2T_COPY(Bit),
|
MAKE_CPY(1, u64* rp; Arr* r = m_bitarrp(&rp, ia), getU, BIT_PUT, rp, H2T_COPY(bit),
|
||||||
Bit, {COPY_FN(1,1),COPY_FN(i8,1),COPY_FN(i16,1),COPY_FN(i32,1),COPY_FN(f64,1),badCopy, badCopy, badCopy, cpyBitArr_B, COPY_FN(f64,1)})
|
bit, Bit, {COPY_FN(1,1),COPY_FN(i8,1),COPY_FN(i16,1),COPY_FN(i32,1),COPY_FN(f64,1),badCopy, badCopy, badCopy, cpyBitArr_B, COPY_FN(f64,1)})
|
||||||
|
|
||||||
|
|
||||||
copy_fn tcopy_i8Fns [] = {[t_bitarr]=simd_copy_1u_i8, [t_i8arr]=simd_copy_i8_i8 ,[t_i8slice]=simd_copy_i8_i8};
|
copy_fn tcopy_i8_fns [] = {[t_bitarr]=simd_copy_1u_i8, [t_i8arr]=simd_copy_i8_i8 ,[t_i8slice]=simd_copy_i8_i8};
|
||||||
copy_fn tcopy_i16Fns[] = {[t_bitarr]=simd_copy_1u_i16, [t_i8arr]=simd_copy_i8_i16,[t_i8slice]=simd_copy_i8_i16, [t_i16arr]=simd_copy_i16_i16,[t_i16slice]=simd_copy_i16_i16};
|
copy_fn tcopy_i16_fns[] = {[t_bitarr]=simd_copy_1u_i16, [t_i8arr]=simd_copy_i8_i16,[t_i8slice]=simd_copy_i8_i16, [t_i16arr]=simd_copy_i16_i16,[t_i16slice]=simd_copy_i16_i16};
|
||||||
copy_fn tcopy_i32Fns[] = {[t_bitarr]=simd_copy_1u_i32, [t_i8arr]=simd_copy_i8_i32,[t_i8slice]=simd_copy_i8_i32, [t_i16arr]=simd_copy_i16_i32,[t_i16slice]=simd_copy_i16_i32, [t_i32arr]=simd_copy_i32_i32,[t_i32slice]=simd_copy_i32_i32};
|
copy_fn tcopy_i32_fns[] = {[t_bitarr]=simd_copy_1u_i32, [t_i8arr]=simd_copy_i8_i32,[t_i8slice]=simd_copy_i8_i32, [t_i16arr]=simd_copy_i16_i32,[t_i16slice]=simd_copy_i16_i32, [t_i32arr]=simd_copy_i32_i32,[t_i32slice]=simd_copy_i32_i32};
|
||||||
copy_fn tcopy_f64Fns[] = {[t_bitarr]=simd_copy_1u_f64, [t_i8arr]=simd_copy_i8_f64,[t_i8slice]=simd_copy_i8_f64, [t_i16arr]=simd_copy_i16_f64,[t_i16slice]=simd_copy_i16_f64, [t_i32arr]=simd_copy_i32_f64,[t_i32slice]=simd_copy_i32_f64, [t_f64arr]=simd_copy_f64_f64,[t_f64slice]=simd_copy_f64_f64};
|
copy_fn tcopy_f64_fns[] = {[t_bitarr]=simd_copy_1u_f64, [t_i8arr]=simd_copy_i8_f64,[t_i8slice]=simd_copy_i8_f64, [t_i16arr]=simd_copy_i16_f64,[t_i16slice]=simd_copy_i16_f64, [t_i32arr]=simd_copy_i32_f64,[t_i32slice]=simd_copy_i32_f64, [t_f64arr]=simd_copy_f64_f64,[t_f64slice]=simd_copy_f64_f64};
|
||||||
copy_fn tcopy_c8Fns [] = {[t_c8arr]=simd_copy_c8_c8 ,[t_c8slice]=simd_copy_c8_c8};
|
copy_fn tcopy_c8_fns [] = {[t_c8arr]=simd_copy_c8_c8 ,[t_c8slice]=simd_copy_c8_c8};
|
||||||
copy_fn tcopy_c16Fns[] = {[t_c8arr]=simd_copy_c8_c16,[t_c8slice]=simd_copy_c8_c16, [t_c16arr]=simd_copy_c16_c16,[t_c16slice]=simd_copy_c16_c16};
|
copy_fn tcopy_c16_fns[] = {[t_c8arr]=simd_copy_c8_c16,[t_c8slice]=simd_copy_c8_c16, [t_c16arr]=simd_copy_c16_c16,[t_c16slice]=simd_copy_c16_c16};
|
||||||
copy_fn tcopy_c32Fns[] = {[t_c8arr]=simd_copy_c8_c32,[t_c8slice]=simd_copy_c8_c32, [t_c16arr]=simd_copy_c16_c32,[t_c16slice]=simd_copy_c16_c32, [t_c32arr]=simd_copy_c32_c32,[t_c32slice]=simd_copy_c32_c32};
|
copy_fn tcopy_c32_fns[] = {[t_c8arr]=simd_copy_c8_c32,[t_c8slice]=simd_copy_c8_c32, [t_c16arr]=simd_copy_c16_c32,[t_c16slice]=simd_copy_c16_c32, [t_c32arr]=simd_copy_c32_c32,[t_c32slice]=simd_copy_c32_c32};
|
||||||
|
|
||||||
#define TCOPY_FN(T, N, NUM) static void m_copyG_##N(void* a, usz ms, B x, usz xs, usz l) { \
|
#define COPY_FNS(E, NUM) \
|
||||||
|
static void m_copyG_##E(void* a, usz ms, B x, usz xs, usz l) { \
|
||||||
if (l==0) return; \
|
if (l==0) return; \
|
||||||
void* xp = tyany_ptr(x); \
|
|
||||||
u8 xt = TY(x); \
|
u8 xt = TY(x); \
|
||||||
tcopy_##N##Fns[xt]((xs << arrTypeWidthLog(xt)) + (u8*)xp, ms + (T*)a, l, a(x)); \
|
u8* xp = tyany_ptr(x); \
|
||||||
}
|
tcopy_##E##_fns[xt]((xs << arrTypeWidthLog(xt)) + xp, ms + (E*)a, l, a(x)); \
|
||||||
TCOPY_FN(i8,i8, 1)
|
} \
|
||||||
TCOPY_FN(i16,i16, 1)
|
FORCE_INLINE void copy0_##E(void* a, usz ms, B x, u8 xe, usz l) { copy0_##E##_fns[xe](tyany_ptr(x), ms+(E*)a, l, a(x)); }
|
||||||
TCOPY_FN(i32,i32, 1)
|
|
||||||
TCOPY_FN(u8,c8, 0)
|
|
||||||
TCOPY_FN(u16,c16, 0)
|
|
||||||
TCOPY_FN(u32,c32, 0)
|
|
||||||
TCOPY_FN(f64,f64, 1)
|
|
||||||
static void m_copyG_bit(void* a, usz ms, B x, usz xs, usz l) {
|
|
||||||
bit_cpyN((u64*)a, ms, bitarr_ptr(x), xs, l);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define F(N,E,T) static copy_fn copy##N##Fns[]; FORCE_INLINE void copy2_##E(void* a, usz ms, B x, u8 xe, usz l) { copy##N##Fns[xe](tyany_ptr(x), ms+(T*)a, l, a(x)); }
|
MAKE_ICPY(I8 , i8) COPY_FNS(i8, 1)
|
||||||
F(I8, i8, i8) F(C8, c8, u8)
|
MAKE_ICPY(I16, i16) COPY_FNS(i16, 1)
|
||||||
F(I16,i16,i16) F(C16,c16,u16)
|
MAKE_ICPY(I32, i32) COPY_FNS(i32, 1)
|
||||||
F(I32,i32,i32) F(C32,c32,u32)
|
MAKE_ICPY(F64, f64) COPY_FNS(f64, 1)
|
||||||
F(F64,f64,f64)
|
MAKE_CCPY(C8, c8) COPY_FNS(c8, 0)
|
||||||
#undef F
|
MAKE_CCPY(C16, c16) COPY_FNS(c16, 0)
|
||||||
FORCE_INLINE void copy2_bit(void* a, usz ms, B x, u8 xe, usz l) { m_copyG_bit(a, ms, x, 0, l); }
|
MAKE_CCPY(C32, c32) COPY_FNS(c32, 0)
|
||||||
FORCE_INLINE void copy2_B(void* a, usz ms, B x, u8 xe, usz l) { m_copyG_B(a, ms, x, 0, l); }
|
static void m_copyG_bit(void* a, usz ms, B x, usz xs, usz l) { bit_cpyN((u64*)a, ms, bitarr_ptr(x), xs, l); }
|
||||||
#define COPY_TO_2(WHERE, RE, MS, X, XE, LEN) copy2_##RE(WHERE, MS, X, XE, LEN) // assumptions: x fits; LEN≠0
|
FORCE_INLINE void copy0_bit(void* a, usz ms, B x, u8 xe, usz l) { m_copyG_bit(a, ms, x, 0, l); }
|
||||||
|
FORCE_INLINE void copy0_B (void* a, usz ms, B x, u8 xe, usz l) { m_copyG_B (a, ms, x, 0, l); }
|
||||||
|
#define COPY0_TO(WHERE, RE, MS, X, XE, LEN) copy0_##RE(WHERE, MS, X, XE, LEN) // assumptions: x fits; LEN≠0
|
||||||
|
#undef COPY_FNS
|
||||||
|
#undef COPY_FN
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define COPY_TO_2(WHERE, RE, MS, X, XE, LEN) copyFns[el_##RE](WHERE, MS, X, 0, LEN)
|
#define COPY0_TO(WHERE, RE, MS, X, XE, LEN) copyFns[el_##RE](WHERE, MS, X, 0, LEN)
|
||||||
|
|
||||||
#define MAKE_ICPY(T,E) Arr* cpy##T##Arr(B x) { \
|
#define MAKE_ICPY(T,E) Arr* cpy##T##Arr(B x) { \
|
||||||
usz ia = IA(x); \
|
usz ia = IA(x); \
|
||||||
@ -420,24 +416,12 @@ DEF_G(void, copy, B, (void* a, usz ms, B x, usz xs, usz l), ms, x, x
|
|||||||
ptr_decT(a(x));
|
ptr_decT(a(x));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
MAKE_ICPY(I8 , i8) MAKE_CCPY(C8, c8)
|
||||||
|
MAKE_ICPY(I16, i16) MAKE_CCPY(C16, c16)
|
||||||
|
MAKE_ICPY(I32, i32) MAKE_CCPY(C32, c32)
|
||||||
|
MAKE_ICPY(F64, f64)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MAKE_ICPY(I8, i8)
|
|
||||||
MAKE_ICPY(I16, i16)
|
|
||||||
MAKE_ICPY(I32, i32)
|
|
||||||
MAKE_ICPY(F64, f64)
|
|
||||||
|
|
||||||
MAKE_CCPY(C8, c8)
|
|
||||||
MAKE_CCPY(C16, c16)
|
|
||||||
MAKE_CCPY(C32, c32)
|
|
||||||
#undef BIT_PUT
|
|
||||||
#undef MAKE_CCPY
|
|
||||||
#undef MAKE_ICPY
|
|
||||||
#undef MAKE_CPY
|
|
||||||
#undef COPY_FN
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static B m_getU_MAX(void* a, usz ms) { err("m_setG_MAX"); }
|
static B m_getU_MAX(void* a, usz ms) { err("m_setG_MAX"); }
|
||||||
static B m_getU_bit(void* a, usz ms) { return m_i32(bitp_get(((u64*) a), ms)); }
|
static B m_getU_bit(void* a, usz ms) { return m_i32(bitp_get(((u64*) a), ms)); }
|
||||||
@ -505,35 +489,35 @@ ApdFn* apd_tot_fns[]; ApdFn* apd_sh0_fns[]; ApdFn* apd_sh1_fns[]; ApdFn* apd_
|
|||||||
if (RARE(!(TARR))) APD_WIDEN(TY); \
|
if (RARE(!(TARR))) APD_WIDEN(TY); \
|
||||||
APD_OR_FILL(FEB, x); \
|
APD_OR_FILL(FEB, x); \
|
||||||
usz p0 = APD_POS(EB); APD_POS(EB) = p0+cia; \
|
usz p0 = APD_POS(EB); APD_POS(EB) = p0+cia; \
|
||||||
COPY_TO_2(m->a, E, p0, x, xe, cia); \
|
COPY0_TO(m->a, E, p0, x, xe, cia); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define APD_SH1_CHK(N) if (RARE(isAtm(x) || RNK(x)!=1 || cia!=IA(x) )) { apd_sh_fail(m,x,N); return; }
|
#define APD_SH1_CHK(N) if (RARE(isAtm(x) || RNK(x)!=1 || cia!=IA(x) )) { apd_sh_fail(m,x,N); return; }
|
||||||
#define APD_SHH_CHK(N) if (RARE(isAtm(x) || RNK(x)!=m->cr || !eqShPart(m->csh, SH(x), m->cr))) { apd_sh_fail(m,x,N); return; }
|
#define APD_SHH_CHK(N) if (RARE(isAtm(x) || RNK(x)!=m->cr || !eqShPart(m->csh, SH(x), m->cr))) { apd_sh_fail(m,x,N); return; }
|
||||||
#define APD_WATOM(N, EB, TATOM, WATOM) \
|
#define APD_WATOM(N, EB, E, WATOM) \
|
||||||
if (RARE(!TATOM)) APD_WIDEN(N); \
|
if (RARE(!q_##E(x))) APD_WIDEN(N); \
|
||||||
usz p0 = APD_POS(EB); \
|
usz p0 = APD_POS(EB); \
|
||||||
APD_POS(EB) = p0+1; \
|
APD_POS(EB) = p0+1; \
|
||||||
void* a = m->a; WATOM;
|
void* a = m->a; WATOM;
|
||||||
|
|
||||||
#define APD_MK(E, EB, WATOM, TATOM, TARR) \
|
#define APD_MK(E, EB, WATOM, TARR) \
|
||||||
APD_MK0(E, EB, EB, sh1, TARR, m->cia, , APD_SH1_CHK(1)) \
|
APD_MK0(E, EB, EB, sh1, TARR, m->cia, , APD_SH1_CHK(1)) \
|
||||||
APD_MK0(E, EB, EB, sh2, TARR, m->cia, , assert(m->cr>=2); APD_SHH_CHK(2)) \
|
APD_MK0(E, EB, EB, sh2, TARR, m->cia, , assert(m->cr>=2); APD_SHH_CHK(2)) \
|
||||||
APD_MK0(E, 0, EB, tot, TARR, IA(x), if (isAtm(x)) { APD_WATOM(tot, EB, TATOM, WATOM); return; }, if (cia==0) return; ) \
|
APD_MK0(E, 0, EB, tot, TARR, IA(x), if (isAtm(x)) { APD_WATOM(tot, EB, E, WATOM); return; }, if (cia==0) return; ) \
|
||||||
NOINLINE void apd_sh0_##E(ApdMut* m, B x) { \
|
NOINLINE void apd_sh0_##E(ApdMut* m, B x) { \
|
||||||
APD_OR_FILL(EB, x); \
|
APD_OR_FILL(EB, x); \
|
||||||
if (isArr(x)) { \
|
if (isArr(x)) { \
|
||||||
if (RARE(RNK(x)!=0)) { apd_sh_fail(m,x,0); return; } \
|
if (RARE(RNK(x)!=0)) { apd_sh_fail(m,x,0); return; } \
|
||||||
x = IGetU(x,0); \
|
x = IGetU(x,0); \
|
||||||
} \
|
} \
|
||||||
APD_WATOM(sh0, EB, TATOM, WATOM); \
|
APD_WATOM(sh0, EB, E, WATOM); \
|
||||||
}
|
}
|
||||||
|
|
||||||
APD_MK(bit, 0, bitp_set((u64*)a,p0,o2bG(x)), q_bit(x), xe==el_bit)
|
APD_MK(bit, 0, bitp_set((u64*)a,p0,o2bG(x)), xe==el_bit)
|
||||||
APD_MK(i8, 0, ((i8 *)a)[p0]=o2iG(x), q_i8(x), xe<=el_i8 ) APD_MK(c8, 0, ((u8 *)a)[p0]=o2cG(x), q_c8(x), xe==el_c8)
|
APD_MK(i8, 0, ((i8 *)a)[p0]=o2iG(x), xe<=el_i8 ) APD_MK(c8, 0, ((u8 *)a)[p0]=o2cG(x), xe==el_c8)
|
||||||
APD_MK(i16, 0, ((i16*)a)[p0]=o2iG(x), q_i16(x), xe<=el_i16) APD_MK(c16, 0, ((u16*)a)[p0]=o2cG(x), q_c16(x), xe>=el_c8 && xe<=el_c16)
|
APD_MK(i16, 0, ((i16*)a)[p0]=o2iG(x), xe<=el_i16) APD_MK(c16, 0, ((u16*)a)[p0]=o2cG(x), xe>=el_c8 && xe<=el_c16)
|
||||||
APD_MK(i32, 0, ((i32*)a)[p0]=o2iG(x), q_i32(x), xe<=el_i32) APD_MK(c32, 0, ((u32*)a)[p0]=o2cG(x), q_c32(x), xe>=el_c8 && xe<=el_c32)
|
APD_MK(i32, 0, ((i32*)a)[p0]=o2iG(x), xe<=el_i32) APD_MK(c32, 0, ((u32*)a)[p0]=o2cG(x), xe>=el_c8 && xe<=el_c32)
|
||||||
APD_MK(f64, 0, ((f64*)a)[p0]=o2fG(x), q_f64(x), xe<=el_f64) APD_MK(B, 1, ((B*)a)[p0]=inc(x);, 1, 1)
|
APD_MK(f64, 0, ((f64*)a)[p0]=o2fG(x), xe<=el_f64) APD_MK(B, 1, ((B*)a)[p0]=inc(x);, 1)
|
||||||
#undef APD_MK
|
#undef APD_MK
|
||||||
|
|
||||||
NOINLINE void apd_shE_T(ApdMut* m, B x) { APD_SHH_CHK(2) }
|
NOINLINE void apd_shE_T(ApdMut* m, B x) { APD_SHH_CHK(2) }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user