Skip to content

Commit 13fc5dc

Browse files
Use tablegen for matching
1 parent 6abe127 commit 13fc5dc

File tree

3 files changed

+24
-44
lines changed

3 files changed

+24
-44
lines changed

llvm/lib/Target/AArch64/AArch64InstrGISel.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ def : GINodeEquiv<G_EXTRACT_VECTOR_ELT, vector_extract>;
290290

291291
def : GINodeEquiv<G_AARCH64_PREFETCH, AArch64Prefetch>;
292292

293+
def : GINodeEquiv<G_FPTRUNC_ODD, AArch64fcvtxn_n>;
294+
293295
// These are patterns that we only use for GlobalISel via the importer.
294296
def : Pat<(f32 (fadd (vector_extract (v2f32 FPR64:$Rn), (i64 0)),
295297
(vector_extract (v2f32 FPR64:$Rn), (i64 1)))),

llvm/test/CodeGen/AArch64/fp16-v8-instructions.ll

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -176,45 +176,15 @@ define <8 x half> @s_to_h(<8 x float> %a) {
176176
}
177177

178178
define <8 x half> @d_to_h(<8 x double> %a) {
179-
; CHECK-CVT-SD-LABEL: d_to_h:
180-
; CHECK-CVT-SD: // %bb.0:
181-
; CHECK-CVT-SD-NEXT: fcvtxn v0.2s, v0.2d
182-
; CHECK-CVT-SD-NEXT: fcvtxn v2.2s, v2.2d
183-
; CHECK-CVT-SD-NEXT: fcvtxn2 v0.4s, v1.2d
184-
; CHECK-CVT-SD-NEXT: fcvtxn2 v2.4s, v3.2d
185-
; CHECK-CVT-SD-NEXT: fcvtn v0.4h, v0.4s
186-
; CHECK-CVT-SD-NEXT: fcvtn2 v0.8h, v2.4s
187-
; CHECK-CVT-SD-NEXT: ret
188-
;
189-
; CHECK-FP16-SD-LABEL: d_to_h:
190-
; CHECK-FP16-SD: // %bb.0:
191-
; CHECK-FP16-SD-NEXT: fcvtxn v0.2s, v0.2d
192-
; CHECK-FP16-SD-NEXT: fcvtxn v2.2s, v2.2d
193-
; CHECK-FP16-SD-NEXT: fcvtxn2 v0.4s, v1.2d
194-
; CHECK-FP16-SD-NEXT: fcvtxn2 v2.4s, v3.2d
195-
; CHECK-FP16-SD-NEXT: fcvtn v0.4h, v0.4s
196-
; CHECK-FP16-SD-NEXT: fcvtn2 v0.8h, v2.4s
197-
; CHECK-FP16-SD-NEXT: ret
198-
;
199-
; CHECK-CVT-GI-LABEL: d_to_h:
200-
; CHECK-CVT-GI: // %bb.0:
201-
; CHECK-CVT-GI-NEXT: fcvtxn v0.2s, v0.2d
202-
; CHECK-CVT-GI-NEXT: fcvtxn2 v0.4s, v1.2d
203-
; CHECK-CVT-GI-NEXT: fcvtxn v1.2s, v2.2d
204-
; CHECK-CVT-GI-NEXT: fcvtn v0.4h, v0.4s
205-
; CHECK-CVT-GI-NEXT: fcvtxn2 v1.4s, v3.2d
206-
; CHECK-CVT-GI-NEXT: fcvtn2 v0.8h, v1.4s
207-
; CHECK-CVT-GI-NEXT: ret
208-
;
209-
; CHECK-FP16-GI-LABEL: d_to_h:
210-
; CHECK-FP16-GI: // %bb.0:
211-
; CHECK-FP16-GI-NEXT: fcvtxn v0.2s, v0.2d
212-
; CHECK-FP16-GI-NEXT: fcvtxn2 v0.4s, v1.2d
213-
; CHECK-FP16-GI-NEXT: fcvtxn v1.2s, v2.2d
214-
; CHECK-FP16-GI-NEXT: fcvtn v0.4h, v0.4s
215-
; CHECK-FP16-GI-NEXT: fcvtxn2 v1.4s, v3.2d
216-
; CHECK-FP16-GI-NEXT: fcvtn2 v0.8h, v1.4s
217-
; CHECK-FP16-GI-NEXT: ret
179+
; CHECK-LABEL: d_to_h:
180+
; CHECK: // %bb.0:
181+
; CHECK-NEXT: fcvtxn v0.2s, v0.2d
182+
; CHECK-NEXT: fcvtxn v2.2s, v2.2d
183+
; CHECK-NEXT: fcvtxn2 v0.4s, v1.2d
184+
; CHECK-NEXT: fcvtxn2 v2.4s, v3.2d
185+
; CHECK-NEXT: fcvtn v0.4h, v0.4s
186+
; CHECK-NEXT: fcvtn2 v0.8h, v2.4s
187+
; CHECK-NEXT: ret
218188
%1 = fptrunc <8 x double> %a to <8 x half>
219189
ret <8 x half> %1
220190
}

llvm/test/CodeGen/AArch64/fptrunc.ll

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,19 @@ entry:
277277
}
278278

279279
define <2 x half> @fptrunc_v2f64_v2f16(<2 x double> %a) {
280-
; CHECK-LABEL: fptrunc_v2f64_v2f16:
281-
; CHECK: // %bb.0: // %entry
282-
; CHECK-NEXT: fcvtxn v0.2s, v0.2d
283-
; CHECK-NEXT: fcvtn v0.4h, v0.4s
284-
; CHECK-NEXT: ret
280+
; CHECK-SD-LABEL: fptrunc_v2f64_v2f16:
281+
; CHECK-SD: // %bb.0: // %entry
282+
; CHECK-SD-NEXT: fcvtxn v0.2s, v0.2d
283+
; CHECK-SD-NEXT: fcvtn v0.4h, v0.4s
284+
; CHECK-SD-NEXT: ret
285+
;
286+
; CHECK-GI-LABEL: fptrunc_v2f64_v2f16:
287+
; CHECK-GI: // %bb.0: // %entry
288+
; CHECK-GI-NEXT: fcvtxn v0.2s, v0.2d
289+
; CHECK-GI-NEXT: mov v1.s[0], v0.s[0]
290+
; CHECK-GI-NEXT: mov v1.s[1], v0.s[1]
291+
; CHECK-GI-NEXT: fcvtn v0.4h, v1.4s
292+
; CHECK-GI-NEXT: ret
285293
entry:
286294
%c = fptrunc <2 x double> %a to <2 x half>
287295
ret <2 x half> %c

0 commit comments

Comments
 (0)