+ //-------------------------------------------------------------------------
+ // KERNEL TIMING LOOP
+ //-------------------------------------------------------------------------
+ // Generate input data
+
+ for (int m = 0; m < numRB; ++m)
+ {
+ auto shiftVal = randExpShift(gen);
+ for (int n = 0; n < numDataElements; ++n)
+ {
+ DATAEXPANDED_IN[m * numDataElements + n] = int16_t(randInt16(gen) >> shiftVal);
+ }
+ }
+ // Generate reference
+ BlockFloatCompander::BFPCompressRef(expandedDataInput, &compressedDataRef);
+
+ if (runMode == 1)
+ {
+ // Run Sunny Cove version
+ switch (numDataElements)
+ {
+ case 16:
+ //std::cout << "Timing Control Plane 8 Antennas (SNC)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane8AvxSnc iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane8AvxSnc, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane8AvxSnc iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane8AvxSnc, compressedDataRef, &expandedDataKern);
+ break;
+ case 24:
+ //std::cout << "Timing User Plane (SNC)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressUserPlaneAvxSnc iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressUserPlaneAvxSnc, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandUserPlaneAvxSnc iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandUserPlaneAvxSnc, compressedDataRef, &expandedDataKern);
+ break;
+ case 32:
+ //std::cout << "Timing Control Plane 16 Antennas (SNC)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane16AvxSnc iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane16AvxSnc, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane16AvxSnc iqWidth %2d numRB %2d numDataElements %3d ", iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane16AvxSnc, compressedDataRef, &expandedDataKern);
+ break;
+ case 64:
+ //std::cout << "Timing Control Plane 32 Antennas (SNC)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane32AvxSnc iqWidth %2d numRB %2d numDataElements %3d ", iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane32AvxSnc, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane32AvxSnc iqWidth %2d numRB %2d numDataElements %3d ", iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane32AvxSnc, compressedDataRef, &expandedDataKern);
+ break;
+ case 128:
+ //std::cout << "Timing Control Plane 64 Antennas (SNC)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane64AvxSnc iqWidth %2d numRB %2d numDataElements %3d ", iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane64AvxSnc, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane64AvxSnc iqWidth %2d numRB %2d numDataElements %3d ", iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane64AvxSnc, compressedDataRef, &expandedDataKern);
+ break;
+ }
+ }
+ else
+ {
+ // Default Skylake/Palm Cove AVX512 version
+ switch (numDataElements)
+ {
+ case 16:
+ //std::cout << "Timing Control Plane 8 Antennas (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane8Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane8Avx512, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane8Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane8Avx512, compressedDataRef, &expandedDataKern);
+ break;
+ case 24:
+ if ((iqWidth == 9) && (numRB == 16))
+ {
+ //std::cout << "Timing User Plane (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressUserPlaneAvx512_9b16RB iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressUserPlaneAvx512_9b16RB, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandUserPlaneAvx512_9b16RB iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandUserPlaneAvx512_9b16RB, compressedDataRef, &expandedDataKern);
+ }
+ else
+ {
+ //std::cout << "Timing User Plane (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressUserPlaneAvx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressUserPlaneAvx512, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandUserPlaneAvx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandUserPlaneAvx512, compressedDataRef, &expandedDataKern);
+ }
+ break;
+ case 32:
+ //std::cout << "Timing Control Plane 16 Antennas (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane16Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane16Avx512, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane16Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane16Avx512, compressedDataRef, &expandedDataKern);
+ break;
+ case 64:
+ //std::cout << "Timing Control Plane 32 Antennas (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane32Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane32Avx512, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane32Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane32Avx512, compressedDataRef, &expandedDataKern);
+ break;
+ case 128:
+ //std::cout << "Timing Control Plane 64 Antennas (AVX512)...\n";
+ //std::cout << "Compression: ";
+ printf("BFPCompressCtrlPlane64Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPCompressCtrlPlane64Avx512, expandedDataInput, &compressedDataKern);
+ //std::cout << "Expansion : ";
+ printf("BFPExpandCtrlPlane64Avx512 iqWidth %2d numRB %2d numDataElements %3d ",iqWidth, numRB, numDataElements);
+ timeThis(BlockFloatCompander::BFPExpandCtrlPlane64Avx512, compressedDataRef, &expandedDataKern);
+ break;
+ }
+ }