55 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -mattr=+d -verify-machineinstrs < %s | FileCheck %s3 4; Negative test5define void @single_fdiv(double %a0, double %a1, ptr %res) {6; CHECK-LABEL: single_fdiv:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: fdiv.d fa5, fa1, fa09; CHECK-NEXT: fsd fa5, 0(a0)10; CHECK-NEXT: ret11entry:12 %div = fdiv arcp double %a1, %a013 store double %div, ptr %res14 ret void15}16 17define void @two_fdivs(double %a0, double %a1, double %a2, ptr %res) {18; CHECK-LABEL: two_fdivs:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: li a1, 102321; CHECK-NEXT: slli a1, a1, 5222; CHECK-NEXT: fmv.d.x fa5, a123; CHECK-NEXT: fdiv.d fa5, fa5, fa024; CHECK-NEXT: fmul.d fa4, fa1, fa525; CHECK-NEXT: fmul.d fa5, fa2, fa526; CHECK-NEXT: fsd fa4, 0(a0)27; CHECK-NEXT: fsd fa5, 8(a0)28; CHECK-NEXT: ret29entry:30 %div = fdiv arcp double %a1, %a031 %div1 = fdiv arcp double %a2, %a032 store double %div, ptr %res33 %arrayidx2 = getelementptr inbounds double, ptr %res, i64 134 store double %div1, ptr %arrayidx235 ret void36}37 38; Negative test39define void @no_arcp(double %a0, double %a1, double %a2, ptr %res) {40; CHECK-LABEL: no_arcp:41; CHECK: # %bb.0: # %entry42; CHECK-NEXT: fdiv.d fa5, fa1, fa043; CHECK-NEXT: fdiv.d fa4, fa2, fa044; CHECK-NEXT: fsd fa5, 0(a0)45; CHECK-NEXT: fsd fa4, 8(a0)46; CHECK-NEXT: ret47entry:48 %div = fdiv arcp double %a1, %a049 %div1 = fdiv double %a2, %a050 store double %div, ptr %res51 %arrayidx2 = getelementptr inbounds double, ptr %res, i64 152 store double %div1, ptr %arrayidx253 ret void54}55