mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346746 91177308-0d34-0410-b5e6-96231b3b80d8
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
|
|
}
|