brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 82e199b Raw
175 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZFBFMIN-ZVFBFMIN3; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZVFBFMIN4; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZFBFMIN-ZVFBFMIN5; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZVFBFMIN6; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+experimental-zvfbfa -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZVFBFA7; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+experimental-zvfbfa -verify-machineinstrs < %s | FileCheck %s --check-prefixes=ZVFBFA8 9define <8 x bfloat> @splat_v8bf16(ptr %x, bfloat %y) {10; ZFBFMIN-ZVFBFMIN-LABEL: splat_v8bf16:11; ZFBFMIN-ZVFBFMIN:       # %bb.0:12; ZFBFMIN-ZVFBFMIN-NEXT:    fmv.x.h a0, fa013; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma14; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.x v8, a015; ZFBFMIN-ZVFBFMIN-NEXT:    ret16;17; ZVFBFMIN-LABEL: splat_v8bf16:18; ZVFBFMIN:       # %bb.0:19; ZVFBFMIN-NEXT:    fmv.x.w a0, fa020; ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma21; ZVFBFMIN-NEXT:    vmv.v.x v8, a022; ZVFBFMIN-NEXT:    ret23;24; ZVFBFA-LABEL: splat_v8bf16:25; ZVFBFA:       # %bb.0:26; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, ta, ma27; ZVFBFA-NEXT:    vfmv.v.f v8, fa028; ZVFBFA-NEXT:    ret29  %a = insertelement <8 x bfloat> poison, bfloat %y, i32 030  %b = shufflevector <8 x bfloat> %a, <8 x bfloat> poison, <8 x i32> zeroinitializer31  ret <8 x bfloat> %b32}33 34define <16 x bfloat> @splat_16bf16(ptr %x, bfloat %y) {35; ZFBFMIN-ZVFBFMIN-LABEL: splat_16bf16:36; ZFBFMIN-ZVFBFMIN:       # %bb.0:37; ZFBFMIN-ZVFBFMIN-NEXT:    fmv.x.h a0, fa038; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma39; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.x v8, a040; ZFBFMIN-ZVFBFMIN-NEXT:    ret41;42; ZVFBFMIN-LABEL: splat_16bf16:43; ZVFBFMIN:       # %bb.0:44; ZVFBFMIN-NEXT:    fmv.x.w a0, fa045; ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma46; ZVFBFMIN-NEXT:    vmv.v.x v8, a047; ZVFBFMIN-NEXT:    ret48;49; ZVFBFA-LABEL: splat_16bf16:50; ZVFBFA:       # %bb.0:51; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m2, ta, ma52; ZVFBFA-NEXT:    vfmv.v.f v8, fa053; ZVFBFA-NEXT:    ret54  %a = insertelement <16 x bfloat> poison, bfloat %y, i32 055  %b = shufflevector <16 x bfloat> %a, <16 x bfloat> poison, <16 x i32> zeroinitializer56  ret <16 x bfloat> %b57}58 59define <64 x bfloat> @splat_64bf16(ptr %x, bfloat %y) {60; ZFBFMIN-ZVFBFMIN-LABEL: splat_64bf16:61; ZFBFMIN-ZVFBFMIN:       # %bb.0:62; ZFBFMIN-ZVFBFMIN-NEXT:    fmv.x.h a0, fa063; ZFBFMIN-ZVFBFMIN-NEXT:    li a1, 6464; ZFBFMIN-ZVFBFMIN-NEXT:    vsetvli zero, a1, e16, m8, ta, ma65; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.x v8, a066; ZFBFMIN-ZVFBFMIN-NEXT:    ret67;68; ZVFBFMIN-LABEL: splat_64bf16:69; ZVFBFMIN:       # %bb.0:70; ZVFBFMIN-NEXT:    fmv.x.w a0, fa071; ZVFBFMIN-NEXT:    li a1, 6472; ZVFBFMIN-NEXT:    vsetvli zero, a1, e16, m8, ta, ma73; ZVFBFMIN-NEXT:    vmv.v.x v8, a074; ZVFBFMIN-NEXT:    ret75;76; ZVFBFA-LABEL: splat_64bf16:77; ZVFBFA:       # %bb.0:78; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m8, ta, ma79; ZVFBFA-NEXT:    vfmv.v.f v8, fa080; ZVFBFA-NEXT:    ret81  %a = insertelement <64 x bfloat> poison, bfloat %y, i32 082  %b = shufflevector <64 x bfloat> %a, <64 x bfloat> poison, <64 x i32> zeroinitializer83  ret <64 x bfloat> %b84}85 86define <8 x bfloat> @splat_zero_v8bf16(ptr %x) {87; ZFBFMIN-ZVFBFMIN-LABEL: splat_zero_v8bf16:88; ZFBFMIN-ZVFBFMIN:       # %bb.0:89; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma90; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.i v8, 091; ZFBFMIN-ZVFBFMIN-NEXT:    ret92;93; ZVFBFMIN-LABEL: splat_zero_v8bf16:94; ZVFBFMIN:       # %bb.0:95; ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma96; ZVFBFMIN-NEXT:    vmv.v.i v8, 097; ZVFBFMIN-NEXT:    ret98;99; ZVFBFA-LABEL: splat_zero_v8bf16:100; ZVFBFA:       # %bb.0:101; ZVFBFA-NEXT:    vsetvli a0, zero, e16, m1, ta, ma102; ZVFBFA-NEXT:    vmv.v.i v8, 0103; ZVFBFA-NEXT:    ret104  ret <8 x bfloat> splat (bfloat 0.0)105}106 107define <16 x bfloat> @splat_zero_16bf16(ptr %x) {108; ZFBFMIN-ZVFBFMIN-LABEL: splat_zero_16bf16:109; ZFBFMIN-ZVFBFMIN:       # %bb.0:110; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma111; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.i v8, 0112; ZFBFMIN-ZVFBFMIN-NEXT:    ret113;114; ZVFBFMIN-LABEL: splat_zero_16bf16:115; ZVFBFMIN:       # %bb.0:116; ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma117; ZVFBFMIN-NEXT:    vmv.v.i v8, 0118; ZVFBFMIN-NEXT:    ret119;120; ZVFBFA-LABEL: splat_zero_16bf16:121; ZVFBFA:       # %bb.0:122; ZVFBFA-NEXT:    vsetvli a0, zero, e16, m2, ta, ma123; ZVFBFA-NEXT:    vmv.v.i v8, 0124; ZVFBFA-NEXT:    ret125  ret <16 x bfloat> splat (bfloat 0.0)126}127 128define <8 x bfloat> @splat_negzero_v8bf16(ptr %x) {129; ZFBFMIN-ZVFBFMIN-LABEL: splat_negzero_v8bf16:130; ZFBFMIN-ZVFBFMIN:       # %bb.0:131; ZFBFMIN-ZVFBFMIN-NEXT:    lui a0, 1048568132; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma133; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.x v8, a0134; ZFBFMIN-ZVFBFMIN-NEXT:    ret135;136; ZVFBFMIN-LABEL: splat_negzero_v8bf16:137; ZVFBFMIN:       # %bb.0:138; ZVFBFMIN-NEXT:    lui a0, 1048568139; ZVFBFMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma140; ZVFBFMIN-NEXT:    vmv.v.x v8, a0141; ZVFBFMIN-NEXT:    ret142;143; ZVFBFA-LABEL: splat_negzero_v8bf16:144; ZVFBFA:       # %bb.0:145; ZVFBFA-NEXT:    lui a0, 1048568146; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, ta, ma147; ZVFBFA-NEXT:    vmv.v.x v8, a0148; ZVFBFA-NEXT:    ret149  ret <8 x bfloat> splat (bfloat -0.0)150}151 152define <16 x bfloat> @splat_negzero_16bf16(ptr %x) {153; ZFBFMIN-ZVFBFMIN-LABEL: splat_negzero_16bf16:154; ZFBFMIN-ZVFBFMIN:       # %bb.0:155; ZFBFMIN-ZVFBFMIN-NEXT:    lui a0, 1048568156; ZFBFMIN-ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma157; ZFBFMIN-ZVFBFMIN-NEXT:    vmv.v.x v8, a0158; ZFBFMIN-ZVFBFMIN-NEXT:    ret159;160; ZVFBFMIN-LABEL: splat_negzero_16bf16:161; ZVFBFMIN:       # %bb.0:162; ZVFBFMIN-NEXT:    lui a0, 1048568163; ZVFBFMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma164; ZVFBFMIN-NEXT:    vmv.v.x v8, a0165; ZVFBFMIN-NEXT:    ret166;167; ZVFBFA-LABEL: splat_negzero_16bf16:168; ZVFBFA:       # %bb.0:169; ZVFBFA-NEXT:    lui a0, 1048568170; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m2, ta, ma171; ZVFBFA-NEXT:    vmv.v.x v8, a0172; ZVFBFA-NEXT:    ret173  ret <16 x bfloat> splat (bfloat -0.0)174}175