Replace the experimental clang builtin and LLVM intrinsics for these
instructions with normal codegen patterns. Resolves PR50433.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
clang/lib/Headers/wasm_simd128.h | ||
---|---|---|
174 | Nit: Other similar functions in this file seem to be using __mem instead of __ptr? (Currently only builtins are using __ptr) | |
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
324 | Why are i8 and i16 are extended-loaded? | |
llvm/test/CodeGen/WebAssembly/simd-build-vector.ll | ||
7 | This seems already contained in D105842? The same for the other files. | |
215 | Why the change? |
- Address comments
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
---|---|---|
324 | For i8x16 and i16x8 vectors, loading a lane from memory means loading just the i8 or i16. But after selection DAG legalization, the result of those loads are legalized to be i32, making these extending loads. If this were a DAG combine rather than an ISel pattern, I would use the pre-legalization i8 and i16 with non-extending loads. | |
llvm/test/CodeGen/WebAssembly/simd-build-vector.ll | ||
215 | The lane for the swizzle comes from a load from the stack, so that now gets selected to v128.load8_lane rather than a load followed by a replace_lane. |
clang-tidy: warning: unsupported 'simd128' in the 'target' attribute string; 'target' attribute ignored [clang-diagnostic-ignored-attributes]
not useful