Skip to content

Commit d828d2a

Browse files
Rework test & add to existing
1 parent ca386e1 commit d828d2a

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

llvm/test/CodeGen/AArch64/GlobalISel/legalize-fpext.mir

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,133 @@ body: |
3232
RET_ReallyLR
3333
3434
...
35+
36+
---
37+
name: fpext_f16_f64
38+
body: |
39+
bb.0:
40+
liveins: $h0
41+
; CHECK-LABEL: name: fpext_f16_f64
42+
; CHECK: liveins: $h0
43+
; CHECK-NEXT: {{ $}}
44+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
45+
; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[COPY]](s16)
46+
; CHECK-NEXT: $d0 = COPY [[FPEXT]](s64)
47+
; CHECK-NEXT: RET_ReallyLR implicit $d0
48+
%0:_(s16) = COPY $h0
49+
%1:_(s64) = G_FPEXT %0(s16)
50+
$d0 = COPY %1(s64)
51+
RET_ReallyLR implicit $d0
52+
...
53+
54+
---
55+
name: fpext_v2f16_v2f64
56+
body: |
57+
bb.0:
58+
liveins: $d0
59+
60+
; CHECK-LABEL: name: fpext_v2f16_v2f64
61+
; CHECK: liveins: $d0
62+
; CHECK-NEXT: {{ $}}
63+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
64+
; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)
65+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[FPEXT]](<4 x s32>)
66+
; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV]](<2 x s32>)
67+
; CHECK-NEXT: $q0 = COPY [[FPEXT1]](<2 x s64>)
68+
; CHECK-NEXT: RET_ReallyLR implicit $q0
69+
%1:_(<4 x s16>) = COPY $d0
70+
%0:_(<2 x s16>), %2:_(<2 x s16>) = G_UNMERGE_VALUES %1(<4 x s16>)
71+
%3:_(<2 x s64>) = G_FPEXT %0(<2 x s16>)
72+
$q0 = COPY %3(<2 x s64>)
73+
RET_ReallyLR implicit $q0
74+
...
75+
76+
---
77+
name: fpext_v3f16_v3f64
78+
body: |
79+
bb.0:
80+
liveins: $d0
81+
82+
; CHECK-LABEL: name: fpext_v3f16_v3f64
83+
; CHECK: liveins: $d0
84+
; CHECK-NEXT: {{ $}}
85+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
86+
; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)
87+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[FPEXT]](<4 x s32>)
88+
; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV]](<2 x s32>)
89+
; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV1]](<2 x s32>)
90+
; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[FPEXT1]](<2 x s64>)
91+
; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[FPEXT2]](<2 x s64>)
92+
; CHECK-NEXT: $d0 = COPY [[UV2]](s64)
93+
; CHECK-NEXT: $d1 = COPY [[UV3]](s64)
94+
; CHECK-NEXT: $d2 = COPY [[UV4]](s64)
95+
; CHECK-NEXT: RET_ReallyLR implicit $d0, implicit $d1, implicit $d2
96+
%1:_(<4 x s16>) = COPY $d0
97+
%2:_(s16), %3:_(s16), %4:_(s16), %5:_(s16) = G_UNMERGE_VALUES %1(<4 x s16>)
98+
%0:_(<3 x s16>) = G_BUILD_VECTOR %2(s16), %3(s16), %4(s16)
99+
%6:_(<3 x s64>) = G_FPEXT %0(<3 x s16>)
100+
%7:_(s64), %8:_(s64), %9:_(s64) = G_UNMERGE_VALUES %6(<3 x s64>)
101+
$d0 = COPY %7(s64)
102+
$d1 = COPY %8(s64)
103+
$d2 = COPY %9(s64)
104+
RET_ReallyLR implicit $d0, implicit $d1, implicit $d2
105+
...
106+
107+
---
108+
name: fpext_v4f16_v4f64
109+
body: |
110+
bb.0:
111+
liveins: $d0
112+
113+
; CHECK-LABEL: name: fpext_v4f16_v4f64
114+
; CHECK: liveins: $d0
115+
; CHECK-NEXT: {{ $}}
116+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
117+
; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)
118+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[FPEXT]](<4 x s32>)
119+
; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV]](<2 x s32>)
120+
; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV1]](<2 x s32>)
121+
; CHECK-NEXT: $q0 = COPY [[FPEXT1]](<2 x s64>)
122+
; CHECK-NEXT: $q1 = COPY [[FPEXT2]](<2 x s64>)
123+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
124+
%0:_(<4 x s16>) = COPY $d0
125+
%1:_(<4 x s64>) = G_FPEXT %0(<4 x s16>)
126+
%2:_(<2 x s64>), %3:_(<2 x s64>) = G_UNMERGE_VALUES %1(<4 x s64>)
127+
$q0 = COPY %2(<2 x s64>)
128+
$q1 = COPY %3(<2 x s64>)
129+
RET_ReallyLR implicit $q0, implicit $q1
130+
...
131+
132+
---
133+
name: fpext_v8f16_v8f64
134+
body: |
135+
bb.0:
136+
liveins: $q0
137+
138+
; CHECK-LABEL: name: fpext_v8f16_v8f64
139+
; CHECK: liveins: $q0
140+
; CHECK-NEXT: {{ $}}
141+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
142+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s16>), [[UV1:%[0-9]+]]:_(<4 x s16>) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)
143+
; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV]](<4 x s16>)
144+
; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV1]](<4 x s16>)
145+
; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[FPEXT]](<4 x s32>)
146+
; CHECK-NEXT: [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[FPEXT1]](<4 x s32>)
147+
; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV2]](<2 x s32>)
148+
; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV3]](<2 x s32>)
149+
; CHECK-NEXT: [[FPEXT4:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV4]](<2 x s32>)
150+
; CHECK-NEXT: [[FPEXT5:%[0-9]+]]:_(<2 x s64>) = G_FPEXT [[UV5]](<2 x s32>)
151+
; CHECK-NEXT: $q0 = COPY [[FPEXT2]](<2 x s64>)
152+
; CHECK-NEXT: $q1 = COPY [[FPEXT3]](<2 x s64>)
153+
; CHECK-NEXT: $q2 = COPY [[FPEXT4]](<2 x s64>)
154+
; CHECK-NEXT: $q3 = COPY [[FPEXT5]](<2 x s64>)
155+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1, implicit $q2, implicit $q3
156+
%0:_(<8 x s16>) = COPY $q0
157+
%1:_(<8 x s64>) = G_FPEXT %0(<8 x s16>)
158+
%2:_(<2 x s64>), %3:_(<2 x s64>), %4:_(<2 x s64>), %5:_(<2 x s64>) = G_UNMERGE_VALUES %1(<8 x s64>)
159+
$q0 = COPY %2(<2 x s64>)
160+
$q1 = COPY %3(<2 x s64>)
161+
$q2 = COPY %4(<2 x s64>)
162+
$q3 = COPY %5(<2 x s64>)
163+
RET_ReallyLR implicit $q0, implicit $q1, implicit $q2, implicit $q3
164+
...

0 commit comments

Comments
 (0)