diff options
author | jofrn <jofernau@amd.com> | 2024-12-20 06:14:28 -0500 |
---|---|---|
committer | jofrn <jofernau@amd.com> | 2025-06-02 00:15:05 -0400 |
commit | 70a2b52ffeae81869323a0874c51a7947ec2fe71 (patch) | |
tree | 2dad38223ba86f39386c2ccee9c08e766d7d341c /llvm/lib/Target | |
parent | 6eb10b5af424ebb18d4e30a4bbfaf8f304e68f60 (diff) | |
download | llvm-users/jofrn/atomicvec-stack2.zip llvm-users/jofrn/atomicvec-stack2.tar.gz llvm-users/jofrn/atomicvec-stack2.tar.bz2 |
[AtomicExpand] Add bitcasts when expanding load atomic vectorusers/jofrn/spr/main/f430c1afusers/jofrn/atomicvec-stack3users/jofrn/atomicvec-stack2
AtomicExpand fails for aligned `load atomic <n x T>` because it
does not find a compatible library call. This change adds appropriate
bitcasts so that the call can be lowered. It also adds support for
128 bit lowering in tablegen to support SSE/AVX.
commit-id:f430c1af
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrCompiler.td | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrCompiler.td b/llvm/lib/Target/X86/X86InstrCompiler.td index 26b76dd..3143015 100644 --- a/llvm/lib/Target/X86/X86InstrCompiler.td +++ b/llvm/lib/Target/X86/X86InstrCompiler.td @@ -1211,6 +1211,11 @@ def : Pat<(v4i32 (scalar_to_vector (i32 (atomic_load_32 addr:$src)))), def : Pat<(v2i64 (scalar_to_vector (i64 (atomic_load_64 addr:$src)))), (MOV64toPQIrm addr:$src)>; // load atomic <2 x i32,float> +def : Pat<(v2i64 (atomic_load_128_v2i64 addr:$src)), + (VMOVAPDrm addr:$src)>; // load atomic <2 x i64> +def : Pat<(v4i32 (atomic_load_128_v4i32 addr:$src)), + (VMOVAPDrm addr:$src)>; // load atomic <4 x i32> + // Floating point loads/stores. def : Pat<(atomic_store_32 (i32 (bitconvert (f32 FR32:$src))), addr:$dst), (MOVSSmr addr:$dst, FR32:$src)>, Requires<[UseSSE1]>; |