Skip to content

Instantly share code, notes, and snippets.

@m1lkweed
Last active February 3, 2026 09:42
Show Gist options
  • Select an option

  • Save m1lkweed/a783b705d17dea6ea2bb5068cb42c7fe to your computer and use it in GitHub Desktop.

Select an option

Save m1lkweed/a783b705d17dea6ea2bb5068cb42c7fe to your computer and use it in GitHub Desktop.
Structs to help with bit manipulation of bytes, integers, and integer vectors
#ifdef __clang__
#define vector_attr_clang_or_gcc_with_fallback(a, b) [[clang::ext_vector_type((a))]]
#elifdef __GNUC__
#define vector_attr_clang_or_gcc_with_fallback(a, b) [[gnu::vector_size((b))]]
#else
#define vector_attr_clang_or_gcc_with_fallback(a, b) [(a)]
#endif
typedef union{
unsigned _BitInt(8) byte;
uint8_t as_u8;
int8_t as_i8;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{bool val_1:1, val_2:1, val_4:1, val_8:1, val_16:1, val_32:1, val_64:1, val_128:1;};
struct{unsigned _BitInt(4) lo_nybble:4, hi_nybble:4;};
}byte;
typedef union{
unsigned _BitInt(16) word;
uint16_t as_u16;
int16_t as_i16;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{bool val_1:1, val_2:1, val_4:1, val_8:1, val_16:1, val_32:1, val_64:1, val_128:1, val_256:1, val_512:1, val_1024:1, val_2048:1, val_4096:1, val_8192:1, val_16384:1, val_32768:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, hi_nybble:4;};
struct{byte lo_byte, hi_byte;};
byte bytes[2];
}word;
typedef union{
unsigned _BitInt(32) dword;
uint32_t as_u32;
int32_t as_i32;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1, bit_16:1, bit_17:1, bit_18:1, bit_19:1, bit_21:1, bit_22:1, bit_23:1, bit_24:1, bit_25:1, bit_26:1, bit_27:1, bit_28:1, bit_29:1, bit_30:1, bit_31:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{bool val_1:1, val_2:1, val_4:1, val_8:1, val_16:1, val_32:1, val_64:1, val_128:1, val_256:1, val_512:1, val_1024:1, val_2048:1, val_4096:1, val_8192:1, val_16384:1, val_32768:1, val_65536:1, val_131072:1, val_262144:1, val_524288:1, val_1048576:1, val_2097152:1, val_4194304:1, val_8388608:1, val_16777216:1, val_33554432:1, val_67108864:1, val_134217728:1, val_268435456:1, val_536870912:1, val_1073741824:1, val_2147483648:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, :4, :4, :4, :4, hi_nybble:4;};
struct{byte lo_byte; uint8_t:8, :8; byte hi_byte;};
struct{word lo_word, hi_word;};
byte bytes[4];
word words[2];
}dword;
typedef union{
unsigned _BitInt(64) qword;
uint64_t as_u64;
int64_t as_i64;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1, bit_16:1, bit_17:1, bit_18:1, bit_19:1, bit_20:1, bit_21:1, bit_22:1, bit_23:1, bit_24:1, bit_25:1, bit_26:1, bit_27:1, bit_28:1, bit_29:1, bit_30:1, bit_31:1, bit_32:1, bit_33:1, bit_34:1, bit_35:1, bit_36:1, bit_37:1, bit_38:1, bit_39:1, bit_40:1, bit_41:1, bit_42:1, bit_43:1, bit_44:1, bit_45:1, bit_46:1, bit_47:1, bit_48:1, bit_49:1, bit_50:1, bit_51:1, bit_52:1, bit_53:1, bit_54:1, bit_55:1, bit_56:1, bit_57:1, bit_58:1, bit_59:1, bit_60:1, bit_61:1, bit_62:1, bit_63:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{bool val_1:1, val_2:1, val_4:1, val_8:1, val_16:1, val_32:1, val_64:1, val_128:1, val_256:1, val_512:1, val_1024:1, val_2048:1, val_4096:1, val_8192:1, val_16384:1, val_32768:1, val_65536:1, val_131072:1, val_262144:1, val_524288:1, val_1048576:1, val_2097152:1, val_4194304:1, val_8388608:1, val_16777216:1, val_33554432:1, val_67108864:1, val_134217728:1, val_268435456:1, val_536870912:1, val_1073741824:1, val_2147483648:1, val_4294967296:1, val_8589934592:1, val_17179869184:1, val_34359738368:1, val_68719476736:1, val_137438953472:1, val_274877906944:1, val_549755813888:1, val_1099511627776:1, val_2199023255552:1, val_4398046511104:1, val_8796093022208:1, val_17592186044416:1, val_35184372088832:1, val_70368744177664:1, val_140737488355328:1, val_281474976710656:1, val_562949953421312:1, val_1125899906842624:1, val_2251799813685248:1, val_4503599627370496:1, val_9007199254740992:1, val_18014398509481984:1, val_36028797018963968:1, val_72057594037927936:1, val_144115188075855872:1, val_288230376151711744:1, val_576460752303423488:1, val_1152921504606846976:1, val_2305843009213693952:1, val_4611686018427387904:1, val_9223372036854775808:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, hi_nybble:4;};
struct{byte lo_byte; uint8_t:8, :8, :8, :8, :8, :8; byte hi_byte;};
struct{word lo_word; uint16_t:16, :16; word hi_word;};
struct{dword lo_dword, hi_dword;};
byte bytes[8];
word words[4];
dword dwords[2];
}qword;
typedef union{
unsigned _BitInt(128) qword;
unsigned __int128 as_u128;
__int128 as_i128;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1, bit_16:1, bit_17:1, bit_18:1, bit_19:1, bit_20:1, bit_21:1, bit_22:1, bit_23:1, bit_24:1, bit_25:1, bit_26:1, bit_27:1, bit_28:1, bit_29:1, bit_30:1, bit_31:1, bit_32:1, bit_33:1, bit_34:1, bit_35:1, bit_36:1, bit_37:1, bit_38:1, bit_39:1, bit_40:1, bit_41:1, bit_42:1, bit_43:1, bit_44:1, bit_45:1, bit_46:1, bit_47:1, bit_48:1, bit_49:1, bit_50:1, bit_51:1, bit_52:1, bit_53:1, bit_54:1, bit_55:1, bit_56:1, bit_57:1, bit_58:1, bit_59:1, bit_60:1, bit_61:1, bit_62:1, bit_63:1, bit_64:1, bit_65:1, bit_66:1, bit_67:1, bit_68:1, bit_69:1, bit_70:1, bit_71:1, bit_72:1, bit_73:1, bit_74:1, bit_75:1, bit_76:1, bit_77:1, bit_78:1, bit_79:1, bit_80:1, bit_81:1, bit_82:1, bit_83:1, bit_84:1, bit_85:1, bit_86:1, bit_87:1, bit_88:1, bit_89:1, bit_90:1, bit_91:1, bit_92:1, bit_93:1, bit_94:1, bit_95:1, bit_96:1, bit_97:1, bit_98:1, bit_99:1, bit_100:1, bit_101:1, bit_102:1, bit_103:1, bit_104:1, bit_105:1, bit_106:1, bit_107:1, bit_108:1, bit_109:1, bit_110:1, bit_111:1, bit_112:1, bit_113:1, bit_114:1, bit_115:1, bit_116:1, bit_117:1, bit_118:1, bit_119:1, bit_120:1, bit_121:1, bit_122:1, bit_123:1, bit_124:1, bit_125:1, bit_126:1, bit_127:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{bool val_1:1, val_2:1, val_4:1, val_8:1, val_16:1, val_32:1, val_64:1, val_128:1, val_256:1, val_512:1, val_1024:1, val_2048:1, val_4096:1, val_8192:1, val_16384:1, val_32768:1, val_65536:1, val_131072:1, val_262144:1, val_524288:1, val_1048576:1, val_2097152:1, val_4194304:1, val_8388608:1, val_16777216:1, val_33554432:1, val_67108864:1, val_134217728:1, val_268435456:1, val_536870912:1, val_1073741824:1, val_2147483648:1, val_4294967296:1, val_8589934592:1, val_17179869184:1, val_34359738368:1, val_68719476736:1, val_137438953472:1, val_274877906944:1, val_549755813888:1, val_1099511627776:1, val_2199023255552:1, val_4398046511104:1, val_8796093022208:1, val_17592186044416:1, val_35184372088832:1, val_70368744177664:1, val_140737488355328:1, val_281474976710656:1, val_562949953421312:1, val_1125899906842624:1, val_2251799813685248:1, val_4503599627370496:1, val_9007199254740992:1, val_18014398509481984:1, val_36028797018963968:1, val_72057594037927936:1, val_144115188075855872:1, val_288230376151711744:1, val_576460752303423488:1, val_1152921504606846976:1, val_2305843009213693952:1, val_4611686018427387904:1, val_9223372036854775808:1, val_18446744073709551616:1, val_36893488147419103232:1, val_73786976294838206464:1, val_147573952589676412928:1, val_295147905179352825856:1, val_590295810358705651712:1, val_1180591620717411303424:1, val_2361183241434822606848:1, val_4722366482869645213696:1, val_9444732965739290427392:1, val_18889465931478580854784:1, val_37778931862957161709568:1, val_75557863725914323419136:1, val_151115727451828646838272:1, val_302231454903657293676544:1, val_604462909807314587353088:1, val_1208925819614629174706176:1, val_2417851639229258349412352:1, val_4835703278458516698824704:1, val_9671406556917033397649408:1, val_19342813113834066795298816:1, val_38685626227668133590597632:1, val_77371252455336267181195264:1, val_154742504910672534362390528:1, val_309485009821345068724781056:1, val_618970019642690137449562112:1, val_1237940039285380274899124224:1, val_2475880078570760549798248448:1, val_4951760157141521099596496896:1, val_9903520314283042199192993792:1, val_19807040628566084398385987584:1, val_39614081257132168796771975168:1, val_79228162514264337593543950336:1, val_158456325028528675187087900672:1, val_316912650057057350374175801344:1, val_633825300114114700748351602688:1, val_1267650600228229401496703205376:1, val_2535301200456458802993406410752:1, val_5070602400912917605986812821504:1, val_10141204801825835211973625643008:1, val_20282409603651670423947251286016:1, val_40564819207303340847894502572032:1, val_81129638414606681695789005144064:1, val_162259276829213363391578010288128:1, val_324518553658426726783156020576256:1, val_649037107316853453566312041152512:1, val_1298074214633706907132624082305024:1, val_2596148429267413814265248164610048:1, val_5192296858534827628530496329220096:1, val_10384593717069655257060992658440192:1, val_20769187434139310514121985316880384:1, val_41538374868278621028243970633760768:1, val_83076749736557242056487941267521536:1, val_166153499473114484112975882535043072:1, val_332306998946228968225951765070086144:1, val_664613997892457936451903530140172288:1, val_1329227995784915872903807060280344576:1, val_2658455991569831745807614120560689152:1, val_5316911983139663491615228241121378304:1, val_10633823966279326983230456482242756608:1, val_21267647932558653966460912964485513216:1, val_42535295865117307932921825928971026432:1, val_85070591730234615865843651857942052864:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, hi_nybble:4;};
struct{byte lo_byte; uint8_t:8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8; byte hi_byte;};
struct{word lo_word; uint16_t:16, :16, :16, :16; word hi_word;};
struct{dword lo_dword; uint32_t:32, :32;dword hi_dword;};
struct{dword lo_qword, hi_qword;};
byte bytes[16];
word words[8];
dword dwords[4];
qword qwords[2];
uint8_t as_vec16u8 vector_attr_clang_or_gcc_with_fallback(16, 16);
int8_t as_vec16i8 vector_attr_clang_or_gcc_with_fallback(16, 16);
uint16_t as_vec8u16 vector_attr_clang_or_gcc_with_fallback(8, 16);
int16_t as_vec8i16 vector_attr_clang_or_gcc_with_fallback(8, 16);
uint32_t as_vec4u32 vector_attr_clang_or_gcc_with_fallback(4, 16);
int32_t as_vec4i32 vector_attr_clang_or_gcc_with_fallback(4, 16);
uint64_t as_vec2u64 vector_attr_clang_or_gcc_with_fallback(2, 16);
int64_t as_vec2i64 vector_attr_clang_or_gcc_with_fallback(2, 16);
__m128i as_m128i;
}oword;
typedef union{
unsigned _BitInt(256) yword;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1, bit_16:1, bit_17:1, bit_18:1, bit_19:1, bit_20:1, bit_21:1, bit_22:1, bit_23:1, bit_24:1, bit_25:1, bit_26:1, bit_27:1, bit_28:1, bit_29:1, bit_30:1, bit_31:1, bit_32:1, bit_33:1, bit_34:1, bit_35:1, bit_36:1, bit_37:1, bit_38:1, bit_39:1, bit_40:1, bit_41:1, bit_42:1, bit_43:1, bit_44:1, bit_45:1, bit_46:1, bit_47:1, bit_48:1, bit_49:1, bit_50:1, bit_51:1, bit_52:1, bit_53:1, bit_54:1, bit_55:1, bit_56:1, bit_57:1, bit_58:1, bit_59:1, bit_60:1, bit_61:1, bit_62:1, bit_63:1, bit_64:1, bit_65:1, bit_66:1, bit_67:1, bit_68:1, bit_69:1, bit_70:1, bit_71:1, bit_72:1, bit_73:1, bit_74:1, bit_75:1, bit_76:1, bit_77:1, bit_78:1, bit_79:1, bit_80:1, bit_81:1, bit_82:1, bit_83:1, bit_84:1, bit_85:1, bit_86:1, bit_87:1, bit_88:1, bit_89:1, bit_90:1, bit_91:1, bit_92:1, bit_93:1, bit_94:1, bit_95:1, bit_96:1, bit_97:1, bit_98:1, bit_99:1, bit_100:1, bit_101:1, bit_102:1, bit_103:1, bit_104:1, bit_105:1, bit_106:1, bit_107:1, bit_108:1, bit_109:1, bit_110:1, bit_111:1, bit_112:1, bit_113:1, bit_114:1, bit_115:1, bit_116:1, bit_117:1, bit_118:1, bit_119:1, bit_120:1, bit_121:1, bit_122:1, bit_123:1, bit_124:1, bit_125:1, bit_126:1, bit_127:1, bit_128:1, bit_129:1, bit_130:1, bit_131:1, bit_132:1, bit_133:1, bit_134:1, bit_135:1, bit_136:1, bit_137:1, bit_138:1, bit_139:1, bit_140:1, bit_141:1, bit_142:1, bit_143:1, bit_144:1, bit_145:1, bit_146:1, bit_147:1, bit_148:1, bit_149:1, bit_150:1, bit_151:1, bit_152:1, bit_153:1, bit_154:1, bit_155:1, bit_156:1, bit_157:1, bit_158:1, bit_159:1, bit_160:1, bit_161:1, bit_162:1, bit_163:1, bit_164:1, bit_165:1, bit_166:1, bit_167:1, bit_168:1, bit_169:1, bit_170:1, bit_171:1, bit_172:1, bit_173:1, bit_174:1, bit_175:1, bit_176:1, bit_177:1, bit_178:1, bit_179:1, bit_180:1, bit_181:1, bit_182:1, bit_183:1, bit_184:1, bit_185:1, bit_186:1, bit_187:1, bit_188:1, bit_189:1, bit_190:1, bit_191:1, bit_192:1, bit_193:1, bit_194:1, bit_195:1, bit_196:1, bit_197:1, bit_198:1, bit_199:1, bit_200:1, bit_201:1, bit_202:1, bit_203:1, bit_204:1, bit_205:1, bit_206:1, bit_207:1, bit_208:1, bit_209:1, bit_210:1, bit_211:1, bit_212:1, bit_213:1, bit_214:1, bit_215:1, bit_216:1, bit_217:1, bit_218:1, bit_219:1, bit_220:1, bit_221:1, bit_222:1, bit_223:1, bit_224:1, bit_225:1, bit_226:1, bit_227:1, bit_228:1, bit_229:1, bit_230:1, bit_231:1, bit_232:1, bit_233:1, bit_234:1, bit_235:1, bit_236:1, bit_237:1, bit_238:1, bit_239:1, bit_240:1, bit_241:1, bit_242:1, bit_243:1, bit_244:1, bit_245:1, bit_246:1, bit_247:1, bit_248:1, bit_249:1, bit_250:1, bit_251:1, bit_252:1, bit_253:1, bit_254:1, bit_255:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, hi_nybble:4;};
struct{byte lo_byte; uint8_t:8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8; byte hi_byte;};
struct{word lo_word; uint16_t:16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16; word hi_word;};
struct{dword lo_dword; uint32_t:32, :32, :32, :32, :32, :32;dword hi_dword;};
struct{dword lo_qword; uint64_t:64, :64; dword hi_qword;};
struct{oword lo_oword, hi_oword;};
byte bytes[32];
word words[16];
dword dwords[8];
qword qwords[4];
oword owords[2];
uint8_t as_vec32u8 vector_attr_clang_or_gcc_with_fallback(32, 32);
int8_t as_vec32i8 vector_attr_clang_or_gcc_with_fallback(32, 32);
uint16_t as_vec16u16 vector_attr_clang_or_gcc_with_fallback(16, 32);
int16_t as_vec16i16 vector_attr_clang_or_gcc_with_fallback(16, 32);
uint32_t as_vec8u32 vector_attr_clang_or_gcc_with_fallback(8, 32);
int32_t as_vec8i32 vector_attr_clang_or_gcc_with_fallback(8, 32);
uint64_t as_vec4u64 vector_attr_clang_or_gcc_with_fallback(4, 32);
int64_t as_vec4i64 vector_attr_clang_or_gcc_with_fallback(4, 32);
unsigned __int128 as_vec2u128 vector_attr_clang_or_gcc_with_fallback(2, 32);
__int128 as_vec2i128 vector_attr_clang_or_gcc_with_fallback(2, 32);
__m256i as_m256i;
}yword;
typedef union{
unsigned _BitInt(512) yword;
struct{bool bit_0:1, bit_1:1, bit_2:1, bit_3:1, bit_4:1, bit_5:1, bit_6:1, bit_7:1, bit_8:1, bit_9:1, bit_10:1, bit_11:1, bit_12:1, bit_13:1, bit_14:1, bit_15:1, bit_16:1, bit_17:1, bit_18:1, bit_19:1, bit_20:1, bit_21:1, bit_22:1, bit_23:1, bit_24:1, bit_25:1, bit_26:1, bit_27:1, bit_28:1, bit_29:1, bit_30:1, bit_31:1, bit_32:1, bit_33:1, bit_34:1, bit_35:1, bit_36:1, bit_37:1, bit_38:1, bit_39:1, bit_40:1, bit_41:1, bit_42:1, bit_43:1, bit_44:1, bit_45:1, bit_46:1, bit_47:1, bit_48:1, bit_49:1, bit_50:1, bit_51:1, bit_52:1, bit_53:1, bit_54:1, bit_55:1, bit_56:1, bit_57:1, bit_58:1, bit_59:1, bit_60:1, bit_61:1, bit_62:1, bit_63:1, bit_64:1, bit_65:1, bit_66:1, bit_67:1, bit_68:1, bit_69:1, bit_70:1, bit_71:1, bit_72:1, bit_73:1, bit_74:1, bit_75:1, bit_76:1, bit_77:1, bit_78:1, bit_79:1, bit_80:1, bit_81:1, bit_82:1, bit_83:1, bit_84:1, bit_85:1, bit_86:1, bit_87:1, bit_88:1, bit_89:1, bit_90:1, bit_91:1, bit_92:1, bit_93:1, bit_94:1, bit_95:1, bit_96:1, bit_97:1, bit_98:1, bit_99:1, bit_100:1, bit_101:1, bit_102:1, bit_103:1, bit_104:1, bit_105:1, bit_106:1, bit_107:1, bit_108:1, bit_109:1, bit_110:1, bit_111:1, bit_112:1, bit_113:1, bit_114:1, bit_115:1, bit_116:1, bit_117:1, bit_118:1, bit_119:1, bit_120:1, bit_121:1, bit_122:1, bit_123:1, bit_124:1, bit_125:1, bit_126:1, bit_127:1, bit_128:1, bit_129:1, bit_130:1, bit_131:1, bit_132:1, bit_133:1, bit_134:1, bit_135:1, bit_136:1, bit_137:1, bit_138:1, bit_139:1, bit_140:1, bit_141:1, bit_142:1, bit_143:1, bit_144:1, bit_145:1, bit_146:1, bit_147:1, bit_148:1, bit_149:1, bit_150:1, bit_151:1, bit_152:1, bit_153:1, bit_154:1, bit_155:1, bit_156:1, bit_157:1, bit_158:1, bit_159:1, bit_160:1, bit_161:1, bit_162:1, bit_163:1, bit_164:1, bit_165:1, bit_166:1, bit_167:1, bit_168:1, bit_169:1, bit_170:1, bit_171:1, bit_172:1, bit_173:1, bit_174:1, bit_175:1, bit_176:1, bit_177:1, bit_178:1, bit_179:1, bit_180:1, bit_181:1, bit_182:1, bit_183:1, bit_184:1, bit_185:1, bit_186:1, bit_187:1, bit_188:1, bit_189:1, bit_190:1, bit_191:1, bit_192:1, bit_193:1, bit_194:1, bit_195:1, bit_196:1, bit_197:1, bit_198:1, bit_199:1, bit_200:1, bit_201:1, bit_202:1, bit_203:1, bit_204:1, bit_205:1, bit_206:1, bit_207:1, bit_208:1, bit_209:1, bit_210:1, bit_211:1, bit_212:1, bit_213:1, bit_214:1, bit_215:1, bit_216:1, bit_217:1, bit_218:1, bit_219:1, bit_220:1, bit_221:1, bit_222:1, bit_223:1, bit_224:1, bit_225:1, bit_226:1, bit_227:1, bit_228:1, bit_229:1, bit_230:1, bit_231:1, bit_232:1, bit_233:1, bit_234:1, bit_235:1, bit_236:1, bit_237:1, bit_238:1, bit_239:1, bit_240:1, bit_241:1, bit_242:1, bit_243:1, bit_244:1, bit_245:1, bit_246:1, bit_247:1, bit_248:1, bit_249:1, bit_250:1, bit_251:1, bit_252:1, bit_253:1, bit_254:1, bit_255:1, bit_256:1, bit_257:1, bit_258:1, bit_259:1, bit_260:1, bit_261:1, bit_262:1, bit_263:1, bit_264:1, bit_265:1, bit_266:1, bit_267:1, bit_268:1, bit_269:1, bit_270:1, bit_271:1, bit_272:1, bit_273:1, bit_274:1, bit_275:1, bit_276:1, bit_277:1, bit_278:1, bit_279:1, bit_280:1, bit_281:1, bit_282:1, bit_283:1, bit_284:1, bit_285:1, bit_286:1, bit_287:1, bit_288:1, bit_289:1, bit_290:1, bit_291:1, bit_292:1, bit_293:1, bit_294:1, bit_295:1, bit_296:1, bit_297:1, bit_298:1, bit_299:1, bit_300:1, bit_301:1, bit_302:1, bit_303:1, bit_304:1, bit_305:1, bit_306:1, bit_307:1, bit_308:1, bit_309:1, bit_310:1, bit_311:1, bit_312:1, bit_313:1, bit_314:1, bit_315:1, bit_316:1, bit_317:1, bit_318:1, bit_319:1, bit_320:1, bit_321:1, bit_322:1, bit_323:1, bit_324:1, bit_325:1, bit_326:1, bit_327:1, bit_328:1, bit_329:1, bit_330:1, bit_331:1, bit_332:1, bit_333:1, bit_334:1, bit_335:1, bit_336:1, bit_337:1, bit_338:1, bit_339:1, bit_340:1, bit_341:1, bit_342:1, bit_343:1, bit_344:1, bit_345:1, bit_346:1, bit_347:1, bit_348:1, bit_349:1, bit_350:1, bit_351:1, bit_352:1, bit_353:1, bit_354:1, bit_355:1, bit_356:1, bit_357:1, bit_358:1, bit_359:1, bit_360:1, bit_361:1, bit_362:1, bit_363:1, bit_364:1, bit_365:1, bit_366:1, bit_367:1, bit_368:1, bit_369:1, bit_370:1, bit_371:1, bit_372:1, bit_373:1, bit_374:1, bit_375:1, bit_376:1, bit_377:1, bit_378:1, bit_379:1, bit_380:1, bit_381:1, bit_382:1, bit_383:1, bit_384:1, bit_385:1, bit_386:1, bit_387:1, bit_388:1, bit_389:1, bit_390:1, bit_391:1, bit_392:1, bit_393:1, bit_394:1, bit_395:1, bit_396:1, bit_397:1, bit_398:1, bit_399:1, bit_400:1, bit_401:1, bit_402:1, bit_403:1, bit_404:1, bit_405:1, bit_406:1, bit_407:1, bit_408:1, bit_409:1, bit_410:1, bit_411:1, bit_412:1, bit_413:1, bit_414:1, bit_415:1, bit_416:1, bit_417:1, bit_418:1, bit_419:1, bit_420:1, bit_421:1, bit_422:1, bit_423:1, bit_424:1, bit_425:1, bit_426:1, bit_427:1, bit_428:1, bit_429:1, bit_430:1, bit_431:1, bit_432:1, bit_433:1, bit_434:1, bit_435:1, bit_436:1, bit_437:1, bit_438:1, bit_439:1, bit_440:1, bit_441:1, bit_442:1, bit_443:1, bit_444:1, bit_445:1, bit_446:1, bit_447:1, bit_448:1, bit_449:1, bit_450:1, bit_451:1, bit_452:1, bit_453:1, bit_454:1, bit_455:1, bit_456:1, bit_457:1, bit_458:1, bit_459:1, bit_460:1, bit_461:1, bit_462:1, bit_463:1, bit_464:1, bit_465:1, bit_466:1, bit_467:1, bit_468:1, bit_469:1, bit_470:1, bit_471:1, bit_472:1, bit_473:1, bit_474:1, bit_475:1, bit_476:1, bit_477:1, bit_478:1, bit_479:1, bit_480:1, bit_481:1, bit_482:1, bit_483:1, bit_484:1, bit_485:1, bit_486:1, bit_487:1, bit_488:1, bit_489:1, bit_490:1, bit_491:1, bit_492:1, bit_493:1, bit_494:1, bit_495:1, bit_496:1, bit_497:1, bit_498:1, bit_499:1, bit_500:1, bit_501:1, bit_502:1, bit_503:1, bit_504:1, bit_505:1, bit_506:1, bit_507:1, bit_508:1, bit_509:1, bit_510:1, bit_511:1;};
struct{bool lsb:1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, :1, msb:1;};
struct{unsigned _BitInt(4) lo_nybble:4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, :4, hi_nybble:4;};
struct{byte lo_byte; uint8_t:8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8, :8; byte hi_byte;};
struct{word lo_word; uint16_t:16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16, :16; word hi_word;};
struct{dword lo_dword; uint32_t:32, :32, :32, :32, :32, :32, :32, :32, :32, :32, :32, :32, :32, :32;dword hi_dword;};
struct{dword lo_qword; uint64_t:64, :64, :64, :64, :64, :64; dword hi_qword;};
struct{oword lo_oword; unsigned __int128:128, :128; oword hi_oword;};
struct{yword lo_yword, hi_yword;};
byte bytes[64];
word words[32];
dword dwords[16];
qword qwords[8];
oword owords[4];
yword ywords[2];
uint8_t as_vec64u8 vector_attr_clang_or_gcc_with_fallback(64, 64);
int8_t as_vec64i8 vector_attr_clang_or_gcc_with_fallback(64, 64);
uint16_t as_vec32u16 vector_attr_clang_or_gcc_with_fallback(32, 64);
int16_t as_vec32i16 vector_attr_clang_or_gcc_with_fallback(32, 64);
uint32_t as_vec16u32 vector_attr_clang_or_gcc_with_fallback(16, 64);
int32_t as_vec16i32 vector_attr_clang_or_gcc_with_fallback(16, 64);
uint64_t as_vec8u64 vector_attr_clang_or_gcc_with_fallback(8, 64);
int64_t as_vec8i64 vector_attr_clang_or_gcc_with_fallback(8, 64);
unsigned __int128 as_vec4u128 vector_attr_clang_or_gcc_with_fallback(4, 64);
__int128 as_vec4i128 vector_attr_clang_or_gcc_with_fallback(4, 64);
#ifdef __clang__
unsigned _BitInt(256) as_vec2u256 [[clang::ext_vector_type(2)]];
_BitInt(256) as_vec2i256 [[clang::ext_vector_type(2)]];
#endif
__m512i as_m512i;
}zword;
_Static_assert(sizeof(byte) == 1);
_Static_assert(sizeof(word) == 2);
_Static_assert(sizeof(dword) == 4);
_Static_assert(sizeof(qword) == 8);
_Static_assert(sizeof(oword) == 16);
_Static_assert(sizeof(yword) == 32);
_Static_assert(sizeof(zword) == 64);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment