@@ -10,7 +10,11 @@ define float @ceil_f32(float %i) nounwind {
10
10
;
11
11
; LSX-LABEL: ceil_f32:
12
12
; LSX: # %bb.0: # %entry
13
- ; LSX-NEXT: b %plt(ceilf)
13
+ ; LSX-NEXT: # kill: def $f0 killed $f0 def $vr0
14
+ ; LSX-NEXT: vreplvei.w $vr0, $vr0, 0
15
+ ; LSX-NEXT: vfrintrp.s $vr0, $vr0
16
+ ; LSX-NEXT: # kill: def $f0 killed $f0 killed $vr0
17
+ ; LSX-NEXT: ret
14
18
entry:
15
19
%0 = call float @llvm.ceil.f32 (float %i )
16
20
ret float %0
@@ -24,7 +28,11 @@ define double @ceil_f64(double %i) nounwind {
24
28
;
25
29
; LSX-LABEL: ceil_f64:
26
30
; LSX: # %bb.0: # %entry
27
- ; LSX-NEXT: b %plt(ceil)
31
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 def $vr0
32
+ ; LSX-NEXT: vreplvei.d $vr0, $vr0, 0
33
+ ; LSX-NEXT: vfrintrp.d $vr0, $vr0
34
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 killed $vr0
35
+ ; LSX-NEXT: ret
28
36
entry:
29
37
%0 = call double @llvm.ceil.f64 (double %i )
30
38
ret double %0
@@ -38,7 +46,11 @@ define float @floor_f32(float %i) nounwind {
38
46
;
39
47
; LSX-LABEL: floor_f32:
40
48
; LSX: # %bb.0: # %entry
41
- ; LSX-NEXT: b %plt(floorf)
49
+ ; LSX-NEXT: # kill: def $f0 killed $f0 def $vr0
50
+ ; LSX-NEXT: vreplvei.w $vr0, $vr0, 0
51
+ ; LSX-NEXT: vfrintrm.s $vr0, $vr0
52
+ ; LSX-NEXT: # kill: def $f0 killed $f0 killed $vr0
53
+ ; LSX-NEXT: ret
42
54
entry:
43
55
%0 = call float @llvm.floor.f32 (float %i )
44
56
ret float %0
@@ -52,7 +64,11 @@ define double @floor_f64(double %i) nounwind {
52
64
;
53
65
; LSX-LABEL: floor_f64:
54
66
; LSX: # %bb.0: # %entry
55
- ; LSX-NEXT: b %plt(floor)
67
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 def $vr0
68
+ ; LSX-NEXT: vreplvei.d $vr0, $vr0, 0
69
+ ; LSX-NEXT: vfrintrm.d $vr0, $vr0
70
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 killed $vr0
71
+ ; LSX-NEXT: ret
56
72
entry:
57
73
%0 = call double @llvm.floor.f64 (double %i )
58
74
ret double %0
@@ -66,7 +82,11 @@ define float @trunc_f32(float %i) nounwind {
66
82
;
67
83
; LSX-LABEL: trunc_f32:
68
84
; LSX: # %bb.0: # %entry
69
- ; LSX-NEXT: b %plt(truncf)
85
+ ; LSX-NEXT: # kill: def $f0 killed $f0 def $vr0
86
+ ; LSX-NEXT: vreplvei.w $vr0, $vr0, 0
87
+ ; LSX-NEXT: vfrintrz.s $vr0, $vr0
88
+ ; LSX-NEXT: # kill: def $f0 killed $f0 killed $vr0
89
+ ; LSX-NEXT: ret
70
90
entry:
71
91
%0 = call float @llvm.trunc.f32 (float %i )
72
92
ret float %0
@@ -80,7 +100,11 @@ define double @trunc_f64(double %i) nounwind {
80
100
;
81
101
; LSX-LABEL: trunc_f64:
82
102
; LSX: # %bb.0: # %entry
83
- ; LSX-NEXT: b %plt(trunc)
103
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 def $vr0
104
+ ; LSX-NEXT: vreplvei.d $vr0, $vr0, 0
105
+ ; LSX-NEXT: vfrintrz.d $vr0, $vr0
106
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 killed $vr0
107
+ ; LSX-NEXT: ret
84
108
entry:
85
109
%0 = call double @llvm.trunc.f64 (double %i )
86
110
ret double %0
@@ -94,7 +118,11 @@ define float @roundeven_f32(float %i) nounwind {
94
118
;
95
119
; LSX-LABEL: roundeven_f32:
96
120
; LSX: # %bb.0: # %entry
97
- ; LSX-NEXT: b %plt(roundevenf)
121
+ ; LSX-NEXT: # kill: def $f0 killed $f0 def $vr0
122
+ ; LSX-NEXT: vreplvei.w $vr0, $vr0, 0
123
+ ; LSX-NEXT: vfrintrne.s $vr0, $vr0
124
+ ; LSX-NEXT: # kill: def $f0 killed $f0 killed $vr0
125
+ ; LSX-NEXT: ret
98
126
entry:
99
127
%0 = call float @llvm.roundeven.f32 (float %i )
100
128
ret float %0
@@ -108,7 +136,11 @@ define double @roundeven_f64(double %i) nounwind {
108
136
;
109
137
; LSX-LABEL: roundeven_f64:
110
138
; LSX: # %bb.0: # %entry
111
- ; LSX-NEXT: b %plt(roundeven)
139
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 def $vr0
140
+ ; LSX-NEXT: vreplvei.d $vr0, $vr0, 0
141
+ ; LSX-NEXT: vfrintrne.d $vr0, $vr0
142
+ ; LSX-NEXT: # kill: def $f0_64 killed $f0_64 killed $vr0
143
+ ; LSX-NEXT: ret
112
144
entry:
113
145
%0 = call double @llvm.roundeven.f64 (double %i )
114
146
ret double %0
0 commit comments