diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 22528cc..ab5c4fa 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -550,6 +550,7 @@
 if (${TINT_BUILD_HLSL_WRITER})
   list(APPEND TINT_TEST_SRCS
     writer/hlsl/generator_impl_alias_type_test.cc
+    writer/hlsl/generator_impl_array_accessor_test.cc
     writer/hlsl/generator_impl_assign_test.cc
     writer/hlsl/generator_impl_binary_test.cc
     writer/hlsl/generator_impl_break_test.cc
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 27d7b12..089c764 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -14,6 +14,7 @@
 
 #include "src/writer/hlsl/generator_impl.h"
 
+#include "src/ast/array_accessor_expression.h"
 #include "src/ast/assignment_statement.h"
 #include "src/ast/binary_expression.h"
 #include "src/ast/bool_literal.h"
@@ -102,6 +103,20 @@
   return true;
 }
 
+bool GeneratorImpl::EmitArrayAccessor(ast::ArrayAccessorExpression* expr) {
+  if (!EmitExpression(expr->array())) {
+    return false;
+  }
+  out_ << "[";
+
+  if (!EmitExpression(expr->idx_expr())) {
+    return false;
+  }
+  out_ << "]";
+
+  return true;
+}
+
 bool GeneratorImpl::EmitAssign(ast::AssignmentStatement* stmt) {
   make_indent();
 
@@ -311,6 +326,9 @@
 }
 
 bool GeneratorImpl::EmitExpression(ast::Expression* expr) {
+  if (expr->IsArrayAccessor()) {
+    return EmitArrayAccessor(expr->AsArrayAccessor());
+  }
   if (expr->IsBinary()) {
     return EmitBinary(expr->AsBinary());
   }
diff --git a/src/writer/hlsl/generator_impl.h b/src/writer/hlsl/generator_impl.h
index 21b3f54..b8b1743 100644
--- a/src/writer/hlsl/generator_impl.h
+++ b/src/writer/hlsl/generator_impl.h
@@ -42,6 +42,10 @@
   /// @param alias the alias to generate
   /// @returns true if the alias was emitted
   bool EmitAliasType(const ast::type::AliasType* alias);
+  /// Handles an array accessor expression
+  /// @param expr the expression to emit
+  /// @returns true if the array accessor was emitted
+  bool EmitArrayAccessor(ast::ArrayAccessorExpression* expr);
   /// Handles an assignment statement
   /// @param stmt the statement to emit
   /// @returns true if the statement was emitted successfully
diff --git a/src/writer/hlsl/generator_impl_array_accessor_test.cc b/src/writer/hlsl/generator_impl_array_accessor_test.cc
new file mode 100644
index 0000000..ecd5310
--- /dev/null
+++ b/src/writer/hlsl/generator_impl_array_accessor_test.cc
@@ -0,0 +1,62 @@
+// Copyright 2020 The Tint Authors.
+//
+// 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.
+
+#include <memory>
+
+#include "gtest/gtest.h"
+#include "src/ast/array_accessor_expression.h"
+#include "src/ast/identifier_expression.h"
+#include "src/ast/module.h"
+#include "src/ast/scalar_constructor_expression.h"
+#include "src/ast/sint_literal.h"
+#include "src/ast/type/i32_type.h"
+#include "src/writer/hlsl/generator_impl.h"
+
+namespace tint {
+namespace writer {
+namespace hlsl {
+namespace {
+
+using HlslGeneratorImplTest = testing::Test;
+
+TEST_F(HlslGeneratorImplTest, EmitExpression_ArrayAccessor) {
+  ast::type::I32Type i32;
+  auto lit = std::make_unique<ast::SintLiteral>(&i32, 5);
+  auto idx = std::make_unique<ast::ScalarConstructorExpression>(std::move(lit));
+  auto ary = std::make_unique<ast::IdentifierExpression>("ary");
+
+  ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
+
+  ast::Module m;
+  GeneratorImpl g(&m);
+  ASSERT_TRUE(g.EmitExpression(&expr)) << g.error();
+  EXPECT_EQ(g.result(), "ary[5]");
+}
+
+TEST_F(HlslGeneratorImplTest, EmitArrayAccessor) {
+  auto ary = std::make_unique<ast::IdentifierExpression>("ary");
+  auto idx = std::make_unique<ast::IdentifierExpression>("idx");
+
+  ast::ArrayAccessorExpression expr(std::move(ary), std::move(idx));
+
+  ast::Module m;
+  GeneratorImpl g(&m);
+  ASSERT_TRUE(g.EmitExpression(&expr)) << g.error();
+  EXPECT_EQ(g.result(), "ary[idx]");
+}
+
+}  // namespace
+}  // namespace hlsl
+}  // namespace writer
+}  // namespace tint
