basic split-k across warps working for GEMM

This commit is contained in:
Philippe Tillet
2019-08-05 19:33:28 -07:00
parent 899b2b72e1
commit d62e581ab3
12 changed files with 99 additions and 63 deletions

View File

@@ -148,13 +148,13 @@ DEFINE_UNARY_FLOAT(fneg)
value* builder::create_insert_nuwnswb_binop(binary_operator::op_t op, value *lhs,
value *rhs, const std::string &name,
bool has_nuw, bool has_nsw) {
if(auto *clhs = dynamic_cast<constant_int*>(lhs)){
if(auto *crhs = dynamic_cast<constant_int*>(rhs)){
constant_expression* result = constant_expression::create(op, clhs, crhs);
if (has_nuw) result->set_has_no_unsigned_wrap();
if (has_nsw) result->set_has_no_signed_wrap();
return result;
}
auto *clhs = dynamic_cast<constant_int*>(lhs);
auto *crhs = dynamic_cast<constant_int*>(rhs);
if(clhs && crhs){
constant_expression* result = constant_expression::create(op, clhs, crhs);
if (has_nuw) result->set_has_no_unsigned_wrap();
if (has_nsw) result->set_has_no_signed_wrap();
return result;
}
else {
binary_operator* result = insert(binary_operator::create(op, lhs, rhs), name);