mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
68ac397f7c
If a loaded value is replicated it is best to combine these two operations into a VLREP (load and replicate), but isel will not produce this if the load has other users as well. This patch handles this by putting the other users of the load to use the REPLICATE 0-element instead of the load. This way the load has only the REPLICATE node as user, and we get a VLREP. Review: Ulrich Weigand https://reviews.llvm.org/D54264 llvm-svn: 346746
16 lines
512 B
LLVM
16 lines
512 B
LLVM
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
|
|
|
|
; Test that a loaded value which is used both in a vector and scalar context
|
|
; is not transformed to a vlrep + vlgvg.
|
|
|
|
; CHECK-NOT: vlrep
|
|
|
|
define void @fun(i64 %arg, i64** %Addr, <2 x i64*>* %Dst) {
|
|
%tmp10 = load i64*, i64** %Addr
|
|
store i64 %arg, i64* %tmp10
|
|
%tmp12 = insertelement <2 x i64*> undef, i64* %tmp10, i32 0
|
|
%tmp13 = insertelement <2 x i64*> %tmp12, i64* %tmp10, i32 1
|
|
store <2 x i64*> %tmp13, <2 x i64*>* %Dst
|
|
ret void
|
|
}
|