xref: /llvm-project/llvm/test/CodeGen/AArch64/sve-fp-vselect.ll (revision 1c6dca96caeeb498c02f665bc55428d6f1c0edb2)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
3
4define <vscale x 8 x half> @vselect_fmul_f16(<vscale x 8 x i1> %p, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
5; CHECK-LABEL: vselect_fmul_f16:
6; CHECK:       // %bb.0:
7; CHECK-NEXT:    fmul z0.h, p0/m, z0.h, z1.h
8; CHECK-NEXT:    ret
9  %mul = fmul <vscale x 8 x half> %a, %b
10  %sel = select <vscale x 8 x i1> %p, <vscale x 8 x half> %mul, <vscale x 8 x half> %a
11  ret <vscale x 8 x half> %sel
12}
13
14define <vscale x 4 x float> @vselect_fmul_f32(<vscale x 4 x i1> %p, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
15; CHECK-LABEL: vselect_fmul_f32:
16; CHECK:       // %bb.0:
17; CHECK-NEXT:    fmul z0.s, p0/m, z0.s, z1.s
18; CHECK-NEXT:    ret
19  %mul = fmul <vscale x 4 x float> %a, %b
20  %sel = select <vscale x 4 x i1> %p, <vscale x 4 x float> %mul, <vscale x 4 x float> %a
21  ret <vscale x 4 x float> %sel
22}
23
24define <vscale x 2 x double> @vselect_fmul_f64(<vscale x 2 x i1> %p, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
25; CHECK-LABEL: vselect_fmul_f64:
26; CHECK:       // %bb.0:
27; CHECK-NEXT:    fmul z0.d, p0/m, z0.d, z1.d
28; CHECK-NEXT:    ret
29  %mul = fmul <vscale x 2 x double> %a, %b
30  %sel = select <vscale x 2 x i1> %p, <vscale x 2 x double> %mul, <vscale x 2 x double> %a
31  ret <vscale x 2 x double> %sel
32}
33
34define <vscale x 8 x half> @vselect_fadd_f16(<vscale x 8 x i1> %p, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
35; CHECK-LABEL: vselect_fadd_f16:
36; CHECK:       // %bb.0:
37; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, z1.h
38; CHECK-NEXT:    ret
39  %add = fadd <vscale x 8 x half> %a, %b
40  %sel = select <vscale x 8 x i1> %p, <vscale x 8 x half> %add, <vscale x 8 x half> %a
41  ret <vscale x 8 x half> %sel
42}
43
44define <vscale x 4 x float> @vselect_fadd_f32(<vscale x 4 x i1> %p, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
45; CHECK-LABEL: vselect_fadd_f32:
46; CHECK:       // %bb.0:
47; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, z1.s
48; CHECK-NEXT:    ret
49  %add = fadd <vscale x 4 x float> %a, %b
50  %sel = select <vscale x 4 x i1> %p, <vscale x 4 x float> %add, <vscale x 4 x float> %a
51  ret <vscale x 4 x float> %sel
52}
53
54define <vscale x 2 x double> @vselect_fadd_f64(<vscale x 2 x i1> %p, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
55; CHECK-LABEL: vselect_fadd_f64:
56; CHECK:       // %bb.0:
57; CHECK-NEXT:    fadd z0.d, p0/m, z0.d, z1.d
58; CHECK-NEXT:    ret
59  %add = fadd <vscale x 2 x double> %a, %b
60  %sel = select <vscale x 2 x i1> %p, <vscale x 2 x double> %add, <vscale x 2 x double> %a
61  ret <vscale x 2 x double> %sel
62}
63
64define <vscale x 8 x half> @vselect_fsub_f16(<vscale x 8 x i1> %p, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
65; CHECK-LABEL: vselect_fsub_f16:
66; CHECK:       // %bb.0:
67; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, z1.h
68; CHECK-NEXT:    ret
69  %sub = fsub <vscale x 8 x half> %a, %b
70  %sel = select <vscale x 8 x i1> %p, <vscale x 8 x half> %sub, <vscale x 8 x half> %a
71  ret <vscale x 8 x half> %sel
72}
73
74define <vscale x 4 x float> @vselect_fsub_f32(<vscale x 4 x i1> %p, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
75; CHECK-LABEL: vselect_fsub_f32:
76; CHECK:       // %bb.0:
77; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, z1.s
78; CHECK-NEXT:    ret
79  %sub = fsub <vscale x 4 x float> %a, %b
80  %sel = select <vscale x 4 x i1> %p, <vscale x 4 x float> %sub, <vscale x 4 x float> %a
81  ret <vscale x 4 x float> %sel
82}
83
84define <vscale x 2 x double> @vselect_fsub_f64(<vscale x 2 x i1> %p, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
85; CHECK-LABEL: vselect_fsub_f64:
86; CHECK:       // %bb.0:
87; CHECK-NEXT:    fsub z0.d, p0/m, z0.d, z1.d
88; CHECK-NEXT:    ret
89  %sub = fsub <vscale x 2 x double> %a, %b
90  %sel = select <vscale x 2 x i1> %p, <vscale x 2 x double> %sub, <vscale x 2 x double> %a
91  ret <vscale x 2 x double> %sel
92}
93