1
+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
1
2
; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck %s
3
+ ; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple -global-isel | FileCheck %s
2
4
3
5
define <2 x float > @f1 (<2 x float > %a , <2 x float > %b ) nounwind readnone ssp {
4
- ; CHECK: fmaxnm.2s v0, v0, v1
5
- ; CHECK: ret
6
+ ; CHECK-LABEL: f1:
7
+ ; CHECK: // %bb.0:
8
+ ; CHECK-NEXT: fmaxnm.2s v0, v0, v1
9
+ ; CHECK-NEXT: ret
6
10
%vmaxnm2.i = tail call <2 x float > @llvm.aarch64.neon.fmaxnm.v2f32 (<2 x float > %a , <2 x float > %b ) nounwind
7
11
ret <2 x float > %vmaxnm2.i
8
12
}
9
13
10
14
define <4 x float > @f2 (<4 x float > %a , <4 x float > %b ) nounwind readnone ssp {
11
- ; CHECK: fmaxnm.4s v0, v0, v1
12
- ; CHECK: ret
15
+ ; CHECK-LABEL: f2:
16
+ ; CHECK: // %bb.0:
17
+ ; CHECK-NEXT: fmaxnm.4s v0, v0, v1
18
+ ; CHECK-NEXT: ret
13
19
%vmaxnm2.i = tail call <4 x float > @llvm.aarch64.neon.fmaxnm.v4f32 (<4 x float > %a , <4 x float > %b ) nounwind
14
20
ret <4 x float > %vmaxnm2.i
15
21
}
16
22
17
23
define <2 x double > @f3 (<2 x double > %a , <2 x double > %b ) nounwind readnone ssp {
18
- ; CHECK: fmaxnm.2d v0, v0, v1
19
- ; CHECK: ret
24
+ ; CHECK-LABEL: f3:
25
+ ; CHECK: // %bb.0:
26
+ ; CHECK-NEXT: fmaxnm.2d v0, v0, v1
27
+ ; CHECK-NEXT: ret
20
28
%vmaxnm2.i = tail call <2 x double > @llvm.aarch64.neon.fmaxnm.v2f64 (<2 x double > %a , <2 x double > %b ) nounwind
21
29
ret <2 x double > %vmaxnm2.i
22
30
}
23
31
24
32
define <2 x float > @f4 (<2 x float > %a , <2 x float > %b ) nounwind readnone ssp {
25
- ; CHECK: fminnm.2s v0, v0, v1
26
- ; CHECK: ret
33
+ ; CHECK-LABEL: f4:
34
+ ; CHECK: // %bb.0:
35
+ ; CHECK-NEXT: fminnm.2s v0, v0, v1
36
+ ; CHECK-NEXT: ret
27
37
%vminnm2.i = tail call <2 x float > @llvm.aarch64.neon.fminnm.v2f32 (<2 x float > %a , <2 x float > %b ) nounwind
28
38
ret <2 x float > %vminnm2.i
29
39
}
30
40
31
41
define <4 x float > @f5 (<4 x float > %a , <4 x float > %b ) nounwind readnone ssp {
32
- ; CHECK: fminnm.4s v0, v0, v1
33
- ; CHECK: ret
42
+ ; CHECK-LABEL: f5:
43
+ ; CHECK: // %bb.0:
44
+ ; CHECK-NEXT: fminnm.4s v0, v0, v1
45
+ ; CHECK-NEXT: ret
34
46
%vminnm2.i = tail call <4 x float > @llvm.aarch64.neon.fminnm.v4f32 (<4 x float > %a , <4 x float > %b ) nounwind
35
47
ret <4 x float > %vminnm2.i
36
48
}
37
49
38
50
define <2 x double > @f6 (<2 x double > %a , <2 x double > %b ) nounwind readnone ssp {
39
- ; CHECK: fminnm.2d v0, v0, v1
40
- ; CHECK: ret
51
+ ; CHECK-LABEL: f6:
52
+ ; CHECK: // %bb.0:
53
+ ; CHECK-NEXT: fminnm.2d v0, v0, v1
54
+ ; CHECK-NEXT: ret
41
55
%vminnm2.i = tail call <2 x double > @llvm.aarch64.neon.fminnm.v2f64 (<2 x double > %a , <2 x double > %b ) nounwind
42
56
ret <2 x double > %vminnm2.i
43
57
}
44
58
45
59
define float @f7 (float %a , float %b ) nounwind readnone ssp {
46
- ; CHECK: fmaxnm s0, s0, s1
47
- ; CHECK: ret
60
+ ; CHECK-LABEL: f7:
61
+ ; CHECK: // %bb.0:
62
+ ; CHECK-NEXT: fmaxnm s0, s0, s1
63
+ ; CHECK-NEXT: ret
48
64
%vmaxnm2.i = tail call float @llvm.aarch64.neon.fmaxnm.f32 (float %a , float %b ) nounwind
49
65
ret float %vmaxnm2.i
50
66
}
51
67
52
68
define double @f8 (double %a , double %b ) nounwind readnone ssp {
53
- ; CHECK: fminnm d0, d0, d1
54
- ; CHECK: ret
69
+ ; CHECK-LABEL: f8:
70
+ ; CHECK: // %bb.0:
71
+ ; CHECK-NEXT: fminnm d0, d0, d1
72
+ ; CHECK-NEXT: ret
55
73
%vmaxnm2.i = tail call double @llvm.aarch64.neon.fminnm.f64 (double %a , double %b ) nounwind
56
74
ret double %vmaxnm2.i
57
75
}
@@ -67,14 +85,18 @@ declare double @llvm.aarch64.neon.fminnm.f64(double, double) nounwind readnone
67
85
68
86
define double @test_fmaxnmv (<2 x double > %in ) {
69
87
; CHECK-LABEL: test_fmaxnmv:
70
- ; CHECK: fmaxnmp.2d d0, v0
88
+ ; CHECK: // %bb.0:
89
+ ; CHECK-NEXT: fmaxnmp.2d d0, v0
90
+ ; CHECK-NEXT: ret
71
91
%max = call double @llvm.aarch64.neon.fmaxnmv.f64.v2f64 (<2 x double > %in )
72
92
ret double %max
73
93
}
74
94
75
95
define double @test_fminnmv (<2 x double > %in ) {
76
96
; CHECK-LABEL: test_fminnmv:
77
- ; CHECK: fminnmp.2d d0, v0
97
+ ; CHECK: // %bb.0:
98
+ ; CHECK-NEXT: fminnmp.2d d0, v0
99
+ ; CHECK-NEXT: ret
78
100
%min = call double @llvm.aarch64.neon.fminnmv.f64.v2f64 (<2 x double > %in )
79
101
ret double %min
80
102
}
0 commit comments