aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/CodeGen/MachineIRBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/lib/CodeGen/MachineIRBuilder.cpp')
-rw-r--r--backend/lib/CodeGen/MachineIRBuilder.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/backend/lib/CodeGen/MachineIRBuilder.cpp b/backend/lib/CodeGen/MachineIRBuilder.cpp
index 8536490..d2ac7cc 100644
--- a/backend/lib/CodeGen/MachineIRBuilder.cpp
+++ b/backend/lib/CodeGen/MachineIRBuilder.cpp
@@ -831,6 +831,18 @@ Expected<MachineInstr *> MachineIRBuilder::buildSExt(MachineIRBuilderResult Dest
return buildUnary(opcode(GenericOpcode::G_SEXT), Destination, Source);
}
+GenericOpcode MachineIRBuilder::getBoolExtOp(bool IsVector, bool IsFloatingPoint) const noexcept {
+ switch (Target->getBooleanContents(IsVector, IsFloatingPoint)) {
+ case BooleanContent::ZeroOrNegativeOne:
+ return GenericOpcode::G_SEXT;
+ case BooleanContent::ZeroOrOne:
+ return GenericOpcode::G_ZEXT;
+ case BooleanContent::Undefined:
+ return GenericOpcode::G_ANYEXT;
+ }
+ return GenericOpcode::G_ANYEXT;
+}
+
Expected<MachineInstr *> MachineIRBuilder::buildUndef(MachineIRBuilderResult Destination) const {
return buildImplicitDef(Destination);
}