[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / arm64-fminv.ll
blob90076a2b66f949e1f65a52a53146ff9b78f46e7a
1 ; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s
2 ; RUN: llc -global-isel=1 -mtriple=arm64-linux-gnu -o - %s | FileCheck %s
4 define float @test_fminv_v2f32(<2 x float> %in) {
5 ; CHECK: test_fminv_v2f32:
6 ; CHECK: fminp s0, v0.2s
7   %min = call float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float> %in)
8   ret float %min
11 define float @test_fminv_v4f32(<4 x float> %in) {
12 ; CHECK: test_fminv_v4f32:
13 ; CHECK: fminv s0, v0.4s
14   %min = call float @llvm.aarch64.neon.fminv.f32.v4f32(<4 x float> %in)
15   ret float %min
18 define double @test_fminv_v2f64(<2 x double> %in) {
19 ; CHECK: test_fminv_v2f64:
20 ; CHECK: fminp d0, v0.2d
21   %min = call double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double> %in)
22   ret double %min
25 declare float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float>)
26 declare float @llvm.aarch64.neon.fminv.f32.v4f32(<4 x float>)
27 declare double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double>)
29 define float @test_fmaxv_v2f32(<2 x float> %in) {
30 ; CHECK: test_fmaxv_v2f32:
31 ; CHECK: fmaxp s0, v0.2s
32   %max = call float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float> %in)
33   ret float %max
36 define float @test_fmaxv_v4f32(<4 x float> %in) {
37 ; CHECK: test_fmaxv_v4f32:
38 ; CHECK: fmaxv s0, v0.4s
39   %max = call float @llvm.aarch64.neon.fmaxv.f32.v4f32(<4 x float> %in)
40   ret float %max
43 define double @test_fmaxv_v2f64(<2 x double> %in) {
44 ; CHECK: test_fmaxv_v2f64:
45 ; CHECK: fmaxp d0, v0.2d
46   %max = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> %in)
47   ret double %max
50 declare float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float>)
51 declare float @llvm.aarch64.neon.fmaxv.f32.v4f32(<4 x float>)
52 declare double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double>)
54 define float @test_fminnmv_v2f32(<2 x float> %in) {
55 ; CHECK: test_fminnmv_v2f32:
56 ; CHECK: fminnmp s0, v0.2s
57   %minnm = call float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float> %in)
58   ret float %minnm
61 define float @test_fminnmv_v4f32(<4 x float> %in) {
62 ; CHECK: test_fminnmv_v4f32:
63 ; CHECK: fminnmv s0, v0.4s
64   %minnm = call float @llvm.aarch64.neon.fminnmv.f32.v4f32(<4 x float> %in)
65   ret float %minnm
68 define double @test_fminnmv_v2f64(<2 x double> %in) {
69 ; CHECK: test_fminnmv_v2f64:
70 ; CHECK: fminnmp d0, v0.2d
71   %minnm = call double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double> %in)
72   ret double %minnm
75 declare float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float>)
76 declare float @llvm.aarch64.neon.fminnmv.f32.v4f32(<4 x float>)
77 declare double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double>)
79 define float @test_fmaxnmv_v2f32(<2 x float> %in) {
80 ; CHECK: test_fmaxnmv_v2f32:
81 ; CHECK: fmaxnmp s0, v0.2s
82   %maxnm = call float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float> %in)
83   ret float %maxnm
86 define float @test_fmaxnmv_v4f32(<4 x float> %in) {
87 ; CHECK: test_fmaxnmv_v4f32:
88 ; CHECK: fmaxnmv s0, v0.4s
89   %maxnm = call float @llvm.aarch64.neon.fmaxnmv.f32.v4f32(<4 x float> %in)
90   ret float %maxnm
93 define double @test_fmaxnmv_v2f64(<2 x double> %in) {
94 ; CHECK: test_fmaxnmv_v2f64:
95 ; CHECK: fmaxnmp d0, v0.2d
96   %maxnm = call double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double> %in)
97   ret double %maxnm
100 declare float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float>)
101 declare float @llvm.aarch64.neon.fmaxnmv.f32.v4f32(<4 x float>)
102 declare double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double>)