Skip to content

Commit 09153db

Browse files
Add RUN line to show failure to match constant based splats.
1 parent 465e3ce commit 09153db

File tree

1 file changed

+44
-22
lines changed

1 file changed

+44
-22
lines changed

llvm/test/CodeGen/AArch64/complex-deinterleaving-splat-scalable.ll

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,54 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s --mattr=+sve -o - | FileCheck %s
2+
; RUN: llc < %s --mattr=+sve -o - | FileCheck %s -check-prefixes=CHECK,SHUFFLE_SPLAT
3+
; RUN: llc -use-constant-int-for-scalable-splat -use-constant-fp-for-scalable-splat < %s --mattr=+sve -o - | FileCheck %s -check-prefixes=CHECK,CONST_SPLAT
34

45
target triple = "aarch64"
56

67
; a[i] * b[i] * (11.0 + 3.0.i);
78
;
89
define <vscale x 4 x double> @complex_mul_const(<vscale x 4 x double> %a, <vscale x 4 x double> %b) {
9-
; CHECK-LABEL: complex_mul_const:
10-
; CHECK: // %bb.0: // %entry
11-
; CHECK-NEXT: movi v4.2d, #0000000000000000
12-
; CHECK-NEXT: movi v5.2d, #0000000000000000
13-
; CHECK-NEXT: ptrue p0.d
14-
; CHECK-NEXT: fmov z6.d, #3.00000000
15-
; CHECK-NEXT: fmov z7.d, #11.00000000
16-
; CHECK-NEXT: fcmla z4.d, p0/m, z0.d, z2.d, #0
17-
; CHECK-NEXT: fcmla z5.d, p0/m, z1.d, z3.d, #0
18-
; CHECK-NEXT: fcmla z4.d, p0/m, z0.d, z2.d, #90
19-
; CHECK-NEXT: movi v2.2d, #0000000000000000
20-
; CHECK-NEXT: fcmla z5.d, p0/m, z1.d, z3.d, #90
21-
; CHECK-NEXT: zip2 z1.d, z7.d, z6.d
22-
; CHECK-NEXT: movi v0.2d, #0000000000000000
23-
; CHECK-NEXT: zip1 z3.d, z7.d, z6.d
24-
; CHECK-NEXT: fcmla z2.d, p0/m, z5.d, z1.d, #0
25-
; CHECK-NEXT: fcmla z0.d, p0/m, z4.d, z3.d, #0
26-
; CHECK-NEXT: fcmla z2.d, p0/m, z5.d, z1.d, #90
27-
; CHECK-NEXT: fcmla z0.d, p0/m, z4.d, z3.d, #90
28-
; CHECK-NEXT: mov z1.d, z2.d
29-
; CHECK-NEXT: ret
10+
; SHUFFLE_SPLAT-LABEL: complex_mul_const:
11+
; SHUFFLE_SPLAT: // %bb.0: // %entry
12+
; SHUFFLE_SPLAT-NEXT: movi v4.2d, #0000000000000000
13+
; SHUFFLE_SPLAT-NEXT: movi v5.2d, #0000000000000000
14+
; SHUFFLE_SPLAT-NEXT: ptrue p0.d
15+
; SHUFFLE_SPLAT-NEXT: fmov z6.d, #3.00000000
16+
; SHUFFLE_SPLAT-NEXT: fmov z7.d, #11.00000000
17+
; SHUFFLE_SPLAT-NEXT: fcmla z4.d, p0/m, z0.d, z2.d, #0
18+
; SHUFFLE_SPLAT-NEXT: fcmla z5.d, p0/m, z1.d, z3.d, #0
19+
; SHUFFLE_SPLAT-NEXT: fcmla z4.d, p0/m, z0.d, z2.d, #90
20+
; SHUFFLE_SPLAT-NEXT: movi v2.2d, #0000000000000000
21+
; SHUFFLE_SPLAT-NEXT: fcmla z5.d, p0/m, z1.d, z3.d, #90
22+
; SHUFFLE_SPLAT-NEXT: zip2 z1.d, z7.d, z6.d
23+
; SHUFFLE_SPLAT-NEXT: movi v0.2d, #0000000000000000
24+
; SHUFFLE_SPLAT-NEXT: zip1 z3.d, z7.d, z6.d
25+
; SHUFFLE_SPLAT-NEXT: fcmla z2.d, p0/m, z5.d, z1.d, #0
26+
; SHUFFLE_SPLAT-NEXT: fcmla z0.d, p0/m, z4.d, z3.d, #0
27+
; SHUFFLE_SPLAT-NEXT: fcmla z2.d, p0/m, z5.d, z1.d, #90
28+
; SHUFFLE_SPLAT-NEXT: fcmla z0.d, p0/m, z4.d, z3.d, #90
29+
; SHUFFLE_SPLAT-NEXT: mov z1.d, z2.d
30+
; SHUFFLE_SPLAT-NEXT: ret
31+
;
32+
; CONST_SPLAT-LABEL: complex_mul_const:
33+
; CONST_SPLAT: // %bb.0: // %entry
34+
; CONST_SPLAT-NEXT: uzp1 z4.d, z2.d, z3.d
35+
; CONST_SPLAT-NEXT: uzp2 z5.d, z0.d, z1.d
36+
; CONST_SPLAT-NEXT: uzp2 z2.d, z2.d, z3.d
37+
; CONST_SPLAT-NEXT: uzp1 z0.d, z0.d, z1.d
38+
; CONST_SPLAT-NEXT: ptrue p0.d
39+
; CONST_SPLAT-NEXT: fmul z3.d, z4.d, z5.d
40+
; CONST_SPLAT-NEXT: fmul z1.d, z2.d, z5.d
41+
; CONST_SPLAT-NEXT: fmov z5.d, #11.00000000
42+
; CONST_SPLAT-NEXT: fmad z2.d, p0/m, z0.d, z3.d
43+
; CONST_SPLAT-NEXT: fmov z3.d, #3.00000000
44+
; CONST_SPLAT-NEXT: fnmsb z0.d, p0/m, z4.d, z1.d
45+
; CONST_SPLAT-NEXT: fmul z1.d, z2.d, z5.d
46+
; CONST_SPLAT-NEXT: fmul z2.d, z2.d, z3.d
47+
; CONST_SPLAT-NEXT: fmla z1.d, p0/m, z0.d, z3.d
48+
; CONST_SPLAT-NEXT: fnmls z2.d, p0/m, z0.d, z5.d
49+
; CONST_SPLAT-NEXT: zip1 z0.d, z2.d, z1.d
50+
; CONST_SPLAT-NEXT: zip2 z1.d, z2.d, z1.d
51+
; CONST_SPLAT-NEXT: ret
3052
entry:
3153
%strided.vec = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.vector.deinterleave2.nxv4f64(<vscale x 4 x double> %a)
3254
%0 = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } %strided.vec, 0

0 commit comments

Comments
 (0)