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