# File timestamp (UTC): 2021-03-21T12:20:35.7 # NIST Circuit Complexity Project # https://csrc.nist.gov/projects/circuit-complexity begin circuit Khazad--XOR=366--XLZBZ20 # SLP Source: https://doi.org/10.13154/tosc.v2020.i2.120-145 --- https://github.com/xiangzejun/Optimizing_Implementations_of_Linear_Layers # The preamble, metadata, SLP syntax and variable names have been adjusted here to the NIST format # Boolean Circuit for a linear system y = A.x defined by a 64x64 bit-matrix A # Matrix A weights (W): totalW=1296, adjW=1232, minWInRow=15, maxWInRow=27, minWInCol=33, maxWICol=15 # Matrix represented as 64 rows: vecRows=UInt64[0x070b080605040301, 0x0e16100c0a080602, 0x1c2c201814100c04, 0x3858403028201808, 0x70b0806050403010, 0xe07d1dc0a0806020, 0xddfa3a9d5d1dc040, 0xa7e97427ba3a9d80, 0x0b07060804050103, 0x160e0c10080a0206, 0x2c1c18201014040c, 0x5838304020280818, 0xb070608040501030, 0x7de0c01d80a02060, 0xfadd9d3a1d5d40c0, 0xe9a727743aba809d, 0x0806070b03010504, 0x100c0e1606020a08, 0x20181c2c0c041410, 0x4030385818082820, 0x806070b030105040, 0x1dc0e07d6020a080, 0x3a9dddfac0405d1d, 0x7427a7e99d80ba3a, 0x06080b0701030405, 0x0c10160e0206080a, 0x18202c1c040c1014, 0x3040583808182028, 0x6080b07010304050, 0xc01d7de0206080a0, 0x9d3afadd40c01d5d, 0x2774e9a7809d3aba, 0x05040301070b0806, 0x0a0806020e16100c, 0x14100c041c2c2018, 0x2820180838584030, 0x5040301070b08060, 0xa0806020e07d1dc0, 0x5d1dc040ddfa3a9d, 0xba3a9d80a7e97427, 0x040501030b070608, 0x080a0206160e0c10, 0x1014040c2c1c1820, 0x2028081858383040, 0x40501030b0706080, 0x80a020607de0c01d, 0x1d5d40c0fadd9d3a, 0x3aba809de9a72774, 0x030105040806070b, 0x06020a08100c0e16, 0x0c04141020181c2c, 0x1808282040303858, 0x30105040806070b0, 0x6020a0801dc0e07d, 0xc0405d1d3a9dddfa, 0x9d80ba3a7427a7e9, 0x0103040506080b07, 0x0206080a0c10160e, 0x040c101418202c1c, 0x0818202830405838, 0x103040506080b070, 0x206080a0c01d7de0, 0x40c01d5d9d3afadd, 0x809d3aba2774e9a7] # Matrix represented as 64 columns: vecCols=UInt64[0xc1a120c041408101, 0x8343408182800302, 0xc726a0c345418604, 0x4eed6146cac28c08, 0x5c7ae24cd4c49810, 0xb8f4c498a8883020, 0x70e8883050106040, 0xe0d01060a020c080, 0xa1c1c02040410181, 0x4383814080820203, 0x26c7c3a041450486, 0xed4e4661c2ca088c, 0x7a5c4ce2c4d41098, 0xf4b898c488a82030, 0xe870308810504060, 0xd0e0601020a080c0, 0x20c0c1a181014140, 0x4081834303028280, 0xa0c3c72686044541, 0x61464eed8c08cac2, 0xe24c5c7a9810d4c4, 0xc498b8f43020a888, 0x883070e860405010, 0x1060e0d0c080a020, 0xc020a1c101814041, 0x8140438302038082, 0xc3a026c704864145, 0x4661ed4e088cc2ca, 0x4ce27a5c1098c4d4, 0x98c4f4b8203088a8, 0x3088e87040601050, 0x6010d0e080c020a0, 0x41408101c1a120c0, 0x8280030283434081, 0x45418604c726a0c3, 0xcac28c084eed6146, 0xd4c498105c7ae24c, 0xa8883020b8f4c498, 0x5010604070e88830, 0xa020c080e0d01060, 0x40410181a1c1c020, 0x8082020343838140, 0x4145048626c7c3a0, 0xc2ca088ced4e4661, 0xc4d410987a5c4ce2, 0x88a82030f4b898c4, 0x10504060e8703088, 0x20a080c0d0e06010, 0x8101414020c0c1a1, 0x0302828040818343, 0x86044541a0c3c726, 0x8c08cac261464eed, 0x9810d4c4e24c5c7a, 0x3020a888c498b8f4, 0x60405010883070e8, 0xc080a0201060e0d0, 0x01814041c020a1c1, 0x0203808281404383, 0x04864145c3a026c7, 0x088cc2ca4661ed4e, 0x1098c4d44ce27a5c, 0x203088a898c4f4b8, 0x406010503088e870, 0x80c020a06010d0e0] # The element in the i-th row and j-th col of A is A[i,j] = 1 & (vecRows[i]>>(j-1)) = 1 & (vecCols[j]>>(i-1)) # Tally: 64 inputs, 64 outputs, 366 gates (366 XOR) # Circuit depth: 18 Inputs: x1:x64 Outputs: y1:y64 Internal: t1:t302 GateSyntax: GateName Output Inputs # Regex to obtain gate (\1), output var (\2) and input vars (\3, \4): (XOR)\s([ty]\d+)\s([tyx]\d+)\s([tyx]\d+).*$ begin SLP XOR t1 x64 x40 XOR t2 x44 x52 XOR t3 x53 x45 XOR t4 x63 x55 XOR t5 x29 x5 XOR t6 x5 x13 XOR t7 x31 x7 XOR t8 x23 t7 XOR t9 x15 t8 XOR t10 x38 x62 XOR t11 x11 x19 XOR t12 x26 x2 XOR t13 x39 x47 XOR t14 x6 x30 XOR t15 x43 x51 XOR t16 x42 x34 XOR t17 t11 t9 XOR t18 x40 x48 XOR t19 x56 x48 XOR t20 x18 t12 XOR t21 x61 t3 XOR t22 t21 x37 XOR t23 x24 x32 XOR t24 x46 t10 XOR t25 x33 x57 XOR t26 x37 t6 XOR t27 x21 x13 XOR t28 x62 x54 XOR t29 x52 x60 XOR t30 x60 t2 XOR t31 x20 x12 XOR t32 x12 x4 XOR t33 x3 t17 XOR t34 x16 x8 XOR t35 x14 t14 XOR t36 x48 t23 XOR t37 x35 t15 XOR t38 x54 t24 XOR t39 x30 x22 XOR t40 x50 x58 XOR t41 t5 t27 XOR t42 x19 x27 XOR t43 t36 x8 XOR t44 x55 x47 XOR t45 x2 t16 XOR t46 x41 t25 XOR t47 x57 x49 XOR t48 x58 x34 XOR t49 x49 t46 XOR t50 t46 x17 XOR t51 t37 x59 XOR t52 t43 t13 XOR t53 t13 t4 XOR t54 x1 x25 XOR t55 x27 t33 XOR t56 t52 t14 XOR t57 x47 t8 XOR t58 x36 t30 XOR t59 t8 t22 XOR t60 t7 t53 XOR t61 t45 x10 XOR t62 x28 x4 XOR t63 x4 t30 XOR t64 t30 t16 XOR t65 x13 x45 XOR t66 t14 t10 XOR t67 t57 t27 XOR t68 x9 x17 XOR t69 t40 t16 XOR t70 t33 t50 XOR t71 t65 t15 XOR t72 t15 t17 XOR t73 x45 t26 XOR t74 t70 x59 XOR t75 t50 t1 XOR t76 t61 t9 XOR t77 x8 t1 XOR t78 x32 t77 XOR t79 t62 t31 XOR t80 t10 t27 XOR t81 t74 t25 XOR t82 t59 t4 XOR t83 x59 t23 XOR t84 t27 t63 XOR t85 t82 x7 XOR t86 x7 x22 XOR t87 t63 t22 XOR t88 t80 t3 XOR t89 x22 t35 XOR t90 t83 x51 XOR t91 t86 t6 XOR t92 x10 t20 XOR t93 t87 t2 XOR t94 t4 t28 XOR t95 t3 t2 XOR t96 t23 t34 XOR t97 t91 t19 XOR t98 t6 t32 XOR t99 t97 t24 XOR t100 t24 t29 XOR t101 t19 t1 XOR t102 t32 t34 XOR t103 t34 t18 XOR t104 t77 t103 XOR t105 t29 t92 XOR t106 t58 t101 XOR t107 t95 t53 XOR t108 t99 t107 XOR t109 t31 t78 XOR t110 t107 t51 XOR t111 t110 t41 XOR t112 t93 t109 XOR t113 x34 t75 XOR t114 t84 t112 XOR t115 t39 t106 XOR t116 t67 t115 XOR t117 t115 t53 XOR t118 t75 t56 XOR t119 t26 t56 XOR t120 t64 t118 XOR t121 t112 t119 XOR t122 t120 t81 XOR t123 t88 t106 XOR t124 x51 t113 XOR t125 t119 t122 XOR t126 t100 t113 XOR t127 t122 t102 XOR t128 t124 x17 XOR t129 t35 t71 XOR t130 t113 t60 XOR t131 t128 t42 XOR t132 t129 t102 XOR t133 t111 t109 XOR t134 t109 t72 XOR t135 t125 t9 XOR t136 t94 t117 XOR t137 t117 t101 XOR t138 t126 t137 XOR t139 t138 t71 XOR t140 t132 t2 XOR t141 t130 t78 XOR t142 t72 t69 XOR t143 t139 t134 XOR t144 t137 t51 XOR t145 t2 t78 XOR t146 t134 t92 XOR t147 t98 t105 XOR t148 t102 t69 XOR t149 t140 t28 XOR t150 t133 t96 XOR t151 t146 t106 XOR t152 t141 t18 XOR t153 t131 t20 XOR t154 t20 t18 XOR t155 t71 t114 XOR t156 t135 t155 XOR t157 t155 t42 XOR t158 t154 t44 XOR t159 t114 t55 XOR t160 t42 t76 XOR t161 t104 t116 XOR t162 t157 t121 XOR t163 t121 t90 XOR t164 t90 t76 XOR t165 t148 t164 XOR t166 t158 t118 XOR t167 t118 x25 XOR t168 x25 x17 XOR t169 t28 t79 XOR t170 t162 t66 XOR t171 t163 t12 XOR t172 t1 t60 XOR t173 t164 t89 XOR t174 t173 t18 XOR t175 t60 t66 XOR t176 t171 t51 XOR t177 t170 t48 XOR t178 t12 t48 XOR t179 x17 t85 XOR t180 t48 t25 XOR t181 t106 t96 XOR t182 t180 t54 XOR t183 t54 t78 XOR t184 t68 t183 XOR t185 t167 t172 XOR t186 t159 t101 XOR t187 t182 t101 XOR t188 t25 t53 XOR t189 t188 t184 XOR t190 t179 t38 XOR t191 t76 t53 XOR t192 t144 t73 XOR t193 t190 t56 XOR y53 t176 t17 XOR t194 t166 t16 XOR t195 t183 t49 XOR t196 t16 t96 XOR t197 t195 t9 XOR t198 t193 t47 XOR t199 t47 t9 XOR t200 t187 t92 XOR t201 t56 t103 XOR t202 t196 t168 XOR t203 t168 t53 XOR t204 t172 t96 XOR t205 t202 t199 XOR t206 t204 t38 XOR t207 t116 t108 XOR t208 t175 t41 XOR t209 t73 t55 XOR t210 t206 t44 XOR t211 t55 t51 XOR t212 t18 t85 XOR t213 t199 t185 XOR y33 t185 t89 XOR t214 t41 t22 XOR t215 t17 t184 XOR t216 t92 t69 XOR t217 t22 t66 XOR t218 t66 t79 XOR t219 t184 t78 XOR y41 t213 t103 XOR t220 t103 t38 XOR t221 t38 t89 XOR t222 t143 t152 XOR t223 t145 t142 XOR t224 t218 t181 XOR t225 t96 t101 XOR t226 t79 t225 XOR t227 t44 t217 XOR t228 t217 t224 XOR t229 t142 t53 XOR t230 t53 t9 XOR t231 t198 t227 XOR y13 t177 t212 XOR t232 t215 t178 XOR t233 t178 t200 XOR t234 t69 t219 XOR t235 t233 t225 XOR t236 t234 t49 XOR y26 t194 t201 XOR t237 t207 t192 XOR t238 t153 t205 XOR t239 t89 t214 XOR t240 t214 t228 XOR y38 t222 t240 XOR t241 t237 t150 XOR y31 t85 t108 XOR t242 t211 t9 XOR t243 t152 t191 XOR t244 t149 t227 XOR t245 t78 t123 XOR t246 t101 t230 XOR t247 t105 t160 XOR t248 t51 t216 XOR t249 t160 t49 XOR t250 t49 t225 XOR t251 t147 t220 XOR t252 t245 t161 XOR t253 t251 t226 XOR t254 t249 t220 XOR t255 t238 t216 XOR t256 t250 y33 XOR t257 t174 t219 XOR t258 t9 t221 XOR t259 t221 t123 XOR t260 t228 y53 XOR t261 t156 t223 XOR t262 t81 t231 XOR t263 t216 t235 XOR t264 t165 t254 XOR t265 t223 t246 XOR t266 t203 t220 XOR t267 t108 t230 XOR y6 t224 t244 XOR t268 t219 t231 XOR t269 t254 t246 XOR t270 t229 t236 XOR t271 t265 t226 XOR y52 t127 t235 XOR t272 t201 t136 XOR t273 t169 t209 XOR t274 t209 y53 XOR y45 t260 t150 XOR y25 t231 t197 XOR y23 t267 t136 XOR y1 t268 t225 XOR y40 t272 t161 XOR y3 t262 t255 XOR t275 t226 t242 XOR y46 t273 y38 XOR t276 t136 t240 XOR t277 t240 y13 XOR t278 t261 t247 XOR y30 t244 t259 XOR y12 t278 y13 XOR t279 t274 t253 XOR t280 t275 t151 XOR t281 t181 y52 XOR t282 t247 t281 XOR t283 t281 t242 XOR t284 t191 t205 XOR t285 t253 t248 XOR t286 t235 t236 XOR y2 t286 y26 XOR t287 t284 t225 XOR y18 t287 y26 XOR t288 t255 t197 XOR t289 t242 t232 XOR y61 t279 t258 XOR t290 t288 t256 XOR y60 t282 t257 XOR t291 t123 t239 XOR y58 t236 t243 XOR y34 t243 t200 XOR t292 t230 t227 XOR t293 t220 t212 XOR t294 t212 t239 XOR y57 t256 t189 XOR t295 t161 t259 XOR y62 t259 y38 XOR t296 t239 t192 XOR y49 t189 y41 XOR y39 t227 t241 XOR t297 t248 t225 XOR y63 t241 t258 XOR t298 t258 t208 XOR y7 t298 y31 XOR y5 t285 t277 XOR t299 t225 t252 XOR y21 t277 t186 XOR y8 t252 t246 XOR y16 t299 t293 XOR t300 t270 t289 XOR y54 t291 y46 XOR y44 t283 t271 XOR t301 t246 y40 XOR y9 t266 y1 XOR y15 t208 y23 XOR y48 t294 t301 XOR y64 t301 t210 XOR y50 t205 y58 XOR t302 t232 y3 XOR y11 t269 y3 XOR y27 t302 t297 XOR y35 t297 t290 XOR y32 t295 t210 XOR y22 t296 y30 XOR y20 t280 y12 XOR y14 t192 y6 XOR y17 t197 y9 XOR y10 t263 y18 XOR y56 t210 y48 XOR y59 t290 t300 XOR y37 t150 y61 XOR y55 t276 y63 XOR y36 t271 y60 XOR y47 t292 y55 XOR y42 t200 y50 XOR y29 t186 y5 XOR y24 t293 y32 XOR y43 t257 y35 XOR y28 t264 y20 XOR y51 t300 y43 XOR y19 t289 y11 XOR y4 t151 y28 end SLP end circuit