@@ -1355,18 +1355,25 @@ let OtherPredicates = [HasFlatAddressSpace] in {
13551355
13561356def : FlatLoadPat <FLAT_LOAD_UBYTE, atomic_load_8_flat, i32>;
13571357def : FlatLoadPat <FLAT_LOAD_UBYTE, atomic_load_8_flat, i16>;
1358+ def : FlatLoadPat <FLAT_LOAD_UBYTE, atomic_load_zext_8_flat, i32>;
1359+ def : FlatLoadPat <FLAT_LOAD_UBYTE, atomic_load_zext_8_flat, i16>;
13581360def : FlatLoadPat <FLAT_LOAD_USHORT, atomic_load_16_flat, i32>;
13591361def : FlatLoadPat <FLAT_LOAD_USHORT, atomic_load_16_flat, i16>;
1362+ def : FlatLoadPat <FLAT_LOAD_USHORT, atomic_load_zext_16_flat, i32>;
1363+ def : FlatLoadPat <FLAT_LOAD_USHORT, atomic_load_zext_16_flat, i16>;
13601364def : FlatLoadPat <FLAT_LOAD_UBYTE, extloadi8_flat, i32>;
13611365def : FlatLoadPat <FLAT_LOAD_UBYTE, zextloadi8_flat, i32>;
13621366def : FlatLoadPat <FLAT_LOAD_SBYTE, sextloadi8_flat, i32>;
1367+ def : FlatLoadPat <FLAT_LOAD_SBYTE, atomic_load_sext_8_flat, i32>;
1368+ def : FlatLoadPat <FLAT_LOAD_SBYTE, atomic_load_sext_8_flat, i16>;
13631369def : FlatLoadPat <FLAT_LOAD_UBYTE, extloadi8_flat, i16>;
13641370def : FlatLoadPat <FLAT_LOAD_UBYTE, zextloadi8_flat, i16>;
13651371def : FlatLoadPat <FLAT_LOAD_SBYTE, sextloadi8_flat, i16>;
13661372def : FlatLoadPat <FLAT_LOAD_USHORT, extloadi16_flat, i32>;
13671373def : FlatLoadPat <FLAT_LOAD_USHORT, zextloadi16_flat, i32>;
13681374def : FlatLoadPat <FLAT_LOAD_USHORT, load_flat, i16>;
13691375def : FlatLoadPat <FLAT_LOAD_SSHORT, sextloadi16_flat, i32>;
1376+ def : FlatLoadPat <FLAT_LOAD_SSHORT, atomic_load_sext_16_flat, i32>;
13701377def : FlatLoadPat <FLAT_LOAD_DWORDX3, load_flat, v3i32>;
13711378
13721379def : FlatLoadPat <FLAT_LOAD_DWORD, atomic_load_32_flat, i32>;
@@ -1456,6 +1463,7 @@ def : FlatStorePat <FLAT_STORE_BYTE_D16_HI, truncstorei8_hi16_flat, i32>;
14561463}
14571464
14581465let OtherPredicates = [D16PreservesUnusedBits] in {
1466+ // TODO: Handle atomic loads
14591467def : FlatLoadPat_D16 <FLAT_LOAD_UBYTE_D16_HI, az_extloadi8_d16_hi_flat, v2i16>;
14601468def : FlatLoadPat_D16 <FLAT_LOAD_UBYTE_D16_HI, az_extloadi8_d16_hi_flat, v2f16>;
14611469def : FlatLoadPat_D16 <FLAT_LOAD_SBYTE_D16_HI, sextloadi8_d16_hi_flat, v2i16>;
@@ -1477,8 +1485,14 @@ let OtherPredicates = [HasFlatGlobalInsts] in {
14771485
14781486defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, atomic_load_8_global, i32>;
14791487defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, atomic_load_8_global, i16>;
1488+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, atomic_load_zext_8_global, i32>;
1489+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, atomic_load_zext_8_global, i16>;
14801490defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_16_global, i32>;
14811491defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_16_global, i16>;
1492+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i32>;
1493+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i16>;
1494+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_SBYTE, atomic_load_sext_8_global, i32>;
1495+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_SBYTE, atomic_load_sext_8_global, i16>;
14821496defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, extloadi8_global, i32>;
14831497defm : GlobalFLATLoadPats <GLOBAL_LOAD_UBYTE, zextloadi8_global, i32>;
14841498defm : GlobalFLATLoadPats <GLOBAL_LOAD_SBYTE, sextloadi8_global, i32>;
@@ -1488,6 +1502,8 @@ defm : GlobalFLATLoadPats <GLOBAL_LOAD_SBYTE, sextloadi8_global, i16>;
14881502defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, extloadi16_global, i32>;
14891503defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, zextloadi16_global, i32>;
14901504defm : GlobalFLATLoadPats <GLOBAL_LOAD_SSHORT, sextloadi16_global, i32>;
1505+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_SSHORT, atomic_load_sext_16_global, i32>;
1506+ defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i32>;
14911507defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, load_global, i16>;
14921508
14931509foreach vt = Reg32Types.types in {
@@ -1525,6 +1541,7 @@ defm : GlobalFLATStorePats <GLOBAL_STORE_BYTE_D16_HI, truncstorei8_hi16_global,
15251541}
15261542
15271543let OtherPredicates = [D16PreservesUnusedBits] in {
1544+ // TODO: Handle atomic loads
15281545defm : GlobalFLATLoadPats_D16 <GLOBAL_LOAD_UBYTE_D16_HI, az_extloadi8_d16_hi_global, v2i16>;
15291546defm : GlobalFLATLoadPats_D16 <GLOBAL_LOAD_UBYTE_D16_HI, az_extloadi8_d16_hi_global, v2f16>;
15301547defm : GlobalFLATLoadPats_D16 <GLOBAL_LOAD_SBYTE_D16_HI, sextloadi8_d16_hi_global, v2i16>;
0 commit comments