tree 6ec6328a0fd537824b0f3b4ca2f78b5ea412ddf1
parent 1e4c8a80229b7d471a2d808d9e2e91f11b6da20f
author Lekkala_Sravya-mcw <lekkala.sravya@multicorewareinc.com> 1783061981 +0530
committer GitHub <noreply@github.com> 1783061981 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqR13dCRC1aQ7uu5UhlAAASWsQADlwhysLYOvBugthbi76f3AA
 ogIbg2YdZEOU0iIgdnfw0m75+tNi4pmz1eNzezHdxqFbNqxwRvsBe0GtuAs2zWeQ
 fTx21Tl1nM7077MtX7vI/lg25SSOoO+IqTFNP8IZVuo+eeHv87GffTZvKwHpwdjE
 TDtsIMSbc9Udn7BwUHPXL+rIB2igm0UqmQkyZt5hbLRb2KEnIa4b5N9H0aAwswPw
 mFfLgi8WRHEtMBK0/Y+5Pc7HSycMjf3pLJ2FbwYsnhg/e4hm+0pIFRh9NEXH/I/w
 4qmao9hzCOM0JjB3k70KQrD4blieujkUKF3L72g7NF8q6KIGw7XpufAc2NFG7cxe
 nol+ApYO1Cp0VWy7sCoYwaT1zcH2Veyz4S8UF+z2JaGBeczVnea+VX5DQl8jJVJ3
 RuUFan3swXQaUKEFTVEzvLDNmHY9y2KUrd00/R0oxHfOfdOhK6O+SNggxxcYo0yr
 6s0pjTVGuJNcVn8r9AyNl/mIXHOhpSzK9zHa5EtBnfITQvoGSxuc9gzUB+jR985G
 x5jBieCUPB4aK4i/kdJPOCiPDN37NMZcZolwG0V2wHrT2d0nXTfB8wX1ZvreckSe
 OOxyBZCFo4aBAGTctx9l+Ivgmqa3dQplr4l+ZUvRhR2nODIOfgT/GFoRCJDykD8A
 4oeCstV5/N59S/pX4Pl1
 =voE3
 -----END PGP SIGNATURE-----
 

[Flow] Fold chained tensor.slice ops (#24628)

This PR Adds a canonicalization pattern for `flow.tensor.slice` that
folds only when the producer of the slice source is also a
`flow.tensor.slice`.

**Example :**

%producer = flow.tensor.slice %src[producer_start for producer_length]
%consumer = flow.tensor.slice %producer[consumer_start for
consumer_length]

**Canonicalizes to :**

%consumer = flow.tensor.slice %src[producer_start + consumer_start ] for
consumer_length

---------

Signed-off-by: LekkalaSravya3 <lekkala.sravya@multicorewareinc.com>