If I want to bind an instance matrix to a vertex shader, how do I go about it?

For example, here is a super-simple VS input:

 struct VS_IN {
 	float4 Position : POSITION;
 	row_major float4x4 WorldMat : INSTANCE_TRANSFORM;
 };

How would the corresponding bindings look when creating the `ID3D11InputLayout`?

I figured it would be something akin to:

 D3D11_INPUT_ELEMENT_DESC[] bindings = ...;
 bindings[0] = { 
 	"POSITION", // SemanticName
 	0U, // SemanticIndex
 	DXGI_FORMAT::DXGI_FORMAT_R32G32B32A32_FLOAT, // Format
 	0U, // InputSlot
 	0U, // AlignedByteOffset
 	D3D11_INPUT_CLASSIFICATION::D3D11_INPUT_PER_VERTEX_DATA, // InputSlotClass
 	0U // InstanceDataStepRate
 };
 bindings[1] = { 
 	"INSTANCE_TRANSFORM", // SemanticName
 	0U, // SemanticIndex
 	DXGI_FORMAT::DXGI_FORMAT_R32G32B32A32_FLOAT, // Format
 	1U, // InputSlot
 	0U, // AlignedByteOffset
 	D3D11_INPUT_CLASSIFICATION::D3D11_INPUT_PER_INSTANCE_DATA, // InputSlotClass
 	1U // InstanceDataStepRate
 };
 bindings[2] = { 
 	"INSTANCE_TRANSFORM", // SemanticName
 	0U, // SemanticIndex
 	DXGI_FORMAT::DXGI_FORMAT_R32G32B32A32_FLOAT, // Format
 	2U, // InputSlot
 	0U, // AlignedByteOffset
 	D3D11_INPUT_CLASSIFICATION::D3D11_INPUT_PER_INSTANCE_DATA, // InputSlotClass
 	1U // InstanceDataStepRate
 };
 bindings[3] = { 
 	"INSTANCE_TRANSFORM", // SemanticName
 	0U, // SemanticIndex
 	DXGI_FORMAT::DXGI_FORMAT_R32G32B32A32_FLOAT, // Format
 	3U, // InputSlot
 	0U, // AlignedByteOffset
 	D3D11_INPUT_CLASSIFICATION::D3D11_INPUT_PER_INSTANCE_DATA, // InputSlotClass
 	1U // InstanceDataStepRate
 };
 bindings[4] = { 
 	"INSTANCE_TRANSFORM", // SemanticName
 	0U, // SemanticIndex
 	DXGI_FORMAT::DXGI_FORMAT_R32G32B32A32_FLOAT, // Format
 	4U, // InputSlot
 	0U, // AlignedByteOffset
 	D3D11_INPUT_CLASSIFICATION::D3D11_INPUT_PER_INSTANCE_DATA, // InputSlotClass
 	1U // InstanceDataStepRate
 };

In the example above, I'm increasing the `InputSlot` value with each 'row' of the instance matrix, because I would expect that each row of the matrix would take up the next 128-bit input register.

However, in other examples I've seen on the internet, people seem to increase the `SemanticIndex` with each row instead. I thought that might because they declare the input as four `float4` fields instead of a matrix, but then I looked at [this question][1], and that doesn't seem to be the case.

Anyway, to cut to the point, **if I want to use `VS_IN` in the format I've provided, what is the correct way to lay out the input elements?**


 [1]: https://gamedev.stackexchange.com/questions/64298/direct3d11-and-sharpdx-how-to-pass-a-model-instances-world-matrix-as-an-input