diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index d0279cb..2fa9d83 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -2036,11 +2036,20 @@
     out << "uint";
   } else if (type->IsVector()) {
     auto* vec = type->AsVector();
-    out << "vector<";
-    if (!EmitType(out, vec->type(), "")) {
-      return false;
+    auto size = vec->size();
+    if (vec->type()->IsF32() && size >= 1 && size <= 4) {
+      out << "float" << size;
+    } else if (vec->type()->IsI32() && size >= 1 && size <= 4) {
+      out << "int" << size;
+    } else if (vec->type()->IsU32() && size >= 1 && size <= 4) {
+      out << "uint" << size;
+    } else {
+      out << "vector<";
+      if (!EmitType(out, vec->type(), "")) {
+        return false;
+      }
+      out << ", " << size << ">";
     }
-    out << ", " << vec->size() << ">";
   } else if (type->IsVoid()) {
     out << "void";
   } else {
diff --git a/src/writer/hlsl/generator_impl_cast_test.cc b/src/writer/hlsl/generator_impl_cast_test.cc
index f2fbcde..8002e27 100644
--- a/src/writer/hlsl/generator_impl_cast_test.cc
+++ b/src/writer/hlsl/generator_impl_cast_test.cc
@@ -50,7 +50,7 @@
   ast::TypeConstructorExpression cast(&vec3, params);
 
   ASSERT_TRUE(gen.EmitExpression(pre, out, &cast)) << gen.error();
-  EXPECT_EQ(result(), "vector<float, 3>(id)");
+  EXPECT_EQ(result(), "float3(id)");
 }
 
 }  // namespace
diff --git a/src/writer/hlsl/generator_impl_constructor_test.cc b/src/writer/hlsl/generator_impl_constructor_test.cc
index c0512e5..c17d547 100644
--- a/src/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/writer/hlsl/generator_impl_constructor_test.cc
@@ -140,8 +140,7 @@
   ast::TypeConstructorExpression expr(&vec, values);
 
   ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
-  EXPECT_EQ(result(),
-            "vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)");
+  EXPECT_EQ(result(), "float3(1.00000000f, 2.00000000f, 3.00000000f)");
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_Empty) {
@@ -152,7 +151,7 @@
   ast::TypeConstructorExpression expr(&vec, values);
 
   ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
-  EXPECT_EQ(result(), "vector<float, 3>(0.0f)");
+  EXPECT_EQ(result(), "float3(0.0f)");
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat) {
@@ -187,10 +186,9 @@
 
   // A matrix of type T with n columns and m rows can also be constructed from
   // n vectors of type T with m components.
-  EXPECT_EQ(result(),
-            std::string("matrix<float, 3, 2>(vector<float, 3>(1.00000000f, "
-                        "2.00000000f, 3.00000000f), ") +
-                "vector<float, 3>(3.00000000f, 4.00000000f, 5.00000000f))");
+  EXPECT_EQ(result(), std::string("matrix<float, 3, 2>(float3(1.00000000f, "
+                                  "2.00000000f, 3.00000000f), ") +
+                          "float3(3.00000000f, 4.00000000f, 5.00000000f))");
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Array) {
@@ -219,11 +217,10 @@
   ast::TypeConstructorExpression expr(&ary, ary_values);
 
   ASSERT_TRUE(gen.EmitConstructor(pre, out, &expr)) << gen.error();
-  EXPECT_EQ(result(),
-            std::string("{") +
-                "vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f), " +
-                "vector<float, 3>(4.00000000f, 5.00000000f, 6.00000000f), " +
-                "vector<float, 3>(7.00000000f, 8.00000000f, 9.00000000f)}");
+  EXPECT_EQ(result(), std::string("{") +
+                          "float3(1.00000000f, 2.00000000f, 3.00000000f), " +
+                          "float3(4.00000000f, 5.00000000f, 6.00000000f), " +
+                          "float3(7.00000000f, 8.00000000f, 9.00000000f)}");
 }
 
 // TODO(dsinclair): Add struct constructor test.
diff --git a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
index 9215cca..d224ccc 100644
--- a/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
+++ b/src/writer/hlsl/generator_impl_function_entry_point_data_test.cc
@@ -364,7 +364,7 @@
   // [[builtin frag_depth]] var<out> depth : f32;
   //
   // struct main_in {
-  //   vector<float, 4> coord : SV_Position;
+  //   float4 coord : SV_Position;
   // };
   //
   // struct main_out {
