1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64 -run-pass=aarch64-postlegalizer-lowering -verify-machineinstrs %s -o - | FileCheck %s 3# RUN: llc -mtriple=aarch64 -global-isel -start-before=aarch64-postlegalizer-lowering -stop-after=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=SELECTED 4 5--- 6name: duplane64 7alignment: 4 8legalized: true 9tracksRegLiveness: true 10body: | 11 bb.1.entry: 12 liveins: $q0 13 14 ; CHECK-LABEL: name: duplane64 15 ; CHECK: liveins: $q0 16 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0 17 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 18 ; CHECK: [[DUPLANE64_:%[0-9]+]]:_(<2 x s64>) = G_DUPLANE64 [[COPY]], [[C]](s64) 19 ; CHECK: $q0 = COPY [[DUPLANE64_]](<2 x s64>) 20 ; CHECK: RET_ReallyLR implicit $q0 21 ; SELECTED-LABEL: name: duplane64 22 ; SELECTED: liveins: $q0 23 ; SELECTED: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 24 ; SELECTED: [[DUPv2i64lane:%[0-9]+]]:fpr128 = DUPv2i64lane [[COPY]], 0 25 ; SELECTED: $q0 = COPY [[DUPv2i64lane]] 26 ; SELECTED: RET_ReallyLR implicit $q0 27 %1:_(<2 x s64>) = COPY $q0 28 %2:_(<2 x s64>) = G_IMPLICIT_DEF 29 %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %1(<2 x s64>), %2, shufflemask(0, 0) 30 $q0 = COPY %4(<2 x s64>) 31 RET_ReallyLR implicit $q0 32 33... 34--- 35name: duplane32 36alignment: 4 37legalized: true 38tracksRegLiveness: true 39body: | 40 bb.1.entry: 41 liveins: $q0 42 43 ; CHECK-LABEL: name: duplane32 44 ; CHECK: liveins: $q0 45 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 46 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 47 ; CHECK: [[DUPLANE32_:%[0-9]+]]:_(<4 x s32>) = G_DUPLANE32 [[COPY]], [[C]](s64) 48 ; CHECK: $q0 = COPY [[DUPLANE32_]](<4 x s32>) 49 ; CHECK: RET_ReallyLR implicit $q0 50 ; SELECTED-LABEL: name: duplane32 51 ; SELECTED: liveins: $q0 52 ; SELECTED: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 53 ; SELECTED: [[DUPv4i32lane:%[0-9]+]]:fpr128 = DUPv4i32lane [[COPY]], 0 54 ; SELECTED: $q0 = COPY [[DUPv4i32lane]] 55 ; SELECTED: RET_ReallyLR implicit $q0 56 %1:_(<4 x s32>) = COPY $q0 57 %2:_(<4 x s32>) = G_IMPLICIT_DEF 58 %4:_(<4 x s32>) = G_SHUFFLE_VECTOR %1(<4 x s32>), %2, shufflemask(0, 0, 0, 0) 59 $q0 = COPY %4(<4 x s32>) 60 RET_ReallyLR implicit $q0 61 62... 63--- 64name: duplane16 65alignment: 4 66legalized: true 67tracksRegLiveness: true 68body: | 69 bb.1.entry: 70 liveins: $q0 71 72 ; CHECK-LABEL: name: duplane16 73 ; CHECK: liveins: $q0 74 ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0 75 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 76 ; CHECK: [[DUPLANE16_:%[0-9]+]]:_(<8 x s16>) = G_DUPLANE16 [[COPY]], [[C]](s64) 77 ; CHECK: $q0 = COPY [[DUPLANE16_]](<8 x s16>) 78 ; CHECK: RET_ReallyLR implicit $q0 79 ; SELECTED-LABEL: name: duplane16 80 ; SELECTED: liveins: $q0 81 ; SELECTED: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 82 ; SELECTED: [[DUPv8i16lane:%[0-9]+]]:fpr128 = DUPv8i16lane [[COPY]], 0 83 ; SELECTED: $q0 = COPY [[DUPv8i16lane]] 84 ; SELECTED: RET_ReallyLR implicit $q0 85 %1:_(<8 x s16>) = COPY $q0 86 %2:_(<8 x s16>) = G_IMPLICIT_DEF 87 %4:_(<8 x s16>) = G_SHUFFLE_VECTOR %1(<8 x s16>), %2, shufflemask(0, 0, 0, 0, 0, 0, 0, 0) 88 $q0 = COPY %4(<8 x s16>) 89 RET_ReallyLR implicit $q0 90 91... 92--- 93name: duplane8 94alignment: 4 95legalized: true 96tracksRegLiveness: true 97body: | 98 bb.1.entry: 99 liveins: $q0 100 101 ; CHECK-LABEL: name: duplane8 102 ; CHECK: liveins: $q0 103 ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0 104 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 105 ; CHECK: [[DUPLANE8_:%[0-9]+]]:_(<16 x s8>) = G_DUPLANE8 [[COPY]], [[C]](s64) 106 ; CHECK: $q0 = COPY [[DUPLANE8_]](<16 x s8>) 107 ; CHECK: RET_ReallyLR implicit $q0 108 ; SELECTED-LABEL: name: duplane8 109 ; SELECTED: liveins: $q0 110 ; SELECTED: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 111 ; SELECTED: [[DUPv16i8lane:%[0-9]+]]:fpr128 = DUPv16i8lane [[COPY]], 0 112 ; SELECTED: $q0 = COPY [[DUPv16i8lane]] 113 ; SELECTED: RET_ReallyLR implicit $q0 114 %1:_(<16 x s8>) = COPY $q0 115 %2:_(<16 x s8>) = G_IMPLICIT_DEF 116 %4:_(<16 x s8>) = G_SHUFFLE_VECTOR %1(<16 x s8>), %2, shufflemask(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 117 $q0 = COPY %4(<16 x s8>) 118 RET_ReallyLR implicit $q0 119 120... 121