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