74 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s3#4# Verify register banks for intrinsics with known constraints. (E.g. all5# operands must be FPRs.6#7 8...9---10name: uaddlv_fpr11alignment: 412legalized: true13tracksRegLiveness: true14body: |15 bb.0:16 liveins: $q017 18 ; CHECK-LABEL: name: uaddlv_fpr19 ; CHECK: liveins: $q020 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: %copy:fpr(<16 x s8>) = COPY $q022 ; CHECK-NEXT: %intrin:fpr(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), %copy(<16 x s8>)23 ; CHECK-NEXT: $w0 = COPY %intrin(s32)24 ; CHECK-NEXT: RET_ReallyLR implicit $w025 %copy:_(<16 x s8>) = COPY $q026 %intrin:_(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), %copy(<16 x s8>)27 $w0 = COPY %intrin(s32)28 RET_ReallyLR implicit $w029 30...31---32name: uaddlv_fpr_load33alignment: 434legalized: true35tracksRegLiveness: true36body: |37 bb.0:38 liveins: $x039 ; CHECK-LABEL: name: uaddlv_fpr_load40 ; CHECK: liveins: $x041 ; CHECK-NEXT: {{ $}}42 ; CHECK-NEXT: %ptr:gpr(p0) = COPY $x043 ; CHECK-NEXT: %load:fpr(<2 x s32>) = G_LOAD %ptr(p0) :: (load (<2 x s32>))44 ; CHECK-NEXT: %intrin:fpr(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), %load(<2 x s32>)45 ; CHECK-NEXT: $w0 = COPY %intrin(s32)46 ; CHECK-NEXT: RET_ReallyLR implicit $w047 %ptr:_(p0) = COPY $x048 %load:_(<2 x s32>) = G_LOAD %ptr :: (load (<2 x s32>))49 %intrin:_(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), %load(<2 x s32>)50 $w0 = COPY %intrin(s32)51 RET_ReallyLR implicit $w052 53...54---55name: uaddlv_fpr_store56alignment: 457legalized: true58tracksRegLiveness: true59body: |60 bb.0:61 liveins: $x0, $x162 ; CHECK-LABEL: name: uaddlv_fpr_store63 ; CHECK: liveins: $x0, $x164 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: %copy:gpr(<2 x s32>) = COPY $x066 ; CHECK-NEXT: %ptr:gpr(p0) = COPY $x067 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<2 x s32>) = COPY %copy(<2 x s32>)68 ; CHECK-NEXT: %intrin:fpr(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), [[COPY]](<2 x s32>)69 ; CHECK-NEXT: G_STORE %intrin(s32), %ptr(p0) :: (store (s32))70 %copy:_(<2 x s32>) = COPY $x071 %ptr:_(p0) = COPY $x072 %intrin:_(s32) = G_INTRINSIC intrinsic(@llvm.aarch64.neon.uaddlv), %copy(<2 x s32>)73 G_STORE %intrin, %ptr :: (store (s32))74