void CSEMIRBuilder::profileSrcOp(const SrcOp &Op,
GISelInstProfileBuilder &B) const {
switch (Op.getSrcOpKind()) {
+ case SrcOp::SrcType::Ty_Imm:
+ B.addNodeIDImmediate(static_cast<int64_t>(Op.getImm()));
+ break;
case SrcOp::SrcType::Ty_Predicate:
B.addNodeIDImmediate(static_cast<int64_t>(Op.getPredicate()));
break;
auto CSEFMul =
CSEB.buildInstr(TargetOpcode::G_AND, {s32}, {Copies[0], Copies[1]});
EXPECT_EQ(&*CSEFMul, &*NonCSEFMul);
+
+ auto ExtractMIB = CSEB.buildInstr(TargetOpcode::G_EXTRACT, {s16},
+ {Copies[0], static_cast<uint64_t>(0)});
+ auto ExtractMIB1 = CSEB.buildInstr(TargetOpcode::G_EXTRACT, {s16},
+ {Copies[0], static_cast<uint64_t>(0)});
+ auto ExtractMIB2 = CSEB.buildInstr(TargetOpcode::G_EXTRACT, {s16},
+ {Copies[0], static_cast<uint64_t>(1)});
+ EXPECT_EQ(&*ExtractMIB, &*ExtractMIB1);
+ EXPECT_NE(&*ExtractMIB, &*ExtractMIB2);
}
TEST_F(AArch64GISelMITest, TestCSEConstantConfig) {