xref: /llvm-project/llvm/test/CodeGen/SystemZ/int-const-07.ll (revision a65ccc1b9fe740c9f65d9cf2b627de50278aad56)
1*a65ccc1bSUlrich Weigand; Test loading of 128-bit constants in vector registers on z13
2*a65ccc1bSUlrich Weigand;
3*a65ccc1bSUlrich Weigand; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
4*a65ccc1bSUlrich Weigand
5*a65ccc1bSUlrich Weigand; Constant zero.
6*a65ccc1bSUlrich Weiganddefine i128 @f1() {
7*a65ccc1bSUlrich Weigand; CHECK-LABEL: f1:
8*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
9*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vgbm %v0, 0
10*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
11*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
12*a65ccc1bSUlrich Weigand  ret i128 0
13*a65ccc1bSUlrich Weigand}
14*a65ccc1bSUlrich Weigand
15*a65ccc1bSUlrich Weigand; Constant created using VBGM.
16*a65ccc1bSUlrich Weiganddefine i128 @f2() {
17*a65ccc1bSUlrich Weigand; CHECK-LABEL: f2:
18*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
19*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vgbm %v0, 1
20*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
21*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
22*a65ccc1bSUlrich Weigand  ret i128 255
23*a65ccc1bSUlrich Weigand}
24*a65ccc1bSUlrich Weigand
25*a65ccc1bSUlrich Weigand; Constant created using VREPIB.
26*a65ccc1bSUlrich Weiganddefine i128 @f3() {
27*a65ccc1bSUlrich Weigand; CHECK-LABEL: f3:
28*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
29*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vrepib %v0, 1
30*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
31*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
32*a65ccc1bSUlrich Weigand  ret i128 1334440654591915542993625911497130241
33*a65ccc1bSUlrich Weigand}
34*a65ccc1bSUlrich Weigand
35*a65ccc1bSUlrich Weigand; Constant loaded from literal pool.
36*a65ccc1bSUlrich Weiganddefine i128 @f4() {
37*a65ccc1bSUlrich Weigand; CHECK-LABEL: .LCPI3_0:
38*a65ccc1bSUlrich Weigand; CHECK-NEXT:    .quad   54210108624275221
39*a65ccc1bSUlrich Weigand; CHECK-NEXT:    .quad   -5527149226598858752
40*a65ccc1bSUlrich Weigand; CHECK-LABEL: f4:
41*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
42*a65ccc1bSUlrich Weigand; CHECK-NEXT:    larl %r1, .LCPI3_0
43*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r1), 3
44*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
45*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
46*a65ccc1bSUlrich Weigand  ret i128 1000000000000000000000000000000000000
47*a65ccc1bSUlrich Weigand}
48