comint-send-input is an interactive compiled Lisp function in `comint.el'.

(comint-send-input &optional NO-NEWLINE ARTIFICIAL)

Send input to process.
After the process output mark, sends all text from the process mark to
point as input to the process. Before the process output mark, calls
value of variable `comint-get-old-input' to retrieve old input, copies
it to the process mark, and sends it.

This command also sends and inserts a final newline, unless
NO-NEWLINE is non-nil.

Any history reference may be expanded depending on the value of the variable
`comint-input-autoexpand'. The list of function names contained in the value
of `comint-input-filter-functions' is called on the input before sending it.
The input is entered into the input history ring, if the value of variable
`comint-input-filter' returns non-nil when called on the input.

If variable `comint-eol-on-send' is non-nil, then point is moved to the
end of line before sending the input.

After the input has been sent, if `comint-process-echoes' is non-nil,
then `comint-send-input' waits to see if the process outputs a string
matching the input, and if so, deletes that part of the output.
If ARTIFICIAL is non-nil, it inhibits such deletion.
Callers sending input not from the user should use ARTIFICIAL = t.

The values of `comint-get-old-input', `comint-input-filter-functions', and
`comint-input-filter' are chosen according to the command interpreter running
in the buffer. E.g.,

If the interpreter is the csh,
`comint-get-old-input' is the default:
If `comint-use-prompt-regexp' is nil, then
either return the current input field, if point is on an input
field, or the current line, if point is on an output field.
If `comint-use-prompt-regexp' is non-nil, then
return the current line with any initial string matching the
regexp `comint-prompt-regexp' removed.
`comint-input-filter-functions' monitors input for "cd", "pushd", and
"popd" commands. When it sees one, it cd's the buffer.
`comint-input-filter' is the default: returns t if the input isn't all white

If the Comint is Lucid Common Lisp,
`comint-get-old-input' snarfs the sexp ending at point.
`comint-input-filter-functions' does nothing.
`comint-input-filter' returns nil if the input matches input-filter-regexp,
which matches (1) all whitespace (2) :a, :c, etc.

Similarly for Soar, Scheme, etc.