@@ -10,7 +10,11 @@ define float @ceil_f32(float %i) nounwind {
1010;
1111; LSX-LABEL: ceil_f32:
1212; 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
1418entry:
1519 %0 = call float @llvm.ceil.f32 (float %i )
1620 ret float %0
@@ -24,7 +28,11 @@ define double @ceil_f64(double %i) nounwind {
2428;
2529; LSX-LABEL: ceil_f64:
2630; 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
2836entry:
2937 %0 = call double @llvm.ceil.f64 (double %i )
3038 ret double %0
@@ -38,7 +46,11 @@ define float @floor_f32(float %i) nounwind {
3846;
3947; LSX-LABEL: floor_f32:
4048; 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
4254entry:
4355 %0 = call float @llvm.floor.f32 (float %i )
4456 ret float %0
@@ -52,7 +64,11 @@ define double @floor_f64(double %i) nounwind {
5264;
5365; LSX-LABEL: floor_f64:
5466; 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
5672entry:
5773 %0 = call double @llvm.floor.f64 (double %i )
5874 ret double %0
@@ -66,7 +82,11 @@ define float @trunc_f32(float %i) nounwind {
6682;
6783; LSX-LABEL: trunc_f32:
6884; 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
7090entry:
7191 %0 = call float @llvm.trunc.f32 (float %i )
7292 ret float %0
@@ -80,7 +100,11 @@ define double @trunc_f64(double %i) nounwind {
80100;
81101; LSX-LABEL: trunc_f64:
82102; 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
84108entry:
85109 %0 = call double @llvm.trunc.f64 (double %i )
86110 ret double %0
@@ -94,7 +118,11 @@ define float @roundeven_f32(float %i) nounwind {
94118;
95119; LSX-LABEL: roundeven_f32:
96120; 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
98126entry:
99127 %0 = call float @llvm.roundeven.f32 (float %i )
100128 ret float %0
@@ -108,7 +136,11 @@ define double @roundeven_f64(double %i) nounwind {
108136;
109137; LSX-LABEL: roundeven_f64:
110138; 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
112144entry:
113145 %0 = call double @llvm.roundeven.f64 (double %i )
114146 ret double %0
0 commit comments