There is a secret linear function 
def dense_layer(input, w, b):
    return torch.ops.aten.linear(input, w, b)

more seriously, I think that whatever causes addmm to be split could be considered a bug.