[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / args-11.ll
blobba793680cf41c6efc72f08a552da85e6618110ee
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; Test outgoing promoted arguments that are split (and passed by reference).
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
6 ; The i96 arg is promoted to i128 and should get the full stack space.
7 declare void @fn1(i96)
8 define i32 @fn2() {
9 ; CHECK-LABEL: fn2:
10 ; CHECK:       # %bb.0:
11 ; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)
12 ; CHECK-NEXT:    .cfi_offset %r14, -48
13 ; CHECK-NEXT:    .cfi_offset %r15, -40
14 ; CHECK-NEXT:    aghi %r15, -184
15 ; CHECK-NEXT:    .cfi_def_cfa_offset 344
16 ; CHECK-NEXT:    mvhi 164(%r15), -1
17 ; CHECK-NEXT:    mvghi 176(%r15), 0
18 ; CHECK-NEXT:    la %r2, 168(%r15)
19 ; CHECK-NEXT:    mvghi 168(%r15), 0
20 ; CHECK-NEXT:    brasl %r14, fn1@PLT
21 ; CHECK-NEXT:    l %r2, 164(%r15)
22 ; CHECK-NEXT:    lmg %r14, %r15, 296(%r15)
23 ; CHECK-NEXT:    br %r14
24   %1 = alloca i32
25   store i32 -1, ptr %1
26   call void @fn1(i96 0)
27   %2 = load i32, ptr %1
28   ret i32 %2
31 declare void @fn3(i136)
32 define i32 @fn4() {
33 ; CHECK-LABEL: fn4:
34 ; CHECK:       # %bb.0:
35 ; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)
36 ; CHECK-NEXT:    .cfi_offset %r14, -48
37 ; CHECK-NEXT:    .cfi_offset %r15, -40
38 ; CHECK-NEXT:    aghi %r15, -192
39 ; CHECK-NEXT:    .cfi_def_cfa_offset 352
40 ; CHECK-NEXT:    mvhi 164(%r15), -1
41 ; CHECK-NEXT:    mvghi 184(%r15), 0
42 ; CHECK-NEXT:    mvghi 176(%r15), 0
43 ; CHECK-NEXT:    la %r2, 168(%r15)
44 ; CHECK-NEXT:    mvghi 168(%r15), 0
45 ; CHECK-NEXT:    brasl %r14, fn3@PLT
46 ; CHECK-NEXT:    l %r2, 164(%r15)
47 ; CHECK-NEXT:    lmg %r14, %r15, 304(%r15)
48 ; CHECK-NEXT:    br %r14
49   %1 = alloca i32
50   store i32 -1, ptr %1
51   call void @fn3(i136 0)
52   %2 = load i32, ptr %1
53   ret i32 %2