Commit d18eca0
authored
[LLVM][LangRef] Remove "n > 0" restriction from get.active.lanes.mask. (#152140)
The specification for get.active.lanes.mask says a limit value of zero
results in poison. This seems like an artificial restriction and means
you cannot use the intrinsic to create minimal loops of the form:
```
foo(int count, ....) {
int i = 0;
while (mask = get.active.lane.mask(i, count)) {
; do work
i += count_bits(mask);
}
}
```
I cannot see any code that generates poison in this case, in fact
ConstantFoldFixedVectorCall returns the logical result (i.e. an all
false vector).
There are also cases like `can_overflow_i64_induction_var` in
sve-tail-folding-overflow-checks.ll that look broken by the current
definition? for the case when "%N <= vscale * 4".1 parent 619d36f commit d18eca0
File tree
3 files changed
+1
-48
lines changed- llvm
- docs
- lib/Analysis
- test/Analysis/Lint
3 files changed
+1
-48
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24033 | 24033 | | |
24034 | 24034 | | |
24035 | 24035 | | |
24036 | | - | |
24037 | | - | |
| 24036 | + | |
24038 | 24037 | | |
24039 | 24038 | | |
24040 | 24039 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
374 | 374 | | |
375 | 375 | | |
376 | 376 | | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | 377 | | |
385 | 378 | | |
386 | 379 | | |
| |||
This file was deleted.
0 commit comments