brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 9b25680 Raw
268 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 @FADD_DOUBLE(double %x, double %y) {7; CHECK-DF-LABEL: FADD_DOUBLE:8; CHECK-DF:       # %bb.0: # %entry9; CHECK-DF-NEXT:    faddd vr0, vr1, vr010; CHECK-DF-NEXT:    rts1611;12; CHECK-DF2-LABEL: FADD_DOUBLE:13; CHECK-DF2:       # %bb.0: # %entry14; CHECK-DF2-NEXT:    fadd.64 vr0, vr1, vr015; CHECK-DF2-NEXT:    rts1616entry:17  %fadd = fadd  double %y, %x18  ret double %fadd19}20 21define double @FADD_DOUBLE_I(double %x) {22; CHECK-DF-LABEL: FADD_DOUBLE_I:23; CHECK-DF:       # %bb.0: # %entry24; CHECK-DF-NEXT:    grs32 a0, .LCPI1_025; CHECK-DF-NEXT:    fldd vr1, (a0, 0)26; CHECK-DF-NEXT:    faddd vr0, vr0, vr127; CHECK-DF-NEXT:    rts1628; CHECK-DF-NEXT:    .p2align 129; CHECK-DF-NEXT:  # %bb.1:30; CHECK-DF-NEXT:    .p2align 2, 0x031; CHECK-DF-NEXT:  .LCPI1_0:32; CHECK-DF-NEXT:    .quad 0xbff0000000000000 # double -133;34; CHECK-DF2-LABEL: FADD_DOUBLE_I:35; CHECK-DF2:       # %bb.0: # %entry36; CHECK-DF2-NEXT:    flrw.64 vr1, [.LCPI1_0]37; CHECK-DF2-NEXT:    fadd.64 vr0, vr0, vr138; CHECK-DF2-NEXT:    rts1639; CHECK-DF2-NEXT:    .p2align 140; CHECK-DF2-NEXT:  # %bb.1:41; CHECK-DF2-NEXT:    .p2align 2, 0x042; CHECK-DF2-NEXT:  .LCPI1_0:43; CHECK-DF2-NEXT:    .quad 0xbff0000000000000 # double -144entry:45  %fadd = fadd  double %x, -1.046  ret double %fadd47}48 49define double @FSUB_DOUBLE(double %x, double %y) {50; CHECK-DF-LABEL: FSUB_DOUBLE:51; CHECK-DF:       # %bb.0: # %entry52; CHECK-DF-NEXT:    fsubd vr0, vr1, vr053; CHECK-DF-NEXT:    rts1654;55; CHECK-DF2-LABEL: FSUB_DOUBLE:56; CHECK-DF2:       # %bb.0: # %entry57; CHECK-DF2-NEXT:    fsub.64 vr0, vr1, vr058; CHECK-DF2-NEXT:    rts1659 60entry:61  %fsub = fsub  double %y, %x62  ret double %fsub63}64 65define double @FSUB_DOUBLE_I(double %x) {66;67; CHECK-DF-LABEL: FSUB_DOUBLE_I:68; CHECK-DF:       # %bb.0: # %entry69; CHECK-DF-NEXT:    grs32 a0, .LCPI3_070; CHECK-DF-NEXT:    fldd vr1, (a0, 0)71; CHECK-DF-NEXT:    faddd vr0, vr0, vr172; CHECK-DF-NEXT:    rts1673; CHECK-DF-NEXT:    .p2align 174; CHECK-DF-NEXT:  # %bb.1:75; CHECK-DF-NEXT:    .p2align 2, 0x076; CHECK-DF-NEXT:  .LCPI3_0:77; CHECK-DF-NEXT:    .quad 0x3ff0000000000000 # double 178;79; CHECK-DF2-LABEL: FSUB_DOUBLE_I:80; CHECK-DF2:       # %bb.0: # %entry81; CHECK-DF2-NEXT:    flrw.64 vr1, [.LCPI3_0]82; CHECK-DF2-NEXT:    fadd.64 vr0, vr0, vr183; CHECK-DF2-NEXT:    rts1684; CHECK-DF2-NEXT:    .p2align 185; CHECK-DF2-NEXT:  # %bb.1:86; CHECK-DF2-NEXT:    .p2align 2, 0x087; CHECK-DF2-NEXT:  .LCPI3_0:88; CHECK-DF2-NEXT:    .quad 0x3ff0000000000000 # double 189 90entry:91  %fsub = fsub  double %x, -1.092  ret double %fsub93}94 95define double @FMUL_DOUBLE(double %x, double %y) {96;97; CHECK-DF-LABEL: FMUL_DOUBLE:98; CHECK-DF:       # %bb.0: # %entry99; CHECK-DF-NEXT:    fmuld vr0, vr1, vr0100; CHECK-DF-NEXT:    rts16101;102; CHECK-DF2-LABEL: FMUL_DOUBLE:103; CHECK-DF2:       # %bb.0: # %entry104; CHECK-DF2-NEXT:    fmul.64 vr0, vr1, vr0105; CHECK-DF2-NEXT:    rts16106entry:107  %fmul = fmul  double %y, %x108  ret double %fmul109}110 111define double @FNMUL_DOUBLE_a(double %x, double %y) {112;113; CHECK-DF-LABEL: FNMUL_DOUBLE_a:114; CHECK-DF:       # %bb.0: # %entry115; CHECK-DF-NEXT:    fnmuld vr0, vr1, vr0116; CHECK-DF-NEXT:    rts16117;118; CHECK-DF2-LABEL: FNMUL_DOUBLE_a:119; CHECK-DF2:       # %bb.0: # %entry120; CHECK-DF2-NEXT:    fnmul.64 vr0, vr1, vr0121; CHECK-DF2-NEXT:    rts16122entry:123  %z = fneg double %y124  %fnmul = fmul double %z, %x125  ret double %fnmul126}127 128define double @FNMUL_DOUBLE_b(double %x, double %y) {129; CHECK-DF-LABEL: FNMUL_DOUBLE_b:130; CHECK-DF:       # %bb.0: # %entry131; CHECK-DF-NEXT:    fnmuld vr0, vr0, vr1132; CHECK-DF-NEXT:    rts16133;134; CHECK-DF2-LABEL: FNMUL_DOUBLE_b:135; CHECK-DF2:       # %bb.0: # %entry136; CHECK-DF2-NEXT:    fnmul.64 vr0, vr0, vr1137; CHECK-DF2-NEXT:    rts16138entry:139  %z = fneg double %x140  %fnmul = fmul double %y, %z141  ret double %fnmul142}143 144define double @FMUL_DOUBLE_I(double %x) {145;146; CHECK-DF-LABEL: FMUL_DOUBLE_I:147; CHECK-DF:       # %bb.0: # %entry148; CHECK-DF-NEXT:    grs32 a0, .LCPI7_0149; CHECK-DF-NEXT:    fldd vr1, (a0, 0)150; CHECK-DF-NEXT:    fmuld vr0, vr0, vr1151; CHECK-DF-NEXT:    rts16152; CHECK-DF-NEXT:    .p2align 1153; CHECK-DF-NEXT:  # %bb.1:154; CHECK-DF-NEXT:    .p2align 2, 0x0155; CHECK-DF-NEXT:  .LCPI7_0:156; CHECK-DF-NEXT:    .quad 0xc01c000000000000 # double -7157;158; CHECK-DF2-LABEL: FMUL_DOUBLE_I:159; CHECK-DF2:       # %bb.0: # %entry160; CHECK-DF2-NEXT:    flrw.64 vr1, [.LCPI7_0]161; CHECK-DF2-NEXT:    fmul.64 vr0, vr0, vr1162; CHECK-DF2-NEXT:    rts16163; CHECK-DF2-NEXT:    .p2align 1164; CHECK-DF2-NEXT:  # %bb.1:165; CHECK-DF2-NEXT:    .p2align 2, 0x0166; CHECK-DF2-NEXT:  .LCPI7_0:167; CHECK-DF2-NEXT:    .quad 0xc01c000000000000 # double -7168entry:169  %fmul = fmul  double %x, -7.0170  ret double %fmul171}172 173define double @FDIV_DOUBLE(double %x, double %y) {174;175;176; CHECK-DF-LABEL: FDIV_DOUBLE:177; CHECK-DF:       # %bb.0: # %entry178; CHECK-DF-NEXT:    fdivd vr0, vr1, vr0179; CHECK-DF-NEXT:    rts16180;181; CHECK-DF2-LABEL: FDIV_DOUBLE:182; CHECK-DF2:       # %bb.0: # %entry183; CHECK-DF2-NEXT:    fdiv.64 vr0, vr1, vr0184; CHECK-DF2-NEXT:    rts16185 186entry:187  %fdiv = fdiv  double %y, %x188  ret double %fdiv189}190 191define double @FDIV_DOUBLE_I(double %x) {192;193; CHECK-DF-LABEL: FDIV_DOUBLE_I:194; CHECK-DF:       # %bb.0: # %entry195; CHECK-DF-NEXT:    grs32 a0, .LCPI9_0196; CHECK-DF-NEXT:    fldd vr1, (a0, 0)197; CHECK-DF-NEXT:    fdivd vr0, vr0, vr1198; CHECK-DF-NEXT:    rts16199; CHECK-DF-NEXT:    .p2align 1200; CHECK-DF-NEXT:  # %bb.1:201; CHECK-DF-NEXT:    .p2align 2, 0x0202; CHECK-DF-NEXT:  .LCPI9_0:203; CHECK-DF-NEXT:    .quad 0xc01c000000000000 # double -7204;205; CHECK-DF2-LABEL: FDIV_DOUBLE_I:206; CHECK-DF2:       # %bb.0: # %entry207; CHECK-DF2-NEXT:    flrw.64 vr1, [.LCPI9_0]208; CHECK-DF2-NEXT:    fdiv.64 vr0, vr0, vr1209; CHECK-DF2-NEXT:    rts16210; CHECK-DF2-NEXT:    .p2align 1211; CHECK-DF2-NEXT:  # %bb.1:212; CHECK-DF2-NEXT:    .p2align 2, 0x0213; CHECK-DF2-NEXT:  .LCPI9_0:214; CHECK-DF2-NEXT:    .quad 0xc01c000000000000 # double -7215entry:216  %fdiv = fdiv  double %x, -7.0217  ret double %fdiv218}219 220define double @FNEG_DOUBLE(double %x) {221;222; CHECK-DF-LABEL: FNEG_DOUBLE:223; CHECK-DF:       # %bb.0: # %entry224; CHECK-DF-NEXT:    fnegd vr0, vr0225; CHECK-DF-NEXT:    rts16226;227; CHECK-DF2-LABEL: FNEG_DOUBLE:228; CHECK-DF2:       # %bb.0: # %entry229; CHECK-DF2-NEXT:    fneg.64 vr0, vr0230; CHECK-DF2-NEXT:    rts16231entry:232  %fneg = fneg  double  %x233  ret double %fneg234}235 236; double --> float237define float @fptruncR_double_0(double %x) {238;239; CHECK-DF-LABEL: fptruncR_double_0:240; CHECK-DF:       # %bb.0: # %entry241; CHECK-DF-NEXT:    fdtos vr0, vr0242; CHECK-DF-NEXT:    rts16243;244; CHECK-DF2-LABEL: fptruncR_double_0:245; CHECK-DF2:       # %bb.0: # %entry246; CHECK-DF2-NEXT:    fdtos vr0, vr0247; CHECK-DF2-NEXT:    rts16248entry:249  %fptrunc = fptrunc double %x to float250  ret float %fptrunc251}252 253define double @fpextR_double_0(float %x) {254;255; CHECK-DF-LABEL: fpextR_double_0:256; CHECK-DF:       # %bb.0: # %entry257; CHECK-DF-NEXT:    fstod vr0, vr0258; CHECK-DF-NEXT:    rts16259;260; CHECK-DF2-LABEL: fpextR_double_0:261; CHECK-DF2:       # %bb.0: # %entry262; CHECK-DF2-NEXT:    fstod vr0, vr0263; CHECK-DF2-NEXT:    rts16264entry:265  %fpext = fpext float %x to double266  ret double %fpext267}268