Amara Emerson 511f7f5785 [AArch64][GlobalISel] Add support for s128 loads, stores, extracts, truncs.
We need to be able to load and store s128 for memcpy inlining, where we want to
generate Q register mem ops. Making these legal also requires that we add some
support in other instructions. Regbankselect should also know about these since
they have no GPR register class that can hold them, so need special handling to
live on the FPR bank.

Differential Revision: https://reviews.llvm.org/D65166

llvm-svn: 366857
2019-07-23 22:05:13 +00:00

29 lines
885 B
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-unknown-unknown -verify-machineinstrs -O0 -run-pass=instruction-select %s -o - | FileCheck %s
...
---
name: extract_64_128
legalized: true
regBankSelected: true
tracksRegLiveness: true
body: |
bb.0:
liveins: $q0
; CHECK-LABEL: name: extract_64_128
; CHECK: liveins: $q0
; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub
; CHECK: [[CPYi64_:%[0-9]+]]:fpr64 = CPYi64 [[COPY]], 1
; CHECK: $d3 = COPY [[COPY1]]
; CHECK: $d4 = COPY [[CPYi64_]]
; CHECK: RET_ReallyLR implicit $d3
%0:fpr(s128) = COPY $q0
%2:fpr(s64) = G_EXTRACT %0(s128), 0
%3:fpr(s64) = G_EXTRACT %0(s128), 64
$d3 = COPY %2(s64)
$d4 = COPY %3(s64)
RET_ReallyLR implicit $d3
...