204 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3; Function Attrs: norecurse nounwind readnone4define signext i8 @f2c(float %a) {5; CHECK-LABEL: f2c:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s08; CHECK-NEXT: adds.w.sx %s0, %s0, (0)19; CHECK-NEXT: b.l.t (, %s10)10entry:11 %conv = fptosi float %a to i812 ret i8 %conv13}14 15; Function Attrs: norecurse nounwind readnone16define signext i16 @f2s(float %a) {17; CHECK-LABEL: f2s:18; CHECK: # %bb.0: # %entry19; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s020; CHECK-NEXT: adds.w.sx %s0, %s0, (0)121; CHECK-NEXT: b.l.t (, %s10)22entry:23 %conv = fptosi float %a to i1624 ret i16 %conv25}26 27; Function Attrs: norecurse nounwind readnone28define i32 @f2i(float %a) {29; CHECK-LABEL: f2i:30; CHECK: # %bb.0: # %entry31; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s032; CHECK-NEXT: b.l.t (, %s10)33entry:34 %conv = fptosi float %a to i3235 ret i32 %conv36}37 38; Function Attrs: norecurse nounwind readnone39define i64 @f2l(float %a) {40; CHECK-LABEL: f2l:41; CHECK: # %bb.0: # %entry42; CHECK-NEXT: cvt.d.s %s0, %s043; CHECK-NEXT: cvt.l.d.rz %s0, %s044; CHECK-NEXT: b.l.t (, %s10)45entry:46 %conv = fptosi float %a to i6447 ret i64 %conv48}49 50; Function Attrs: norecurse nounwind readnone51define zeroext i8 @f2uc(float %a) {52; CHECK-LABEL: f2uc:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s055; CHECK-NEXT: adds.w.zx %s0, %s0, (0)156; CHECK-NEXT: b.l.t (, %s10)57entry:58 %conv = fptoui float %a to i859 ret i8 %conv60}61 62; Function Attrs: norecurse nounwind readnone63define zeroext i16 @f2us(float %a) {64; CHECK-LABEL: f2us:65; CHECK: # %bb.0: # %entry66; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s067; CHECK-NEXT: adds.w.zx %s0, %s0, (0)168; CHECK-NEXT: b.l.t (, %s10)69entry:70 %conv = fptoui float %a to i1671 ret i16 %conv72}73 74; Function Attrs: norecurse nounwind readnone75define i32 @f2ui(float %a) {76; CHECK-LABEL: f2ui:77; CHECK: # %bb.0: # %entry78; CHECK-NEXT: cvt.d.s %s0, %s079; CHECK-NEXT: cvt.l.d.rz %s0, %s080; CHECK-NEXT: b.l.t (, %s10)81entry:82 %conv = fptoui float %a to i3283 ret i32 %conv84}85 86; Function Attrs: norecurse nounwind readnone87define i64 @f2ul(float %a) {88; CHECK-LABEL: f2ul:89; CHECK: # %bb.0: # %entry90; CHECK-NEXT: lea.sl %s1, 159383552091; CHECK-NEXT: fcmp.s %s2, %s0, %s192; CHECK-NEXT: fsub.s %s1, %s0, %s193; CHECK-NEXT: cvt.d.s %s1, %s194; CHECK-NEXT: cvt.l.d.rz %s1, %s195; CHECK-NEXT: xor %s1, %s1, (1)196; CHECK-NEXT: cvt.d.s %s0, %s097; CHECK-NEXT: cvt.l.d.rz %s0, %s098; CHECK-NEXT: cmov.s.lt %s1, %s0, %s299; CHECK-NEXT: or %s0, 0, %s1100; CHECK-NEXT: b.l.t (, %s10)101entry:102 %conv = fptoui float %a to i64103 ret i64 %conv104}105 106; Function Attrs: norecurse nounwind readnone107define signext i8 @d2c(double %a) {108; CHECK-LABEL: d2c:109; CHECK: # %bb.0: # %entry110; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0111; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1112; CHECK-NEXT: b.l.t (, %s10)113entry:114 %conv = fptosi double %a to i8115 ret i8 %conv116}117 118; Function Attrs: norecurse nounwind readnone119define signext i16 @d2s(double %a) {120; CHECK-LABEL: d2s:121; CHECK: # %bb.0: # %entry122; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0123; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1124; CHECK-NEXT: b.l.t (, %s10)125entry:126 %conv = fptosi double %a to i16127 ret i16 %conv128}129 130; Function Attrs: norecurse nounwind readnone131define i32 @d2i(double %a) {132; CHECK-LABEL: d2i:133; CHECK: # %bb.0: # %entry134; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0135; CHECK-NEXT: b.l.t (, %s10)136entry:137 %conv = fptosi double %a to i32138 ret i32 %conv139}140 141; Function Attrs: norecurse nounwind readnone142define i64 @d2l(double %a) {143; CHECK-LABEL: d2l:144; CHECK: # %bb.0: # %entry145; CHECK-NEXT: cvt.l.d.rz %s0, %s0146; CHECK-NEXT: b.l.t (, %s10)147entry:148 %conv = fptosi double %a to i64149 ret i64 %conv150}151 152; Function Attrs: norecurse nounwind readnone153define zeroext i8 @d2uc(double %a) {154; CHECK-LABEL: d2uc:155; CHECK: # %bb.0: # %entry156; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0157; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1158; CHECK-NEXT: b.l.t (, %s10)159entry:160 %conv = fptoui double %a to i8161 ret i8 %conv162}163 164; Function Attrs: norecurse nounwind readnone165define zeroext i16 @d2us(double %a) {166; CHECK-LABEL: d2us:167; CHECK: # %bb.0: # %entry168; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0169; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1170; CHECK-NEXT: b.l.t (, %s10)171entry:172 %conv = fptoui double %a to i16173 ret i16 %conv174}175 176; Function Attrs: norecurse nounwind readnone177define i32 @d2ui(double %a) {178; CHECK-LABEL: d2ui:179; CHECK: # %bb.0: # %entry180; CHECK-NEXT: cvt.l.d.rz %s0, %s0181; CHECK-NEXT: b.l.t (, %s10)182entry:183 %conv = fptoui double %a to i32184 ret i32 %conv185}186 187; Function Attrs: norecurse nounwind readnone188define i64 @d2ul(double %a) {189; CHECK-LABEL: d2ul:190; CHECK: # %bb.0: # %entry191; CHECK-NEXT: lea.sl %s1, 1138753536192; CHECK-NEXT: fcmp.d %s2, %s0, %s1193; CHECK-NEXT: fsub.d %s1, %s0, %s1194; CHECK-NEXT: cvt.l.d.rz %s1, %s1195; CHECK-NEXT: xor %s1, %s1, (1)1196; CHECK-NEXT: cvt.l.d.rz %s0, %s0197; CHECK-NEXT: cmov.d.lt %s1, %s0, %s2198; CHECK-NEXT: or %s0, 0, %s1199; CHECK-NEXT: b.l.t (, %s10)200entry:201 %conv = fptoui double %a to i64202 ret i64 %conv203}204