Expand Up
@@ -1972,10 +1972,9 @@ define void @trunc_v8f16(<8 x half>* %x) {
; CHECK-NEXT: flh ft0, %lo(.LCPI91_0)(a1)
; CHECK-NEXT: vfabs.v v9, v8
; CHECK-NEXT: vmflt.vf v0, v9, ft0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vfsgnj.vv v9, v9, v8
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8, v0.t
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
; CHECK-NEXT: vfsgnj.vv v8, v9, v8, v0.t
; CHECK-NEXT: vse16.v v8, (a0)
; CHECK-NEXT: ret
%a = load <8 x half >, <8 x half >* %x
Expand All
@@ -1994,10 +1993,9 @@ define void @trunc_v4f32(<4 x float>* %x) {
; CHECK-NEXT: flw ft0, %lo(.LCPI92_0)(a1)
; CHECK-NEXT: vfabs.v v9, v8
; CHECK-NEXT: vmflt.vf v0, v9, ft0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vfsgnj.vv v9, v9, v8
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8, v0.t
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
; CHECK-NEXT: vfsgnj.vv v8, v9, v8, v0.t
; CHECK-NEXT: vse32.v v8, (a0)
; CHECK-NEXT: ret
%a = load <4 x float >, <4 x float >* %x
Expand All
@@ -2016,10 +2014,9 @@ define void @trunc_v2f64(<2 x double>* %x) {
; CHECK-NEXT: fld ft0, %lo(.LCPI93_0)(a1)
; CHECK-NEXT: vfabs.v v9, v8
; CHECK-NEXT: vmflt.vf v0, v9, ft0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vfsgnj.vv v9, v9, v8
; CHECK-NEXT: vmerge.vvm v8, v8, v9, v0
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8, v0.t
; CHECK-NEXT: vfcvt.f.x.v v9, v9, v0.t
; CHECK-NEXT: vfsgnj.vv v8, v9, v8, v0.t
; CHECK-NEXT: vse64.v v8, (a0)
; CHECK-NEXT: ret
%a = load <2 x double >, <2 x double >* %x
Expand All
@@ -2033,21 +2030,23 @@ define void @ceil_v8f16(<8 x half>* %x) {
; CHECK-LABEL: ceil_v8f16:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
; CHECK-NEXT: vle16.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle16.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI94_0)
; CHECK-NEXT: flh ft0, %lo(.LCPI94_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v9, v8
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI94_1)
; CHECK-NEXT: flh ft1 , %lo(.LCPI94_1)(a1)
; CHECK-NEXT: vfadd.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9, v9, v10 , v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse16.v v8 , (a0)
; CHECK-NEXT: flh ft0 , %lo(.LCPI94_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0, v10, v9 , v0.t
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-NEXT: vfadd .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse16.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <8 x half >, <8 x half >* %x
%b = call <8 x half > @llvm.ceil.v8f16 (<8 x half > %a )
Expand All
@@ -2060,21 +2059,23 @@ define void @ceil_v4f32(<4 x float>* %x) {
; CHECK-LABEL: ceil_v4f32:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
; CHECK-NEXT: vle32.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle32.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI95_0)
; CHECK-NEXT: flw ft0, %lo(.LCPI95_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v9, v8
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI95_1)
; CHECK-NEXT: flw ft1 , %lo(.LCPI95_1)(a1)
; CHECK-NEXT: vfadd.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9, v9, v10 , v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse32.v v8 , (a0)
; CHECK-NEXT: flw ft0 , %lo(.LCPI95_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0, v10, v9 , v0.t
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-NEXT: vfadd .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse32.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <4 x float >, <4 x float >* %x
%b = call <4 x float > @llvm.ceil.v4f32 (<4 x float > %a )
Expand All
@@ -2087,21 +2088,23 @@ define void @ceil_v2f64(<2 x double>* %x) {
; CHECK-LABEL: ceil_v2f64:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
; CHECK-NEXT: vle64.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle64.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI96_0)
; CHECK-NEXT: fld ft0, %lo(.LCPI96_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v9, v8
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI96_1)
; CHECK-NEXT: fld ft1 , %lo(.LCPI96_1)(a1)
; CHECK-NEXT: vfadd.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9, v9, v10 , v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse64.v v8 , (a0)
; CHECK-NEXT: fld ft0 , %lo(.LCPI96_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0, v10, v9 , v0.t
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, mu
; CHECK-NEXT: vfadd .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse64.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <2 x double >, <2 x double >* %x
%b = call <2 x double > @llvm.ceil.v2f64 (<2 x double > %a )
Expand All
@@ -2114,21 +2117,23 @@ define void @floor_v8f16(<8 x half>* %x) {
; CHECK-LABEL: floor_v8f16:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
; CHECK-NEXT: vle16.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle16.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI97_0)
; CHECK-NEXT: flh ft0, %lo(.LCPI97_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v8, v9
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI97_1)
; CHECK-NEXT: flh ft1 , %lo(.LCPI97_1)(a1)
; CHECK-NEXT: vfsub.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9 , v9, v10, v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse16.v v8 , (a0)
; CHECK-NEXT: flh ft0 , %lo(.LCPI97_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0 , v9, v10, v0.t
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-NEXT: vfsub .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse16.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <8 x half >, <8 x half >* %x
%b = call <8 x half > @llvm.floor.v8f16 (<8 x half > %a )
Expand All
@@ -2141,21 +2146,23 @@ define void @floor_v4f32(<4 x float>* %x) {
; CHECK-LABEL: floor_v4f32:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
; CHECK-NEXT: vle32.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle32.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI98_0)
; CHECK-NEXT: flw ft0, %lo(.LCPI98_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v8, v9
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI98_1)
; CHECK-NEXT: flw ft1 , %lo(.LCPI98_1)(a1)
; CHECK-NEXT: vfsub.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9 , v9, v10, v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse32.v v8 , (a0)
; CHECK-NEXT: flw ft0 , %lo(.LCPI98_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0 , v9, v10, v0.t
; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-NEXT: vfsub .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse32.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <4 x float >, <4 x float >* %x
%b = call <4 x float > @llvm.floor.v4f32 (<4 x float > %a )
Expand All
@@ -2168,21 +2175,23 @@ define void @floor_v2f64(<2 x double>* %x) {
; CHECK-LABEL: floor_v2f64:
; CHECK: # %bb.0:
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
; CHECK-NEXT: vle64.v v8, (a0)
; CHECK-NEXT: vfcvt.rtz.x.f.v v9, v8
; CHECK-NEXT: vfcvt.f.x.v v9, v9
; CHECK-NEXT: vle64.v v9, (a0)
; CHECK-NEXT: lui a1, %hi(.LCPI99_0)
; CHECK-NEXT: fld ft0, %lo(.LCPI99_0)(a1)
; CHECK-NEXT: vmflt.vv v0, v8, v9
; CHECK-NEXT: vfabs.v v8, v9
; CHECK-NEXT: vmflt.vf v8, v8, ft0
; CHECK-NEXT: vmv.v.v v0, v8
; CHECK-NEXT: vfcvt.rtz.x.f.v v10, v9, v0.t
; CHECK-NEXT: vfcvt.f.x.v v10, v10, v0.t
; CHECK-NEXT: lui a1, %hi(.LCPI99_1)
; CHECK-NEXT: fld ft1 , %lo(.LCPI99_1)(a1)
; CHECK-NEXT: vfsub.vf v10, v9, ft0
; CHECK-NEXT: vmerge.vvm v9 , v9, v10, v0
; CHECK-NEXT: vfabs.v v10, v8
; CHECK-NEXT: vmflt .vf v0 , v10, ft1
; CHECK-NEXT: vfsgnj.vv v9, v9 , v8
; CHECK-NEXT: vmerge.vvm v8, v8 , v9, v0
; CHECK-NEXT: vse64.v v8 , (a0)
; CHECK-NEXT: fld ft0 , %lo(.LCPI99_1)(a1)
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, ma
; CHECK-NEXT: vmflt.vv v0 , v9, v10, v0.t
; CHECK-NEXT: vsetvli zero, zero, e64, m1, ta, mu
; CHECK-NEXT: vfsub .vf v10 , v10, ft0, v0.t
; CHECK-NEXT: vmv.v.v v0 , v8
; CHECK-NEXT: vfsgnj.vv v9, v10 , v9, v0.t
; CHECK-NEXT: vse64.v v9 , (a0)
; CHECK-NEXT: ret
%a = load <2 x double >, <2 x double >* %x
%b = call <2 x double > @llvm.floor.v2f64 (<2 x double > %a )
Expand Down