basic-handsum-decode: roll upsample_from to loops
diff --git a/snippet/basic-handsum-decode.c b/snippet/basic-handsum-decode.c index 830d375..2397202 100644 --- a/snippet/basic-handsum-decode.c +++ b/snippet/basic-handsum-decode.c
@@ -323,266 +323,25 @@ static void // basic_handsum_decode__upsample_from(uint8_t* restrict dst, const uint8_t* restrict src) { - // clang-format off + // dst is 16x16, src is 8x8. + for (int y = 0; y < 16; y++) { + // sy is: 0, +8, -8, +8, -8, ..., +8, -8, 0. + int sy = ((y == 0) || (y == 15)) ? 0 : ((y & 1) * 16) - 8; - dst[0x00] = src[0x00]; - dst[0x01] = ((3 * (int)(src[0x00])) + (int)(src[0x01]) + 2) / 4; - dst[0x02] = ((3 * (int)(src[0x01])) + (int)(src[0x00]) + 2) / 4; - dst[0x03] = ((3 * (int)(src[0x01])) + (int)(src[0x02]) + 2) / 4; - dst[0x04] = ((3 * (int)(src[0x02])) + (int)(src[0x01]) + 2) / 4; - dst[0x05] = ((3 * (int)(src[0x02])) + (int)(src[0x03]) + 2) / 4; - dst[0x06] = ((3 * (int)(src[0x03])) + (int)(src[0x02]) + 2) / 4; - dst[0x07] = ((3 * (int)(src[0x03])) + (int)(src[0x04]) + 2) / 4; - dst[0x08] = ((3 * (int)(src[0x04])) + (int)(src[0x03]) + 2) / 4; - dst[0x09] = ((3 * (int)(src[0x04])) + (int)(src[0x05]) + 2) / 4; - dst[0x0A] = ((3 * (int)(src[0x05])) + (int)(src[0x04]) + 2) / 4; - dst[0x0B] = ((3 * (int)(src[0x05])) + (int)(src[0x06]) + 2) / 4; - dst[0x0C] = ((3 * (int)(src[0x06])) + (int)(src[0x05]) + 2) / 4; - dst[0x0D] = ((3 * (int)(src[0x06])) + (int)(src[0x07]) + 2) / 4; - dst[0x0E] = ((3 * (int)(src[0x07])) + (int)(src[0x06]) + 2) / 4; - dst[0x0F] = src[0x07]; - dst[0x10] = ((3 * (int)(src[0x00])) + (int)(src[0x08]) + 2) / 4; - dst[0x11] = ((9 * (int)(src[0x00])) + (3 * (int)(src[0x01])) + (3 * (int)(src[0x08])) + (int)(src[0x09]) + 8) / 16; - dst[0x12] = ((9 * (int)(src[0x01])) + (3 * (int)(src[0x00])) + (3 * (int)(src[0x09])) + (int)(src[0x08]) + 8) / 16; - dst[0x13] = ((9 * (int)(src[0x01])) + (3 * (int)(src[0x02])) + (3 * (int)(src[0x09])) + (int)(src[0x0A]) + 8) / 16; - dst[0x14] = ((9 * (int)(src[0x02])) + (3 * (int)(src[0x01])) + (3 * (int)(src[0x0A])) + (int)(src[0x09]) + 8) / 16; - dst[0x15] = ((9 * (int)(src[0x02])) + (3 * (int)(src[0x03])) + (3 * (int)(src[0x0A])) + (int)(src[0x0B]) + 8) / 16; - dst[0x16] = ((9 * (int)(src[0x03])) + (3 * (int)(src[0x02])) + (3 * (int)(src[0x0B])) + (int)(src[0x0A]) + 8) / 16; - dst[0x17] = ((9 * (int)(src[0x03])) + (3 * (int)(src[0x04])) + (3 * (int)(src[0x0B])) + (int)(src[0x0C]) + 8) / 16; - dst[0x18] = ((9 * (int)(src[0x04])) + (3 * (int)(src[0x03])) + (3 * (int)(src[0x0C])) + (int)(src[0x0B]) + 8) / 16; - dst[0x19] = ((9 * (int)(src[0x04])) + (3 * (int)(src[0x05])) + (3 * (int)(src[0x0C])) + (int)(src[0x0D]) + 8) / 16; - dst[0x1A] = ((9 * (int)(src[0x05])) + (3 * (int)(src[0x04])) + (3 * (int)(src[0x0D])) + (int)(src[0x0C]) + 8) / 16; - dst[0x1B] = ((9 * (int)(src[0x05])) + (3 * (int)(src[0x06])) + (3 * (int)(src[0x0D])) + (int)(src[0x0E]) + 8) / 16; - dst[0x1C] = ((9 * (int)(src[0x06])) + (3 * (int)(src[0x05])) + (3 * (int)(src[0x0E])) + (int)(src[0x0D]) + 8) / 16; - dst[0x1D] = ((9 * (int)(src[0x06])) + (3 * (int)(src[0x07])) + (3 * (int)(src[0x0E])) + (int)(src[0x0F]) + 8) / 16; - dst[0x1E] = ((9 * (int)(src[0x07])) + (3 * (int)(src[0x06])) + (3 * (int)(src[0x0F])) + (int)(src[0x0E]) + 8) / 16; - dst[0x1F] = ((3 * (int)(src[0x07])) + (int)(src[0x0F]) + 2) / 4; - dst[0x20] = ((3 * (int)(src[0x08])) + (int)(src[0x00]) + 2) / 4; - dst[0x21] = ((9 * (int)(src[0x08])) + (3 * (int)(src[0x09])) + (3 * (int)(src[0x00])) + (int)(src[0x01]) + 8) / 16; - dst[0x22] = ((9 * (int)(src[0x09])) + (3 * (int)(src[0x08])) + (3 * (int)(src[0x01])) + (int)(src[0x00]) + 8) / 16; - dst[0x23] = ((9 * (int)(src[0x09])) + (3 * (int)(src[0x0A])) + (3 * (int)(src[0x01])) + (int)(src[0x02]) + 8) / 16; - dst[0x24] = ((9 * (int)(src[0x0A])) + (3 * (int)(src[0x09])) + (3 * (int)(src[0x02])) + (int)(src[0x01]) + 8) / 16; - dst[0x25] = ((9 * (int)(src[0x0A])) + (3 * (int)(src[0x0B])) + (3 * (int)(src[0x02])) + (int)(src[0x03]) + 8) / 16; - dst[0x26] = ((9 * (int)(src[0x0B])) + (3 * (int)(src[0x0A])) + (3 * (int)(src[0x03])) + (int)(src[0x02]) + 8) / 16; - dst[0x27] = ((9 * (int)(src[0x0B])) + (3 * (int)(src[0x0C])) + (3 * (int)(src[0x03])) + (int)(src[0x04]) + 8) / 16; - dst[0x28] = ((9 * (int)(src[0x0C])) + (3 * (int)(src[0x0B])) + (3 * (int)(src[0x04])) + (int)(src[0x03]) + 8) / 16; - dst[0x29] = ((9 * (int)(src[0x0C])) + (3 * (int)(src[0x0D])) + (3 * (int)(src[0x04])) + (int)(src[0x05]) + 8) / 16; - dst[0x2A] = ((9 * (int)(src[0x0D])) + (3 * (int)(src[0x0C])) + (3 * (int)(src[0x05])) + (int)(src[0x04]) + 8) / 16; - dst[0x2B] = ((9 * (int)(src[0x0D])) + (3 * (int)(src[0x0E])) + (3 * (int)(src[0x05])) + (int)(src[0x06]) + 8) / 16; - dst[0x2C] = ((9 * (int)(src[0x0E])) + (3 * (int)(src[0x0D])) + (3 * (int)(src[0x06])) + (int)(src[0x05]) + 8) / 16; - dst[0x2D] = ((9 * (int)(src[0x0E])) + (3 * (int)(src[0x0F])) + (3 * (int)(src[0x06])) + (int)(src[0x07]) + 8) / 16; - dst[0x2E] = ((9 * (int)(src[0x0F])) + (3 * (int)(src[0x0E])) + (3 * (int)(src[0x07])) + (int)(src[0x06]) + 8) / 16; - dst[0x2F] = ((3 * (int)(src[0x0F])) + (int)(src[0x07]) + 2) / 4; - dst[0x30] = ((3 * (int)(src[0x08])) + (int)(src[0x10]) + 2) / 4; - dst[0x31] = ((9 * (int)(src[0x08])) + (3 * (int)(src[0x09])) + (3 * (int)(src[0x10])) + (int)(src[0x11]) + 8) / 16; - dst[0x32] = ((9 * (int)(src[0x09])) + (3 * (int)(src[0x08])) + (3 * (int)(src[0x11])) + (int)(src[0x10]) + 8) / 16; - dst[0x33] = ((9 * (int)(src[0x09])) + (3 * (int)(src[0x0A])) + (3 * (int)(src[0x11])) + (int)(src[0x12]) + 8) / 16; - dst[0x34] = ((9 * (int)(src[0x0A])) + (3 * (int)(src[0x09])) + (3 * (int)(src[0x12])) + (int)(src[0x11]) + 8) / 16; - dst[0x35] = ((9 * (int)(src[0x0A])) + (3 * (int)(src[0x0B])) + (3 * (int)(src[0x12])) + (int)(src[0x13]) + 8) / 16; - dst[0x36] = ((9 * (int)(src[0x0B])) + (3 * (int)(src[0x0A])) + (3 * (int)(src[0x13])) + (int)(src[0x12]) + 8) / 16; - dst[0x37] = ((9 * (int)(src[0x0B])) + (3 * (int)(src[0x0C])) + (3 * (int)(src[0x13])) + (int)(src[0x14]) + 8) / 16; - dst[0x38] = ((9 * (int)(src[0x0C])) + (3 * (int)(src[0x0B])) + (3 * (int)(src[0x14])) + (int)(src[0x13]) + 8) / 16; - dst[0x39] = ((9 * (int)(src[0x0C])) + (3 * (int)(src[0x0D])) + (3 * (int)(src[0x14])) + (int)(src[0x15]) + 8) / 16; - dst[0x3A] = ((9 * (int)(src[0x0D])) + (3 * (int)(src[0x0C])) + (3 * (int)(src[0x15])) + (int)(src[0x14]) + 8) / 16; - dst[0x3B] = ((9 * (int)(src[0x0D])) + (3 * (int)(src[0x0E])) + (3 * (int)(src[0x15])) + (int)(src[0x16]) + 8) / 16; - dst[0x3C] = ((9 * (int)(src[0x0E])) + (3 * (int)(src[0x0D])) + (3 * (int)(src[0x16])) + (int)(src[0x15]) + 8) / 16; - dst[0x3D] = ((9 * (int)(src[0x0E])) + (3 * (int)(src[0x0F])) + (3 * (int)(src[0x16])) + (int)(src[0x17]) + 8) / 16; - dst[0x3E] = ((9 * (int)(src[0x0F])) + (3 * (int)(src[0x0E])) + (3 * (int)(src[0x17])) + (int)(src[0x16]) + 8) / 16; - dst[0x3F] = ((3 * (int)(src[0x0F])) + (int)(src[0x17]) + 2) / 4; - dst[0x40] = ((3 * (int)(src[0x10])) + (int)(src[0x08]) + 2) / 4; - dst[0x41] = ((9 * (int)(src[0x10])) + (3 * (int)(src[0x11])) + (3 * (int)(src[0x08])) + (int)(src[0x09]) + 8) / 16; - dst[0x42] = ((9 * (int)(src[0x11])) + (3 * (int)(src[0x10])) + (3 * (int)(src[0x09])) + (int)(src[0x08]) + 8) / 16; - dst[0x43] = ((9 * (int)(src[0x11])) + (3 * (int)(src[0x12])) + (3 * (int)(src[0x09])) + (int)(src[0x0A]) + 8) / 16; - dst[0x44] = ((9 * (int)(src[0x12])) + (3 * (int)(src[0x11])) + (3 * (int)(src[0x0A])) + (int)(src[0x09]) + 8) / 16; - dst[0x45] = ((9 * (int)(src[0x12])) + (3 * (int)(src[0x13])) + (3 * (int)(src[0x0A])) + (int)(src[0x0B]) + 8) / 16; - dst[0x46] = ((9 * (int)(src[0x13])) + (3 * (int)(src[0x12])) + (3 * (int)(src[0x0B])) + (int)(src[0x0A]) + 8) / 16; - dst[0x47] = ((9 * (int)(src[0x13])) + (3 * (int)(src[0x14])) + (3 * (int)(src[0x0B])) + (int)(src[0x0C]) + 8) / 16; - dst[0x48] = ((9 * (int)(src[0x14])) + (3 * (int)(src[0x13])) + (3 * (int)(src[0x0C])) + (int)(src[0x0B]) + 8) / 16; - dst[0x49] = ((9 * (int)(src[0x14])) + (3 * (int)(src[0x15])) + (3 * (int)(src[0x0C])) + (int)(src[0x0D]) + 8) / 16; - dst[0x4A] = ((9 * (int)(src[0x15])) + (3 * (int)(src[0x14])) + (3 * (int)(src[0x0D])) + (int)(src[0x0C]) + 8) / 16; - dst[0x4B] = ((9 * (int)(src[0x15])) + (3 * (int)(src[0x16])) + (3 * (int)(src[0x0D])) + (int)(src[0x0E]) + 8) / 16; - dst[0x4C] = ((9 * (int)(src[0x16])) + (3 * (int)(src[0x15])) + (3 * (int)(src[0x0E])) + (int)(src[0x0D]) + 8) / 16; - dst[0x4D] = ((9 * (int)(src[0x16])) + (3 * (int)(src[0x17])) + (3 * (int)(src[0x0E])) + (int)(src[0x0F]) + 8) / 16; - dst[0x4E] = ((9 * (int)(src[0x17])) + (3 * (int)(src[0x16])) + (3 * (int)(src[0x0F])) + (int)(src[0x0E]) + 8) / 16; - dst[0x4F] = ((3 * (int)(src[0x17])) + (int)(src[0x0F]) + 2) / 4; - dst[0x50] = ((3 * (int)(src[0x10])) + (int)(src[0x18]) + 2) / 4; - dst[0x51] = ((9 * (int)(src[0x10])) + (3 * (int)(src[0x11])) + (3 * (int)(src[0x18])) + (int)(src[0x19]) + 8) / 16; - dst[0x52] = ((9 * (int)(src[0x11])) + (3 * (int)(src[0x10])) + (3 * (int)(src[0x19])) + (int)(src[0x18]) + 8) / 16; - dst[0x53] = ((9 * (int)(src[0x11])) + (3 * (int)(src[0x12])) + (3 * (int)(src[0x19])) + (int)(src[0x1A]) + 8) / 16; - dst[0x54] = ((9 * (int)(src[0x12])) + (3 * (int)(src[0x11])) + (3 * (int)(src[0x1A])) + (int)(src[0x19]) + 8) / 16; - dst[0x55] = ((9 * (int)(src[0x12])) + (3 * (int)(src[0x13])) + (3 * (int)(src[0x1A])) + (int)(src[0x1B]) + 8) / 16; - dst[0x56] = ((9 * (int)(src[0x13])) + (3 * (int)(src[0x12])) + (3 * (int)(src[0x1B])) + (int)(src[0x1A]) + 8) / 16; - dst[0x57] = ((9 * (int)(src[0x13])) + (3 * (int)(src[0x14])) + (3 * (int)(src[0x1B])) + (int)(src[0x1C]) + 8) / 16; - dst[0x58] = ((9 * (int)(src[0x14])) + (3 * (int)(src[0x13])) + (3 * (int)(src[0x1C])) + (int)(src[0x1B]) + 8) / 16; - dst[0x59] = ((9 * (int)(src[0x14])) + (3 * (int)(src[0x15])) + (3 * (int)(src[0x1C])) + (int)(src[0x1D]) + 8) / 16; - dst[0x5A] = ((9 * (int)(src[0x15])) + (3 * (int)(src[0x14])) + (3 * (int)(src[0x1D])) + (int)(src[0x1C]) + 8) / 16; - dst[0x5B] = ((9 * (int)(src[0x15])) + (3 * (int)(src[0x16])) + (3 * (int)(src[0x1D])) + (int)(src[0x1E]) + 8) / 16; - dst[0x5C] = ((9 * (int)(src[0x16])) + (3 * (int)(src[0x15])) + (3 * (int)(src[0x1E])) + (int)(src[0x1D]) + 8) / 16; - dst[0x5D] = ((9 * (int)(src[0x16])) + (3 * (int)(src[0x17])) + (3 * (int)(src[0x1E])) + (int)(src[0x1F]) + 8) / 16; - dst[0x5E] = ((9 * (int)(src[0x17])) + (3 * (int)(src[0x16])) + (3 * (int)(src[0x1F])) + (int)(src[0x1E]) + 8) / 16; - dst[0x5F] = ((3 * (int)(src[0x17])) + (int)(src[0x1F]) + 2) / 4; - dst[0x60] = ((3 * (int)(src[0x18])) + (int)(src[0x10]) + 2) / 4; - dst[0x61] = ((9 * (int)(src[0x18])) + (3 * (int)(src[0x19])) + (3 * (int)(src[0x10])) + (int)(src[0x11]) + 8) / 16; - dst[0x62] = ((9 * (int)(src[0x19])) + (3 * (int)(src[0x18])) + (3 * (int)(src[0x11])) + (int)(src[0x10]) + 8) / 16; - dst[0x63] = ((9 * (int)(src[0x19])) + (3 * (int)(src[0x1A])) + (3 * (int)(src[0x11])) + (int)(src[0x12]) + 8) / 16; - dst[0x64] = ((9 * (int)(src[0x1A])) + (3 * (int)(src[0x19])) + (3 * (int)(src[0x12])) + (int)(src[0x11]) + 8) / 16; - dst[0x65] = ((9 * (int)(src[0x1A])) + (3 * (int)(src[0x1B])) + (3 * (int)(src[0x12])) + (int)(src[0x13]) + 8) / 16; - dst[0x66] = ((9 * (int)(src[0x1B])) + (3 * (int)(src[0x1A])) + (3 * (int)(src[0x13])) + (int)(src[0x12]) + 8) / 16; - dst[0x67] = ((9 * (int)(src[0x1B])) + (3 * (int)(src[0x1C])) + (3 * (int)(src[0x13])) + (int)(src[0x14]) + 8) / 16; - dst[0x68] = ((9 * (int)(src[0x1C])) + (3 * (int)(src[0x1B])) + (3 * (int)(src[0x14])) + (int)(src[0x13]) + 8) / 16; - dst[0x69] = ((9 * (int)(src[0x1C])) + (3 * (int)(src[0x1D])) + (3 * (int)(src[0x14])) + (int)(src[0x15]) + 8) / 16; - dst[0x6A] = ((9 * (int)(src[0x1D])) + (3 * (int)(src[0x1C])) + (3 * (int)(src[0x15])) + (int)(src[0x14]) + 8) / 16; - dst[0x6B] = ((9 * (int)(src[0x1D])) + (3 * (int)(src[0x1E])) + (3 * (int)(src[0x15])) + (int)(src[0x16]) + 8) / 16; - dst[0x6C] = ((9 * (int)(src[0x1E])) + (3 * (int)(src[0x1D])) + (3 * (int)(src[0x16])) + (int)(src[0x15]) + 8) / 16; - dst[0x6D] = ((9 * (int)(src[0x1E])) + (3 * (int)(src[0x1F])) + (3 * (int)(src[0x16])) + (int)(src[0x17]) + 8) / 16; - dst[0x6E] = ((9 * (int)(src[0x1F])) + (3 * (int)(src[0x1E])) + (3 * (int)(src[0x17])) + (int)(src[0x16]) + 8) / 16; - dst[0x6F] = ((3 * (int)(src[0x1F])) + (int)(src[0x17]) + 2) / 4; - dst[0x70] = ((3 * (int)(src[0x18])) + (int)(src[0x20]) + 2) / 4; - dst[0x71] = ((9 * (int)(src[0x18])) + (3 * (int)(src[0x19])) + (3 * (int)(src[0x20])) + (int)(src[0x21]) + 8) / 16; - dst[0x72] = ((9 * (int)(src[0x19])) + (3 * (int)(src[0x18])) + (3 * (int)(src[0x21])) + (int)(src[0x20]) + 8) / 16; - dst[0x73] = ((9 * (int)(src[0x19])) + (3 * (int)(src[0x1A])) + (3 * (int)(src[0x21])) + (int)(src[0x22]) + 8) / 16; - dst[0x74] = ((9 * (int)(src[0x1A])) + (3 * (int)(src[0x19])) + (3 * (int)(src[0x22])) + (int)(src[0x21]) + 8) / 16; - dst[0x75] = ((9 * (int)(src[0x1A])) + (3 * (int)(src[0x1B])) + (3 * (int)(src[0x22])) + (int)(src[0x23]) + 8) / 16; - dst[0x76] = ((9 * (int)(src[0x1B])) + (3 * (int)(src[0x1A])) + (3 * (int)(src[0x23])) + (int)(src[0x22]) + 8) / 16; - dst[0x77] = ((9 * (int)(src[0x1B])) + (3 * (int)(src[0x1C])) + (3 * (int)(src[0x23])) + (int)(src[0x24]) + 8) / 16; - dst[0x78] = ((9 * (int)(src[0x1C])) + (3 * (int)(src[0x1B])) + (3 * (int)(src[0x24])) + (int)(src[0x23]) + 8) / 16; - dst[0x79] = ((9 * (int)(src[0x1C])) + (3 * (int)(src[0x1D])) + (3 * (int)(src[0x24])) + (int)(src[0x25]) + 8) / 16; - dst[0x7A] = ((9 * (int)(src[0x1D])) + (3 * (int)(src[0x1C])) + (3 * (int)(src[0x25])) + (int)(src[0x24]) + 8) / 16; - dst[0x7B] = ((9 * (int)(src[0x1D])) + (3 * (int)(src[0x1E])) + (3 * (int)(src[0x25])) + (int)(src[0x26]) + 8) / 16; - dst[0x7C] = ((9 * (int)(src[0x1E])) + (3 * (int)(src[0x1D])) + (3 * (int)(src[0x26])) + (int)(src[0x25]) + 8) / 16; - dst[0x7D] = ((9 * (int)(src[0x1E])) + (3 * (int)(src[0x1F])) + (3 * (int)(src[0x26])) + (int)(src[0x27]) + 8) / 16; - dst[0x7E] = ((9 * (int)(src[0x1F])) + (3 * (int)(src[0x1E])) + (3 * (int)(src[0x27])) + (int)(src[0x26]) + 8) / 16; - dst[0x7F] = ((3 * (int)(src[0x1F])) + (int)(src[0x27]) + 2) / 4; - dst[0x80] = ((3 * (int)(src[0x20])) + (int)(src[0x18]) + 2) / 4; - dst[0x81] = ((9 * (int)(src[0x20])) + (3 * (int)(src[0x21])) + (3 * (int)(src[0x18])) + (int)(src[0x19]) + 8) / 16; - dst[0x82] = ((9 * (int)(src[0x21])) + (3 * (int)(src[0x20])) + (3 * (int)(src[0x19])) + (int)(src[0x18]) + 8) / 16; - dst[0x83] = ((9 * (int)(src[0x21])) + (3 * (int)(src[0x22])) + (3 * (int)(src[0x19])) + (int)(src[0x1A]) + 8) / 16; - dst[0x84] = ((9 * (int)(src[0x22])) + (3 * (int)(src[0x21])) + (3 * (int)(src[0x1A])) + (int)(src[0x19]) + 8) / 16; - dst[0x85] = ((9 * (int)(src[0x22])) + (3 * (int)(src[0x23])) + (3 * (int)(src[0x1A])) + (int)(src[0x1B]) + 8) / 16; - dst[0x86] = ((9 * (int)(src[0x23])) + (3 * (int)(src[0x22])) + (3 * (int)(src[0x1B])) + (int)(src[0x1A]) + 8) / 16; - dst[0x87] = ((9 * (int)(src[0x23])) + (3 * (int)(src[0x24])) + (3 * (int)(src[0x1B])) + (int)(src[0x1C]) + 8) / 16; - dst[0x88] = ((9 * (int)(src[0x24])) + (3 * (int)(src[0x23])) + (3 * (int)(src[0x1C])) + (int)(src[0x1B]) + 8) / 16; - dst[0x89] = ((9 * (int)(src[0x24])) + (3 * (int)(src[0x25])) + (3 * (int)(src[0x1C])) + (int)(src[0x1D]) + 8) / 16; - dst[0x8A] = ((9 * (int)(src[0x25])) + (3 * (int)(src[0x24])) + (3 * (int)(src[0x1D])) + (int)(src[0x1C]) + 8) / 16; - dst[0x8B] = ((9 * (int)(src[0x25])) + (3 * (int)(src[0x26])) + (3 * (int)(src[0x1D])) + (int)(src[0x1E]) + 8) / 16; - dst[0x8C] = ((9 * (int)(src[0x26])) + (3 * (int)(src[0x25])) + (3 * (int)(src[0x1E])) + (int)(src[0x1D]) + 8) / 16; - dst[0x8D] = ((9 * (int)(src[0x26])) + (3 * (int)(src[0x27])) + (3 * (int)(src[0x1E])) + (int)(src[0x1F]) + 8) / 16; - dst[0x8E] = ((9 * (int)(src[0x27])) + (3 * (int)(src[0x26])) + (3 * (int)(src[0x1F])) + (int)(src[0x1E]) + 8) / 16; - dst[0x8F] = ((3 * (int)(src[0x27])) + (int)(src[0x1F]) + 2) / 4; - dst[0x90] = ((3 * (int)(src[0x20])) + (int)(src[0x28]) + 2) / 4; - dst[0x91] = ((9 * (int)(src[0x20])) + (3 * (int)(src[0x21])) + (3 * (int)(src[0x28])) + (int)(src[0x29]) + 8) / 16; - dst[0x92] = ((9 * (int)(src[0x21])) + (3 * (int)(src[0x20])) + (3 * (int)(src[0x29])) + (int)(src[0x28]) + 8) / 16; - dst[0x93] = ((9 * (int)(src[0x21])) + (3 * (int)(src[0x22])) + (3 * (int)(src[0x29])) + (int)(src[0x2A]) + 8) / 16; - dst[0x94] = ((9 * (int)(src[0x22])) + (3 * (int)(src[0x21])) + (3 * (int)(src[0x2A])) + (int)(src[0x29]) + 8) / 16; - dst[0x95] = ((9 * (int)(src[0x22])) + (3 * (int)(src[0x23])) + (3 * (int)(src[0x2A])) + (int)(src[0x2B]) + 8) / 16; - dst[0x96] = ((9 * (int)(src[0x23])) + (3 * (int)(src[0x22])) + (3 * (int)(src[0x2B])) + (int)(src[0x2A]) + 8) / 16; - dst[0x97] = ((9 * (int)(src[0x23])) + (3 * (int)(src[0x24])) + (3 * (int)(src[0x2B])) + (int)(src[0x2C]) + 8) / 16; - dst[0x98] = ((9 * (int)(src[0x24])) + (3 * (int)(src[0x23])) + (3 * (int)(src[0x2C])) + (int)(src[0x2B]) + 8) / 16; - dst[0x99] = ((9 * (int)(src[0x24])) + (3 * (int)(src[0x25])) + (3 * (int)(src[0x2C])) + (int)(src[0x2D]) + 8) / 16; - dst[0x9A] = ((9 * (int)(src[0x25])) + (3 * (int)(src[0x24])) + (3 * (int)(src[0x2D])) + (int)(src[0x2C]) + 8) / 16; - dst[0x9B] = ((9 * (int)(src[0x25])) + (3 * (int)(src[0x26])) + (3 * (int)(src[0x2D])) + (int)(src[0x2E]) + 8) / 16; - dst[0x9C] = ((9 * (int)(src[0x26])) + (3 * (int)(src[0x25])) + (3 * (int)(src[0x2E])) + (int)(src[0x2D]) + 8) / 16; - dst[0x9D] = ((9 * (int)(src[0x26])) + (3 * (int)(src[0x27])) + (3 * (int)(src[0x2E])) + (int)(src[0x2F]) + 8) / 16; - dst[0x9E] = ((9 * (int)(src[0x27])) + (3 * (int)(src[0x26])) + (3 * (int)(src[0x2F])) + (int)(src[0x2E]) + 8) / 16; - dst[0x9F] = ((3 * (int)(src[0x27])) + (int)(src[0x2F]) + 2) / 4; - dst[0xA0] = ((3 * (int)(src[0x28])) + (int)(src[0x20]) + 2) / 4; - dst[0xA1] = ((9 * (int)(src[0x28])) + (3 * (int)(src[0x29])) + (3 * (int)(src[0x20])) + (int)(src[0x21]) + 8) / 16; - dst[0xA2] = ((9 * (int)(src[0x29])) + (3 * (int)(src[0x28])) + (3 * (int)(src[0x21])) + (int)(src[0x20]) + 8) / 16; - dst[0xA3] = ((9 * (int)(src[0x29])) + (3 * (int)(src[0x2A])) + (3 * (int)(src[0x21])) + (int)(src[0x22]) + 8) / 16; - dst[0xA4] = ((9 * (int)(src[0x2A])) + (3 * (int)(src[0x29])) + (3 * (int)(src[0x22])) + (int)(src[0x21]) + 8) / 16; - dst[0xA5] = ((9 * (int)(src[0x2A])) + (3 * (int)(src[0x2B])) + (3 * (int)(src[0x22])) + (int)(src[0x23]) + 8) / 16; - dst[0xA6] = ((9 * (int)(src[0x2B])) + (3 * (int)(src[0x2A])) + (3 * (int)(src[0x23])) + (int)(src[0x22]) + 8) / 16; - dst[0xA7] = ((9 * (int)(src[0x2B])) + (3 * (int)(src[0x2C])) + (3 * (int)(src[0x23])) + (int)(src[0x24]) + 8) / 16; - dst[0xA8] = ((9 * (int)(src[0x2C])) + (3 * (int)(src[0x2B])) + (3 * (int)(src[0x24])) + (int)(src[0x23]) + 8) / 16; - dst[0xA9] = ((9 * (int)(src[0x2C])) + (3 * (int)(src[0x2D])) + (3 * (int)(src[0x24])) + (int)(src[0x25]) + 8) / 16; - dst[0xAA] = ((9 * (int)(src[0x2D])) + (3 * (int)(src[0x2C])) + (3 * (int)(src[0x25])) + (int)(src[0x24]) + 8) / 16; - dst[0xAB] = ((9 * (int)(src[0x2D])) + (3 * (int)(src[0x2E])) + (3 * (int)(src[0x25])) + (int)(src[0x26]) + 8) / 16; - dst[0xAC] = ((9 * (int)(src[0x2E])) + (3 * (int)(src[0x2D])) + (3 * (int)(src[0x26])) + (int)(src[0x25]) + 8) / 16; - dst[0xAD] = ((9 * (int)(src[0x2E])) + (3 * (int)(src[0x2F])) + (3 * (int)(src[0x26])) + (int)(src[0x27]) + 8) / 16; - dst[0xAE] = ((9 * (int)(src[0x2F])) + (3 * (int)(src[0x2E])) + (3 * (int)(src[0x27])) + (int)(src[0x26]) + 8) / 16; - dst[0xAF] = ((3 * (int)(src[0x2F])) + (int)(src[0x27]) + 2) / 4; - dst[0xB0] = ((3 * (int)(src[0x28])) + (int)(src[0x30]) + 2) / 4; - dst[0xB1] = ((9 * (int)(src[0x28])) + (3 * (int)(src[0x29])) + (3 * (int)(src[0x30])) + (int)(src[0x31]) + 8) / 16; - dst[0xB2] = ((9 * (int)(src[0x29])) + (3 * (int)(src[0x28])) + (3 * (int)(src[0x31])) + (int)(src[0x30]) + 8) / 16; - dst[0xB3] = ((9 * (int)(src[0x29])) + (3 * (int)(src[0x2A])) + (3 * (int)(src[0x31])) + (int)(src[0x32]) + 8) / 16; - dst[0xB4] = ((9 * (int)(src[0x2A])) + (3 * (int)(src[0x29])) + (3 * (int)(src[0x32])) + (int)(src[0x31]) + 8) / 16; - dst[0xB5] = ((9 * (int)(src[0x2A])) + (3 * (int)(src[0x2B])) + (3 * (int)(src[0x32])) + (int)(src[0x33]) + 8) / 16; - dst[0xB6] = ((9 * (int)(src[0x2B])) + (3 * (int)(src[0x2A])) + (3 * (int)(src[0x33])) + (int)(src[0x32]) + 8) / 16; - dst[0xB7] = ((9 * (int)(src[0x2B])) + (3 * (int)(src[0x2C])) + (3 * (int)(src[0x33])) + (int)(src[0x34]) + 8) / 16; - dst[0xB8] = ((9 * (int)(src[0x2C])) + (3 * (int)(src[0x2B])) + (3 * (int)(src[0x34])) + (int)(src[0x33]) + 8) / 16; - dst[0xB9] = ((9 * (int)(src[0x2C])) + (3 * (int)(src[0x2D])) + (3 * (int)(src[0x34])) + (int)(src[0x35]) + 8) / 16; - dst[0xBA] = ((9 * (int)(src[0x2D])) + (3 * (int)(src[0x2C])) + (3 * (int)(src[0x35])) + (int)(src[0x34]) + 8) / 16; - dst[0xBB] = ((9 * (int)(src[0x2D])) + (3 * (int)(src[0x2E])) + (3 * (int)(src[0x35])) + (int)(src[0x36]) + 8) / 16; - dst[0xBC] = ((9 * (int)(src[0x2E])) + (3 * (int)(src[0x2D])) + (3 * (int)(src[0x36])) + (int)(src[0x35]) + 8) / 16; - dst[0xBD] = ((9 * (int)(src[0x2E])) + (3 * (int)(src[0x2F])) + (3 * (int)(src[0x36])) + (int)(src[0x37]) + 8) / 16; - dst[0xBE] = ((9 * (int)(src[0x2F])) + (3 * (int)(src[0x2E])) + (3 * (int)(src[0x37])) + (int)(src[0x36]) + 8) / 16; - dst[0xBF] = ((3 * (int)(src[0x2F])) + (int)(src[0x37]) + 2) / 4; - dst[0xC0] = ((3 * (int)(src[0x30])) + (int)(src[0x28]) + 2) / 4; - dst[0xC1] = ((9 * (int)(src[0x30])) + (3 * (int)(src[0x31])) + (3 * (int)(src[0x28])) + (int)(src[0x29]) + 8) / 16; - dst[0xC2] = ((9 * (int)(src[0x31])) + (3 * (int)(src[0x30])) + (3 * (int)(src[0x29])) + (int)(src[0x28]) + 8) / 16; - dst[0xC3] = ((9 * (int)(src[0x31])) + (3 * (int)(src[0x32])) + (3 * (int)(src[0x29])) + (int)(src[0x2A]) + 8) / 16; - dst[0xC4] = ((9 * (int)(src[0x32])) + (3 * (int)(src[0x31])) + (3 * (int)(src[0x2A])) + (int)(src[0x29]) + 8) / 16; - dst[0xC5] = ((9 * (int)(src[0x32])) + (3 * (int)(src[0x33])) + (3 * (int)(src[0x2A])) + (int)(src[0x2B]) + 8) / 16; - dst[0xC6] = ((9 * (int)(src[0x33])) + (3 * (int)(src[0x32])) + (3 * (int)(src[0x2B])) + (int)(src[0x2A]) + 8) / 16; - dst[0xC7] = ((9 * (int)(src[0x33])) + (3 * (int)(src[0x34])) + (3 * (int)(src[0x2B])) + (int)(src[0x2C]) + 8) / 16; - dst[0xC8] = ((9 * (int)(src[0x34])) + (3 * (int)(src[0x33])) + (3 * (int)(src[0x2C])) + (int)(src[0x2B]) + 8) / 16; - dst[0xC9] = ((9 * (int)(src[0x34])) + (3 * (int)(src[0x35])) + (3 * (int)(src[0x2C])) + (int)(src[0x2D]) + 8) / 16; - dst[0xCA] = ((9 * (int)(src[0x35])) + (3 * (int)(src[0x34])) + (3 * (int)(src[0x2D])) + (int)(src[0x2C]) + 8) / 16; - dst[0xCB] = ((9 * (int)(src[0x35])) + (3 * (int)(src[0x36])) + (3 * (int)(src[0x2D])) + (int)(src[0x2E]) + 8) / 16; - dst[0xCC] = ((9 * (int)(src[0x36])) + (3 * (int)(src[0x35])) + (3 * (int)(src[0x2E])) + (int)(src[0x2D]) + 8) / 16; - dst[0xCD] = ((9 * (int)(src[0x36])) + (3 * (int)(src[0x37])) + (3 * (int)(src[0x2E])) + (int)(src[0x2F]) + 8) / 16; - dst[0xCE] = ((9 * (int)(src[0x37])) + (3 * (int)(src[0x36])) + (3 * (int)(src[0x2F])) + (int)(src[0x2E]) + 8) / 16; - dst[0xCF] = ((3 * (int)(src[0x37])) + (int)(src[0x2F]) + 2) / 4; - dst[0xD0] = ((3 * (int)(src[0x30])) + (int)(src[0x38]) + 2) / 4; - dst[0xD1] = ((9 * (int)(src[0x30])) + (3 * (int)(src[0x31])) + (3 * (int)(src[0x38])) + (int)(src[0x39]) + 8) / 16; - dst[0xD2] = ((9 * (int)(src[0x31])) + (3 * (int)(src[0x30])) + (3 * (int)(src[0x39])) + (int)(src[0x38]) + 8) / 16; - dst[0xD3] = ((9 * (int)(src[0x31])) + (3 * (int)(src[0x32])) + (3 * (int)(src[0x39])) + (int)(src[0x3A]) + 8) / 16; - dst[0xD4] = ((9 * (int)(src[0x32])) + (3 * (int)(src[0x31])) + (3 * (int)(src[0x3A])) + (int)(src[0x39]) + 8) / 16; - dst[0xD5] = ((9 * (int)(src[0x32])) + (3 * (int)(src[0x33])) + (3 * (int)(src[0x3A])) + (int)(src[0x3B]) + 8) / 16; - dst[0xD6] = ((9 * (int)(src[0x33])) + (3 * (int)(src[0x32])) + (3 * (int)(src[0x3B])) + (int)(src[0x3A]) + 8) / 16; - dst[0xD7] = ((9 * (int)(src[0x33])) + (3 * (int)(src[0x34])) + (3 * (int)(src[0x3B])) + (int)(src[0x3C]) + 8) / 16; - dst[0xD8] = ((9 * (int)(src[0x34])) + (3 * (int)(src[0x33])) + (3 * (int)(src[0x3C])) + (int)(src[0x3B]) + 8) / 16; - dst[0xD9] = ((9 * (int)(src[0x34])) + (3 * (int)(src[0x35])) + (3 * (int)(src[0x3C])) + (int)(src[0x3D]) + 8) / 16; - dst[0xDA] = ((9 * (int)(src[0x35])) + (3 * (int)(src[0x34])) + (3 * (int)(src[0x3D])) + (int)(src[0x3C]) + 8) / 16; - dst[0xDB] = ((9 * (int)(src[0x35])) + (3 * (int)(src[0x36])) + (3 * (int)(src[0x3D])) + (int)(src[0x3E]) + 8) / 16; - dst[0xDC] = ((9 * (int)(src[0x36])) + (3 * (int)(src[0x35])) + (3 * (int)(src[0x3E])) + (int)(src[0x3D]) + 8) / 16; - dst[0xDD] = ((9 * (int)(src[0x36])) + (3 * (int)(src[0x37])) + (3 * (int)(src[0x3E])) + (int)(src[0x3F]) + 8) / 16; - dst[0xDE] = ((9 * (int)(src[0x37])) + (3 * (int)(src[0x36])) + (3 * (int)(src[0x3F])) + (int)(src[0x3E]) + 8) / 16; - dst[0xDF] = ((3 * (int)(src[0x37])) + (int)(src[0x3F]) + 2) / 4; - dst[0xE0] = ((3 * (int)(src[0x38])) + (int)(src[0x30]) + 2) / 4; - dst[0xE1] = ((9 * (int)(src[0x38])) + (3 * (int)(src[0x39])) + (3 * (int)(src[0x30])) + (int)(src[0x31]) + 8) / 16; - dst[0xE2] = ((9 * (int)(src[0x39])) + (3 * (int)(src[0x38])) + (3 * (int)(src[0x31])) + (int)(src[0x30]) + 8) / 16; - dst[0xE3] = ((9 * (int)(src[0x39])) + (3 * (int)(src[0x3A])) + (3 * (int)(src[0x31])) + (int)(src[0x32]) + 8) / 16; - dst[0xE4] = ((9 * (int)(src[0x3A])) + (3 * (int)(src[0x39])) + (3 * (int)(src[0x32])) + (int)(src[0x31]) + 8) / 16; - dst[0xE5] = ((9 * (int)(src[0x3A])) + (3 * (int)(src[0x3B])) + (3 * (int)(src[0x32])) + (int)(src[0x33]) + 8) / 16; - dst[0xE6] = ((9 * (int)(src[0x3B])) + (3 * (int)(src[0x3A])) + (3 * (int)(src[0x33])) + (int)(src[0x32]) + 8) / 16; - dst[0xE7] = ((9 * (int)(src[0x3B])) + (3 * (int)(src[0x3C])) + (3 * (int)(src[0x33])) + (int)(src[0x34]) + 8) / 16; - dst[0xE8] = ((9 * (int)(src[0x3C])) + (3 * (int)(src[0x3B])) + (3 * (int)(src[0x34])) + (int)(src[0x33]) + 8) / 16; - dst[0xE9] = ((9 * (int)(src[0x3C])) + (3 * (int)(src[0x3D])) + (3 * (int)(src[0x34])) + (int)(src[0x35]) + 8) / 16; - dst[0xEA] = ((9 * (int)(src[0x3D])) + (3 * (int)(src[0x3C])) + (3 * (int)(src[0x35])) + (int)(src[0x34]) + 8) / 16; - dst[0xEB] = ((9 * (int)(src[0x3D])) + (3 * (int)(src[0x3E])) + (3 * (int)(src[0x35])) + (int)(src[0x36]) + 8) / 16; - dst[0xEC] = ((9 * (int)(src[0x3E])) + (3 * (int)(src[0x3D])) + (3 * (int)(src[0x36])) + (int)(src[0x35]) + 8) / 16; - dst[0xED] = ((9 * (int)(src[0x3E])) + (3 * (int)(src[0x3F])) + (3 * (int)(src[0x36])) + (int)(src[0x37]) + 8) / 16; - dst[0xEE] = ((9 * (int)(src[0x3F])) + (3 * (int)(src[0x3E])) + (3 * (int)(src[0x37])) + (int)(src[0x36]) + 8) / 16; - dst[0xEF] = ((3 * (int)(src[0x3F])) + (int)(src[0x37]) + 2) / 4; - dst[0xF0] = src[0x38]; - dst[0xF1] = ((3 * (int)(src[0x38])) + (int)(src[0x39]) + 2) / 4; - dst[0xF2] = ((3 * (int)(src[0x39])) + (int)(src[0x38]) + 2) / 4; - dst[0xF3] = ((3 * (int)(src[0x39])) + (int)(src[0x3A]) + 2) / 4; - dst[0xF4] = ((3 * (int)(src[0x3A])) + (int)(src[0x39]) + 2) / 4; - dst[0xF5] = ((3 * (int)(src[0x3A])) + (int)(src[0x3B]) + 2) / 4; - dst[0xF6] = ((3 * (int)(src[0x3B])) + (int)(src[0x3A]) + 2) / 4; - dst[0xF7] = ((3 * (int)(src[0x3B])) + (int)(src[0x3C]) + 2) / 4; - dst[0xF8] = ((3 * (int)(src[0x3C])) + (int)(src[0x3B]) + 2) / 4; - dst[0xF9] = ((3 * (int)(src[0x3C])) + (int)(src[0x3D]) + 2) / 4; - dst[0xFA] = ((3 * (int)(src[0x3D])) + (int)(src[0x3C]) + 2) / 4; - dst[0xFB] = ((3 * (int)(src[0x3D])) + (int)(src[0x3E]) + 2) / 4; - dst[0xFC] = ((3 * (int)(src[0x3E])) + (int)(src[0x3D]) + 2) / 4; - dst[0xFD] = ((3 * (int)(src[0x3E])) + (int)(src[0x3F]) + 2) / 4; - dst[0xFE] = ((3 * (int)(src[0x3F])) + (int)(src[0x3E]) + 2) / 4; - dst[0xFF] = src[0x3F]; + for (int x = 0; x < 16; x++) { + // sx is: 0, +1, -1, +1, -1, ..., +1, -1, 0. + int sx = ((x == 0) || (x == 15)) ? 0 : ((x & 1) * 2) - 1; - // clang-format on + int s0 = ((y >> 1) * 8) + (x >> 1); + int v00 = src[s0]; + int v01 = src[s0 + sx]; + int v10 = src[s0 + sy]; + int v11 = src[s0 + sx + sy]; + + int d0 = (y * 16) + x; + dst[d0] = ((9 * v00) + (3 * v01) + (3 * v10) + v11 + 8) / 16; + } + } } static void //