150 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - -mtriple=aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s3---4name: full_extracts_from_build_vector5alignment: 46tracksRegLiveness: true7liveins:8 - { reg: '$x0' }9 - { reg: '$x1' }10frameInfo:11 maxAlignment: 112 maxCallFrameSize: 013machineFunctionInfo: {}14body: |15 bb.0:16 liveins: $x0, $x117 18 ; CHECK-LABEL: name: full_extracts_from_build_vector19 ; CHECK: liveins: $x0, $x120 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: %arg1:_(s64) = COPY $x022 ; CHECK-NEXT: %arg2:_(s64) = COPY $x123 ; CHECK-NEXT: $x0 = COPY %arg1(s64)24 ; CHECK-NEXT: $x1 = COPY %arg2(s64)25 ; CHECK-NEXT: RET_ReallyLR implicit $x026 %arg1:_(s64) = COPY $x027 %arg2:_(s64) = COPY $x128 %zero:_(s64) = G_CONSTANT i64 029 %one:_(s64) = G_CONSTANT i64 130 %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)31 %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)32 %extract2:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %one(s64)33 $x0 = COPY %extract(s64)34 $x1 = COPY %extract2(s64)35 RET_ReallyLR implicit $x036 37...38---39name: full_extracts_from_build_vector_other_use40alignment: 441tracksRegLiveness: true42liveins:43 - { reg: '$x0' }44 - { reg: '$x1' }45frameInfo:46 maxAlignment: 147 maxCallFrameSize: 048machineFunctionInfo: {}49body: |50 bb.0:51 liveins: $x0, $x152 53 ; CHECK-LABEL: name: full_extracts_from_build_vector_other_use54 ; CHECK: liveins: $x0, $x155 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: %arg1:_(s64) = COPY $x057 ; CHECK-NEXT: %arg2:_(s64) = COPY $x158 ; CHECK-NEXT: %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)59 ; CHECK-NEXT: $x0 = COPY %arg1(s64)60 ; CHECK-NEXT: $x1 = COPY %arg2(s64)61 ; CHECK-NEXT: $q0 = COPY %bv(<2 x s64>)62 ; CHECK-NEXT: RET_ReallyLR implicit $x063 %arg1:_(s64) = COPY $x064 %arg2:_(s64) = COPY $x165 %zero:_(s64) = G_CONSTANT i64 066 %one:_(s64) = G_CONSTANT i64 167 %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)68 %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)69 %extract2:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %one(s64)70 $x0 = COPY %extract(s64)71 $x1 = COPY %extract2(s64)72 $q0 = COPY %bv(<2 x s64>)73 RET_ReallyLR implicit $x074 75...76---77name: partial_extracts_from_build_vector_multiple_per_elt78alignment: 479tracksRegLiveness: true80liveins:81 - { reg: '$x0' }82 - { reg: '$x1' }83frameInfo:84 maxAlignment: 185 maxCallFrameSize: 086machineFunctionInfo: {}87body: |88 bb.0:89 liveins: $x0, $x190 91 ; CHECK-LABEL: name: partial_extracts_from_build_vector_multiple_per_elt92 ; CHECK: liveins: $x0, $x193 ; CHECK-NEXT: {{ $}}94 ; CHECK-NEXT: %arg1:_(s64) = COPY $x095 ; CHECK-NEXT: %arg2:_(s64) = COPY $x196 ; CHECK-NEXT: $x0 = COPY %arg1(s64)97 ; CHECK-NEXT: $x1 = COPY %arg2(s64)98 ; CHECK-NEXT: $x2 = COPY %arg2(s64)99 ; CHECK-NEXT: RET_ReallyLR implicit $x0100 %arg1:_(s64) = COPY $x0101 %arg2:_(s64) = COPY $x1102 %zero:_(s64) = G_CONSTANT i64 0103 %one:_(s64) = G_CONSTANT i64 1104 %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)105 %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)106 %extract2:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %one(s64)107 %extract3:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %one(s64)108 $x0 = COPY %extract(s64)109 $x1 = COPY %extract2(s64)110 $x2 = COPY %extract3(s64)111 RET_ReallyLR implicit $x0112 113...114---115name: full_extracts_from_build_vector_idx_out_of_range116alignment: 4117tracksRegLiveness: true118liveins:119 - { reg: '$x0' }120 - { reg: '$x1' }121frameInfo:122 maxAlignment: 1123 maxCallFrameSize: 0124machineFunctionInfo: {}125body: |126 bb.0:127 liveins: $x0, $x1128 129 ; CHECK-LABEL: name: full_extracts_from_build_vector_idx_out_of_range130 ; CHECK: liveins: $x0, $x1131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: %arg1:_(s64) = COPY $x0133 ; CHECK-NEXT: %extract2:_(s64) = G_IMPLICIT_DEF134 ; CHECK-NEXT: $x0 = COPY %arg1(s64)135 ; CHECK-NEXT: $x1 = COPY %extract2(s64)136 ; CHECK-NEXT: RET_ReallyLR implicit $x0137 %arg1:_(s64) = COPY $x0138 %arg2:_(s64) = COPY $x1139 %zero:_(s64) = G_CONSTANT i64 0140 %one:_(s64) = G_CONSTANT i64 1141 %two:_(s64) = G_CONSTANT i64 2142 %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)143 %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)144 %extract2:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %two(s64)145 $x0 = COPY %extract(s64)146 $x1 = COPY %extract2(s64)147 RET_ReallyLR implicit $x0148 149...150