brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · ec51488 Raw
86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve %s -o - | FileCheck %s3 4 5; Ensure that the inactive lanes of p1 aren't zeroed, since the FP compare should do that for free.6 7define i32 @fcmpeq_nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {8; CHECK-LABEL: fcmpeq_nxv4f32:9; CHECK:       // %bb.0:10; CHECK-NEXT:    fcmeq p1.s, p0/z, z0.s, z1.s11; CHECK-NEXT:    ptest p0, p1.b12; CHECK-NEXT:    cset w0, ne13; CHECK-NEXT:    ret14  %1 = tail call <vscale x 4 x i1> @llvm.aarch64.sve.fcmpeq.nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b)15  %2 = tail call i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1> %pg, <vscale x 4 x i1> %1)16  %conv = zext i1 %2 to i3217  ret i32 %conv18}19 20define i32 @fcmpne_nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {21; CHECK-LABEL: fcmpne_nxv4f32:22; CHECK:       // %bb.0:23; CHECK-NEXT:    fcmne p1.s, p0/z, z0.s, z1.s24; CHECK-NEXT:    ptest p0, p1.b25; CHECK-NEXT:    cset w0, ne26; CHECK-NEXT:    ret27  %1 = tail call <vscale x 4 x i1> @llvm.aarch64.sve.fcmpne.nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b)28  %2 = tail call i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1> %pg, <vscale x 4 x i1> %1)29  %conv = zext i1 %2 to i3230  ret i32 %conv31}32 33define i32 @fcmpge_nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {34; CHECK-LABEL: fcmpge_nxv4f32:35; CHECK:       // %bb.0:36; CHECK-NEXT:    fcmge p1.s, p0/z, z0.s, z1.s37; CHECK-NEXT:    ptest p0, p1.b38; CHECK-NEXT:    cset w0, ne39; CHECK-NEXT:    ret40  %1 = tail call <vscale x 4 x i1> @llvm.aarch64.sve.fcmpge.nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b)41  %2 = tail call i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1> %pg, <vscale x 4 x i1> %1)42  %conv = zext i1 %2 to i3243  ret i32 %conv44}45 46define i32 @fcmpgt_nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {47; CHECK-LABEL: fcmpgt_nxv4f32:48; CHECK:       // %bb.0:49; CHECK-NEXT:    fcmgt p1.s, p0/z, z0.s, z1.s50; CHECK-NEXT:    ptest p0, p1.b51; CHECK-NEXT:    cset w0, ne52; CHECK-NEXT:    ret53  %1 = tail call <vscale x 4 x i1> @llvm.aarch64.sve.fcmpgt.nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b)54  %2 = tail call i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1> %pg, <vscale x 4 x i1> %1)55  %conv = zext i1 %2 to i3256  ret i32 %conv57}58 59define i32 @fcmpuo_nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {60; CHECK-LABEL: fcmpuo_nxv4f32:61; CHECK:       // %bb.0:62; CHECK-NEXT:    fcmuo p1.s, p0/z, z0.s, z1.s63; CHECK-NEXT:    ptest p0, p1.b64; CHECK-NEXT:    cset w0, ne65; CHECK-NEXT:    ret66  %1 = tail call <vscale x 4 x i1> @llvm.aarch64.sve.fcmpuo.nxv4f32(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b)67  %2 = tail call i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1> %pg, <vscale x 4 x i1> %1)68  %conv = zext i1 %2 to i3269  ret i32 %conv70}71 72declare <vscale x 4 x i1> @llvm.aarch64.sve.fcmpeq.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)73declare <vscale x 4 x i1> @llvm.aarch64.sve.fcmpne.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)74declare <vscale x 4 x i1> @llvm.aarch64.sve.fcmpge.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)75declare <vscale x 4 x i1> @llvm.aarch64.sve.fcmpgt.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)76declare <vscale x 4 x i1> @llvm.aarch64.sve.fcmpuo.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)77 78declare <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32)79 80declare i1 @llvm.aarch64.sve.ptest.any.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>)81 82declare <vscale x 4 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1>)83declare <vscale x 4 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1>)84declare <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 4 x i1>)85declare <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 4 x i1>)86