diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py
index 59cb0763afb98c1c9cf26ec7e3c5553d840ae6c3..1ced7f2d66705467db7514fbbbb333ec49708680 100644
--- a/loopy/kernel/__init__.py
+++ b/loopy/kernel/__init__.py
@@ -899,6 +899,9 @@ class LoopKernel(Record):
 
             lines.extend(trailing)
 
+            if insn.predicates:
+                lines.append(10*" " + "if (%s)" % " && ".join(insn.predicates))
+
         dep_lines = []
         for insn in self.instructions:
             if insn.insn_deps:
diff --git a/loopy/kernel/data.py b/loopy/kernel/data.py
index 9e9538b2ee47e155309a5bdb6e88b68931262c8c..d3e6ee475f296780c0a6d7a42b3f6d6559590f00 100644
--- a/loopy/kernel/data.py
+++ b/loopy/kernel/data.py
@@ -587,6 +587,8 @@ class ExpressionInstruction(InstructionBase):
         if options:
             result += " (%s)" % (": ".join(options))
 
+        if self.predicates:
+            result += "\n" + 10*" " + "if (%s)" % " && ".join(self.predicates)
         return result