brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.2 KiB · 8185132 Raw
342 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -verify-machineinstrs -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zvfh,+zvfbfmin < %s | FileCheck %s3; RUN: llc -verify-machineinstrs -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zvfh,+zvfbfmin < %s | FileCheck %s4; RUN: llc -verify-machineinstrs -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zvfhmin,+zvfbfmin < %s | FileCheck %s5; RUN: llc -verify-machineinstrs -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zvfhmin,+zvfbfmin < %s | FileCheck %s6 7define <1 x bfloat> @vector_compress_v1bf16(<1 x bfloat> %v, <1 x i1> %mask) {8; CHECK-LABEL: vector_compress_v1bf16:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma11; CHECK-NEXT:    vcompress.vm v9, v8, v012; CHECK-NEXT:    vmv1r.v v8, v913; CHECK-NEXT:    ret14  %ret = call <1 x bfloat> @llvm.experimental.vector.compress.v1bf16(<1 x bfloat> %v, <1 x i1> %mask, <1 x bfloat> poison)15  ret <1 x bfloat> %ret16}17 18define <1 x bfloat> @vector_compress_v1bf16_passthru(<1 x bfloat> %passthru, <1 x bfloat> %v, <1 x i1> %mask) {19; CHECK-LABEL: vector_compress_v1bf16_passthru:20; CHECK:       # %bb.0:21; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, tu, ma22; CHECK-NEXT:    vcompress.vm v8, v9, v023; CHECK-NEXT:    ret24  %ret = call <1 x bfloat> @llvm.experimental.vector.compress.v1bf16(<1 x bfloat> %v, <1 x i1> %mask, <1 x bfloat> %passthru)25  ret <1 x bfloat> %ret26}27 28define <2 x bfloat> @vector_compress_v2bf16(<2 x bfloat> %v, <2 x i1> %mask) {29; CHECK-LABEL: vector_compress_v2bf16:30; CHECK:       # %bb.0:31; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma32; CHECK-NEXT:    vcompress.vm v9, v8, v033; CHECK-NEXT:    vmv1r.v v8, v934; CHECK-NEXT:    ret35  %ret = call <2 x bfloat> @llvm.experimental.vector.compress.v2bf16(<2 x bfloat> %v, <2 x i1> %mask, <2 x bfloat> poison)36  ret <2 x bfloat> %ret37}38 39define <2 x bfloat> @vector_compress_v2bf16_passthru(<2 x bfloat> %passthru, <2 x bfloat> %v, <2 x i1> %mask) {40; CHECK-LABEL: vector_compress_v2bf16_passthru:41; CHECK:       # %bb.0:42; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, tu, ma43; CHECK-NEXT:    vcompress.vm v8, v9, v044; CHECK-NEXT:    ret45  %ret = call <2 x bfloat> @llvm.experimental.vector.compress.v2bf16(<2 x bfloat> %v, <2 x i1> %mask, <2 x bfloat> %passthru)46  ret <2 x bfloat> %ret47}48 49define <4 x bfloat> @vector_compress_v4bf16(<4 x bfloat> %v, <4 x i1> %mask) {50; CHECK-LABEL: vector_compress_v4bf16:51; CHECK:       # %bb.0:52; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma53; CHECK-NEXT:    vcompress.vm v9, v8, v054; CHECK-NEXT:    vmv1r.v v8, v955; CHECK-NEXT:    ret56  %ret = call <4 x bfloat> @llvm.experimental.vector.compress.v4bf16(<4 x bfloat> %v, <4 x i1> %mask, <4 x bfloat> poison)57  ret <4 x bfloat> %ret58}59 60define <4 x bfloat> @vector_compress_v4bf16_passthru(<4 x bfloat> %passthru, <4 x bfloat> %v, <4 x i1> %mask) {61; CHECK-LABEL: vector_compress_v4bf16_passthru:62; CHECK:       # %bb.0:63; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma64; CHECK-NEXT:    vcompress.vm v8, v9, v065; CHECK-NEXT:    ret66  %ret = call <4 x bfloat> @llvm.experimental.vector.compress.v4bf16(<4 x bfloat> %v, <4 x i1> %mask, <4 x bfloat> %passthru)67  ret <4 x bfloat> %ret68}69 70define <8 x bfloat> @vector_compress_v8bf16(<8 x bfloat> %v, <8 x i1> %mask) {71; CHECK-LABEL: vector_compress_v8bf16:72; CHECK:       # %bb.0:73; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma74; CHECK-NEXT:    vcompress.vm v9, v8, v075; CHECK-NEXT:    vmv.v.v v8, v976; CHECK-NEXT:    ret77  %ret = call <8 x bfloat> @llvm.experimental.vector.compress.v8bf16(<8 x bfloat> %v, <8 x i1> %mask, <8 x bfloat> poison)78  ret <8 x bfloat> %ret79}80 81define <8 x bfloat> @vector_compress_v8bf16_passthru(<8 x bfloat> %passthru, <8 x bfloat> %v, <8 x i1> %mask) {82; CHECK-LABEL: vector_compress_v8bf16_passthru:83; CHECK:       # %bb.0:84; CHECK-NEXT:    vsetivli zero, 8, e16, m1, tu, ma85; CHECK-NEXT:    vcompress.vm v8, v9, v086; CHECK-NEXT:    ret87  %ret = call <8 x bfloat> @llvm.experimental.vector.compress.v8bf16(<8 x bfloat> %v, <8 x i1> %mask, <8 x bfloat> %passthru)88  ret <8 x bfloat> %ret89}90 91define <1 x half> @vector_compress_v1f16(<1 x half> %v, <1 x i1> %mask) {92; CHECK-LABEL: vector_compress_v1f16:93; CHECK:       # %bb.0:94; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma95; CHECK-NEXT:    vcompress.vm v9, v8, v096; CHECK-NEXT:    vmv1r.v v8, v997; CHECK-NEXT:    ret98  %ret = call <1 x half> @llvm.experimental.vector.compress.v1f16(<1 x half> %v, <1 x i1> %mask, <1 x half> poison)99  ret <1 x half> %ret100}101 102define <1 x half> @vector_compress_v1f16_passthru(<1 x half> %passthru, <1 x half> %v, <1 x i1> %mask) {103; CHECK-LABEL: vector_compress_v1f16_passthru:104; CHECK:       # %bb.0:105; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, tu, ma106; CHECK-NEXT:    vcompress.vm v8, v9, v0107; CHECK-NEXT:    ret108  %ret = call <1 x half> @llvm.experimental.vector.compress.v1f16(<1 x half> %v, <1 x i1> %mask, <1 x half> %passthru)109  ret <1 x half> %ret110}111 112define <2 x half> @vector_compress_v2f16(<2 x half> %v, <2 x i1> %mask) {113; CHECK-LABEL: vector_compress_v2f16:114; CHECK:       # %bb.0:115; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma116; CHECK-NEXT:    vcompress.vm v9, v8, v0117; CHECK-NEXT:    vmv1r.v v8, v9118; CHECK-NEXT:    ret119  %ret = call <2 x half> @llvm.experimental.vector.compress.v2f16(<2 x half> %v, <2 x i1> %mask, <2 x half> poison)120  ret <2 x half> %ret121}122 123define <2 x half> @vector_compress_v2f16_passthru(<2 x half> %passthru, <2 x half> %v, <2 x i1> %mask) {124; CHECK-LABEL: vector_compress_v2f16_passthru:125; CHECK:       # %bb.0:126; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, tu, ma127; CHECK-NEXT:    vcompress.vm v8, v9, v0128; CHECK-NEXT:    ret129  %ret = call <2 x half> @llvm.experimental.vector.compress.v2f16(<2 x half> %v, <2 x i1> %mask, <2 x half> %passthru)130  ret <2 x half> %ret131}132 133define <4 x half> @vector_compress_v4f16(<4 x half> %v, <4 x i1> %mask) {134; CHECK-LABEL: vector_compress_v4f16:135; CHECK:       # %bb.0:136; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma137; CHECK-NEXT:    vcompress.vm v9, v8, v0138; CHECK-NEXT:    vmv1r.v v8, v9139; CHECK-NEXT:    ret140  %ret = call <4 x half> @llvm.experimental.vector.compress.v4f16(<4 x half> %v, <4 x i1> %mask, <4 x half> poison)141  ret <4 x half> %ret142}143 144define <4 x half> @vector_compress_v4f16_passthru(<4 x half> %passthru, <4 x half> %v, <4 x i1> %mask) {145; CHECK-LABEL: vector_compress_v4f16_passthru:146; CHECK:       # %bb.0:147; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma148; CHECK-NEXT:    vcompress.vm v8, v9, v0149; CHECK-NEXT:    ret150  %ret = call <4 x half> @llvm.experimental.vector.compress.v4f16(<4 x half> %v, <4 x i1> %mask, <4 x half> %passthru)151  ret <4 x half> %ret152}153 154define <8 x half> @vector_compress_v8f16(<8 x half> %v, <8 x i1> %mask) {155; CHECK-LABEL: vector_compress_v8f16:156; CHECK:       # %bb.0:157; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma158; CHECK-NEXT:    vcompress.vm v9, v8, v0159; CHECK-NEXT:    vmv.v.v v8, v9160; CHECK-NEXT:    ret161  %ret = call <8 x half> @llvm.experimental.vector.compress.v8f16(<8 x half> %v, <8 x i1> %mask, <8 x half> poison)162  ret <8 x half> %ret163}164 165define <8 x half> @vector_compress_v8f16_passthru(<8 x half> %passthru, <8 x half> %v, <8 x i1> %mask) {166; CHECK-LABEL: vector_compress_v8f16_passthru:167; CHECK:       # %bb.0:168; CHECK-NEXT:    vsetivli zero, 8, e16, m1, tu, ma169; CHECK-NEXT:    vcompress.vm v8, v9, v0170; CHECK-NEXT:    ret171  %ret = call <8 x half> @llvm.experimental.vector.compress.v8f16(<8 x half> %v, <8 x i1> %mask, <8 x half> %passthru)172  ret <8 x half> %ret173}174 175define <1 x float> @vector_compress_v1f32(<1 x float> %v, <1 x i1> %mask) {176; CHECK-LABEL: vector_compress_v1f32:177; CHECK:       # %bb.0:178; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma179; CHECK-NEXT:    vcompress.vm v9, v8, v0180; CHECK-NEXT:    vmv1r.v v8, v9181; CHECK-NEXT:    ret182  %ret = call <1 x float> @llvm.experimental.vector.compress.v1f32(<1 x float> %v, <1 x i1> %mask, <1 x float> poison)183  ret <1 x float> %ret184}185 186define <1 x float> @vector_compress_v1f32_passthru(<1 x float> %passthru, <1 x float> %v, <1 x i1> %mask) {187; CHECK-LABEL: vector_compress_v1f32_passthru:188; CHECK:       # %bb.0:189; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, tu, ma190; CHECK-NEXT:    vcompress.vm v8, v9, v0191; CHECK-NEXT:    ret192  %ret = call <1 x float> @llvm.experimental.vector.compress.v1f32(<1 x float> %v, <1 x i1> %mask, <1 x float> %passthru)193  ret <1 x float> %ret194}195 196define <2 x float> @vector_compress_v2f32(<2 x float> %v, <2 x i1> %mask) {197; CHECK-LABEL: vector_compress_v2f32:198; CHECK:       # %bb.0:199; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma200; CHECK-NEXT:    vcompress.vm v9, v8, v0201; CHECK-NEXT:    vmv1r.v v8, v9202; CHECK-NEXT:    ret203  %ret = call <2 x float> @llvm.experimental.vector.compress.v2f32(<2 x float> %v, <2 x i1> %mask, <2 x float> poison)204  ret <2 x float> %ret205}206 207define <2 x float> @vector_compress_v2f32_passthru(<2 x float> %passthru, <2 x float> %v, <2 x i1> %mask) {208; CHECK-LABEL: vector_compress_v2f32_passthru:209; CHECK:       # %bb.0:210; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, tu, ma211; CHECK-NEXT:    vcompress.vm v8, v9, v0212; CHECK-NEXT:    ret213  %ret = call <2 x float> @llvm.experimental.vector.compress.v2f32(<2 x float> %v, <2 x i1> %mask, <2 x float> %passthru)214  ret <2 x float> %ret215}216 217define <4 x float> @vector_compress_v4f32(<4 x float> %v, <4 x i1> %mask) {218; CHECK-LABEL: vector_compress_v4f32:219; CHECK:       # %bb.0:220; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma221; CHECK-NEXT:    vcompress.vm v9, v8, v0222; CHECK-NEXT:    vmv.v.v v8, v9223; CHECK-NEXT:    ret224  %ret = call <4 x float> @llvm.experimental.vector.compress.v4f32(<4 x float> %v, <4 x i1> %mask, <4 x float> poison)225  ret <4 x float> %ret226}227 228define <4 x float> @vector_compress_v4f32_passthru(<4 x float> %passthru, <4 x float> %v, <4 x i1> %mask) {229; CHECK-LABEL: vector_compress_v4f32_passthru:230; CHECK:       # %bb.0:231; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma232; CHECK-NEXT:    vcompress.vm v8, v9, v0233; CHECK-NEXT:    ret234  %ret = call <4 x float> @llvm.experimental.vector.compress.v4f32(<4 x float> %v, <4 x i1> %mask, <4 x float> %passthru)235  ret <4 x float> %ret236}237 238define <8 x float> @vector_compress_v8f32(<8 x float> %v, <8 x i1> %mask) {239; CHECK-LABEL: vector_compress_v8f32:240; CHECK:       # %bb.0:241; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma242; CHECK-NEXT:    vcompress.vm v10, v8, v0243; CHECK-NEXT:    vmv.v.v v8, v10244; CHECK-NEXT:    ret245  %ret = call <8 x float> @llvm.experimental.vector.compress.v8f32(<8 x float> %v, <8 x i1> %mask, <8 x float> poison)246  ret <8 x float> %ret247}248 249define <8 x float> @vector_compress_v8f32_passthru(<8 x float> %passthru, <8 x float> %v, <8 x i1> %mask) {250; CHECK-LABEL: vector_compress_v8f32_passthru:251; CHECK:       # %bb.0:252; CHECK-NEXT:    vsetivli zero, 8, e32, m2, tu, ma253; CHECK-NEXT:    vcompress.vm v8, v10, v0254; CHECK-NEXT:    ret255  %ret = call <8 x float> @llvm.experimental.vector.compress.v8f32(<8 x float> %v, <8 x i1> %mask, <8 x float> %passthru)256  ret <8 x float> %ret257}258 259define <1 x double> @vector_compress_v1f64(<1 x double> %v, <1 x i1> %mask) {260; CHECK-LABEL: vector_compress_v1f64:261; CHECK:       # %bb.0:262; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma263; CHECK-NEXT:    vcompress.vm v9, v8, v0264; CHECK-NEXT:    vmv.v.v v8, v9265; CHECK-NEXT:    ret266  %ret = call <1 x double> @llvm.experimental.vector.compress.v1f64(<1 x double> %v, <1 x i1> %mask, <1 x double> poison)267  ret <1 x double> %ret268}269 270define <1 x double> @vector_compress_v1f64_passthru(<1 x double> %passthru, <1 x double> %v, <1 x i1> %mask) {271; CHECK-LABEL: vector_compress_v1f64_passthru:272; CHECK:       # %bb.0:273; CHECK-NEXT:    vsetivli zero, 1, e64, m1, tu, ma274; CHECK-NEXT:    vcompress.vm v8, v9, v0275; CHECK-NEXT:    ret276  %ret = call <1 x double> @llvm.experimental.vector.compress.v1f64(<1 x double> %v, <1 x i1> %mask, <1 x double> %passthru)277  ret <1 x double> %ret278}279 280define <2 x double> @vector_compress_v2f64(<2 x double> %v, <2 x i1> %mask) {281; CHECK-LABEL: vector_compress_v2f64:282; CHECK:       # %bb.0:283; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma284; CHECK-NEXT:    vcompress.vm v9, v8, v0285; CHECK-NEXT:    vmv.v.v v8, v9286; CHECK-NEXT:    ret287  %ret = call <2 x double> @llvm.experimental.vector.compress.v2f64(<2 x double> %v, <2 x i1> %mask, <2 x double> poison)288  ret <2 x double> %ret289}290 291define <2 x double> @vector_compress_v2f64_passthru(<2 x double> %passthru, <2 x double> %v, <2 x i1> %mask) {292; CHECK-LABEL: vector_compress_v2f64_passthru:293; CHECK:       # %bb.0:294; CHECK-NEXT:    vsetivli zero, 2, e64, m1, tu, ma295; CHECK-NEXT:    vcompress.vm v8, v9, v0296; CHECK-NEXT:    ret297  %ret = call <2 x double> @llvm.experimental.vector.compress.v2f64(<2 x double> %v, <2 x i1> %mask, <2 x double> %passthru)298  ret <2 x double> %ret299}300 301define <4 x double> @vector_compress_v4f64(<4 x double> %v, <4 x i1> %mask) {302; CHECK-LABEL: vector_compress_v4f64:303; CHECK:       # %bb.0:304; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma305; CHECK-NEXT:    vcompress.vm v10, v8, v0306; CHECK-NEXT:    vmv.v.v v8, v10307; CHECK-NEXT:    ret308  %ret = call <4 x double> @llvm.experimental.vector.compress.v4f64(<4 x double> %v, <4 x i1> %mask, <4 x double> poison)309  ret <4 x double> %ret310}311 312define <4 x double> @vector_compress_v4f64_passthru(<4 x double> %passthru, <4 x double> %v, <4 x i1> %mask) {313; CHECK-LABEL: vector_compress_v4f64_passthru:314; CHECK:       # %bb.0:315; CHECK-NEXT:    vsetivli zero, 4, e64, m2, tu, ma316; CHECK-NEXT:    vcompress.vm v8, v10, v0317; CHECK-NEXT:    ret318  %ret = call <4 x double> @llvm.experimental.vector.compress.v4f64(<4 x double> %v, <4 x i1> %mask, <4 x double> %passthru)319  ret <4 x double> %ret320}321 322define <8 x double> @vector_compress_v8f64(<8 x double> %v, <8 x i1> %mask) {323; CHECK-LABEL: vector_compress_v8f64:324; CHECK:       # %bb.0:325; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma326; CHECK-NEXT:    vcompress.vm v12, v8, v0327; CHECK-NEXT:    vmv.v.v v8, v12328; CHECK-NEXT:    ret329  %ret = call <8 x double> @llvm.experimental.vector.compress.v8f64(<8 x double> %v, <8 x i1> %mask, <8 x double> poison)330  ret <8 x double> %ret331}332 333define <8 x double> @vector_compress_v8f64_passthru(<8 x double> %passthru, <8 x double> %v, <8 x i1> %mask) {334; CHECK-LABEL: vector_compress_v8f64_passthru:335; CHECK:       # %bb.0:336; CHECK-NEXT:    vsetivli zero, 8, e64, m4, tu, ma337; CHECK-NEXT:    vcompress.vm v8, v12, v0338; CHECK-NEXT:    ret339  %ret = call <8 x double> @llvm.experimental.vector.compress.v8f64(<8 x double> %v, <8 x i1> %mask, <8 x double> %passthru)340  ret <8 x double> %ret341}342