1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -force-streaming-compatible < %s | FileCheck %s
3
- ; RUN: llc -force-streaming-compatible -mattr=+sme2p2 < %s | FileCheck %s --check-prefix=USE-NEON-NO-GPRS
4
- ; RUN: llc < %s | FileCheck %s --check-prefix=USE-NEON-NO-GPRS
2
+ ; RUN: llc -mattr=+sve -force-streaming-compatible < %s | FileCheck %s
3
+ ; RUN: llc -mattr=+sme -force-streaming < %s | FileCheck %s
4
+ ; RUN: llc -mattr=+sme2p2 -force-streaming-compatible < %s | FileCheck %s --check-prefix=USE-NEON-NO-GPRS
5
+ ; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE
5
6
6
7
target triple = "aarch64-unknown-linux-gnu"
7
8
8
9
define double @t1 (double %x ) {
9
10
; CHECK-LABEL: t1:
10
11
; CHECK: // %bb.0: // %entry
11
- ; CHECK-NEXT: fcvtzs x8, d0
12
- ; CHECK-NEXT: scvtf d0, x8
12
+ ; CHECK-NEXT: ptrue p0.d
13
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
14
+ ; CHECK-NEXT: fcvtzs z0.d, p0/m, z0.d
15
+ ; CHECK-NEXT: scvtf z0.d, p0/m, z0.d
16
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
13
17
; CHECK-NEXT: ret
14
18
;
15
19
; USE-NEON-NO-GPRS-LABEL: t1:
16
20
; USE-NEON-NO-GPRS: // %bb.0: // %entry
17
21
; USE-NEON-NO-GPRS-NEXT: fcvtzs d0, d0
18
22
; USE-NEON-NO-GPRS-NEXT: scvtf d0, d0
19
23
; USE-NEON-NO-GPRS-NEXT: ret
24
+ ;
25
+ ; NONEON-NOSVE-LABEL: t1:
26
+ ; NONEON-NOSVE: // %bb.0: // %entry
27
+ ; NONEON-NOSVE-NEXT: fcvtzs x8, d0
28
+ ; NONEON-NOSVE-NEXT: scvtf d0, x8
29
+ ; NONEON-NOSVE-NEXT: ret
20
30
entry:
21
31
%conv = fptosi double %x to i64
22
32
%conv1 = sitofp i64 %conv to double
@@ -26,15 +36,24 @@ entry:
26
36
define float @t2 (float %x ) {
27
37
; CHECK-LABEL: t2:
28
38
; CHECK: // %bb.0: // %entry
29
- ; CHECK-NEXT: fcvtzs w8, s0
30
- ; CHECK-NEXT: scvtf s0, w8
39
+ ; CHECK-NEXT: ptrue p0.s
40
+ ; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0
41
+ ; CHECK-NEXT: fcvtzs z0.s, p0/m, z0.s
42
+ ; CHECK-NEXT: scvtf z0.s, p0/m, z0.s
43
+ ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $z0
31
44
; CHECK-NEXT: ret
32
45
;
33
46
; USE-NEON-NO-GPRS-LABEL: t2:
34
47
; USE-NEON-NO-GPRS: // %bb.0: // %entry
35
48
; USE-NEON-NO-GPRS-NEXT: fcvtzs s0, s0
36
49
; USE-NEON-NO-GPRS-NEXT: scvtf s0, s0
37
50
; USE-NEON-NO-GPRS-NEXT: ret
51
+ ;
52
+ ; NONEON-NOSVE-LABEL: t2:
53
+ ; NONEON-NOSVE: // %bb.0: // %entry
54
+ ; NONEON-NOSVE-NEXT: fcvtzs w8, s0
55
+ ; NONEON-NOSVE-NEXT: scvtf s0, w8
56
+ ; NONEON-NOSVE-NEXT: ret
38
57
entry:
39
58
%conv = fptosi float %x to i32
40
59
%conv1 = sitofp i32 %conv to float
@@ -44,11 +63,20 @@ entry:
44
63
define half @t3 (half %x ) {
45
64
; CHECK-LABEL: t3:
46
65
; CHECK: // %bb.0: // %entry
47
- ; CHECK-NEXT: fcvt s0, h0
48
- ; CHECK-NEXT: fcvtzs w8, s0
49
- ; CHECK-NEXT: scvtf s0, w8
50
- ; CHECK-NEXT: fcvt h0, s0
66
+ ; CHECK-NEXT: ptrue p0.s
67
+ ; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
68
+ ; CHECK-NEXT: fcvtzs z0.s, p0/m, z0.h
69
+ ; CHECK-NEXT: scvtf z0.h, p0/m, z0.s
70
+ ; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
51
71
; CHECK-NEXT: ret
72
+ ;
73
+ ; NONEON-NOSVE-LABEL: t3:
74
+ ; NONEON-NOSVE: // %bb.0: // %entry
75
+ ; NONEON-NOSVE-NEXT: fcvt s0, h0
76
+ ; NONEON-NOSVE-NEXT: fcvtzs w8, s0
77
+ ; NONEON-NOSVE-NEXT: scvtf s0, w8
78
+ ; NONEON-NOSVE-NEXT: fcvt h0, s0
79
+ ; NONEON-NOSVE-NEXT: ret
52
80
entry:
53
81
%conv = fptosi half %x to i32
54
82
%conv1 = sitofp i32 %conv to half
@@ -58,15 +86,24 @@ entry:
58
86
define double @t4 (double %x ) {
59
87
; CHECK-LABEL: t4:
60
88
; CHECK: // %bb.0: // %entry
61
- ; CHECK-NEXT: fcvtzu x8, d0
62
- ; CHECK-NEXT: ucvtf d0, x8
89
+ ; CHECK-NEXT: ptrue p0.d
90
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
91
+ ; CHECK-NEXT: fcvtzu z0.d, p0/m, z0.d
92
+ ; CHECK-NEXT: ucvtf z0.d, p0/m, z0.d
93
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
63
94
; CHECK-NEXT: ret
64
95
;
65
96
; USE-NEON-NO-GPRS-LABEL: t4:
66
97
; USE-NEON-NO-GPRS: // %bb.0: // %entry
67
98
; USE-NEON-NO-GPRS-NEXT: fcvtzu d0, d0
68
99
; USE-NEON-NO-GPRS-NEXT: ucvtf d0, d0
69
100
; USE-NEON-NO-GPRS-NEXT: ret
101
+ ;
102
+ ; NONEON-NOSVE-LABEL: t4:
103
+ ; NONEON-NOSVE: // %bb.0: // %entry
104
+ ; NONEON-NOSVE-NEXT: fcvtzu x8, d0
105
+ ; NONEON-NOSVE-NEXT: ucvtf d0, x8
106
+ ; NONEON-NOSVE-NEXT: ret
70
107
entry:
71
108
%conv = fptoui double %x to i64
72
109
%conv1 = uitofp i64 %conv to double
@@ -76,15 +113,24 @@ entry:
76
113
define float @t5 (float %x ) {
77
114
; CHECK-LABEL: t5:
78
115
; CHECK: // %bb.0: // %entry
79
- ; CHECK-NEXT: fcvtzu w8, s0
80
- ; CHECK-NEXT: ucvtf s0, w8
116
+ ; CHECK-NEXT: ptrue p0.s
117
+ ; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0
118
+ ; CHECK-NEXT: fcvtzu z0.s, p0/m, z0.s
119
+ ; CHECK-NEXT: ucvtf z0.s, p0/m, z0.s
120
+ ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $z0
81
121
; CHECK-NEXT: ret
82
122
;
83
123
; USE-NEON-NO-GPRS-LABEL: t5:
84
124
; USE-NEON-NO-GPRS: // %bb.0: // %entry
85
125
; USE-NEON-NO-GPRS-NEXT: fcvtzu s0, s0
86
126
; USE-NEON-NO-GPRS-NEXT: ucvtf s0, s0
87
127
; USE-NEON-NO-GPRS-NEXT: ret
128
+ ;
129
+ ; NONEON-NOSVE-LABEL: t5:
130
+ ; NONEON-NOSVE: // %bb.0: // %entry
131
+ ; NONEON-NOSVE-NEXT: fcvtzu w8, s0
132
+ ; NONEON-NOSVE-NEXT: ucvtf s0, w8
133
+ ; NONEON-NOSVE-NEXT: ret
88
134
entry:
89
135
%conv = fptoui float %x to i32
90
136
%conv1 = uitofp i32 %conv to float
@@ -94,11 +140,20 @@ entry:
94
140
define half @t6 (half %x ) {
95
141
; CHECK-LABEL: t6:
96
142
; CHECK: // %bb.0: // %entry
97
- ; CHECK-NEXT: fcvt s0, h0
98
- ; CHECK-NEXT: fcvtzu w8, s0
99
- ; CHECK-NEXT: ucvtf s0, w8
100
- ; CHECK-NEXT: fcvt h0, s0
143
+ ; CHECK-NEXT: ptrue p0.s
144
+ ; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
145
+ ; CHECK-NEXT: fcvtzu z0.s, p0/m, z0.h
146
+ ; CHECK-NEXT: ucvtf z0.h, p0/m, z0.s
147
+ ; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
101
148
; CHECK-NEXT: ret
149
+ ;
150
+ ; NONEON-NOSVE-LABEL: t6:
151
+ ; NONEON-NOSVE: // %bb.0: // %entry
152
+ ; NONEON-NOSVE-NEXT: fcvt s0, h0
153
+ ; NONEON-NOSVE-NEXT: fcvtzu w8, s0
154
+ ; NONEON-NOSVE-NEXT: ucvtf s0, w8
155
+ ; NONEON-NOSVE-NEXT: fcvt h0, s0
156
+ ; NONEON-NOSVE-NEXT: ret
102
157
entry:
103
158
%conv = fptoui half %x to i32
104
159
%conv1 = uitofp i32 %conv to half
0 commit comments