107 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 -mattr=+fpuv2_df | FileCheck %s --check-prefix=CHECK-DF4; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv3_sf -mattr=+fpuv3_df | FileCheck %s --check-prefix=CHECK-DF25 6define double @load_I_d(ptr nocapture readonly %a) local_unnamed_addr #0 {7;8;9; CHECK-DF-LABEL: load_I_d:10; CHECK-DF: # %bb.0: # %entry11; CHECK-DF-NEXT: fldd vr0, (a0, 24)12; CHECK-DF-NEXT: rts1613;14; CHECK-DF2-LABEL: load_I_d:15; CHECK-DF2: # %bb.0: # %entry16; CHECK-DF2-NEXT: fld.64 vr0, (a0, 24)17; CHECK-DF2-NEXT: rts1618entry:19 %arrayidx = getelementptr inbounds double, ptr %a, i64 320 %0 = load double, ptr %arrayidx, align 421 ret double %022}23 24 25 26define double @load_R_d(ptr nocapture readonly %a, i32 %b) local_unnamed_addr #0 {27;28;29; CHECK-DF-LABEL: load_R_d:30; CHECK-DF: # %bb.0: # %entry31; CHECK-DF-NEXT: fldrd vr0, (a0, a1 << 3)32; CHECK-DF-NEXT: rts1633;34; CHECK-DF2-LABEL: load_R_d:35; CHECK-DF2: # %bb.0: # %entry36; CHECK-DF2-NEXT: fldr.64 vr0, (a0, a1 << 3)37; CHECK-DF2-NEXT: rts1638entry:39 %idxprom = sext i32 %b to i6440 %arrayidx = getelementptr inbounds double, ptr %a, i64 %idxprom41 %0 = load double, ptr %arrayidx, align 442 ret double %043}44 45define double @store_I_d(ptr %a, double %b) local_unnamed_addr #0 {46;47;48; CHECK-DF-LABEL: store_I_d:49; CHECK-DF: # %bb.0: # %entry50; CHECK-DF-NEXT: fstd vr0, (a0, 24)51; CHECK-DF-NEXT: grs32 a0, .LCPI2_052; CHECK-DF-NEXT: fldd vr0, (a0, 0)53; CHECK-DF-NEXT: rts1654; CHECK-DF-NEXT: .p2align 155; CHECK-DF-NEXT: # %bb.1:56; CHECK-DF-NEXT: .p2align 257; CHECK-DF-NEXT: .LCPI2_0:58; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 059;60; CHECK-DF2-LABEL: store_I_d:61; CHECK-DF2: # %bb.0: # %entry62; CHECK-DF2-NEXT: fst.64 vr0, (a0, 24)63; CHECK-DF2-NEXT: flrw.64 vr0, [.LCPI2_0]64; CHECK-DF2-NEXT: rts1665; CHECK-DF2-NEXT: .p2align 166; CHECK-DF2-NEXT: # %bb.1:67; CHECK-DF2-NEXT: .p2align 268; CHECK-DF2-NEXT: .LCPI2_0:69; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 070entry:71 %arrayidx = getelementptr inbounds double, ptr %a, i64 372 store double %b, ptr %arrayidx, align 473 ret double 0.074}75 76define double @store_R_d(ptr %a, i32 %b, double %c) local_unnamed_addr #0 {77;78;79; CHECK-DF-LABEL: store_R_d:80; CHECK-DF: # %bb.0: # %entry81; CHECK-DF-NEXT: fstrd vr0, (a0, a1 << 3)82; CHECK-DF-NEXT: grs32 a0, .LCPI3_083; CHECK-DF-NEXT: fldd vr0, (a0, 0)84; CHECK-DF-NEXT: rts1685; CHECK-DF-NEXT: .p2align 186; CHECK-DF-NEXT: # %bb.1:87; CHECK-DF-NEXT: .p2align 288; CHECK-DF-NEXT: .LCPI3_0:89; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 090;91; CHECK-DF2-LABEL: store_R_d:92; CHECK-DF2: # %bb.0: # %entry93; CHECK-DF2-NEXT: fstr.64 vr0, (a0, a1 << 3)94; CHECK-DF2-NEXT: flrw.64 vr0, [.LCPI3_0]95; CHECK-DF2-NEXT: rts1696; CHECK-DF2-NEXT: .p2align 197; CHECK-DF2-NEXT: # %bb.1:98; CHECK-DF2-NEXT: .p2align 299; CHECK-DF2-NEXT: .LCPI3_0:100; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0101entry:102 %idxprom = sext i32 %b to i64103 %arrayidx = getelementptr inbounds double, ptr %a, i64 %idxprom104 store double %c, ptr %arrayidx, align 4105 ret double 0.0106}107