1
; Test vector replicates, v2f64 version.
3
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
5
; Test a byte-granularity replicate with the lowest useful value.
6
define <2 x double> @f1() {
8
; CHECK: vrepib %v24, 1
10
ret <2 x double> <double 0x0101010101010101, double 0x0101010101010101>
13
; Test a byte-granularity replicate with an arbitrary value.
14
define <2 x double> @f2() {
16
; CHECK: vrepib %v24, -55
18
ret <2 x double> <double 0xc9c9c9c9c9c9c9c9, double 0xc9c9c9c9c9c9c9c9>
21
; Test a byte-granularity replicate with the highest useful value.
22
define <2 x double> @f3() {
24
; CHECK: vrepib %v24, -2
26
ret <2 x double> <double 0xfefefefefefefefe, double 0xfefefefefefefefe>
29
; Test a halfword-granularity replicate with the lowest useful value.
30
define <2 x double> @f4() {
32
; CHECK: vrepih %v24, 1
34
ret <2 x double> <double 0x0001000100010001, double 0x0001000100010001>
37
; Test a halfword-granularity replicate with an arbitrary value.
38
define <2 x double> @f5() {
40
; CHECK: vrepih %v24, 25650
42
ret <2 x double> <double 0x6432643264326432, double 0x6432643264326432>
45
; Test a halfword-granularity replicate with the highest useful value.
46
define <2 x double> @f6() {
48
; CHECK: vrepih %v24, -2
50
ret <2 x double> <double 0xfffefffefffefffe, double 0xfffefffefffefffe>
53
; Test a word-granularity replicate with the lowest useful positive value.
54
define <2 x double> @f7() {
56
; CHECK: vrepif %v24, 1
58
ret <2 x double> <double 0x0000000100000001, double 0x0000000100000001>
61
; Test a word-granularity replicate with the highest in-range value.
62
define <2 x double> @f8() {
64
; CHECK: vrepif %v24, 32767
66
ret <2 x double> <double 0x00007fff00007fff, double 0x00007fff00007fff>
69
; Test a word-granularity replicate with the next highest value.
70
; This cannot use VREPIF.
71
define <2 x double> @f9() {
75
ret <2 x double> <double 0x0000800000008000, double 0x0000800000008000>
78
; Test a word-granularity replicate with the lowest in-range value.
79
define <2 x double> @f10() {
81
; CHECK: vrepif %v24, -32768
83
ret <2 x double> <double 0xffff8000ffff8000, double 0xffff8000ffff8000>
86
; Test a word-granularity replicate with the next lowest value.
87
; This cannot use VREPIF.
88
define <2 x double> @f11() {
92
ret <2 x double> <double 0xffff7fffffff7fff, double 0xffff7fffffff7fff>
95
; Test a word-granularity replicate with the highest useful negative value.
96
define <2 x double> @f12() {
98
; CHECK: vrepif %v24, -2
100
ret <2 x double> <double 0xfffffffefffffffe, double 0xfffffffefffffffe>
103
; Test a doubleword-granularity replicate with the lowest useful positive
105
define <2 x double> @f13() {
107
; CHECK: vrepig %v24, 1
109
ret <2 x double> <double 0x0000000000000001, double 0x0000000000000001>
112
; Test a doubleword-granularity replicate with the highest in-range value.
113
define <2 x double> @f14() {
115
; CHECK: vrepig %v24, 32767
117
ret <2 x double> <double 0x0000000000007fff, double 0x0000000000007fff>
120
; Test a doubleword-granularity replicate with the next highest value.
121
; This cannot use VREPIG.
122
define <2 x double> @f15() {
126
ret <2 x double> <double 0x0000000000008000, double 0x0000000000008000>
129
; Test a doubleword-granularity replicate with the lowest in-range value.
130
define <2 x double> @f16() {
132
; CHECK: vrepig %v24, -32768
134
ret <2 x double> <double 0xffffffffffff8000, double 0xffffffffffff8000>
137
; Test a doubleword-granularity replicate with the next lowest value.
138
; This cannot use VREPIG.
139
define <2 x double> @f17() {
143
ret <2 x double> <double 0xffffffffffff7fff, double 0xffffffffffff7fff>
146
; Test a doubleword-granularity replicate with the highest useful negative
148
define <2 x double> @f18() {
150
; CHECK: vrepig %v24, -2
152
ret <2 x double> <double 0xfffffffffffffffe, double 0xfffffffffffffffe>
155
; Repeat f14 with undefs optimistically treated as 32767.
156
define <2 x double> @f19() {
158
; CHECK: vrepig %v24, 32767
160
ret <2 x double> <double undef, double 0x0000000000007fff>
163
; Repeat f18 with undefs optimistically treated as -2.
164
define <2 x double> @f20() {
166
; CHECK: vrepig %v24, -2
168
ret <2 x double> <double undef, double 0xfffffffffffffffe>