Depends on D53251.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Apparently what you did is just to expand SEXT_INREG, but I'm not sure why do results of some existing test cases that used to work well with a single instruction now have several instructions..?
test/CodeGen/WebAssembly/simd-comparisons.ll | ||
---|---|---|
812 ↗ | (On Diff #169588) | What is this sequence? Why does one instruction become four? 😨Why does this try to compare $0 with $0? |
910 ↗ | (On Diff #169588) | Why doesn't it use gt_u directly and does it with two instructions? There are also other similar tests.. |
test/CodeGen/WebAssembly/simd-comparisons.ll | ||
---|---|---|
812 ↗ | (On Diff #169588) | This is *ordered* not equals, but WebAssembly's ne is unordered. This sequence checks $0 == $0 && $1 == $1, which is true only if neither $0 or $1 are NaN. Ordered equals should only return true If ne returns true and neither argument is NaN. Other strange sequences below are similar. |
910 ↗ | (On Diff #169588) | If either argument is NaN, f32x4.le will return false, so this function will return true, as desired. If we used f32x4.gt we would get false if either argument is NaN. gt_u is for unsigned integers, not floats. |
test/CodeGen/WebAssembly/simd-comparisons.ll | ||
---|---|---|
812 ↗ | (On Diff #169588) | I see, so before they were also generated but test didn't include them. Thanks. |