1; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s 2>%t | FileCheck %s 2; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t 3 4; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it. 5; WARN-NOT: warning 6 7; 8; RDFFR 9; 10 11define <vscale x 16 x i1> @rdffr() { 12; CHECK-LABEL: rdffr: 13; CHECK: rdffr p0.b 14; CHECK-NEXT: ret 15 %out = call <vscale x 16 x i1> @llvm.aarch64.sve.rdffr() 16 ret <vscale x 16 x i1> %out 17} 18 19define <vscale x 16 x i1> @rdffr_z(<vscale x 16 x i1> %pg) { 20; CHECK-LABEL: rdffr_z: 21; CHECK: rdffr p0.b, p0/z 22; CHECK-NEXT: ret 23 %out = call <vscale x 16 x i1> @llvm.aarch64.sve.rdffr.z(<vscale x 16 x i1> %pg) 24 ret <vscale x 16 x i1> %out 25} 26 27; 28; SETFFR 29; 30 31define void @set_ffr() { 32; CHECK-LABEL: set_ffr: 33; CHECK: setffr 34; CHECK-NEXT: ret 35 call void @llvm.aarch64.sve.setffr() 36 ret void 37} 38 39; 40; WRFFR 41; 42 43define void @wrffr(<vscale x 16 x i1> %a) { 44; CHECK-LABEL: wrffr: 45; CHECK: wrffr p0.b 46; CHECK-NEXT: ret 47 call void @llvm.aarch64.sve.wrffr(<vscale x 16 x i1> %a) 48 ret void 49} 50 51declare <vscale x 16 x i1> @llvm.aarch64.sve.rdffr() 52declare <vscale x 16 x i1> @llvm.aarch64.sve.rdffr.z(<vscale x 16 x i1>) 53declare void @llvm.aarch64.sve.setffr() 54declare void @llvm.aarch64.sve.wrffr(<vscale x 16 x i1>) 55