changes to support 768-point DFT/IDFT, renaming of 768-point DFT for DFT-precoding (4 DFTs per call)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
oai_dfts_sse4: oai_dfts.c
|
||||
gcc-7 -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
|
||||
gcc -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
|
||||
|
||||
oai_dfts_avx2: oai_dfts.c
|
||||
gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
|
||||
|
||||
+127
-113
@@ -5962,6 +5962,124 @@ void idft32768(int16_t *x,int16_t *y,unsigned char scale)
|
||||
|
||||
|
||||
#endif
|
||||
int16_t twa768[512],twb768[512];
|
||||
|
||||
// 256 x 3
|
||||
void idft768(int16_t *input, int16_t *output, unsigned char scale)
|
||||
{
|
||||
int i,i2,j;
|
||||
uint32_t tmp[3][256]__attribute__((aligned(32)));
|
||||
uint32_t tmpo[3][256] __attribute__((aligned(32)));
|
||||
simd_q15_t *y128p=(simd_q15_t*)output;
|
||||
simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
|
||||
|
||||
for (i=0,j=0; i<256; i++) {
|
||||
tmp[0][i] = ((uint32_t *)input)[j++];
|
||||
tmp[1][i] = ((uint32_t *)input)[j++];
|
||||
tmp[2][i] = ((uint32_t *)input)[j++];
|
||||
}
|
||||
|
||||
idft256((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
|
||||
idft256((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
|
||||
idft256((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
|
||||
|
||||
for (i=0,i2=0; i<512; i+=8,i2+=4) {
|
||||
ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
|
||||
(simd_q15_t*)(output+i),(simd_q15_t*)(output+512+i),(simd_q15_t*)(output+1024+i),
|
||||
(simd_q15_t*)(twa768+i),(simd_q15_t*)(twb768+i));
|
||||
}
|
||||
|
||||
|
||||
if (scale==1) {
|
||||
for (i=0; i<12; i++) {
|
||||
y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p+=16;
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
}
|
||||
|
||||
void dft768(int16_t *input, int16_t *output, unsigned char scale)
|
||||
{
|
||||
int i,i2,j;
|
||||
uint32_t tmp[3][256] __attribute__((aligned(32)));
|
||||
uint32_t tmpo[3][256] __attribute__((aligned(32)));
|
||||
simd_q15_t *y128p=(simd_q15_t*)output;
|
||||
simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
|
||||
|
||||
for (i=0,j=0; i<256; i++) {
|
||||
tmp[0][i] = ((uint32_t *)input)[j++];
|
||||
tmp[1][i] = ((uint32_t *)input)[j++];
|
||||
tmp[2][i] = ((uint32_t *)input)[j++];
|
||||
}
|
||||
|
||||
dft256((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
|
||||
dft256((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
|
||||
dft256((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
|
||||
|
||||
/*
|
||||
for (i=1; i<512; i++) {
|
||||
tmpo[0][i] = tmpo[0][i<<1];
|
||||
tmpo[1][i] = tmpo[1][i<<1];
|
||||
tmpo[2][i] = tmpo[2][i<<1];
|
||||
}*/
|
||||
#ifndef MR_MAIN
|
||||
if (LOG_DUMPFLAG(DEBUG_DFT)) {
|
||||
LOG_M("dft768out0.m","o0",tmpo[0],1024,1,1);
|
||||
LOG_M("dft768out1.m","o1",tmpo[1],1024,1,1);
|
||||
LOG_M("dft768out2.m","o2",tmpo[2],1024,1,1);
|
||||
}
|
||||
#endif
|
||||
for (i=0,i2=0; i<512; i+=8,i2+=4) {
|
||||
bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
|
||||
(simd_q15_t*)(output+i),(simd_q15_t*)(output+512+i),(simd_q15_t*)(output+1024+i),
|
||||
(simd_q15_t*)(twa768+i),(simd_q15_t*)(twb768+i));
|
||||
}
|
||||
|
||||
if (scale==1) {
|
||||
for (i=0; i<12; i++) {
|
||||
y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p+=16;
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
}
|
||||
int16_t twa1536[1024],twb1536[1024];
|
||||
|
||||
// 512 x 3
|
||||
@@ -9054,19 +9172,18 @@ void dft720(int16_t *x,int16_t *y,unsigned char scale_flag) // 180 x 4
|
||||
|
||||
};
|
||||
|
||||
static int16_t twa768[191*2*4];
|
||||
static int16_t twb768[191*2*4];
|
||||
static int16_t twc768[191*2*4];
|
||||
static int16_t twa768p[191*2*4];
|
||||
static int16_t twb768p[191*2*4];
|
||||
static int16_t twc768p[191*2*4];
|
||||
|
||||
void dft768(int16_t *x,int16_t *y,unsigned char scale_flag) { // 192x 4;
|
||||
void dft768p(int16_t *x,int16_t *y,unsigned char scale_flag) { // 192x 4;
|
||||
|
||||
#if 0
|
||||
int i,j;
|
||||
simd_q15_t *x128=(simd_q15_t *)x;
|
||||
simd_q15_t *y128=(simd_q15_t *)y;
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa768[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb768[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc768[0];
|
||||
simd_q15_t *twa128=(simd_q15_t *)&twa768p[0];
|
||||
simd_q15_t *twb128=(simd_q15_t *)&twb768p[0];
|
||||
simd_q15_t *twc128=(simd_q15_t *)&twc768p[0];
|
||||
simd_q15_t x2128[768];// = (simd_q15_t *)&x2128array[0];
|
||||
simd_q15_t ytmp128[768];//=&ytmp128array2[0];
|
||||
|
||||
@@ -9110,56 +9227,6 @@ void dft768(int16_t *x,int16_t *y,unsigned char scale_flag) { // 192x 4;
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
#else
|
||||
|
||||
int i,i2,j;
|
||||
uint32_t tmp[3][256]__attribute__((aligned(32)));
|
||||
uint32_t tmpo[3][256] __attribute__((aligned(32)));
|
||||
simd_q15_t *y128p=(simd_q15_t*)y;
|
||||
simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
|
||||
|
||||
for (i=0,j=0; i<256; i++) {
|
||||
tmp[0][i] = ((uint32_t *)x)[j++];
|
||||
tmp[1][i] = ((uint32_t *)x)[j++];
|
||||
tmp[2][i] = ((uint32_t *)x)[j++];
|
||||
}
|
||||
|
||||
dft256((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
|
||||
dft256((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
|
||||
dft256((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
|
||||
|
||||
for (i=0,i2=0; i<512; i+=8,i2+=4) {
|
||||
bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
|
||||
(simd_q15_t*)(y+i),(simd_q15_t*)(y+512+i),(simd_q15_t*)(y+1024+i),
|
||||
(simd_q15_t*)(twa768+i),(simd_q15_t*)(twb768+i));
|
||||
}
|
||||
|
||||
|
||||
if (scale_flag==1) {
|
||||
for (i=0; i<12; i++) {
|
||||
y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p+=16;
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -9220,59 +9287,6 @@ void idft384(int16_t *input, int16_t *output, unsigned char scale)
|
||||
|
||||
|
||||
|
||||
// 256 x 3
|
||||
void idft768(int16_t *input, int16_t *output, unsigned char scale)
|
||||
{
|
||||
int i,i2,j;
|
||||
uint32_t tmp[3][256]__attribute__((aligned(32)));
|
||||
uint32_t tmpo[3][256] __attribute__((aligned(32)));
|
||||
simd_q15_t *y128p=(simd_q15_t*)output;
|
||||
simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
|
||||
|
||||
for (i=0,j=0; i<256; i++) {
|
||||
tmp[0][i] = ((uint32_t *)input)[j++];
|
||||
tmp[1][i] = ((uint32_t *)input)[j++];
|
||||
tmp[2][i] = ((uint32_t *)input)[j++];
|
||||
}
|
||||
|
||||
idft256((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
|
||||
idft256((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
|
||||
idft256((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
|
||||
|
||||
for (i=0,i2=0; i<512; i+=8,i2+=4) {
|
||||
ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
|
||||
(simd_q15_t*)(output+i),(simd_q15_t*)(output+512+i),(simd_q15_t*)(output+1024+i),
|
||||
(simd_q15_t*)(twa768+i),(simd_q15_t*)(twb768+i));
|
||||
}
|
||||
|
||||
|
||||
if (scale==1) {
|
||||
for (i=0; i<12; i++) {
|
||||
y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
|
||||
y128p+=16;
|
||||
}
|
||||
}
|
||||
|
||||
_mm_empty();
|
||||
_m_empty();
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int16_t twa864[287*2*4];
|
||||
static int16_t twb864[287*2*4];
|
||||
@@ -10698,6 +10712,7 @@ int dfts_autoinit(void)
|
||||
init_rad4(16384,tw16384);
|
||||
init_rad2(32768,tw32768);
|
||||
|
||||
init_rad3(768,twa768,twb768);
|
||||
init_rad3(1536,twa1536,twb1536);
|
||||
init_rad3(3072,twa3072,twb3072);
|
||||
init_rad3(6144,twa6144,twb6144);
|
||||
@@ -10735,8 +10750,7 @@ int dfts_autoinit(void)
|
||||
init_rad2_rep(600,twa600);
|
||||
init_rad3_rep(648,twa648,twb648);
|
||||
init_rad4_rep(720,twa720,twb720,twc720);
|
||||
//init_rad4_rep(768,twa768,twb768,twc768);
|
||||
init_rad3_rep(768,twa768,twb768);
|
||||
init_rad4_rep(768,twa768p,twb768p,twc768p);
|
||||
init_rad3_rep(864,twa864,twb864);
|
||||
init_rad3_rep(900,twa900,twb900);
|
||||
init_rad4_rep(960,twa960,twb960,twc960);
|
||||
|
||||
@@ -218,6 +218,7 @@ void dft600(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft648(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft720(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft768(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft768p(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft864(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft900(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
void dft960(int16_t *x,int16_t *y,uint8_t scale_flag);
|
||||
@@ -301,7 +302,7 @@ typedef enum DFT_size_idx {
|
||||
DFT_12, DFT_24, DFT_36, DFT_48, DFT_60, DFT_72, DFT_96,
|
||||
DFT_108, DFT_120, DFT_128, DFT_144, DFT_180, DFT_192, DFT_216, DFT_240,
|
||||
DFT_256, DFT_288, DFT_300, DFT_324, DFT_360, DFT_384, DFT_432, DFT_480,
|
||||
DFT_512, DFT_540, DFT_576, DFT_600, DFT_648, DFT_720, DFT_768, DFT_864,
|
||||
DFT_512, DFT_540, DFT_576, DFT_600, DFT_648, DFT_720, DFT_768, DFT_768P, DFT_864,
|
||||
DFT_900, DFT_960, DFT_972, DFT_1024, DFT_1080, DFT_1152, DFT_1200, DFT_1296,
|
||||
DFT_1440, DFT_1500, DFT_1536, DFT_1620, DFT_1728, DFT_1800, DFT_1920, DFT_1944,
|
||||
DFT_2048, DFT_2160, DFT_2304, DFT_2400, DFT_2592, DFT_2700, DFT_2880, DFT_2916,
|
||||
@@ -315,7 +316,7 @@ adftfunc_t dft_ftab[]={
|
||||
dft12, dft24, dft36, dft48, dft60, dft72, dft96,
|
||||
dft108, dft120, dft128, dft144, dft180, dft192, dft216, dft240,
|
||||
dft256, dft288, dft300, dft324, dft360, dft384, dft432, dft480,
|
||||
dft512, dft540, dft576, dft600, dft648, dft720, dft768, dft864,
|
||||
dft512, dft540, dft576, dft600, dft648, dft720, dft768, dft768p, dft864,
|
||||
dft900, dft960, dft972, dft1024, dft1080, dft1152, dft1200, dft1296,
|
||||
dft1440, dft1500, dft1536, dft1620, dft1728, dft1800, dft1920, dft1944,
|
||||
dft2048, dft2160, dft2304, dft2400, dft2592, dft2700, dft2880, dft2916,
|
||||
|
||||
Reference in New Issue
Block a user