Skip to content

Commit 7752140

Browse files
address review comments
Signed-off-by: Tsang, Whitney <[email protected]>
1 parent 87da7c9 commit 7752140

File tree

1 file changed

+31
-100
lines changed

1 file changed

+31
-100
lines changed

polygeist/tools/cgeist/Lib/CGExpr.cc

Lines changed: 31 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -954,200 +954,140 @@ MLIRScanner::EmitBuiltinOps(clang::CallExpr *expr) {
954954
true);
955955
}
956956

957+
std::vector<mlir::Value> args;
958+
auto VisitArgs = [&]() {
959+
assert(args.empty() && "Expecting empty args");
960+
for (auto a : expr->arguments())
961+
args.push_back(Visit(a).getValue(builder));
962+
};
957963
Optional<Value> V = None;
958964
switch (expr->getBuiltinCallee()) {
959965
case Builtin::BIceil: {
960-
std::vector<mlir::Value> args;
961-
for (auto a : expr->arguments()) {
962-
args.push_back(Visit(a).getValue(builder));
963-
}
966+
VisitArgs();
964967
V = builder.create<math::CeilOp>(loc, args[0]);
965968
} break;
966969
case Builtin::BIcos: {
967-
std::vector<mlir::Value> args;
968-
for (auto a : expr->arguments()) {
969-
args.push_back(Visit(a).getValue(builder));
970-
}
970+
VisitArgs();
971971
V = builder.create<mlir::math::CosOp>(loc, args[0]);
972972
} break;
973973
case Builtin::BIexp:
974974
case Builtin::BIexpf: {
975-
std::vector<mlir::Value> args;
976-
for (auto a : expr->arguments()) {
977-
args.push_back(Visit(a).getValue(builder));
978-
}
975+
VisitArgs();
979976
V = builder.create<mlir::math::ExpOp>(loc, args[0]);
980977
} break;
981978
case Builtin::BIlog: {
982-
std::vector<mlir::Value> args;
983-
for (auto a : expr->arguments()) {
984-
args.push_back(Visit(a).getValue(builder));
985-
}
979+
VisitArgs();
986980
V = builder.create<mlir::math::LogOp>(loc, args[0]);
987981
} break;
988982
case Builtin::BIsin: {
989-
std::vector<mlir::Value> args;
990-
for (auto a : expr->arguments()) {
991-
args.push_back(Visit(a).getValue(builder));
992-
}
983+
VisitArgs();
993984
V = builder.create<mlir::math::SinOp>(loc, args[0]);
994985
} break;
995986
case Builtin::BIsqrt:
996987
case Builtin::BIsqrtf: {
997-
std::vector<mlir::Value> args;
998-
for (auto a : expr->arguments()) {
999-
args.push_back(Visit(a).getValue(builder));
1000-
}
988+
VisitArgs();
1001989
V = builder.create<mlir::math::SqrtOp>(loc, args[0]);
1002990
} break;
1003991
case Builtin::BI__builtin_atanh:
1004992
case Builtin::BI__builtin_atanhf:
1005993
case Builtin::BI__builtin_atanhl: {
1006-
std::vector<mlir::Value> args;
1007-
for (auto a : expr->arguments()) {
1008-
args.push_back(Visit(a).getValue(builder));
1009-
}
994+
VisitArgs();
1010995
V = builder.create<math::AtanOp>(loc, args[0]);
1011996
} break;
1012997
case Builtin::BI__builtin_copysign:
1013998
case Builtin::BI__builtin_copysignf:
1014999
case Builtin::BI__builtin_copysignl: {
1015-
std::vector<mlir::Value> args;
1016-
for (auto a : expr->arguments()) {
1017-
args.push_back(Visit(a).getValue(builder));
1018-
}
1000+
VisitArgs();
10191001
V = builder.create<LLVM::CopySignOp>(loc, args[0], args[1]);
10201002
} break;
10211003
case Builtin::BI__builtin_exp2:
10221004
case Builtin::BI__builtin_exp2f:
10231005
case Builtin::BI__builtin_exp2l: {
1024-
std::vector<mlir::Value> args;
1025-
for (auto a : expr->arguments()) {
1026-
args.push_back(Visit(a).getValue(builder));
1027-
}
1006+
VisitArgs();
10281007
V = builder.create<math::Exp2Op>(loc, args[0]);
10291008
} break;
10301009
case Builtin::BI__builtin_expm1:
10311010
case Builtin::BI__builtin_expm1f:
10321011
case Builtin::BI__builtin_expm1l: {
1033-
std::vector<mlir::Value> args;
1034-
for (auto a : expr->arguments()) {
1035-
args.push_back(Visit(a).getValue(builder));
1036-
}
1012+
VisitArgs();
10371013
V = builder.create<math::ExpM1Op>(loc, args[0]);
10381014
} break;
10391015
case Builtin::BI__builtin_fma:
10401016
case Builtin::BI__builtin_fmaf:
10411017
case Builtin::BI__builtin_fmal: {
1042-
std::vector<mlir::Value> args;
1043-
for (auto a : expr->arguments()) {
1044-
args.push_back(Visit(a).getValue(builder));
1045-
}
1018+
VisitArgs();
10461019
V = builder.create<LLVM::FMAOp>(loc, args[0], args[1], args[2]);
10471020
} break;
10481021
case Builtin::BI__builtin_fmax:
10491022
case Builtin::BI__builtin_fmaxf:
10501023
case Builtin::BI__builtin_fmaxl: {
1051-
std::vector<mlir::Value> args;
1052-
for (auto a : expr->arguments()) {
1053-
args.push_back(Visit(a).getValue(builder));
1054-
}
1024+
VisitArgs();
10551025
V = builder.create<LLVM::MaxNumOp>(loc, args[0], args[1]);
10561026
} break;
10571027
case Builtin::BI__builtin_fmin:
10581028
case Builtin::BI__builtin_fminf:
10591029
case Builtin::BI__builtin_fminl: {
1060-
std::vector<mlir::Value> args;
1061-
for (auto a : expr->arguments()) {
1062-
args.push_back(Visit(a).getValue(builder));
1063-
}
1030+
VisitArgs();
10641031
V = builder.create<LLVM::MinNumOp>(loc, args[0], args[1]);
10651032
} break;
10661033
case Builtin::BI__builtin_log1p:
10671034
case Builtin::BI__builtin_log1pf:
10681035
case Builtin::BI__builtin_log1pl: {
1069-
std::vector<mlir::Value> args;
1070-
for (auto a : expr->arguments()) {
1071-
args.push_back(Visit(a).getValue(builder));
1072-
}
1036+
VisitArgs();
10731037
V = builder.create<math::Log1pOp>(loc, args[0]);
10741038
} break;
10751039
case Builtin::BI__builtin_pow:
10761040
case Builtin::BI__builtin_powf:
10771041
case Builtin::BI__builtin_powl: {
1078-
std::vector<mlir::Value> args;
1079-
for (auto a : expr->arguments()) {
1080-
args.push_back(Visit(a).getValue(builder));
1081-
}
1042+
VisitArgs();
10821043
V = builder.create<math::PowFOp>(loc, args[0], args[1]);
10831044
} break;
10841045
case Builtin::BI__builtin_assume: {
1085-
std::vector<mlir::Value> args;
1086-
for (auto a : expr->arguments()) {
1087-
args.push_back(Visit(a).getValue(builder));
1088-
}
1046+
VisitArgs();
10891047
V = builder.create<LLVM::AssumeOp>(loc, args[0])->getResult(0);
10901048
} break;
10911049
case Builtin::BI__builtin_isgreater: {
1092-
std::vector<mlir::Value> args;
1093-
for (auto a : expr->arguments()) {
1094-
args.push_back(Visit(a).getValue(builder));
1095-
}
1050+
VisitArgs();
10961051
auto postTy =
10971052
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
10981053
V = builder.create<ExtUIOp>(
10991054
loc, postTy,
11001055
builder.create<CmpFOp>(loc, CmpFPredicate::OGT, args[0], args[1]));
11011056
} break;
11021057
case Builtin::BI__builtin_isgreaterequal: {
1103-
std::vector<mlir::Value> args;
1104-
for (auto a : expr->arguments()) {
1105-
args.push_back(Visit(a).getValue(builder));
1106-
}
1058+
VisitArgs();
11071059
auto postTy =
11081060
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
11091061
V = builder.create<ExtUIOp>(
11101062
loc, postTy,
11111063
builder.create<CmpFOp>(loc, CmpFPredicate::OGE, args[0], args[1]));
11121064
} break;
11131065
case Builtin::BI__builtin_isless: {
1114-
std::vector<mlir::Value> args;
1115-
for (auto a : expr->arguments()) {
1116-
args.push_back(Visit(a).getValue(builder));
1117-
}
1066+
VisitArgs();
11181067
auto postTy =
11191068
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
11201069
V = builder.create<ExtUIOp>(
11211070
loc, postTy,
11221071
builder.create<CmpFOp>(loc, CmpFPredicate::OLT, args[0], args[1]));
11231072
} break;
11241073
case Builtin::BI__builtin_islessequal: {
1125-
std::vector<mlir::Value> args;
1126-
for (auto a : expr->arguments()) {
1127-
args.push_back(Visit(a).getValue(builder));
1128-
}
1074+
VisitArgs();
11291075
auto postTy =
11301076
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
11311077
V = builder.create<ExtUIOp>(
11321078
loc, postTy,
11331079
builder.create<CmpFOp>(loc, CmpFPredicate::OLE, args[0], args[1]));
11341080
} break;
11351081
case Builtin::BI__builtin_islessgreater: {
1136-
std::vector<mlir::Value> args;
1137-
for (auto a : expr->arguments()) {
1138-
args.push_back(Visit(a).getValue(builder));
1139-
}
1082+
VisitArgs();
11401083
auto postTy =
11411084
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
11421085
V = builder.create<ExtUIOp>(
11431086
loc, postTy,
11441087
builder.create<CmpFOp>(loc, CmpFPredicate::ONE, args[0], args[1]));
11451088
} break;
11461089
case Builtin::BI__builtin_isunordered: {
1147-
std::vector<mlir::Value> args;
1148-
for (auto a : expr->arguments()) {
1149-
args.push_back(Visit(a).getValue(builder));
1150-
}
1090+
VisitArgs();
11511091
auto postTy =
11521092
Glob.getTypes().getMLIRType(expr->getType()).cast<mlir::IntegerType>();
11531093
V = builder.create<ExtUIOp>(
@@ -1156,21 +1096,15 @@ MLIRScanner::EmitBuiltinOps(clang::CallExpr *expr) {
11561096
} break;
11571097
case Builtin::BImemmove:
11581098
case Builtin::BI__builtin_memmove: {
1159-
std::vector<mlir::Value> args;
1160-
for (auto a : expr->arguments()) {
1161-
args.push_back(Visit(a).getValue(builder));
1162-
}
1099+
VisitArgs();
11631100
builder.create<LLVM::MemmoveOp>(
11641101
loc, args[0], args[1], args[2],
11651102
/*isVolatile*/ builder.create<ConstantIntOp>(loc, false, 1));
11661103
V = args[0];
11671104
} break;
11681105
case Builtin::BImemset:
11691106
case Builtin::BI__builtin_memset: {
1170-
std::vector<mlir::Value> args;
1171-
for (auto a : expr->arguments()) {
1172-
args.push_back(Visit(a).getValue(builder));
1173-
}
1107+
VisitArgs();
11741108
builder.create<LLVM::MemsetOp>(
11751109
loc, args[0],
11761110
builder.create<TruncIOp>(loc, builder.getI8Type(), args[1]), args[2],
@@ -1179,10 +1113,7 @@ MLIRScanner::EmitBuiltinOps(clang::CallExpr *expr) {
11791113
} break;
11801114
case Builtin::BImemcpy:
11811115
case Builtin::BI__builtin_memcpy: {
1182-
std::vector<mlir::Value> args;
1183-
for (auto a : expr->arguments()) {
1184-
args.push_back(Visit(a).getValue(builder));
1185-
}
1116+
VisitArgs();
11861117
builder.create<LLVM::MemcpyOp>(
11871118
loc, args[0], args[1], args[2],
11881119
/*isVolatile*/ builder.create<ConstantIntOp>(loc, false, 1));

0 commit comments

Comments
 (0)