positive_integernegative_integerhalfbfloatfloatdoublefp128x86_fp80ppc_fp128nullnonestructurepacked_structurearrayvectorsplatzeroinitializerundefpoisonblockaddressdso_local_equivalentno_cfitruncptrtointinttoptrbitcastaddrspacecastgetelementptr@"getelementptr inbounds"add@"add nsw"@"add nuw"sub@"sub nsw"@"sub nuw"shlxor@"asm"@"asm sideeffect"@"asm alignstack"@"asm sideeffect alignstack"@"asm inteldialect"@"asm sideeffect inteldialect"@"asm alignstack inteldialect"@"asm sideeffect alignstack inteldialect"@"asm unwind"@"asm sideeffect unwind"@"asm alignstack unwind"@"asm sideeffect alignstack unwind"@"asm inteldialect unwind"@"asm sideeffect inteldialect unwind"@"asm alignstack inteldialect unwind"@"asm sideeffect alignstack inteldialect unwind"pub fn toBinaryOpcode(self: Tag) BinaryOpcodeself: Tagpub fn toBinaryOpcode(self: Tag) BinaryOpcode {
return switch (self) {
.add,
.@"add nsw",
.@"add nuw",
=> .add,
.sub,
.@"sub nsw",
.@"sub nuw",
=> .sub,
.shl => .shl,
.xor => .xor,
else => unreachable,
};
}pub fn toCastOpcode(self: Tag) CastOpcodeself: Tagpub fn toCastOpcode(self: Tag) CastOpcode {
return switch (self) {
.trunc => .trunc,
.ptrtoint => .ptrtoint,
.inttoptr => .inttoptr,
.bitcast => .bitcast,
.addrspacecast => .addrspacecast,
else => unreachable,
};
}pub const Tag = enum(u7) {
positive_integer,
negative_integer,
half,
bfloat,
float,
double,
fp128,
x86_fp80,
ppc_fp128,
null,
none,
structure,
packed_structure,
array,
string,
vector,
splat,
zeroinitializer,
undef,
poison,
blockaddress,
dso_local_equivalent,
no_cfi,
trunc,
ptrtoint,
inttoptr,
bitcast,
addrspacecast,
getelementptr,
@"getelementptr inbounds",
add,
@"add nsw",
@"add nuw",
sub,
@"sub nsw",
@"sub nuw",
shl,
xor,
@"asm",
@"asm sideeffect",
@"asm alignstack",
@"asm sideeffect alignstack",
@"asm inteldialect",
@"asm sideeffect inteldialect",
@"asm alignstack inteldialect",
@"asm sideeffect alignstack inteldialect",
@"asm unwind",
@"asm sideeffect unwind",
@"asm alignstack unwind",
@"asm sideeffect alignstack unwind",
@"asm inteldialect unwind",
@"asm sideeffect inteldialect unwind",
@"asm alignstack inteldialect unwind",
@"asm sideeffect alignstack inteldialect unwind",
pub fn toBinaryOpcode(self: Tag) BinaryOpcode {
return switch (self) {
.add,
.@"add nsw",
.@"add nuw",
=> .add,
.sub,
.@"sub nsw",
.@"sub nuw",
=> .sub,
.shl => .shl,
.xor => .xor,
else => unreachable,
};
}
pub fn toCastOpcode(self: Tag) CastOpcode {
return switch (self) {
.trunc => .trunc,
.ptrtoint => .ptrtoint,
.inttoptr => .inttoptr,
.bitcast => .bitcast,
.addrspacecast => .addrspacecast,
else => unreachable,
};
}
}