Fix Linker generator ID

The generator ID is located in the upper 16 bits. The lower bits are
reserved for a version number.
diff --git a/source/link/linker.cpp b/source/link/linker.cpp
index 8da4a98..c5ca562 100644
--- a/source/link/linker.cpp
+++ b/source/link/linker.cpp
@@ -34,6 +34,7 @@
 #include "source/opt/pass_manager.h"
 #include "source/opt/remove_duplicates_pass.h"
 #include "source/opt/type_manager.h"
+#include "source/spirv_constant.h"
 #include "source/spirv_target_env.h"
 #include "source/util/make_unique.h"
 #include "spirv-tools/libspirv.hpp"
@@ -207,7 +208,7 @@
 
   header->magic_number = SpvMagicNumber;
   header->version = version;
-  header->generator = 17u;
+  header->generator = SPV_GENERATOR_WORD(SPV_GENERATOR_KHRONOS_LINKER, 0);
   header->bound = max_id_bound;
   header->reserved = 0u;
 
diff --git a/source/spirv_constant.h b/source/spirv_constant.h
index 39771cc..8636806 100644
--- a/source/spirv_constant.h
+++ b/source/spirv_constant.h
@@ -84,6 +84,7 @@
   SPV_GENERATOR_KHRONOS_LLVM_TRANSLATOR = 6,
   SPV_GENERATOR_KHRONOS_ASSEMBLER = 7,
   SPV_GENERATOR_KHRONOS_GLSLANG = 8,
+  SPV_GENERATOR_KHRONOS_LINKER = 17,
   SPV_GENERATOR_NUM_ENTRIES,
   SPV_FORCE_16_BIT_ENUM(spv_generator_t)
 } spv_generator_t;