1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/CodeGen/SystemZ/vec-move-22.ll
Jonas Paulsson 68ac397f7c [SystemZ] Increase the number of VLREPs
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
2018-11-13 08:37:09 +00:00

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
}