diff --git a/source/val/validate_extensions.cpp b/source/val/validate_extensions.cpp
index a7167fc..b5b9878 100644
--- a/source/val/validate_extensions.cpp
+++ b/source/val/validate_extensions.cpp
@@ -3112,6 +3112,7 @@
       case OpenCLDebugInfo100DebugMacroDef:
       case OpenCLDebugInfo100DebugMacroUndef:
       case OpenCLDebugInfo100DebugImportedEntity:
+      case OpenCLDebugInfo100DebugModuleINTEL:
         break;
       case OpenCLDebugInfo100InstructionsMax:
         assert(0);
diff --git a/test/text_to_binary.extension_test.cpp b/test/text_to_binary.extension_test.cpp
index 0857984..1324206 100644
--- a/test/text_to_binary.extension_test.cpp
+++ b/test/text_to_binary.extension_test.cpp
@@ -1018,5 +1018,20 @@
                   SpvPackedVectorFormatPackedVectorFormat4x8BitKHR})},
         })));
 
+// SPV_KHR_bit_instructions
+
+INSTANTIATE_TEST_SUITE_P(
+    SPV_KHR_bit_instructions, ExtensionRoundTripTest,
+    Combine(Values(SPV_ENV_UNIVERSAL_1_0, SPV_ENV_UNIVERSAL_1_5,
+                   SPV_ENV_VULKAN_1_0, SPV_ENV_VULKAN_1_1, SPV_ENV_VULKAN_1_2),
+            ValuesIn(std::vector<AssemblyCase>{
+                {"OpExtension \"SPV_KHR_bit_instructions\"\n",
+                 MakeInstruction(SpvOpExtension,
+                                 MakeVector("SPV_KHR_bit_instructions"))},
+                {"OpCapability BitInstructions\n",
+                 MakeInstruction(SpvOpCapability,
+                                 {SpvCapabilityBitInstructions})},
+            })));
+
 }  // namespace
 }  // namespace spvtools
diff --git a/test/val/CMakeLists.txt b/test/val/CMakeLists.txt
index 8324964..b1e12ac 100644
--- a/test/val/CMakeLists.txt
+++ b/test/val/CMakeLists.txt
@@ -42,6 +42,7 @@
        val_extension_spv_khr_linkonce_odr.cpp
        val_extension_spv_khr_subgroup_uniform_control_flow.cpp
        val_extension_spv_khr_integer_dot_product.cpp
+       val_extension_spv_khr_bit_instructions.cpp
        val_extension_spv_khr_terminate_invocation.cpp
        val_ext_inst_test.cpp
        ${VAL_TEST_COMMON_SRCS}
diff --git a/test/val/val_extension_spv_khr_bit_instructions.cpp b/test/val/val_extension_spv_khr_bit_instructions.cpp
new file mode 100644
index 0000000..0e92671
--- /dev/null
+++ b/test/val/val_extension_spv_khr_bit_instructions.cpp
@@ -0,0 +1,117 @@
+// Copyright (c) 2021 The Khronos Group Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Tests for OpExtension validator rules.
+
+#include <string>
+#include <vector>
+
+#include "gmock/gmock.h"
+#include "source/enum_string_mapping.h"
+#include "source/extensions.h"
+#include "source/spirv_target_env.h"
+#include "test/test_fixture.h"
+#include "test/unit_spirv.h"
+#include "test/val/val_fixtures.h"
+
+namespace spvtools {
+namespace val {
+namespace {
+
+using ::testing::HasSubstr;
+using ::testing::Values;
+using ::testing::ValuesIn;
+
+using ValidateSpvKHRBitInstructions = spvtest::ValidateBase<bool>;
+
+TEST_F(ValidateSpvKHRBitInstructions, Valid) {
+  const std::string str = R"(
+    OpCapability Kernel
+    OpCapability Addresses
+    OpCapability BitInstructions
+    OpExtension "SPV_KHR_bit_instructions"
+    OpMemoryModel Physical32 OpenCL
+    OpEntryPoint Kernel %main "main"
+    
+    %void    = OpTypeVoid
+    %void_fn = OpTypeFunction %void
+    %u32 = OpTypeInt 32 0
+    %u32_1 = OpConstant %u32 1
+
+    %main = OpFunction %void None %void_fn
+    %entry = OpLabel
+    %unused = OpBitReverse %u32 %u32_1
+    OpReturn
+    OpFunctionEnd
+)";
+  CompileSuccessfully(str.c_str());
+  EXPECT_EQ(SPV_SUCCESS, ValidateInstructions());
+}
+
+TEST_F(ValidateSpvKHRBitInstructions, RequiresExtension) {
+  const std::string str = R"(
+    OpCapability Kernel
+    OpCapability Addresses
+    OpCapability BitInstructions
+    OpMemoryModel Physical32 OpenCL
+    OpEntryPoint Kernel %main "main"
+    
+    %void    = OpTypeVoid
+    %void_fn = OpTypeFunction %void
+    %u32 = OpTypeInt 32 0
+    %u32_1 = OpConstant %u32 1
+
+    %main = OpFunction %void None %void_fn
+    %entry = OpLabel
+    %unused = OpBitReverse %u32 %u32_1
+    OpReturn
+    OpFunctionEnd
+)";
+  CompileSuccessfully(str.c_str());
+  EXPECT_NE(SPV_SUCCESS, ValidateInstructions());
+  EXPECT_THAT(
+      getDiagnosticString(),
+      HasSubstr("1st operand of Capability: operand BitInstructions(6025) "
+                "requires one of these extensions: SPV_KHR_bit_instructions"));
+}
+
+TEST_F(ValidateSpvKHRBitInstructions, RequiresCapability) {
+  const std::string str = R"(
+    OpCapability Kernel
+    OpCapability Addresses
+    OpExtension "SPV_KHR_bit_instructions"
+    OpMemoryModel Physical32 OpenCL
+    OpEntryPoint Kernel %main "main"
+    
+    %void    = OpTypeVoid
+    %void_fn = OpTypeFunction %void
+    %u32 = OpTypeInt 32 0
+    %u32_1 = OpConstant %u32 1
+
+    %main = OpFunction %void None %void_fn
+    %entry = OpLabel
+    %unused = OpBitReverse %u32 %u32_1
+    OpReturn
+    OpFunctionEnd
+)";
+  CompileSuccessfully(str.c_str());
+  EXPECT_NE(SPV_SUCCESS, ValidateInstructions());
+  EXPECT_THAT(getDiagnosticString(),
+              HasSubstr("Opcode BitReverse requires one of these capabilities: "
+                        "Shader BitInstructions"));
+}
+
+}  // namespace
+}  // namespace val
+}  // namespace spvtools
