@@ -1388,6 +1388,7 @@ function compile_mlir!(
1388
1388
donated_args:: Symbol = :auto , # :auto | :none
1389
1389
optimize_then_pad:: Bool = true ,
1390
1390
runtime:: Union{Val{:PJRT},Val{:IFRT}} ,
1391
+ legalize_chlo_to_stablehlo:: Bool = false ,
1391
1392
kwargs... ,
1392
1393
)
1393
1394
@assert donated_args ∈ (:auto , :none )
@@ -1552,6 +1553,13 @@ function compile_mlir!(
1552
1553
" canonicalize" ,
1553
1554
" remove-unnecessary-enzyme-ops" ,
1554
1555
" enzyme-simplify-math" ,
1556
+ (
1557
+ if legalize_chlo_to_stablehlo
1558
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1559
+ else
1560
+ []
1561
+ end
1562
+ ). .. ,
1555
1563
opt_passes2,
1556
1564
lower_enzymexla_linalg_pass,
1557
1565
jit,
@@ -1567,6 +1575,13 @@ function compile_mlir!(
1567
1575
" canonicalize" ,
1568
1576
" remove-unnecessary-enzyme-ops" ,
1569
1577
" enzyme-simplify-math" ,
1578
+ (
1579
+ if legalize_chlo_to_stablehlo
1580
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1581
+ else
1582
+ []
1583
+ end
1584
+ ). .. ,
1570
1585
opt_passes2,
1571
1586
kern,
1572
1587
raise_passes,
@@ -1595,6 +1610,13 @@ function compile_mlir!(
1595
1610
" canonicalize" ,
1596
1611
" remove-unnecessary-enzyme-ops" ,
1597
1612
" enzyme-simplify-math" ,
1613
+ (
1614
+ if legalize_chlo_to_stablehlo
1615
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1616
+ else
1617
+ []
1618
+ end
1619
+ ). .. ,
1598
1620
opt_passes2,
1599
1621
]
1600
1622
end ,
@@ -1619,6 +1641,13 @@ function compile_mlir!(
1619
1641
" canonicalize" ,
1620
1642
" remove-unnecessary-enzyme-ops" ,
1621
1643
" enzyme-simplify-math" ,
1644
+ (
1645
+ if legalize_chlo_to_stablehlo
1646
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1647
+ else
1648
+ []
1649
+ end
1650
+ ). .. ,
1622
1651
opt_passes2,
1623
1652
]
1624
1653
else
@@ -1632,6 +1661,13 @@ function compile_mlir!(
1632
1661
" canonicalize" ,
1633
1662
" remove-unnecessary-enzyme-ops" ,
1634
1663
" enzyme-simplify-math" ,
1664
+ (
1665
+ if legalize_chlo_to_stablehlo
1666
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1667
+ else
1668
+ []
1669
+ end
1670
+ ). .. ,
1635
1671
opt_passes2,
1636
1672
kern,
1637
1673
raise_passes,
@@ -1658,6 +1694,13 @@ function compile_mlir!(
1658
1694
" canonicalize" ,
1659
1695
" remove-unnecessary-enzyme-ops" ,
1660
1696
" enzyme-simplify-math" ,
1697
+ (
1698
+ if legalize_chlo_to_stablehlo
1699
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1700
+ else
1701
+ []
1702
+ end
1703
+ ). .. ,
1661
1704
opt_passes2,
1662
1705
kern,
1663
1706
]
@@ -1680,6 +1723,13 @@ function compile_mlir!(
1680
1723
" canonicalize" ,
1681
1724
" remove-unnecessary-enzyme-ops" ,
1682
1725
" enzyme-simplify-math" ,
1726
+ (
1727
+ if legalize_chlo_to_stablehlo
1728
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1729
+ else
1730
+ []
1731
+ end
1732
+ ). .. ,
1683
1733
opt_passes2,
1684
1734
],
1685
1735
' ,' ,
@@ -1716,6 +1766,13 @@ function compile_mlir!(
1716
1766
" canonicalize" ,
1717
1767
" remove-unnecessary-enzyme-ops" ,
1718
1768
" enzyme-simplify-math" ,
1769
+ (
1770
+ if legalize_chlo_to_stablehlo
1771
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1772
+ else
1773
+ []
1774
+ end
1775
+ ). .. ,
1719
1776
opt_passes2,
1720
1777
lower_enzymexla_linalg_pass,
1721
1778
jit,
@@ -1728,6 +1785,13 @@ function compile_mlir!(
1728
1785
" canonicalize" ,
1729
1786
" remove-unnecessary-enzyme-ops" ,
1730
1787
" enzyme-simplify-math" ,
1788
+ (
1789
+ if legalize_chlo_to_stablehlo
1790
+ [" func.func(chlo-legalize-to-stablehlo)" ]
1791
+ else
1792
+ []
1793
+ end
1794
+ ). .. ,
1731
1795
opt_passes2,
1732
1796
kern,
1733
1797
raise_passes,
@@ -2191,6 +2255,7 @@ function get_common_compile_options()
2191
2255
:optimize_then_pad => true ,
2192
2256
:optimize_communications => true ,
2193
2257
:cudnn_hlo_optimize => false ,
2258
+ :legalize_chlo_to_stablehlo => false ,
2194
2259
)
2195
2260
end
2196
2261
@@ -2242,6 +2307,8 @@ const COMMON_COMPILE_OPTIONS_DOCS = """
2242
2307
- `cudnn_hlo_optimize`: Run cuDNN specific HLO optimizations. This is only relevant for
2243
2308
GPU backends and is `false` by default. **Experimental and not heavily tested.**
2244
2309
_(Only for CUDA backend)_
2310
+ - `legalize_chlo_to_stablehlo`: If `true`, `chlo` dialect ops will be converted to
2311
+ `stablehlo` ops. This is `false` by default.
2245
2312
"""
2246
2313
2247
2314
const SYNC_DOCS = """
0 commit comments