xref: /llvm-project/llvm/test/CodeGen/SystemZ/asm-21.ll (revision a65ccc1b9fe740c9f65d9cf2b627de50278aad56)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2; Test i128 in GPRs versus VRs.
3;
4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -no-integrated-as | FileCheck %s
5
6define i128 @f1() {
7; CHECK-LABEL: f1:
8; CHECK:       # %bb.0:
9; CHECK-NEXT:    vgbm %v0, 0
10; CHECK-NEXT:    #APP
11; CHECK-NEXT:    blah %v1 %v0
12; CHECK-NEXT:    #NO_APP
13; CHECK-NEXT:    vst %v1, 0(%r2), 3
14; CHECK-NEXT:    br %r14
15  %val = call i128 asm "blah $0 $1", "=&v,v" (i128 0)
16  ret i128 %val
17}
18
19define i128 @f2() {
20; CHECK-LABEL: f2:
21; CHECK:       # %bb.0:
22; CHECK-NEXT:    vgbm %v4, 0
23; CHECK-NEXT:    #APP
24; CHECK-NEXT:    blah %v4
25; CHECK-NEXT:    #NO_APP
26; CHECK-NEXT:    vst %v4, 0(%r2), 3
27; CHECK-NEXT:    br %r14
28  %val = call i128 asm "blah $0", "={v4},0" (i128 0)
29  ret i128 %val
30}
31
32define i128 @f3() {
33; CHECK-LABEL: f3:
34; CHECK:       # %bb.0:
35; CHECK-NEXT:    lghi %r0, 0
36; CHECK-NEXT:    lgr %r1, %r0
37; CHECK-NEXT:    #APP
38; CHECK-NEXT:    blah %r4 %r0
39; CHECK-NEXT:    #NO_APP
40; CHECK-NEXT:    stg %r5, 8(%r2)
41; CHECK-NEXT:    stg %r4, 0(%r2)
42; CHECK-NEXT:    br %r14
43  %val = call i128 asm "blah $0 $1", "=&r,r" (i128 0)
44  ret i128 %val
45}
46
47define i128 @f4() {
48; CHECK-LABEL: f4:
49; CHECK:       # %bb.0:
50; CHECK-NEXT:    stmg %r8, %r15, 64(%r15)
51; CHECK-NEXT:    .cfi_offset %r8, -96
52; CHECK-NEXT:    .cfi_offset %r9, -88
53; CHECK-NEXT:    .cfi_offset %r15, -40
54; CHECK-NEXT:    lghi %r8, 0
55; CHECK-NEXT:    lgr %r9, %r8
56; CHECK-NEXT:    #APP
57; CHECK-NEXT:    blah %r8
58; CHECK-NEXT:    #NO_APP
59; CHECK-NEXT:    stg %r9, 8(%r2)
60; CHECK-NEXT:    stg %r8, 0(%r2)
61; CHECK-NEXT:    lmg %r8, %r15, 64(%r15)
62; CHECK-NEXT:    br %r14
63  %val = call i128 asm "blah $0", "={r8},0" (i128 0)
64  ret i128 %val
65}
66