brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 8c4988f Raw
128 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple aarch64-- -run-pass=legalizer %s -o - | FileCheck %s3 4---5name:            test_unmerge6body:             |7  bb.1:8    liveins: $w09    ; CHECK-LABEL: name: test_unmerge10    ; CHECK: liveins: $w011    ; CHECK-NEXT: {{  $}}12    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w013    ; CHECK-NEXT: $w0 = COPY [[COPY]](s32)14    %0:_(s32) = COPY $w015    %1:_(<4 x s32>) = G_BUILD_VECTOR %0(s32), %0(s32), %0(s32), %0(s32)16    %2:_(s32), %3:_(s32), %4:_(s32), %5:_(s32) = G_UNMERGE_VALUES %1(<4 x s32>)17    $w0 = COPY %2(s32)18...19 20---21name:            test_legal_const_ext22body:             |23  bb.1:24    liveins: $w025    ; CHECK-LABEL: name: test_legal_const_ext26    ; CHECK: liveins: $w027    ; CHECK-NEXT: {{  $}}28    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w029    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 030    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C]]31    ; CHECK-NEXT: $w0 = COPY [[ADD]](s32)32    %0:_(s32) = COPY $w033    %1:_(s1) = G_TRUNC %0(s32)34    %2:_(s1) = G_CONSTANT i1 235    %3:_(s1) = G_ADD %1(s1), %2(s1)36    %4:_(s32) = G_ANYEXT %3(s1)37    $w0 = COPY %4(s32)38...39 40# Check that the artifact combiner can get rid of the big41# vector type (4 x s64) by combining the G_UNMERGE_VALUES42# with the G_CONCAT_VECTORS and turning that into bitcast.43---44name:            concat_vectors_unmerge_to_bitcast45tracksRegLiveness: true46body:             |47  bb.0:48    liveins: $q0, $q149 50    ; CHECK-LABEL: name: concat_vectors_unmerge_to_bitcast51    ; CHECK: liveins: $q0, $q152    ; CHECK-NEXT: {{  $}}53    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q054    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q155    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s128) = G_BITCAST [[COPY]](<2 x s64>)56    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s128) = G_BITCAST [[COPY1]](<2 x s64>)57    ; CHECK-NEXT: $q0 = COPY [[BITCAST]](s128)58    ; CHECK-NEXT: $q1 = COPY [[BITCAST1]](s128)59    %0:_(<2 x s64>) = COPY $q060    %1:_(<2 x s64>) = COPY $q161    %2:_(<4 x s64>) = G_CONCAT_VECTORS %0(<2 x s64>), %1(<2 x s64>)62    %3:_(s128), %4:_(s128) = G_UNMERGE_VALUES %2(<4 x s64>)63    $q0 = COPY %3(s128)64    $q1 = COPY %4(s128)65...66 67# Check that the artifact combiner can get rid of the big68# vector type (4 x s64) by combining the G_UNMERGE_VALUES69# with the G_CONCAT_VECTORS and turning that into smaller70# 2x64-bit G_UNMERGE_VALUES.71---72name:            concat_vectors_unmerge_to_unmerge73tracksRegLiveness: true74body:             |75  bb.0:76    liveins: $q0, $q177 78    ; CHECK-LABEL: name: concat_vectors_unmerge_to_unmerge79    ; CHECK: liveins: $q0, $q180    ; CHECK-NEXT: {{  $}}81    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q082    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q183    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)84    ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)85    ; CHECK-NEXT: $x0 = COPY [[UV]](s64)86    ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)87    ; CHECK-NEXT: $x2 = COPY [[UV2]](s64)88    ; CHECK-NEXT: $x3 = COPY [[UV3]](s64)89    %0:_(<2 x s64>) = COPY $q090    %1:_(<2 x s64>) = COPY $q191    %2:_(<4 x s64>) = G_CONCAT_VECTORS %0(<2 x s64>), %1(<2 x s64>)92    %3:_(s64), %4:_(s64), %5:_(s64), %6:_(s64) = G_UNMERGE_VALUES %2(<4 x s64>)93    $x0 = COPY %3(s64)94    $x1 = COPY %4(s64)95    $x2 = COPY %5(s64)96    $x3 = COPY %6(s64)97...98---99name:            unmerge_merge_combine100tracksRegLiveness: true101body:             |102  bb.1:103    liveins: $x0104    ; CHECK-LABEL: name: unmerge_merge_combine105    ; CHECK: liveins: $x0106    ; CHECK-NEXT: {{  $}}107    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0108    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))109    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0110    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s128) = G_LOAD [[COPY]](p0) :: (load (s128))111    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[LOAD1]](s128)112    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[LOAD]], [[UV]]113    ; CHECK-NEXT: [[MUL1:%[0-9]+]]:_(s64) = G_MUL [[C]], [[UV]]114    ; CHECK-NEXT: [[MUL2:%[0-9]+]]:_(s64) = G_MUL [[LOAD]], [[UV1]]115    ; CHECK-NEXT: [[UMULH:%[0-9]+]]:_(s64) = G_UMULH [[LOAD]], [[UV]]116    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[MUL1]], [[MUL2]]117    ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s64) = G_ADD [[ADD]], [[UMULH]]118    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MUL]](s64), [[ADD1]](s64)119    ; CHECK-NEXT: $q0 = COPY [[MV]](s128)120    ; CHECK-NEXT: RET_ReallyLR121    %0:_(p0) = COPY $x0122    %1:_(s128) = G_ZEXTLOAD %0:_(p0) :: (load (s64))123    %2:_(s128) = G_LOAD %0:_(p0) :: (load (s128))124    %3:_(s128) = G_MUL %1:_, %2:_125    $q0 = COPY %3126    RET_ReallyLR127...128