brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · c8cea36 Raw
202 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=riscv64-linux-gnu --mattr=+v,+zvfh < %s | FileCheck %s --check-prefixes=CHECK,ZVFH3; RUN: llc --mtriple=riscv64-linux-gnu --mattr=+v,+zvfhmin,+zfh < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN4 5define <2 x double> @max_v2f64(<2 x double> %a, <2 x double> %b) {6; CHECK-LABEL: max_v2f64:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma9; CHECK-NEXT:    vfmax.vv v8, v8, v910; CHECK-NEXT:    ret11entry:12  %c = call <2 x double> @llvm.maximumnum.v2f64(<2 x double> %a, <2 x double> %b)13  ret <2 x double> %c14}15 16define <3 x double> @max_v3f64(<3 x double> %a, <3 x double> %b) {17; CHECK-LABEL: max_v3f64:18; CHECK:       # %bb.0: # %entry19; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma20; CHECK-NEXT:    vfmax.vv v8, v8, v1021; CHECK-NEXT:    ret22entry:23  %c = call <3 x double> @llvm.maximumnum.v3f64(<3 x double> %a, <3 x double> %b)24  ret <3 x double> %c25}26 27define <4 x double> @max_v4f64(<4 x double> %a, <4 x double> %b) {28; CHECK-LABEL: max_v4f64:29; CHECK:       # %bb.0: # %entry30; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma31; CHECK-NEXT:    vfmax.vv v8, v8, v1032; CHECK-NEXT:    ret33entry:34  %c = call <4 x double> @llvm.maximumnum.v4f64(<4 x double> %a, <4 x double> %b)35  ret <4 x double> %c36}37 38define <2 x float> @max_v2f32(<2 x float> %a, <2 x float> %b) {39; CHECK-LABEL: max_v2f32:40; CHECK:       # %bb.0: # %entry41; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma42; CHECK-NEXT:    vfmax.vv v8, v8, v943; CHECK-NEXT:    ret44entry:45  %c = call <2 x float> @llvm.maximumnum.v2f32(<2 x float> %a, <2 x float> %b)46  ret <2 x float> %c47}48 49define <3 x float> @max_v3f32(<3 x float> %a, <3 x float> %b) {50; CHECK-LABEL: max_v3f32:51; CHECK:       # %bb.0: # %entry52; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma53; CHECK-NEXT:    vfmax.vv v8, v8, v954; CHECK-NEXT:    ret55entry:56  %c = call <3 x float> @llvm.maximumnum.v3f32(<3 x float> %a, <3 x float> %b)57  ret <3 x float> %c58}59 60define <4 x float> @max_v4f32(<4 x float> %a, <4 x float> %b) {61; CHECK-LABEL: max_v4f32:62; CHECK:       # %bb.0: # %entry63; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma64; CHECK-NEXT:    vfmax.vv v8, v8, v965; CHECK-NEXT:    ret66entry:67  %c = call <4 x float> @llvm.maximumnum.v4f32(<4 x float> %a, <4 x float> %b)68  ret <4 x float> %c69}70 71define <5 x float> @max_v5f32(<5 x float> %a, <5 x float> %b) {72; CHECK-LABEL: max_v5f32:73; CHECK:       # %bb.0: # %entry74; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma75; CHECK-NEXT:    vfmax.vv v8, v8, v1076; CHECK-NEXT:    ret77entry:78  %c = call <5 x float> @llvm.maximumnum.v5f32(<5 x float> %a, <5 x float> %b)79  ret <5 x float> %c80}81 82define <8 x float> @max_v8f32(<8 x float> %a, <8 x float> %b) {83; CHECK-LABEL: max_v8f32:84; CHECK:       # %bb.0: # %entry85; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma86; CHECK-NEXT:    vfmax.vv v8, v8, v1087; CHECK-NEXT:    ret88entry:89  %c = call <8 x float> @llvm.maximumnum.v8f32(<8 x float> %a, <8 x float> %b)90  ret <8 x float> %c91}92 93define <2 x half> @max_v2f16(<2 x half> %a, <2 x half> %b) {94; ZVFH-LABEL: max_v2f16:95; ZVFH:       # %bb.0: # %entry96; ZVFH-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma97; ZVFH-NEXT:    vfmax.vv v8, v8, v998; ZVFH-NEXT:    ret99;100; ZVFHMIN-LABEL: max_v2f16:101; ZVFHMIN:       # %bb.0: # %entry102; ZVFHMIN-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma103; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9104; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8105; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma106; ZVFHMIN-NEXT:    vfmax.vv v9, v9, v10107; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma108; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9109; ZVFHMIN-NEXT:    ret110entry:111  %c = call <2 x half> @llvm.maximumnum.v2f16(<2 x half> %a, <2 x half> %b)112  ret <2 x half> %c113}114 115define <4 x half> @max_v4f16(<4 x half> %a, <4 x half> %b) {116; ZVFH-LABEL: max_v4f16:117; ZVFH:       # %bb.0: # %entry118; ZVFH-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma119; ZVFH-NEXT:    vfmax.vv v8, v8, v9120; ZVFH-NEXT:    ret121;122; ZVFHMIN-LABEL: max_v4f16:123; ZVFHMIN:       # %bb.0: # %entry124; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma125; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9126; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8127; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma128; ZVFHMIN-NEXT:    vfmax.vv v9, v9, v10129; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma130; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9131; ZVFHMIN-NEXT:    ret132entry:133  %c = call <4 x half> @llvm.maximumnum.v4f16(<4 x half> %a, <4 x half> %b)134  ret <4 x half> %c135}136 137define <8 x half> @max_v8f16(<8 x half> %a, <8 x half> %b) {138; ZVFH-LABEL: max_v8f16:139; ZVFH:       # %bb.0: # %entry140; ZVFH-NEXT:    vsetivli zero, 8, e16, m1, ta, ma141; ZVFH-NEXT:    vfmax.vv v8, v8, v9142; ZVFH-NEXT:    ret143;144; ZVFHMIN-LABEL: max_v8f16:145; ZVFHMIN:       # %bb.0: # %entry146; ZVFHMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma147; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9148; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8149; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma150; ZVFHMIN-NEXT:    vfmax.vv v10, v12, v10151; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma152; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10153; ZVFHMIN-NEXT:    ret154entry:155  %c = call <8 x half> @llvm.maximumnum.v8f16(<8 x half> %a, <8 x half> %b)156  ret <8 x half> %c157}158 159define <9 x half> @max_v9f16(<9 x half> %a, <9 x half> %b) {160; ZVFH-LABEL: max_v9f16:161; ZVFH:       # %bb.0: # %entry162; ZVFH-NEXT:    vsetivli zero, 16, e16, m2, ta, ma163; ZVFH-NEXT:    vfmax.vv v8, v8, v10164; ZVFH-NEXT:    ret165;166; ZVFHMIN-LABEL: max_v9f16:167; ZVFHMIN:       # %bb.0: # %entry168; ZVFHMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma169; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10170; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8171; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma172; ZVFHMIN-NEXT:    vfmax.vv v12, v16, v12173; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma174; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12175; ZVFHMIN-NEXT:    ret176entry:177  %c = call <9 x half> @llvm.maximumnum.v9f16(<9 x half> %a, <9 x half> %b)178  ret <9 x half> %c179}180 181define <16 x half> @max_v16f16(<16 x half> %a, <16 x half> %b) {182; ZVFH-LABEL: max_v16f16:183; ZVFH:       # %bb.0: # %entry184; ZVFH-NEXT:    vsetivli zero, 16, e16, m2, ta, ma185; ZVFH-NEXT:    vfmax.vv v8, v8, v10186; ZVFH-NEXT:    ret187;188; ZVFHMIN-LABEL: max_v16f16:189; ZVFHMIN:       # %bb.0: # %entry190; ZVFHMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma191; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10192; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8193; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma194; ZVFHMIN-NEXT:    vfmax.vv v12, v16, v12195; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma196; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12197; ZVFHMIN-NEXT:    ret198entry:199  %c = call <16 x half> @llvm.maximumnum.v16f16(<16 x half> %a, <16 x half> %b)200  ret <16 x half> %c201}202