What is the difference between match_shape and match_cast

In VMshapelower pass, I don’t understand the difference between them.

MatchCast is a stronger version, the IR generally moves towards MatchCast now and from representation pov it contains more powerful matching(both type and shape matching)