Hi,
I went ahead and created a little program that calls all ATen functions and produces a list with the typing rule used by each function.
Some interesting statistics:
ALL Bool:           37
ALL Byte:           4
ALL Char:           1
ALL Double:         3
ALL Float:          2
ALL Half:           1
ALL Int:            1
ALL Long:           17
ALL Short:          1
BOOL2INT:           7
BOOL2INT2:          1
BOOLBYTE:           2
EQ_FIRST:           389
EQ_PROMOTED:        57
EQ_SECOND:          11
EQ_THIRD:           1
INTEGRAL2INT:       7
NO_SAMPLES:         502
TO_COMPLEX:         5
TO_DOUBLE:          2
TO_DOUBLE2:         1
TO_FLOAT:           73
TO_FLOAT2:          12
TO_FLOAT2_2:        1
TO_FLOAT2_3:        1
TO_FLOAT2_4:        1
TO_FLOAT3:          1
TO_FLOAT3_2:        1
TO_FLOAT_DOUBLE:    1
TO_QINT:            2
TO_REAL2:           1
TO_REAL_FLOAT:      1
TO_VALUE_TYPE:      19

Num Types: 33

These are names I gave to each typing rule. It’s interesting that a few rules are used only once. This may point to bugs, as there should be no reason to have such exceptions.
Why I’m posting this stuff here is because it may be interesting for you guys. For example, it would be possible to generate the code for the Meta tensors automatically from this data. AFAIU, Meta tensors only compute dtype + shape information. Here I have the dtype, and I’m working next on the shape inference.
Another use is for testing. Some of the calls crash with some inputs, for example, so you can use this driver for fuzzing. Might be also helpful to compare the returned dtypes across different devices.
Anyway, I’ll leave that to you. I need this data for other purposes.
How it works:

I use a script 2 to generate a file 1 with calls to every ATen function using default parameters. This script also generates a ninja file so I can run things in parallel.
Then I wrote a driver that goes through each function and calls them with different tensors (one call per each combination of dtypes)
The C++ code with the typing rules I wrote by hand
The result after running ninja is the types.txt file indicating the typing rule per ATen function.

cc @ailzhang @ezyang