Intel® Fortran Compiler 16.0 User and Reference Guide
A generic interface for defined I/O of a derived-type object is one that has both of the following:
A defined-io-generic-spec that is appropriate to the READ or WRITE direction and the form (formatted or unformatted) of the data transfer (see Defined IO Procedures, Generic Bindings, and Generic Interface Block).
A specific interface whose var argument is compatible with the derived-type item.
Within the scope of a defined-io-generic-spec, if two procedures have that generic identifier, they must be distinguishable.
For defined I/O procedures, only the var argument corresponds to something explicitly written in the program, so it is the var that must be distinguishable.
Because var arguments are required to be scalar, they cannot differ in rank. So, the var must be distinguishable in the type and kind type parameters.
You cannot have two procedures with the same defined-io-generic-spec.