71 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=aarch64-none-linux-gnu -mattr=+v8.2a,+fullfp16 -fp-contract=fast -verify-machineinstrs -global-isel=0 | FileCheck %s3;RUN: llc < %s -mtriple=aarch64-none-linux-gnu -mattr=+v8.2a,+fullfp16 -verify-machineinstrs -global-isel=0 | FileCheck %s4 5 6define half @fnmul16(half noundef %x, half noundef %y) {7; CHECK-LABEL: fnmul16:8; CHECK: // %bb.0: // %entry9; CHECK-NEXT: fnmul h0, h0, h110; CHECK-NEXT: ret11entry:12 %fneg = fneg fast half %x13 %mul = fmul fast half %fneg, %y14 ret half %mul15}16 17define float @fnmul32(float noundef %x, float noundef %y) {18; CHECK-LABEL: fnmul32:19; CHECK: // %bb.0: // %entry20; CHECK-NEXT: fnmul s0, s0, s121; CHECK-NEXT: ret22entry:23 %fneg = fneg float %x24 %mul = fmul float %fneg, %y25 ret float %mul26}27 28define double @fnmul64(double noundef %x, double noundef %y) {29; CHECK-LABEL: fnmul64:30; CHECK: // %bb.0: // %entry31; CHECK-NEXT: fnmul d0, d0, d132; CHECK-NEXT: ret33entry:34 %fneg = fneg fast double %x35 %mul = fmul fast double %fneg, %y36 ret double %mul37}38 39define half @fnmul16_2(half noundef %x, half noundef %y) {40; CHECK-LABEL: fnmul16_2:41; CHECK: // %bb.0: // %entry42; CHECK-NEXT: fnmul h0, h1, h043; CHECK-NEXT: ret44entry:45 %fneg = fneg fast half %y46 %mul = fmul fast half %x, %fneg47 ret half %mul48}49 50define float @fnmul32_2(float noundef %x, float noundef %y) {51; CHECK-LABEL: fnmul32_2:52; CHECK: // %bb.0: // %entry53; CHECK-NEXT: fnmul s0, s1, s054; CHECK-NEXT: ret55entry:56 %fneg = fneg fast float %y57 %mul = fmul fast float %x, %fneg58 ret float %mul59}60 61define double @fnmul64_2(double noundef %x, double noundef %y) {62; CHECK-LABEL: fnmul64_2:63; CHECK: // %bb.0: // %entry64; CHECK-NEXT: fnmul d0, d1, d065; CHECK-NEXT: ret66entry:67 %fneg = fneg double %y68 %mul = fmul double %x, %fneg69 ret double %mul70}71