diff --git a/benchmarks/seq/game_of_life.c b/benchmarks/seq/game_of_life.c
new file mode 100644
index 0000000000000000000000000000000000000000..9f3205058c7ea489f9191381c692ce8987209498
--- /dev/null
+++ b/benchmarks/seq/game_of_life.c
@@ -0,0 +1,45 @@
+#include <stdint.h> // uint8_t
+#include <stdlib.h> // EXIT_SUCCESS, size_t
+#include <string.h> // memcpy()
+
+#define T uint8_t
+#define X_LEN 10
+#define Y_LEN 10
+#define STEP_CNT 16
+
+int main(void)
+{
+    T in[] = {
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,1,0,0,0,0,0,0,0,
+        0,0,0,1,0,0,0,0,0,0,
+        0,1,1,1,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,
+    };
+    #define size (sizeof(in)/sizeof(T))
+    T out[size];
+    for(size_t step = 0; step < STEP_CNT; step++) {
+        for(size_t i = 0; i < Y_LEN; i++) {
+            const size_t idx_y = i * X_LEN;
+            for(size_t j = 0; j < X_LEN; j++) {
+                const size_t idx = idx_y + j;
+                if(i > 0 && i < (Y_LEN-1) && j > 0 && j < (X_LEN-1)) {
+                    const T cnt =
+                        in[idx - 11] + in[idx - 10] + in[idx -  9] +
+                        in[idx -  1] +       0      + in[idx +  1] +
+                        in[idx +  9] + in[idx + 10] + in[idx + 11];
+                    out[idx] = (cnt == 3) || ((in[idx] == 1) && (cnt == 2));
+                } else {
+                    out[idx] = 0;
+                }
+            }
+        }
+        memcpy(in, out, size);
+    }
+    return EXIT_SUCCESS;
+}