Commit 2de4c92
committed
[LLVM][LangRef] Remove "n > 0" restriction from get.active.lanes.mask.
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".
For these reasons I'm asking if we can simply remove the restriction?1 parent 9b2b5bf commit 2de4c92
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 | |
|---|---|---|---|
| |||
24014 | 24014 | | |
24015 | 24015 | | |
24016 | 24016 | | |
24017 | | - | |
24018 | | - | |
| 24017 | + | |
24019 | 24018 | | |
24020 | 24019 | | |
24021 | 24020 | | |
| |||
| 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