84 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 6define float @load_I_w(ptr nocapture readonly %a) local_unnamed_addr #0 {7;8; CHECK-SF-LABEL: load_I_w:9; CHECK-SF: # %bb.0: # %entry10; CHECK-SF-NEXT: flds vr0, (a0, 12)11; CHECK-SF-NEXT: rts1612;13; CHECK-SF2-LABEL: load_I_w:14; CHECK-SF2: # %bb.0: # %entry15; CHECK-SF2-NEXT: fld.32 vr0, (a0, 12)16; CHECK-SF2-NEXT: rts1617entry:18 %arrayidx = getelementptr inbounds float, ptr %a, i64 319 %0 = load float, ptr %arrayidx, align 420 ret float %021}22 23define float @load_R_w(ptr nocapture readonly %a, i32 %b) local_unnamed_addr #0 {24;25; CHECK-SF-LABEL: load_R_w:26; CHECK-SF: # %bb.0: # %entry27; CHECK-SF-NEXT: fldrs vr0, (a0, a1 << 2)28; CHECK-SF-NEXT: rts1629;30; CHECK-SF2-LABEL: load_R_w:31; CHECK-SF2: # %bb.0: # %entry32; CHECK-SF2-NEXT: fldr.32 vr0, (a0, a1 << 2)33; CHECK-SF2-NEXT: rts1634entry:35 %idxprom = sext i32 %b to i6436 %arrayidx = getelementptr inbounds float, ptr %a, i64 %idxprom37 %0 = load float, ptr %arrayidx, align 438 ret float %039}40 41 42define float @store_I_w(ptr %a, float %b) local_unnamed_addr #0 {43;44; CHECK-SF-LABEL: store_I_w:45; CHECK-SF: # %bb.0: # %entry46; CHECK-SF-NEXT: fsts vr0, (a0, 12)47; CHECK-SF-NEXT: movi16 a0, 048; CHECK-SF-NEXT: fmtvrl vr0, a049; CHECK-SF-NEXT: rts1650;51; CHECK-SF2-LABEL: store_I_w:52; CHECK-SF2: # %bb.0: # %entry53; CHECK-SF2-NEXT: fst.32 vr0, (a0, 12)54; CHECK-SF2-NEXT: movi16 a0, 055; CHECK-SF2-NEXT: fmtvr.32.1 vr0, a056; CHECK-SF2-NEXT: rts1657entry:58 %arrayidx = getelementptr inbounds float, ptr %a, i64 359 store float %b, ptr %arrayidx, align 460 ret float 0.061}62 63define float @store_R_w(ptr %a, i32 %b, float %c) local_unnamed_addr #0 {64;65; CHECK-SF-LABEL: store_R_w:66; CHECK-SF: # %bb.0: # %entry67; CHECK-SF-NEXT: fstrs vr0, (a0, a1 << 2)68; CHECK-SF-NEXT: movi16 a0, 069; CHECK-SF-NEXT: fmtvrl vr0, a070; CHECK-SF-NEXT: rts1671;72; CHECK-SF2-LABEL: store_R_w:73; CHECK-SF2: # %bb.0: # %entry74; CHECK-SF2-NEXT: fstr.32 vr0, (a0, a1 << 2)75; CHECK-SF2-NEXT: movi16 a0, 076; CHECK-SF2-NEXT: fmtvr.32.1 vr0, a077; CHECK-SF2-NEXT: rts1678entry:79 %idxprom = sext i32 %b to i6480 %arrayidx = getelementptr inbounds float, ptr %a, i64 %idxprom81 store float %c, ptr %arrayidx, align 482 ret float 0.083}84