155 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-lowering -global-isel -verify-machineinstrs %s -o - | FileCheck %s3 4---5name: v4s326legalized: true7body: |8 bb.0.entry:9 liveins: $q010 ; CHECK-LABEL: name: v4s3211 ; CHECK: liveins: $q012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: %v1:_(<4 x s32>) = COPY $q014 ; CHECK-NEXT: %unused:_(<2 x s32>), %unmerge:_(<2 x s32>) = G_UNMERGE_VALUES %v1(<4 x s32>)15 ; CHECK-NEXT: %fpext:_(<2 x s64>) = G_FPEXT %unmerge(<2 x s32>)16 ; CHECK-NEXT: $q0 = COPY %fpext(<2 x s64>)17 ; CHECK-NEXT: RET_ReallyLR implicit $q018 %v1:_(<4 x s32>) = COPY $q019 %implicit:_(<4 x s32>) = G_IMPLICIT_DEF20 %C:_(s32) = G_CONSTANT i32 821 %ext:_(<4 x s32>) = G_EXT %v1:_, %implicit:_, %C:_(s32)22 %unmerge:_(<2 x s32>), %unused:_(<2 x s32>) = G_UNMERGE_VALUES %ext:_(<4 x s32>)23 %fpext:_(<2 x s64>) = G_FPEXT %unmerge:_(<2 x s32>)24 $q0 = COPY %fpext25 RET_ReallyLR implicit $q026...27---28name: v8s1629legalized: true30body: |31 bb.0.entry:32 liveins: $q033 ; CHECK-LABEL: name: v8s1634 ; CHECK: liveins: $q035 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: %v1:_(<8 x s16>) = COPY $q037 ; CHECK-NEXT: %unused:_(<4 x s16>), %unmerge:_(<4 x s16>) = G_UNMERGE_VALUES %v1(<8 x s16>)38 ; CHECK-NEXT: %fpext:_(<4 x s32>) = G_FPEXT %unmerge(<4 x s16>)39 ; CHECK-NEXT: $q0 = COPY %fpext(<4 x s32>)40 ; CHECK-NEXT: RET_ReallyLR implicit $q041 %v1:_(<8 x s16>) = COPY $q042 %implicit:_(<8 x s16>) = G_IMPLICIT_DEF43 %C:_(s32) = G_CONSTANT i32 844 %ext:_(<8 x s16>) = G_EXT %v1:_, %implicit:_, %C:_(s32)45 %unmerge:_(<4 x s16>), %unused:_(<4 x s16>) = G_UNMERGE_VALUES %ext:_(<8 x s16>)46 %fpext:_(<4 x s32>) = G_FPEXT %unmerge:_(<4 x s16>)47 $q0 = COPY %fpext48 RET_ReallyLR implicit $q049...50---51name: v16s852legalized: true53body: |54 bb.0.entry:55 liveins: $q056 ; CHECK-LABEL: name: v16s857 ; CHECK: liveins: $q058 ; CHECK-NEXT: {{ $}}59 ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q060 ; CHECK-NEXT: %unused:_(<8 x s8>), %unmerge:_(<8 x s8>) = G_UNMERGE_VALUES %v1(<16 x s8>)61 ; CHECK-NEXT: %fpext:_(<8 x s16>) = G_FPEXT %unmerge(<8 x s8>)62 ; CHECK-NEXT: $q0 = COPY %fpext(<8 x s16>)63 ; CHECK-NEXT: RET_ReallyLR implicit $q064 %v1:_(<16 x s8>) = COPY $q065 %implicit:_(<16 x s8>) = G_IMPLICIT_DEF66 %C:_(s32) = G_CONSTANT i32 867 %ext:_(<16 x s8>) = G_EXT %v1:_, %implicit:_, %C:_(s32)68 %unmerge:_(<8 x s8>), %unused:_(<8 x s8>) = G_UNMERGE_VALUES %ext:_(<16 x s8>)69 %fpext:_(<8 x s16>) = G_FPEXT %unmerge:_(<8 x s8>)70 $q0 = COPY %fpext71 RET_ReallyLR implicit $q072...73---74name: skip_not_const75legalized: true76body: |77 bb.0.entry:78 liveins: $q0, $w079 ; CHECK-LABEL: name: skip_not_const80 ; CHECK: liveins: $q0, $w081 ; CHECK-NEXT: {{ $}}82 ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q083 ; CHECK-NEXT: %implicit:_(<16 x s8>) = G_IMPLICIT_DEF84 ; CHECK-NEXT: %C:_(s32) = COPY $w085 ; CHECK-NEXT: %ext:_(<16 x s8>) = G_EXT %v1, %implicit, %C(s32)86 ; CHECK-NEXT: %unmerge:_(<8 x s8>), %unused:_(<8 x s8>) = G_UNMERGE_VALUES %ext(<16 x s8>)87 ; CHECK-NEXT: %fpext:_(<8 x s16>) = G_FPEXT %unmerge(<8 x s8>)88 ; CHECK-NEXT: $q0 = COPY %fpext(<8 x s16>)89 ; CHECK-NEXT: RET_ReallyLR implicit $q090 %v1:_(<16 x s8>) = COPY $q091 %implicit:_(<16 x s8>) = G_IMPLICIT_DEF92 %C:_(s32) = COPY $w093 %ext:_(<16 x s8>) = G_EXT %v1:_, %implicit:_, %C:_(s32)94 %unmerge:_(<8 x s8>), %unused:_(<8 x s8>) = G_UNMERGE_VALUES %ext:_(<16 x s8>)95 %fpext:_(<8 x s16>) = G_FPEXT %unmerge:_(<8 x s8>)96 $q0 = COPY %fpext97 RET_ReallyLR implicit $q098...99---100name: skip_not_unused101legalized: true102body: |103 bb.0.entry:104 liveins: $q0105 ; CHECK-LABEL: name: skip_not_unused106 ; CHECK: liveins: $q0107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: %v1:_(<16 x s8>) = COPY $q0109 ; CHECK-NEXT: %implicit:_(<16 x s8>) = G_IMPLICIT_DEF110 ; CHECK-NEXT: %C:_(s32) = G_CONSTANT i32 8111 ; CHECK-NEXT: %ext:_(<16 x s8>) = G_EXT %v1, %implicit, %C(s32)112 ; CHECK-NEXT: %unmerge:_(<8 x s8>), %unused:_(<8 x s8>) = G_UNMERGE_VALUES %ext(<16 x s8>)113 ; CHECK-NEXT: %fpext:_(<8 x s16>) = G_FPEXT %unmerge(<8 x s8>)114 ; CHECK-NEXT: %fpext2:_(<8 x s16>) = G_FPEXT %unused(<8 x s8>)115 ; CHECK-NEXT: $q0 = COPY %fpext(<8 x s16>)116 ; CHECK-NEXT: $q1 = COPY %fpext2(<8 x s16>)117 ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1118 %v1:_(<16 x s8>) = COPY $q0119 %implicit:_(<16 x s8>) = G_IMPLICIT_DEF120 %C:_(s32) = G_CONSTANT i32 8121 %ext:_(<16 x s8>) = G_EXT %v1:_, %implicit:_, %C:_(s32)122 %unmerge:_(<8 x s8>), %unused:_(<8 x s8>) = G_UNMERGE_VALUES %ext:_(<16 x s8>)123 %fpext:_(<8 x s16>) = G_FPEXT %unmerge:_(<8 x s8>)124 %fpext2:_(<8 x s16>) = G_FPEXT %unused:_(<8 x s8>)125 $q0 = COPY %fpext126 $q1 = COPY %fpext2127 RET_ReallyLR implicit $q0, implicit $q1128...129---130name: skip_borders131legalized: true132body: |133 bb.0.entry:134 liveins: $q0135 ; CHECK-LABEL: name: skip_borders136 ; CHECK: liveins: $q0137 ; CHECK-NEXT: {{ $}}138 ; CHECK-NEXT: %v1:_(<4 x s32>) = COPY $q0139 ; CHECK-NEXT: %implicit:_(<4 x s32>) = G_IMPLICIT_DEF140 ; CHECK-NEXT: %C:_(s32) = G_CONSTANT i32 9141 ; CHECK-NEXT: %ext:_(<4 x s32>) = G_EXT %v1, %implicit, %C(s32)142 ; CHECK-NEXT: %unmerge:_(<2 x s32>), %unused:_(<2 x s32>) = G_UNMERGE_VALUES %ext(<4 x s32>)143 ; CHECK-NEXT: %fpext:_(<2 x s64>) = G_FPEXT %unmerge(<2 x s32>)144 ; CHECK-NEXT: $q0 = COPY %fpext(<2 x s64>)145 ; CHECK-NEXT: RET_ReallyLR implicit $q0146 %v1:_(<4 x s32>) = COPY $q0147 %implicit:_(<4 x s32>) = G_IMPLICIT_DEF148 %C:_(s32) = G_CONSTANT i32 9149 %ext:_(<4 x s32>) = G_EXT %v1:_, %implicit:_, %C:_(s32)150 %unmerge:_(<2 x s32>), %unused:_(<2 x s32>) = G_UNMERGE_VALUES %ext:_(<4 x s32>)151 %fpext:_(<2 x s64>) = G_FPEXT %unmerge:_(<2 x s32>)152 $q0 = COPY %fpext153 RET_ReallyLR implicit $q0154...155