Commit 98c7dbe
committed
Fix typing of BlendVariableMask condition when optimizing TernaryLogic
TernaryLogic nodes normalize small types to large types. When optimizing
a TernaryLogic node to a BlendVariableMask, if we leave the normalized
type, then the Blend uses the wrong instruction.
To fix this, change the Blend node to use the mask simd base type.
We only do this for mask base types that are small, which is
unsatisfying: there exists codegen today for double->int casts,
for example, that uses a 'double' type mask but an 'int' sized
TernaryLogic node. This works because we end up only using lane '0', as
the vector is converted to scalar. I didn't find any other case like
this, so hopefully if the mask type is small we can safely use it.
Fixes #1145721 parent 760e8e9 commit 98c7dbe
File tree
3 files changed
+70
-0
lines changed- src
- coreclr/jit
- tests/JIT/Regression/JitBlue/Runtime_114572
3 files changed
+70
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3875 | 3875 | | |
3876 | 3876 | | |
3877 | 3877 | | |
| 3878 | + | |
| 3879 | + | |
| 3880 | + | |
| 3881 | + | |
| 3882 | + | |
| 3883 | + | |
| 3884 | + | |
| 3885 | + | |
| 3886 | + | |
| 3887 | + | |
| 3888 | + | |
| 3889 | + | |
| 3890 | + | |
| 3891 | + | |
| 3892 | + | |
| 3893 | + | |
| 3894 | + | |
| 3895 | + | |
| 3896 | + | |
| 3897 | + | |
| 3898 | + | |
| 3899 | + | |
3878 | 3900 | | |
3879 | 3901 | | |
3880 | 3902 | | |
| |||
Lines changed: 40 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
0 commit comments