128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -mtriple=arm64-linux-gnu | FileCheck %s3; RUN: llc < %s -mtriple=arm64-linux-gnu -global-isel | FileCheck %s4 5define float @test_fminv_v2f32(<2 x float> %in) {6; CHECK-LABEL: test_fminv_v2f32:7; CHECK: // %bb.0:8; CHECK-NEXT: fminp s0, v0.2s9; CHECK-NEXT: ret10 %min = call float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float> %in)11 ret float %min12}13 14define float @test_fminv_v4f32(<4 x float> %in) {15; CHECK-LABEL: test_fminv_v4f32:16; CHECK: // %bb.0:17; CHECK-NEXT: fminv s0, v0.4s18; CHECK-NEXT: ret19 %min = call float @llvm.aarch64.neon.fminv.f32.v4f32(<4 x float> %in)20 ret float %min21}22 23define double @test_fminv_v2f64(<2 x double> %in) {24; CHECK-LABEL: test_fminv_v2f64:25; CHECK: // %bb.0:26; CHECK-NEXT: fminp d0, v0.2d27; CHECK-NEXT: ret28 %min = call double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double> %in)29 ret double %min30}31 32declare float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float>)33declare float @llvm.aarch64.neon.fminv.f32.v4f32(<4 x float>)34declare double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double>)35 36define float @test_fmaxv_v2f32(<2 x float> %in) {37; CHECK-LABEL: test_fmaxv_v2f32:38; CHECK: // %bb.0:39; CHECK-NEXT: fmaxp s0, v0.2s40; CHECK-NEXT: ret41 %max = call float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float> %in)42 ret float %max43}44 45define float @test_fmaxv_v4f32(<4 x float> %in) {46; CHECK-LABEL: test_fmaxv_v4f32:47; CHECK: // %bb.0:48; CHECK-NEXT: fmaxv s0, v0.4s49; CHECK-NEXT: ret50 %max = call float @llvm.aarch64.neon.fmaxv.f32.v4f32(<4 x float> %in)51 ret float %max52}53 54define double @test_fmaxv_v2f64(<2 x double> %in) {55; CHECK-LABEL: test_fmaxv_v2f64:56; CHECK: // %bb.0:57; CHECK-NEXT: fmaxp d0, v0.2d58; CHECK-NEXT: ret59 %max = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> %in)60 ret double %max61}62 63declare float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float>)64declare float @llvm.aarch64.neon.fmaxv.f32.v4f32(<4 x float>)65declare double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double>)66 67define float @test_fminnmv_v2f32(<2 x float> %in) {68; CHECK-LABEL: test_fminnmv_v2f32:69; CHECK: // %bb.0:70; CHECK-NEXT: fminnmp s0, v0.2s71; CHECK-NEXT: ret72 %minnm = call float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float> %in)73 ret float %minnm74}75 76define float @test_fminnmv_v4f32(<4 x float> %in) {77; CHECK-LABEL: test_fminnmv_v4f32:78; CHECK: // %bb.0:79; CHECK-NEXT: fminnmv s0, v0.4s80; CHECK-NEXT: ret81 %minnm = call float @llvm.aarch64.neon.fminnmv.f32.v4f32(<4 x float> %in)82 ret float %minnm83}84 85define double @test_fminnmv_v2f64(<2 x double> %in) {86; CHECK-LABEL: test_fminnmv_v2f64:87; CHECK: // %bb.0:88; CHECK-NEXT: fminnmp d0, v0.2d89; CHECK-NEXT: ret90 %minnm = call double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double> %in)91 ret double %minnm92}93 94declare float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float>)95declare float @llvm.aarch64.neon.fminnmv.f32.v4f32(<4 x float>)96declare double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double>)97 98define float @test_fmaxnmv_v2f32(<2 x float> %in) {99; CHECK-LABEL: test_fmaxnmv_v2f32:100; CHECK: // %bb.0:101; CHECK-NEXT: fmaxnmp s0, v0.2s102; CHECK-NEXT: ret103 %maxnm = call float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float> %in)104 ret float %maxnm105}106 107define float @test_fmaxnmv_v4f32(<4 x float> %in) {108; CHECK-LABEL: test_fmaxnmv_v4f32:109; CHECK: // %bb.0:110; CHECK-NEXT: fmaxnmv s0, v0.4s111; CHECK-NEXT: ret112 %maxnm = call float @llvm.aarch64.neon.fmaxnmv.f32.v4f32(<4 x float> %in)113 ret float %maxnm114}115 116define double @test_fmaxnmv_v2f64(<2 x double> %in) {117; CHECK-LABEL: test_fmaxnmv_v2f64:118; CHECK: // %bb.0:119; CHECK-NEXT: fmaxnmp d0, v0.2d120; CHECK-NEXT: ret121 %maxnm = call double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double> %in)122 ret double %maxnm123}124 125declare float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float>)126declare float @llvm.aarch64.neon.fmaxnmv.f32.v4f32(<4 x float>)127declare double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double>)128