@@ -410,7 +410,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.EmitEntryPointData(out, func, globals)) << gen.error();
   EXPECT_EQ(result(), R"(struct main_in {
-  vector<float, 4> coord : SV_Position;
+  float4 coord : SV_Position;
 };
 
 struct main_out {
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 9d84e94..9d07d84 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -207,7 +207,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.Generate(out)) << gen.error();
   EXPECT_EQ(result(), R"(struct frag_main_in {
-  vector<float, 4> coord : SV_Position;
+  float4 coord : SV_Position;
 };
 
 struct frag_main_out {
@@ -258,7 +258,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.Generate(out)) << gen.error();
   EXPECT_EQ(result(), R"(cbuffer : register(b0) {
-  vector<float, 4> coord;
+  float4 coord;
 };
 
 void frag_main() {
@@ -317,7 +317,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.Generate(out)) << gen.error();
   EXPECT_EQ(result(), R"(struct Uniforms {
-  vector<float, 4> coord;
+  float4 coord;
 };
 
 ConstantBuffer<Uniforms> uniforms : register(b0);
@@ -717,7 +717,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.Generate(out)) << gen.error();
   EXPECT_EQ(result(), R"(struct ep_1_in {
-  vector<float, 4> coord : SV_Position;
+  float4 coord : SV_Position;
 };
 
 struct ep_1_out {
@@ -789,7 +789,7 @@
   ASSERT_TRUE(td.Determine()) << td.error();
   ASSERT_TRUE(gen.Generate(out)) << gen.error();
   EXPECT_EQ(result(), R"(cbuffer : register(b0) {
-  vector<float, 4> coord;
+  float4 coord;
 };
 
 float sub_func(float param) {
diff --git a/src/writer/hlsl/generator_impl_import_test.cc b/src/writer/hlsl/generator_impl_import_test.cc
index bfb5a85..fff3fcd 100644
--- a/src/writer/hlsl/generator_impl_import_test.cc
+++ b/src/writer/hlsl/generator_impl_import_test.cc
@@ -176,10 +176,9 @@
 
   ASSERT_TRUE(td.DetermineResultType(&expr)) << td.error();
   ASSERT_TRUE(gen.EmitCall(pre, out, &expr)) << gen.error();
-  EXPECT_EQ(result(),
-            std::string(param.hlsl_name) +
-                "(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f), "
-                "vector<float, 3>(4.00000000f, 5.00000000f, 6.00000000f))");
+  EXPECT_EQ(result(), std::string(param.hlsl_name) +
+                          "(float3(1.00000000f, 2.00000000f, 3.00000000f), "
+                          "float3(4.00000000f, 5.00000000f, 6.00000000f))");
 }
 INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
                          HlslImportData_DualParam_VectorTest,
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index 7005f7e..f0c4592 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -780,7 +780,7 @@
   // var<storage_buffer> data : Data;
   // data.b = vec3<f32>(2.3f, 1.2f, 0.2f);
   //
-  // -> data.Store(16, asuint(vector<float, 3>(2.3f, 1.2f, 0.2f)));
+  // -> data.Store(16, asuint(float3(2.3f, 1.2f, 0.2f)));
 
   ast::type::F32Type f32;
   ast::type::I32Type i32;
@@ -829,7 +829,7 @@
   ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
   EXPECT_EQ(
       result(),
-      R"(data.Store3(16, asuint(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)));
+      R"(data.Store3(16, asuint(float3(1.00000000f, 2.00000000f, 3.00000000f)));
 )");
 }
 
@@ -1131,7 +1131,7 @@
   // var<storage_buffer> data : Pre;
   // data.c[2].b = vec3<f32>(1.f, 2.f, 3.f);
   //
-  // -> data.Store3(16 + (2 * 32), asuint(vector<float, 3>(1.0f, 2.0f, 3.0f)));
+  // -> data.Store3(16 + (2 * 32), asuint(float3(1.0f, 2.0f, 3.0f)));
 
   ast::type::F32Type f32;
   ast::type::I32Type i32;
@@ -1197,7 +1197,7 @@
   ASSERT_TRUE(gen.EmitStatement(out, &assign)) << gen.error();
   EXPECT_EQ(
       result(),
-      R"(data.Store3(16 + (32 * 2) + 0, asuint(vector<float, 3>(1.00000000f, 2.00000000f, 3.00000000f)));
+      R"(data.Store3(16 + (32 * 2) + 0, asuint(float3(1.00000000f, 2.00000000f, 3.00000000f)));
 )");
 }
 
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index a4ee48b..9c5937d 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -310,7 +310,7 @@
   ast::type::VectorType v(&f32, 3);
 
   ASSERT_TRUE(gen.EmitType(out, &v, "")) << gen.error();
-  EXPECT_EQ(result(), "vector<float, 3>");
+  EXPECT_EQ(result(), "float3");
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitType_Void) {
diff --git a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
index 813cdaa..f4bc962 100644
--- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
+++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc
@@ -118,7 +118,7 @@
 
   ast::VariableDeclStatement stmt(var);
   ASSERT_TRUE(gen.EmitStatement(out, &stmt)) << gen.error();
-  EXPECT_EQ(result(), R"(vector<float, 3> a = vector<float, 3>(0.0f);
+  EXPECT_EQ(result(), R"(float3 a = float3(0.0f);
 )");
 }
 
