================
@@ -464,8 +464,12 @@ static bool isLoadStoreSizeLegal(const GCNSubtarget &ST,
     MemSize = std::max(MemSize, Align);
 #endif
 
-  // Only 1-byte and 2-byte to 32-bit extloads are valid.
-  if (MemSize != RegSize && RegSize != 32)
+  // We want to allow extending loads into up to a 32-bit destination register.
+  // However, this would potentially allow 16-bit destinations even without
+  // True16. This function is used by isLoadStoreLegal, which will also call
+  // isRegisterType on the destination register type which will disallow
+  // 16-bit types without True16, so this is safe.
----------------
petar-avramovic wrote:

Not sure about this comment, too big, there are only few cases (s8->s32 s8->s16 
and s16->s32). This it would be much clearer to have in Legalizer info, 
something like
```
    Actions.legalForTypesWithMemDesc(!ST.useRealTrue16Insts(),
                                     {{S32, GlobalPtr, S8, GlobalAlign8},

    Actions.legalForTypesWithMemDesc(ST.useRealTrue16Insts(),
                                     {{S16, GlobalPtr, S8, GlobalAlign8},
```
instead of having to chase it in around for conditions.

https://github.com/llvm/llvm-project/pull/198670
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to