diff --git a/mpact/sim/decoder/bin_format_visitor.cc b/mpact/sim/decoder/bin_format_visitor.cc
index 2d8fc8a..83658c8 100644
--- a/mpact/sim/decoder/bin_format_visitor.cc
+++ b/mpact/sim/decoder/bin_format_visitor.cc
@@ -14,8 +14,10 @@
 
 #include "mpact/sim/decoder/bin_format_visitor.h"
 
+#include <algorithm>
 #include <cstdint>
 #include <deque>
+#include <filesystem>  // NOLINT: third party.
 #include <fstream>
 #include <iostream>
 #include <istream>
@@ -146,10 +148,22 @@
   decoder_name_ = decoder_name;
 
   include_dir_vec_.push_back(".");
+
   for (const auto& root : include_roots) {
     include_dir_vec_.push_back(root);
   }
 
+  // Add the directory of the input file to the include roots if not already
+  // present.
+  if (!file_names.empty()) {
+    std::string dir = std::filesystem::path(file_names[0]).stem().string();
+    auto it = std::find(include_dir_vec_.begin(), include_dir_vec_.end(), dir);
+    if (it == include_dir_vec_.end()) {
+      include_dir_vec_.push_back(
+          std::filesystem::path(file_names[0]).stem().string());
+    }
+  }
+
   std::istream* source_stream = &std::cin;
 
   if (!file_names.empty()) {
@@ -178,8 +192,16 @@
   }
   // Visit the parse tree starting at the namespaces declaration.
   PreProcessDeclarations(top_level->declaration_list());
-  // Process additional source files.
+
+  // Process any additional source files.
   for (int i = 1; i < file_names.size(); ++i) {
+    // Add the directory of the input file to the include roots if not already
+    // present.
+    std::string dir = std::filesystem::path(file_names[i]).stem().string();
+    auto it = std::find(include_dir_vec_.begin(), include_dir_vec_.end(), dir);
+    if (it == include_dir_vec_.end()) {
+      include_dir_vec_.push_back(dir);
+    }
     ParseIncludeFile(top_level, file_names[i], {});
   }
   // Process the parse tree.
diff --git a/mpact/sim/decoder/instruction_set_visitor.cc b/mpact/sim/decoder/instruction_set_visitor.cc
index fd5d6f5..a73f4b1 100644
--- a/mpact/sim/decoder/instruction_set_visitor.cc
+++ b/mpact/sim/decoder/instruction_set_visitor.cc
@@ -14,6 +14,7 @@
 
 #include "mpact/sim/decoder/instruction_set_visitor.h"
 
+#include <algorithm>
 #include <cctype>
 #include <cstddef>
 #include <filesystem>  // NOLINT: third party.
@@ -108,6 +109,16 @@
     include_dir_vec_.push_back(include_root);
   }
 
+  // Add the directory of the input file to the include roots.
+  if (!file_names.empty()) {
+    std::string dir = std::filesystem::path(file_names[0]).stem().string();
+    auto it = std::find(include_dir_vec_.begin(), include_dir_vec_.end(), dir);
+    if (it == include_dir_vec_.end()) {
+      include_dir_vec_.push_back(
+          std::filesystem::path(file_names[0]).stem().string());
+    }
+  }
+
   std::string isa_prefix = prefix;
   std::istream* source_stream = &std::cin;
 
@@ -137,6 +148,13 @@
   VisitTopLevel(top_level);
   // Process additional source files.
   for (int i = 1; i < file_names.size(); ++i) {
+    // Add the directory of the input file to the include roots if not already
+    // present.
+    std::string dir = std::filesystem::path(file_names[i]).stem().string();
+    auto it = std::find(include_dir_vec_.begin(), include_dir_vec_.end(), dir);
+    if (it == include_dir_vec_.end()) {
+      include_dir_vec_.push_back(dir);
+    }
     ParseIncludeFile(top_level, file_names[i], {});
   }
   // Now process the parse tree.
