;; RUN: llc --mtriple=hexagon --mcpu=hexagonv81 --mattr=+hvxv81,+hvx-length128b %s -o - | FileCheck %s define void @mul_and_sub_1(ptr readonly %A, ptr readonly %B, ptr readonly %C, ptr writeonly %D) { entry: %AVec = load <32 x float>, ptr %A, align 4 %BVec = load <32 x float>, ptr %B, align 4 %CVec = load <32 x float>, ptr %C, align 4 %AtBVec = fmul <32 x float> %AVec, %BVec %DVec = fsub <32 x float> %CVec, %AtBVec store <32 x float> %DVec, ptr %D, align 4 ret void } ;; CHECK: mul_and_sub_1 ;; CHECK: vsub(v{{[0-9]+}}.sf,v{{[0-9]+}}.qf32) define void @mul_and_sub_2(ptr readonly %A, ptr readonly %B, ptr readonly %C, ptr writeonly %D) { entry: %AVec = load <32 x float>, ptr %A, align 4 %BVec = load <32 x float>, ptr %B, align 4 %CVec = load <32 x float>, ptr %C, align 4 %AtBVec = fmul <32 x float> %AVec, %BVec %DVec = fsub <32 x float> %AtBVec, %CVec store <32 x float> %DVec, ptr %D, align 4 ret void } ;; CHECK: mul_and_sub_2 ;; CHECK: vsub(v{{[0-9]+}}.qf32,v{{[0-9]+}}.sf) define void @mul_and_sub_3(ptr readonly %A, ptr readonly %B, ptr readonly %C, ptr writeonly %D) { entry: %AVec = load <64 x half>, ptr %A, align 4 %BVec = load <64 x half>, ptr %B, align 4 %CVec = load <64 x half>, ptr %C, align 4 %AtBVec = fmul <64 x half> %AVec, %BVec %DVec = fsub <64 x half> %CVec, %AtBVec store <64 x half> %DVec, ptr %D, align 4 ret void } ;; CHECK: mul_and_sub_3 ;; CHECK: vsub(v{{[0-9]+}}.hf,v{{[0-9]+}}.qf16) define void @mul_and_sub_4(ptr readonly %A, ptr readonly %B, ptr readonly %C, ptr writeonly %D) { entry: %AVec = load <64 x half>, ptr %A, align 4 %BVec = load <64 x half>, ptr %B, align 4 %CVec = load <64 x half>, ptr %C, align 4 %AtBVec = fmul <64 x half> %AVec, %BVec %DVec = fsub <64 x half> %AtBVec, %CVec store <64 x half> %DVec, ptr %D, align 4 ret void } ;; CHECK: mul_and_sub_4 ;; CHECK: vsub(v{{[0-9]+}}.qf16,v{{[0-9]+}}.hf)