-
Notifications
You must be signed in to change notification settings - Fork 13.4k
[X86] X86LegalizerInfo - use LegalFor instead if LegalIf for simple ISA/test pairs #138259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi! This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:
If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below. |
@llvm/issue-subscribers-backend-x86 Author: Simon Pilgrim (RKSimon)
We have lots of arg/result common type cases like:
```cpp
getActionDefinitionsBuilder({G_ADD, G_SUB})
.legalIf([=](const LegalityQuery &Query) -> bool {
if (typeInSet(0, {s8, s16, s32})(Query))
return true;
if (Is64Bit && typeInSet(0, {s64})(Query))
return true;
if (HasSSE2 && typeInSet(0, {v16s8, v8s16, v4s32, v2s64})(Query))
return true;
if (HasAVX2 && typeInSet(0, {v32s8, v16s16, v8s32, v4s64})(Query))
return true;
if (HasAVX512 && typeInSet(0, {v16s32, v8s64})(Query))
return true;
if (HasBWI && typeInSet(0, {v64s8, v32s16})(Query))
return true;
return false;
})
```
which should be simplified to use the legalFor({Types}) or legalFor(Pred, {Types}) helpers:
```cpp
getActionDefinitionsBuilder({G_ADD, G_SUB})
.legalFor({s8, s16, s32})
.legalFor(Is64Bit, {s64})
.legalFor(HasSSE2, {v16s8, v8s16, v4s32, v2s64})
--- etc ---
```
|
@llvm/issue-subscribers-good-first-issue Author: Simon Pilgrim (RKSimon)
We have lots of arg/result common type cases like:
```cpp
getActionDefinitionsBuilder({G_ADD, G_SUB})
.legalIf([=](const LegalityQuery &Query) -> bool {
if (typeInSet(0, {s8, s16, s32})(Query))
return true;
if (Is64Bit && typeInSet(0, {s64})(Query))
return true;
if (HasSSE2 && typeInSet(0, {v16s8, v8s16, v4s32, v2s64})(Query))
return true;
if (HasAVX2 && typeInSet(0, {v32s8, v16s16, v8s32, v4s64})(Query))
return true;
if (HasAVX512 && typeInSet(0, {v16s32, v8s64})(Query))
return true;
if (HasBWI && typeInSet(0, {v64s8, v32s16})(Query))
return true;
return false;
})
```
which should be simplified to use the legalFor({Types}) or legalFor(Pred, {Types}) helpers:
```cpp
getActionDefinitionsBuilder({G_ADD, G_SUB})
.legalFor({s8, s16, s32})
.legalFor(Is64Bit, {s64})
.legalFor(HasSSE2, {v16s8, v8s16, v4s32, v2s64})
--- etc ---
```
|
@RKSimon Hi, I think I have found the location that needs to be modified:
etc. It should be modified like this: getActionDefinitionsBuilder({G_ADD, G_SUB})
.legalFor({s8, s16, s32})
.legalFor(Is64Bit, {s64})
.legalFor(HasSSE2, {v16s8, v8s16, v4s32, v2s64})
.legalFor(HasAVX2, {v32s8, v16s16, v8s32, v4s64})
.legalFor(HasAVX512, {v16s32, v8s64})
.legalFor(HasBWI, {v64s8, v32s16});
Could I get assigned? |
CC @e-kud |
We have lots of arg/result common type cases like:
which should be simplified to use the legalFor({Types}) or legalFor(Pred, {Types}) helpers:
getActionDefinitionsBuilder({G_ADD, G_SUB}) .legalFor({s8, s16, s32}) .legalFor(Is64Bit, {s64}) .legalFor(HasSSE2, {v16s8, v8s16, v4s32, v2s64}) --- etc ---
The text was updated successfully, but these errors were encountered: