llvm.org GIT mirror llvm / cba390a
[AArch64] Added vselect patterns with float and double types git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199242 91177308-0d34-0410-b5e6-96231b3b80d8 Ana Pazos 6 years ago
2 changed file(s) with 15 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
471471 def : Pat<(v8i16 (opnode (v8i16 VPR128:$src), VPR128:$Rn, VPR128:$Rm)),
472472 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
473473 def : Pat<(v2i64 (opnode (v2i64 VPR128:$src), VPR128:$Rn, VPR128:$Rm)),
474 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
475 def : Pat<(v2f64 (opnode (v2i64 VPR128:$src), VPR128:$Rn, VPR128:$Rm)),
476 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
477 def : Pat<(v4f32 (opnode (v4i32 VPR128:$src), VPR128:$Rn, VPR128:$Rm)),
474478 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
475479
476480 // Allow to match BSL instruction pattern with non-constant operand
219219 ret <2 x double> %vbsl3.i
220220 }
221221
222 define <2 x double> @bsl2xf64(<2 x i1> %v1, <2 x double> %v2, <2 x double> %v3) {
223 ;CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
224 %1 = select <2 x i1> %v1, <2 x double> %v2, <2 x double> %v3
225 ret <2 x double> %1
226 }
227
228 define <4 x float> @bsl4xf32(<4 x i1> %v1, <4 x float> %v2, <4 x float> %v3) {
229 ;CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
230 %1 = select <4 x i1> %v1, <4 x float> %v2, <4 x float> %v3
231 ret <4 x float> %1
232 }