brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · 07055fe Raw
335 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv2_sf | FileCheck %s --check-prefix=CHECK-SF4; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv3_sf | FileCheck %s --check-prefix=CHECK-SF25 6 7; float --> i328define i32 @fptosiR_float_1(float %x) {9;10; CHECK-SF-LABEL: fptosiR_float_1:11; CHECK-SF:       # %bb.0: # %entry12; CHECK-SF-NEXT:    fstosi.rz vr0, vr013; CHECK-SF-NEXT:    fmfvrl a0, vr014; CHECK-SF-NEXT:    rts1615;16; CHECK-SF2-LABEL: fptosiR_float_1:17; CHECK-SF2:       # %bb.0: # %entry18; CHECK-SF2-NEXT:    fftoi.f32.s32.rz vr0, vr019; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr020; CHECK-SF2-NEXT:    rts1621entry:22  %fptosi = fptosi float %x to i3223  ret i32 %fptosi24}25 26 27; float --> i1628define i16 @fptosiR_float_2(float %x) {29;30; CHECK-SF-LABEL: fptosiR_float_2:31; CHECK-SF:       # %bb.0: # %entry32; CHECK-SF-NEXT:    fstosi.rz vr0, vr033; CHECK-SF-NEXT:    fmfvrl a0, vr034; CHECK-SF-NEXT:    rts1635;36; CHECK-SF2-LABEL: fptosiR_float_2:37; CHECK-SF2:       # %bb.0: # %entry38; CHECK-SF2-NEXT:    fftoi.f32.s32.rz vr0, vr039; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr040; CHECK-SF2-NEXT:    rts1641entry:42  %fptosi = fptosi float %x to i1643  ret i16 %fptosi44}45 46 47; float --> i848define i8 @fptosiR_float_3(float %x) {49;50; CHECK-SF-LABEL: fptosiR_float_3:51; CHECK-SF:       # %bb.0: # %entry52; CHECK-SF-NEXT:    fstosi.rz vr0, vr053; CHECK-SF-NEXT:    fmfvrl a0, vr054; CHECK-SF-NEXT:    rts1655;56; CHECK-SF2-LABEL: fptosiR_float_3:57; CHECK-SF2:       # %bb.0: # %entry58; CHECK-SF2-NEXT:    fftoi.f32.s32.rz vr0, vr059; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr060; CHECK-SF2-NEXT:    rts1661entry:62  %fptosi = fptosi float %x to i863  ret i8 %fptosi64}65 66 67; float --> i168define i1 @fptosiR_float_4(float %x) {69;70; CHECK-SF-LABEL: fptosiR_float_4:71; CHECK-SF:       # %bb.0: # %entry72; CHECK-SF-NEXT:    fstosi.rz vr0, vr073; CHECK-SF-NEXT:    fmfvrl a0, vr074; CHECK-SF-NEXT:    rts1675;76; CHECK-SF2-LABEL: fptosiR_float_4:77; CHECK-SF2:       # %bb.0: # %entry78; CHECK-SF2-NEXT:    fftoi.f32.s32.rz vr0, vr079; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr080; CHECK-SF2-NEXT:    rts1681entry:82  %fptosi = fptosi float %x to i183  ret i1 %fptosi84}85 86 87 88 89; float --> i3290define i32 @fptouiR_float_1(float %x) {91;92; CHECK-SF-LABEL: fptouiR_float_1:93; CHECK-SF:       # %bb.0: # %entry94; CHECK-SF-NEXT:    fstoui.rz vr0, vr095; CHECK-SF-NEXT:    fmfvrl a0, vr096; CHECK-SF-NEXT:    rts1697;98; CHECK-SF2-LABEL: fptouiR_float_1:99; CHECK-SF2:       # %bb.0: # %entry100; CHECK-SF2-NEXT:    fftoi.f32.u32.rz vr0, vr0101; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr0102; CHECK-SF2-NEXT:    rts16103 104 105entry:106  %fptoui = fptoui float %x to i32107  ret i32 %fptoui108}109 110 111 112; float --> i16113define i16 @fptouiR_float_2(float %x) {114;115; CHECK-SF-LABEL: fptouiR_float_2:116; CHECK-SF:       # %bb.0: # %entry117; CHECK-SF-NEXT:    fstoui.rz vr0, vr0118; CHECK-SF-NEXT:    fmfvrl a0, vr0119; CHECK-SF-NEXT:    rts16120;121; CHECK-SF2-LABEL: fptouiR_float_2:122; CHECK-SF2:       # %bb.0: # %entry123; CHECK-SF2-NEXT:    fftoi.f32.u32.rz vr0, vr0124; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr0125; CHECK-SF2-NEXT:    rts16126 127 128entry:129  %fptoui = fptoui float %x to i16130  ret i16 %fptoui131}132 133 134 135; float --> i8136define i8 @fptouiR_float_3(float %x) {137;138; CHECK-SF-LABEL: fptouiR_float_3:139; CHECK-SF:       # %bb.0: # %entry140; CHECK-SF-NEXT:    fstoui.rz vr0, vr0141; CHECK-SF-NEXT:    fmfvrl a0, vr0142; CHECK-SF-NEXT:    rts16143;144; CHECK-SF2-LABEL: fptouiR_float_3:145; CHECK-SF2:       # %bb.0: # %entry146; CHECK-SF2-NEXT:    fftoi.f32.u32.rz vr0, vr0147; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr0148; CHECK-SF2-NEXT:    rts16149 150 151entry:152  %fptoui = fptoui float %x to i8153  ret i8 %fptoui154}155 156 157; float --> i1158define i1 @fptouiR_float_4(float %x) {159;160; CHECK-SF-LABEL: fptouiR_float_4:161; CHECK-SF:       # %bb.0: # %entry162; CHECK-SF-NEXT:    fstoui.rz vr0, vr0163; CHECK-SF-NEXT:    fmfvrl a0, vr0164; CHECK-SF-NEXT:    rts16165;166; CHECK-SF2-LABEL: fptouiR_float_4:167; CHECK-SF2:       # %bb.0: # %entry168; CHECK-SF2-NEXT:    fftoi.f32.u32.rz vr0, vr0169; CHECK-SF2-NEXT:    fmfvr.32.1 a0, vr0170; CHECK-SF2-NEXT:    rts16171entry:172  %fptoui = fptoui float %x to i1173  ret i1 %fptoui174}175 176; i32/i16/i8/i1 --> float177 178define float @sitofpR_float_0(i32 %x) {179;180; CHECK-SF-LABEL: sitofpR_float_0:181; CHECK-SF:       # %bb.0: # %entry182; CHECK-SF-NEXT:    fmtvrl vr0, a0183; CHECK-SF-NEXT:    fsitos vr0, vr0184; CHECK-SF-NEXT:    rts16185;186; CHECK-SF2-LABEL: sitofpR_float_0:187; CHECK-SF2:       # %bb.0: # %entry188; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0189; CHECK-SF2-NEXT:    fitof.s32.f32 vr0, vr0190; CHECK-SF2-NEXT:    rts16191entry:192  %sitofp = sitofp i32 %x to float193  ret float %sitofp194}195 196define float @sitofpR_float_1(i16 %x) {197;198; CHECK-SF-LABEL: sitofpR_float_1:199; CHECK-SF:       # %bb.0: # %entry200; CHECK-SF-NEXT:    sexth16 a0, a0201; CHECK-SF-NEXT:    fmtvrl vr0, a0202; CHECK-SF-NEXT:    fsitos vr0, vr0203; CHECK-SF-NEXT:    rts16204;205; CHECK-SF2-LABEL: sitofpR_float_1:206; CHECK-SF2:       # %bb.0: # %entry207; CHECK-SF2-NEXT:    sexth16 a0, a0208; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0209; CHECK-SF2-NEXT:    fitof.s32.f32 vr0, vr0210; CHECK-SF2-NEXT:    rts16211entry:212  %sitofp = sitofp i16 %x to float213  ret float %sitofp214}215 216define float @sitofpR_float_2(i8 %x) {217;218; CHECK-SF-LABEL: sitofpR_float_2:219; CHECK-SF:       # %bb.0: # %entry220; CHECK-SF-NEXT:    sextb16 a0, a0221; CHECK-SF-NEXT:    fmtvrl vr0, a0222; CHECK-SF-NEXT:    fsitos vr0, vr0223; CHECK-SF-NEXT:    rts16224;225; CHECK-SF2-LABEL: sitofpR_float_2:226; CHECK-SF2:       # %bb.0: # %entry227; CHECK-SF2-NEXT:    sextb16 a0, a0228; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0229; CHECK-SF2-NEXT:    fitof.s32.f32 vr0, vr0230; CHECK-SF2-NEXT:    rts16231entry:232  %sitofp = sitofp i8 %x to float233  ret float %sitofp234}235 236define float @sitofpR_float_3(i1 %x) {237;238; CHECK-SF-LABEL: sitofpR_float_3:239; CHECK-SF:       # %bb.0: # %entry240; CHECK-SF-NEXT:    sext32 a0, a0, 0, 0241; CHECK-SF-NEXT:    fmtvrl vr0, a0242; CHECK-SF-NEXT:    fsitos vr0, vr0243; CHECK-SF-NEXT:    rts16244;245; CHECK-SF2-LABEL: sitofpR_float_3:246; CHECK-SF2:       # %bb.0: # %entry247; CHECK-SF2-NEXT:    sext32 a0, a0, 0, 0248; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0249; CHECK-SF2-NEXT:    fitof.s32.f32 vr0, vr0250; CHECK-SF2-NEXT:    rts16251entry:252  %sitofp = sitofp i1 %x to float253  ret float %sitofp254}255 256; i32/i16/i8/i1 --> float257 258define float @uitofpR_float_0(i32 %x) {259;260; CHECK-SF-LABEL: uitofpR_float_0:261; CHECK-SF:       # %bb.0: # %entry262; CHECK-SF-NEXT:    fmtvrl vr0, a0263; CHECK-SF-NEXT:    fuitos vr0, vr0264; CHECK-SF-NEXT:    rts16265;266; CHECK-SF2-LABEL: uitofpR_float_0:267; CHECK-SF2:       # %bb.0: # %entry268; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0269; CHECK-SF2-NEXT:    fitof.u32.f32 vr0, vr0270; CHECK-SF2-NEXT:    rts16271entry:272  %uitofp = uitofp i32 %x to float273  ret float %uitofp274}275 276define float @uitofpR_float_1(i16 %x) {277;278; CHECK-SF-LABEL: uitofpR_float_1:279; CHECK-SF:       # %bb.0: # %entry280; CHECK-SF-NEXT:    zexth16 a0, a0281; CHECK-SF-NEXT:    fmtvrl vr0, a0282; CHECK-SF-NEXT:    fuitos vr0, vr0283; CHECK-SF-NEXT:    rts16284;285; CHECK-SF2-LABEL: uitofpR_float_1:286; CHECK-SF2:       # %bb.0: # %entry287; CHECK-SF2-NEXT:    zexth16 a0, a0288; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0289; CHECK-SF2-NEXT:    fitof.u32.f32 vr0, vr0290; CHECK-SF2-NEXT:    rts16291entry:292  %uitofp = uitofp i16 %x to float293  ret float %uitofp294}295 296define float @uitofpR_float_2(i8 %x) {297;298; CHECK-SF-LABEL: uitofpR_float_2:299; CHECK-SF:       # %bb.0: # %entry300; CHECK-SF-NEXT:    zextb16 a0, a0301; CHECK-SF-NEXT:    fmtvrl vr0, a0302; CHECK-SF-NEXT:    fuitos vr0, vr0303; CHECK-SF-NEXT:    rts16304;305; CHECK-SF2-LABEL: uitofpR_float_2:306; CHECK-SF2:       # %bb.0: # %entry307; CHECK-SF2-NEXT:    zextb16 a0, a0308; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0309; CHECK-SF2-NEXT:    fitof.u32.f32 vr0, vr0310; CHECK-SF2-NEXT:    rts16311entry:312  %uitofp = uitofp i8 %x to float313  ret float %uitofp314}315 316define float @uitofpR_float_3(i1 %x) {317;318; CHECK-SF-LABEL: uitofpR_float_3:319; CHECK-SF:       # %bb.0: # %entry320; CHECK-SF-NEXT:    andi32 a0, a0, 1321; CHECK-SF-NEXT:    fmtvrl vr0, a0322; CHECK-SF-NEXT:    fuitos vr0, vr0323; CHECK-SF-NEXT:    rts16324;325; CHECK-SF2-LABEL: uitofpR_float_3:326; CHECK-SF2:       # %bb.0: # %entry327; CHECK-SF2-NEXT:    andi32 a0, a0, 1328; CHECK-SF2-NEXT:    fmtvr.32.1 vr0, a0329; CHECK-SF2-NEXT:    fitof.u32.f32 vr0, vr0330; CHECK-SF2-NEXT:    rts16331entry:332  %uitofp = uitofp i1 %x to float333  ret float %uitofp334}335