brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.3 KiB · f105966 Raw
313 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s3 4declare i16 @llvm.convert.to.fp16.f32(float %a)5declare i16 @llvm.convert.to.fp16.f64(double %a)6 7declare float @llvm.convert.from.fp16.f32(i16 %a)8declare double @llvm.convert.from.fp16.f64(i16 %a)9 10define float @func_i16fp32(ptr %a) {11; CHECK-LABEL: func_i16fp32:12; CHECK:       # %bb.0:13; CHECK-NEXT:    st %s9, (, %s11)14; CHECK-NEXT:    st %s10, 8(, %s11)15; CHECK-NEXT:    or %s9, 0, %s1116; CHECK-NEXT:    lea %s11, -240(, %s11)17; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB0_218; CHECK-NEXT:  # %bb.1:19; CHECK-NEXT:    ld %s61, 24(, %s14)20; CHECK-NEXT:    or %s62, 0, %s021; CHECK-NEXT:    lea %s63, 31522; CHECK-NEXT:    shm.l %s63, (%s61)23; CHECK-NEXT:    shm.l %s8, 8(%s61)24; CHECK-NEXT:    shm.l %s11, 16(%s61)25; CHECK-NEXT:    monc26; CHECK-NEXT:    or %s0, 0, %s6227; CHECK-NEXT:  .LBB0_2:28; CHECK-NEXT:    ld2b.zx %s0, (, %s0)29; CHECK-NEXT:    lea %s1, __extendhfsf2@lo30; CHECK-NEXT:    and %s1, %s1, (32)031; CHECK-NEXT:    lea.sl %s12, __extendhfsf2@hi(, %s1)32; CHECK-NEXT:    bsic %s10, (, %s12)33; CHECK-NEXT:    or %s11, 0, %s934; CHECK-NEXT:    ld %s10, 8(, %s11)35; CHECK-NEXT:    ld %s9, (, %s11)36; CHECK-NEXT:    b.l.t (, %s10)37  %a.val = load i16, ptr %a, align 438  %a.asd = call float @llvm.convert.from.fp16.f32(i16 %a.val)39  ret float %a.asd40}41 42define double @func_i16fp64(ptr %a) {43; CHECK-LABEL: func_i16fp64:44; CHECK:       # %bb.0:45; CHECK-NEXT:    st %s9, (, %s11)46; CHECK-NEXT:    st %s10, 8(, %s11)47; CHECK-NEXT:    or %s9, 0, %s1148; CHECK-NEXT:    lea %s11, -240(, %s11)49; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB1_250; CHECK-NEXT:  # %bb.1:51; CHECK-NEXT:    ld %s61, 24(, %s14)52; CHECK-NEXT:    or %s62, 0, %s053; CHECK-NEXT:    lea %s63, 31554; CHECK-NEXT:    shm.l %s63, (%s61)55; CHECK-NEXT:    shm.l %s8, 8(%s61)56; CHECK-NEXT:    shm.l %s11, 16(%s61)57; CHECK-NEXT:    monc58; CHECK-NEXT:    or %s0, 0, %s6259; CHECK-NEXT:  .LBB1_2:60; CHECK-NEXT:    ld2b.zx %s0, (, %s0)61; CHECK-NEXT:    lea %s1, __extendhfsf2@lo62; CHECK-NEXT:    and %s1, %s1, (32)063; CHECK-NEXT:    lea.sl %s12, __extendhfsf2@hi(, %s1)64; CHECK-NEXT:    bsic %s10, (, %s12)65; CHECK-NEXT:    cvt.d.s %s0, %s066; CHECK-NEXT:    or %s11, 0, %s967; CHECK-NEXT:    ld %s10, 8(, %s11)68; CHECK-NEXT:    ld %s9, (, %s11)69; CHECK-NEXT:    b.l.t (, %s10)70  %a.val = load i16, ptr %a, align 471  %a.asd = call double @llvm.convert.from.fp16.f64(i16 %a.val)72  ret double %a.asd73}74 75define float @func_fp16fp32(ptr %a) {76; CHECK-LABEL: func_fp16fp32:77; CHECK:       # %bb.0:78; CHECK-NEXT:    st %s9, (, %s11)79; CHECK-NEXT:    st %s10, 8(, %s11)80; CHECK-NEXT:    or %s9, 0, %s1181; CHECK-NEXT:    lea %s11, -240(, %s11)82; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB2_283; CHECK-NEXT:  # %bb.1:84; CHECK-NEXT:    ld %s61, 24(, %s14)85; CHECK-NEXT:    or %s62, 0, %s086; CHECK-NEXT:    lea %s63, 31587; CHECK-NEXT:    shm.l %s63, (%s61)88; CHECK-NEXT:    shm.l %s8, 8(%s61)89; CHECK-NEXT:    shm.l %s11, 16(%s61)90; CHECK-NEXT:    monc91; CHECK-NEXT:    or %s0, 0, %s6292; CHECK-NEXT:  .LBB2_2:93; CHECK-NEXT:    ld2b.zx %s0, (, %s0)94; CHECK-NEXT:    lea %s1, __extendhfsf2@lo95; CHECK-NEXT:    and %s1, %s1, (32)096; CHECK-NEXT:    lea.sl %s12, __extendhfsf2@hi(, %s1)97; CHECK-NEXT:    bsic %s10, (, %s12)98; CHECK-NEXT:    or %s11, 0, %s999; CHECK-NEXT:    ld %s10, 8(, %s11)100; CHECK-NEXT:    ld %s9, (, %s11)101; CHECK-NEXT:    b.l.t (, %s10)102  %a.val = load half, ptr %a, align 4103  %a.asd = fpext half %a.val to float104  ret float %a.asd105}106 107define double @func_fp16fp64(ptr %a) {108; CHECK-LABEL: func_fp16fp64:109; CHECK:       # %bb.0:110; CHECK-NEXT:    st %s9, (, %s11)111; CHECK-NEXT:    st %s10, 8(, %s11)112; CHECK-NEXT:    or %s9, 0, %s11113; CHECK-NEXT:    lea %s11, -240(, %s11)114; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB3_2115; CHECK-NEXT:  # %bb.1:116; CHECK-NEXT:    ld %s61, 24(, %s14)117; CHECK-NEXT:    or %s62, 0, %s0118; CHECK-NEXT:    lea %s63, 315119; CHECK-NEXT:    shm.l %s63, (%s61)120; CHECK-NEXT:    shm.l %s8, 8(%s61)121; CHECK-NEXT:    shm.l %s11, 16(%s61)122; CHECK-NEXT:    monc123; CHECK-NEXT:    or %s0, 0, %s62124; CHECK-NEXT:  .LBB3_2:125; CHECK-NEXT:    ld2b.zx %s0, (, %s0)126; CHECK-NEXT:    lea %s1, __extendhfsf2@lo127; CHECK-NEXT:    and %s1, %s1, (32)0128; CHECK-NEXT:    lea.sl %s12, __extendhfsf2@hi(, %s1)129; CHECK-NEXT:    bsic %s10, (, %s12)130; CHECK-NEXT:    cvt.d.s %s0, %s0131; CHECK-NEXT:    or %s11, 0, %s9132; CHECK-NEXT:    ld %s10, 8(, %s11)133; CHECK-NEXT:    ld %s9, (, %s11)134; CHECK-NEXT:    b.l.t (, %s10)135  %a.val = load half, ptr %a, align 4136  %a.asd = fpext half %a.val to double137  ret double %a.asd138}139 140define void @func_fp32i16(ptr %fl.ptr, float %val) {141; CHECK-LABEL: func_fp32i16:142; CHECK:       # %bb.0:143; CHECK-NEXT:    st %s9, (, %s11)144; CHECK-NEXT:    st %s10, 8(, %s11)145; CHECK-NEXT:    or %s9, 0, %s11146; CHECK-NEXT:    lea %s11, -240(, %s11)147; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB4_2148; CHECK-NEXT:  # %bb.1:149; CHECK-NEXT:    ld %s61, 24(, %s14)150; CHECK-NEXT:    or %s62, 0, %s0151; CHECK-NEXT:    lea %s63, 315152; CHECK-NEXT:    shm.l %s63, (%s61)153; CHECK-NEXT:    shm.l %s8, 8(%s61)154; CHECK-NEXT:    shm.l %s11, 16(%s61)155; CHECK-NEXT:    monc156; CHECK-NEXT:    or %s0, 0, %s62157; CHECK-NEXT:  .LBB4_2:158; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill159; CHECK-NEXT:    or %s18, 0, %s0160; CHECK-NEXT:    lea %s0, __truncsfhf2@lo161; CHECK-NEXT:    and %s0, %s0, (32)0162; CHECK-NEXT:    lea.sl %s12, __truncsfhf2@hi(, %s0)163; CHECK-NEXT:    or %s0, 0, %s1164; CHECK-NEXT:    bsic %s10, (, %s12)165; CHECK-NEXT:    st2b %s0, (, %s18)166; CHECK-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload167; CHECK-NEXT:    or %s11, 0, %s9168; CHECK-NEXT:    ld %s10, 8(, %s11)169; CHECK-NEXT:    ld %s9, (, %s11)170; CHECK-NEXT:    b.l.t (, %s10)171  %val.asf = call i16 @llvm.convert.to.fp16.f32(float %val)172  store i16 %val.asf, ptr %fl.ptr173  ret void174}175 176define half @func_fp32fp16(ptr %fl.ptr, float %a) {177; CHECK-LABEL: func_fp32fp16:178; CHECK:       # %bb.0:179; CHECK-NEXT:    st %s9, (, %s11)180; CHECK-NEXT:    st %s10, 8(, %s11)181; CHECK-NEXT:    or %s9, 0, %s11182; CHECK-NEXT:    lea %s11, -240(, %s11)183; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB5_2184; CHECK-NEXT:  # %bb.1:185; CHECK-NEXT:    ld %s61, 24(, %s14)186; CHECK-NEXT:    or %s62, 0, %s0187; CHECK-NEXT:    lea %s63, 315188; CHECK-NEXT:    shm.l %s63, (%s61)189; CHECK-NEXT:    shm.l %s8, 8(%s61)190; CHECK-NEXT:    shm.l %s11, 16(%s61)191; CHECK-NEXT:    monc192; CHECK-NEXT:    or %s0, 0, %s62193; CHECK-NEXT:  .LBB5_2:194; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill195; CHECK-NEXT:    st %s19, 296(, %s11) # 8-byte Folded Spill196; CHECK-NEXT:    or %s18, 0, %s0197; CHECK-NEXT:    lea %s0, __truncsfhf2@lo198; CHECK-NEXT:    and %s0, %s0, (32)0199; CHECK-NEXT:    lea.sl %s12, __truncsfhf2@hi(, %s0)200; CHECK-NEXT:    or %s0, 0, %s1201; CHECK-NEXT:    bsic %s10, (, %s12)202; CHECK-NEXT:    or %s19, 0, %s0203; CHECK-NEXT:    lea %s0, __extendhfsf2@lo204; CHECK-NEXT:    and %s0, %s0, (32)0205; CHECK-NEXT:    lea.sl %s12, __extendhfsf2@hi(, %s0)206; CHECK-NEXT:    or %s0, 0, %s19207; CHECK-NEXT:    bsic %s10, (, %s12)208; CHECK-NEXT:    st2b %s19, (, %s18)209; CHECK-NEXT:    ld %s19, 296(, %s11) # 8-byte Folded Reload210; CHECK-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload211; CHECK-NEXT:    or %s11, 0, %s9212; CHECK-NEXT:    ld %s10, 8(, %s11)213; CHECK-NEXT:    ld %s9, (, %s11)214; CHECK-NEXT:    b.l.t (, %s10)215  %a.asd = fptrunc float %a to half216  store half %a.asd, ptr %fl.ptr217  ret half %a.asd218}219 220define double @func_fp32fp64(ptr %a) {221; CHECK-LABEL: func_fp32fp64:222; CHECK:       # %bb.0:223; CHECK-NEXT:    ldu %s0, (, %s0)224; CHECK-NEXT:    cvt.d.s %s0, %s0225; CHECK-NEXT:    b.l.t (, %s10)226  %a.val = load float, ptr %a, align 4227  %a.asd = fpext float %a.val to double228  ret double %a.asd229}230 231define void @func_fp64i16(ptr %fl.ptr, double %val) {232; CHECK-LABEL: func_fp64i16:233; CHECK:       # %bb.0:234; CHECK-NEXT:    st %s9, (, %s11)235; CHECK-NEXT:    st %s10, 8(, %s11)236; CHECK-NEXT:    or %s9, 0, %s11237; CHECK-NEXT:    lea %s11, -240(, %s11)238; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB7_2239; CHECK-NEXT:  # %bb.1:240; CHECK-NEXT:    ld %s61, 24(, %s14)241; CHECK-NEXT:    or %s62, 0, %s0242; CHECK-NEXT:    lea %s63, 315243; CHECK-NEXT:    shm.l %s63, (%s61)244; CHECK-NEXT:    shm.l %s8, 8(%s61)245; CHECK-NEXT:    shm.l %s11, 16(%s61)246; CHECK-NEXT:    monc247; CHECK-NEXT:    or %s0, 0, %s62248; CHECK-NEXT:  .LBB7_2:249; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill250; CHECK-NEXT:    or %s18, 0, %s0251; CHECK-NEXT:    lea %s0, __truncdfhf2@lo252; CHECK-NEXT:    and %s0, %s0, (32)0253; CHECK-NEXT:    lea.sl %s12, __truncdfhf2@hi(, %s0)254; CHECK-NEXT:    or %s0, 0, %s1255; CHECK-NEXT:    bsic %s10, (, %s12)256; CHECK-NEXT:    st2b %s0, (, %s18)257; CHECK-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload258; CHECK-NEXT:    or %s11, 0, %s9259; CHECK-NEXT:    ld %s10, 8(, %s11)260; CHECK-NEXT:    ld %s9, (, %s11)261; CHECK-NEXT:    b.l.t (, %s10)262  %val.asf = call i16 @llvm.convert.to.fp16.f64(double %val)263  store i16 %val.asf, ptr %fl.ptr264  ret void265}266 267define void @func_fp64fp16(ptr %fl.ptr, double %val) {268; CHECK-LABEL: func_fp64fp16:269; CHECK:       # %bb.0:270; CHECK-NEXT:    st %s9, (, %s11)271; CHECK-NEXT:    st %s10, 8(, %s11)272; CHECK-NEXT:    or %s9, 0, %s11273; CHECK-NEXT:    lea %s11, -240(, %s11)274; CHECK-NEXT:    brge.l.t %s11, %s8, .LBB8_2275; CHECK-NEXT:  # %bb.1:276; CHECK-NEXT:    ld %s61, 24(, %s14)277; CHECK-NEXT:    or %s62, 0, %s0278; CHECK-NEXT:    lea %s63, 315279; CHECK-NEXT:    shm.l %s63, (%s61)280; CHECK-NEXT:    shm.l %s8, 8(%s61)281; CHECK-NEXT:    shm.l %s11, 16(%s61)282; CHECK-NEXT:    monc283; CHECK-NEXT:    or %s0, 0, %s62284; CHECK-NEXT:  .LBB8_2:285; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill286; CHECK-NEXT:    or %s18, 0, %s0287; CHECK-NEXT:    lea %s0, __truncdfhf2@lo288; CHECK-NEXT:    and %s0, %s0, (32)0289; CHECK-NEXT:    lea.sl %s12, __truncdfhf2@hi(, %s0)290; CHECK-NEXT:    or %s0, 0, %s1291; CHECK-NEXT:    bsic %s10, (, %s12)292; CHECK-NEXT:    st2b %s0, (, %s18)293; CHECK-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload294; CHECK-NEXT:    or %s11, 0, %s9295; CHECK-NEXT:    ld %s10, 8(, %s11)296; CHECK-NEXT:    ld %s9, (, %s11)297; CHECK-NEXT:    b.l.t (, %s10)298  %val.asf = fptrunc double %val to half299  store half %val.asf, ptr %fl.ptr300  ret void301}302 303define void @func_fp64fp32(ptr %fl.ptr, double %val) {304; CHECK-LABEL: func_fp64fp32:305; CHECK:       # %bb.0:306; CHECK-NEXT:    cvt.s.d %s1, %s1307; CHECK-NEXT:    stu %s1, (, %s0)308; CHECK-NEXT:    b.l.t (, %s10)309  %val.asf = fptrunc double %val to float310  store float %val.asf, ptr %fl.ptr311  ret void312}313