; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2 < %s 2>%t | FileCheck %s ; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t ; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it. ; WARN-NOT: warning ; ; MUL ; define @mul_lane_d( %a, %b) { ; CHECK-LABEL: mul_lane_d: ; CHECK: mul z0.d, z0.d, z1.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mul.lane.nxv2i64( %a, %b, i32 1) ret %out } define @mul_lane_s( %a, %b) { ; CHECK-LABEL: mul_lane_s: ; CHECK: mul z0.s, z0.s, z1.s[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mul.lane.nxv4i32( %a, %b, i32 1) ret %out } define @mul_lane_h( %a, %b) { ; CHECK-LABEL: mul_lane_h: ; CHECK: mul z0.h, z0.h, z1.h[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mul.lane.nxv8i16( %a, %b, i32 1) ret %out } ; ; MLA ; define @mla_lane_d( %a, %b, %c) { ; CHECK-LABEL: mla_lane_d: ; CHECK: mla z0.d, z1.d, z2.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mla.lane.nxv2i64( %a, %b, %c, i32 1) ret %out } define @mla_lane_s( %a, %b, %c) { ; CHECK-LABEL: mla_lane_s: ; CHECK: mla z0.s, z1.s, z2.s[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mla.lane.nxv4i32( %a, %b, %c, i32 1) ret %out } define @mla_lane_h( %a, %b, %c) { ; CHECK-LABEL: mla_lane_h: ; CHECK: mla z0.h, z1.h, z2.h[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mla.lane.nxv8i16( %a, %b, %c, i32 1) ret %out } ; ; MLS ; define @mls_lane_d( %a, %b, %c) { ; CHECK-LABEL: mls_lane_d: ; CHECK: mls z0.d, z1.d, z2.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mls.lane.nxv2i64( %a, %b, %c, i32 1) ret %out } define @mls_lane_s( %a, %b, %c) { ; CHECK-LABEL: mls_lane_s: ; CHECK: mls z0.s, z1.s, z2.s[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mls.lane.nxv4i32( %a, %b, %c, i32 1) ret %out } define @mls_lane_h( %a, %b, %c) { ; CHECK-LABEL: mls_lane_h: ; CHECK: mls z0.h, z1.h, z2.h[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.mls.lane.nxv8i16( %a, %b, %c, i32 1) ret %out } declare @llvm.aarch64.sve.mul.lane.nxv8i16(, , i32) declare @llvm.aarch64.sve.mul.lane.nxv4i32(, , i32) declare @llvm.aarch64.sve.mul.lane.nxv2i64(, , i32) declare @llvm.aarch64.sve.mla.lane.nxv8i16(, , , i32) declare @llvm.aarch64.sve.mla.lane.nxv4i32(, , , i32) declare @llvm.aarch64.sve.mla.lane.nxv2i64(, , , i32) declare @llvm.aarch64.sve.mls.lane.nxv8i16(, , , i32) declare @llvm.aarch64.sve.mls.lane.nxv4i32(, , , i32) declare @llvm.aarch64.sve.mls.lane.nxv2i64(, , , i32)