Adds support for lowering non-splat shifts.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/Target/WebAssembly/WebAssemblyISelLowering.cpp | ||
---|---|---|
1027 ↗ | (On Diff #170801) | We did setOperationAction to Custom only for vector types, so is there a case this if can be satisfied? How about changing this to an assertion this is a vector type? |
1034 ↗ | (On Diff #170801) | On an unrelated note, maybe we can use this function again to conditionally expand extract_lane? |
1036 ↗ | (On Diff #170801) | Do we have test cases for non-const splat? |
1055 ↗ | (On Diff #170801) | This isn't added in this CL, but we probably don't need this line after llvm_unreachable |
lib/Target/WebAssembly/WebAssemblyISelLowering.cpp | ||
---|---|---|
1034 ↗ | (On Diff #170801) | UnrollVectorOp uses extract_lane to apply the op to each lane individually, so it can't be used to lower extract_lane itself. But D53964 has a similarly simple solution. |
1036 ↗ | (On Diff #170801) | Yes, see @splat_XXX functions in simd.ll. |
lib/Target/WebAssembly/WebAssemblyISelLowering.cpp | ||
---|---|---|
1072 ↗ | (On Diff #172190) | This comment is confusing, because it sounds like i64x2 non-const splats are not handled by patterns. But by looking at the code, it looks like
So the only case we use the custom logic below is i64x2 const splat, right? I think the comment says otherwise. |