diff --git a/include/sksl/DSLExpression.h b/include/sksl/DSLExpression.h
index 4c0c54d..4271e14 100644
--- a/include/sksl/DSLExpression.h
+++ b/include/sksl/DSLExpression.h
@@ -149,6 +149,9 @@
 DSLPossibleExpression operator^(DSLExpression left, DSLExpression right);
 DSLPossibleExpression operator^=(DSLExpression left, DSLExpression right);
 DSLPossibleExpression operator,(DSLExpression left, DSLExpression right);
+DSLPossibleExpression operator,(DSLPossibleExpression left, DSLExpression right);
+DSLPossibleExpression operator,(DSLExpression left, DSLPossibleExpression right);
+DSLPossibleExpression operator,(DSLPossibleExpression left, DSLPossibleExpression right);
 DSLPossibleExpression operator==(DSLExpression left, DSLExpression right);
 DSLPossibleExpression operator!=(DSLExpression left, DSLExpression right);
 DSLPossibleExpression operator>(DSLExpression left, DSLExpression right);
diff --git a/include/sksl/DSLStatement.h b/include/sksl/DSLStatement.h
index 91604e2..20e8a02 100644
--- a/include/sksl/DSLStatement.h
+++ b/include/sksl/DSLStatement.h
@@ -62,6 +62,7 @@
     friend class DSLExpression;
     friend class DSLPossibleStatement;
     friend class DSLWriter;
+    friend DSLStatement operator,(DSLStatement left, DSLStatement right);
 };
 
 /**
@@ -90,6 +91,8 @@
     friend class DSLStatement;
 };
 
+DSLStatement operator,(DSLStatement left, DSLStatement right);
+
 } // namespace dsl
 
 } // namespace SkSL
diff --git a/src/sksl/dsl/DSLExpression.cpp b/src/sksl/dsl/DSLExpression.cpp
index 6eb740b..389e995 100644
--- a/src/sksl/dsl/DSLExpression.cpp
+++ b/src/sksl/dsl/DSLExpression.cpp
@@ -201,6 +201,22 @@
                                     right.release());
 }
 
+DSLPossibleExpression operator,(DSLPossibleExpression left, DSLExpression right) {
+    return DSLWriter::ConvertBinary(DSLExpression(std::move(left)).release(),
+                                    SkSL::Token::Kind::TK_COMMA, right.release());
+}
+
+DSLPossibleExpression operator,(DSLExpression left, DSLPossibleExpression right) {
+    return DSLWriter::ConvertBinary(left.release(), SkSL::Token::Kind::TK_COMMA,
+                                    DSLExpression(std::move(right)).release());
+}
+
+DSLPossibleExpression operator,(DSLPossibleExpression left, DSLPossibleExpression right) {
+    return DSLWriter::ConvertBinary(DSLExpression(std::move(left)).release(),
+                                    SkSL::Token::Kind::TK_COMMA,
+                                    DSLExpression(std::move(right)).release());
+}
+
 std::unique_ptr<SkSL::Expression> DSLExpression::coerceAndRelease(const SkSL::Type& type) {
     // tripping this assert means we had an error occur somewhere else in DSL construction that
     // wasn't caught where it should have been
diff --git a/src/sksl/dsl/DSLStatement.cpp b/src/sksl/dsl/DSLStatement.cpp
index 9724023..2037759 100644
--- a/src/sksl/dsl/DSLStatement.cpp
+++ b/src/sksl/dsl/DSLStatement.cpp
@@ -11,6 +11,7 @@
 #include "include/sksl/DSLExpression.h"
 #include "src/sksl/SkSLCompiler.h"
 #include "src/sksl/dsl/priv/DSLWriter.h"
+#include "src/sksl/ir/SkSLBlock.h"
 #include "src/sksl/ir/SkSLExpressionStatement.h"
 
 #if !defined(SKSL_STANDALONE) && SK_SUPPORT_GPU
@@ -75,6 +76,14 @@
     }
 }
 
+DSLStatement operator,(DSLStatement left, DSLStatement right) {
+    StatementArray stmts;
+    stmts.reserve_back(2);
+    stmts.push_back(left.release());
+    stmts.push_back(right.release());
+    return DSLStatement(SkSL::Block::MakeUnscoped(/*offset=*/-1, std::move(stmts)));
+}
+
 } // namespace dsl
 
 } // namespace SkSL
diff --git a/tests/SkSLDSLTest.cpp b/tests/SkSLDSLTest.cpp
index 7d8d9e4..6b837ad 100644
--- a/tests/SkSLDSLTest.cpp
+++ b/tests/SkSLDSLTest.cpp
@@ -1016,6 +1016,9 @@
     Var a(kInt_Type, "a", 1), b(kInt_Type, "b", 2);
     Statement y = Block(Declare(a), Declare(b), a = b);
     EXPECT_EQUAL(y, "{ int a = 1; int b = 2; (a = b); }");
+
+    Statement z = (If(a > 0, --a), ++b);
+    EXPECT_EQUAL(z, "if ((a > 0)) --a; ++b;");
 }
 
 DEF_GPUTEST_FOR_MOCK_CONTEXT(DSLBreak, r, ctxInfo) {
