195 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3---4name: f64_faddp5alignment: 46legalized: true7tracksRegLiveness: true8liveins:9 - { reg: '$q0' }10body: |11 bb.1:12 liveins: $q013 14 ; CHECK-LABEL: name: f64_faddp15 ; CHECK: liveins: $q016 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q018 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 019 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C]](s64)20 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 121 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C1]](s64)22 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[EVEC]], [[EVEC1]]23 ; CHECK-NEXT: $d0 = COPY [[FADD]](s64)24 ; CHECK-NEXT: RET_ReallyLR implicit $d025 %0:_(<2 x s64>) = COPY $q026 %2:_(<2 x s64>) = G_IMPLICIT_DEF27 %5:_(s64) = G_CONSTANT i64 028 %1:_(<2 x s64>) = G_SHUFFLE_VECTOR %0(<2 x s64>), %2, shufflemask(1, undef)29 %3:_(<2 x s64>) = G_FADD %1, %030 %4:_(s64) = G_EXTRACT_VECTOR_ELT %3(<2 x s64>), %5(s64)31 $d0 = COPY %4(s64)32 RET_ReallyLR implicit $d033 34...35---36name: f64_faddp_commuted37alignment: 438legalized: true39tracksRegLiveness: true40liveins:41 - { reg: '$q0' }42body: |43 bb.1:44 liveins: $q045 46 ; CHECK-LABEL: name: f64_faddp_commuted47 ; CHECK: liveins: $q048 ; CHECK-NEXT: {{ $}}49 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q050 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 051 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C]](s64)52 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 153 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C1]](s64)54 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[EVEC]], [[EVEC1]]55 ; CHECK-NEXT: $d0 = COPY [[FADD]](s64)56 ; CHECK-NEXT: RET_ReallyLR implicit $d057 %0:_(<2 x s64>) = COPY $q058 %2:_(<2 x s64>) = G_IMPLICIT_DEF59 %5:_(s64) = G_CONSTANT i64 060 %1:_(<2 x s64>) = G_SHUFFLE_VECTOR %0(<2 x s64>), %2, shufflemask(1, undef)61 %3:_(<2 x s64>) = G_FADD %0, %162 %4:_(s64) = G_EXTRACT_VECTOR_ELT %3(<2 x s64>), %5(s64)63 $d0 = COPY %4(s64)64 RET_ReallyLR implicit $d065 66...67---68name: f32_faddp69alignment: 470legalized: true71tracksRegLiveness: true72liveins:73 - { reg: '$d0' }74body: |75 bb.1:76 liveins: $d077 78 ; CHECK-LABEL: name: f32_faddp79 ; CHECK: liveins: $d080 ; CHECK-NEXT: {{ $}}81 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d082 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 083 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s32>), [[C]](s64)84 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 185 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s32>), [[C1]](s64)86 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[EVEC]], [[EVEC1]]87 ; CHECK-NEXT: $s0 = COPY [[FADD]](s32)88 ; CHECK-NEXT: RET_ReallyLR implicit $s089 %0:_(<2 x s32>) = COPY $d090 %2:_(<2 x s32>) = G_IMPLICIT_DEF91 %5:_(s64) = G_CONSTANT i64 092 %1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1, undef)93 %3:_(<2 x s32>) = G_FADD %1, %094 %4:_(s32) = G_EXTRACT_VECTOR_ELT %3(<2 x s32>), %5(s64)95 $s0 = COPY %4(s32)96 RET_ReallyLR implicit $s097 98...99---100name: f32_faddp_commuted101alignment: 4102legalized: true103tracksRegLiveness: true104liveins:105 - { reg: '$d0' }106body: |107 bb.1:108 liveins: $d0109 110 ; CHECK-LABEL: name: f32_faddp_commuted111 ; CHECK: liveins: $d0112 ; CHECK-NEXT: {{ $}}113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0114 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0115 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s32>), [[C]](s64)116 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1117 ; CHECK-NEXT: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s32>), [[C1]](s64)118 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[EVEC]], [[EVEC1]]119 ; CHECK-NEXT: $s0 = COPY [[FADD]](s32)120 ; CHECK-NEXT: RET_ReallyLR implicit $s0121 %0:_(<2 x s32>) = COPY $d0122 %2:_(<2 x s32>) = G_IMPLICIT_DEF123 %5:_(s64) = G_CONSTANT i64 0124 %1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1, undef)125 %3:_(<2 x s32>) = G_FADD %0, %1126 %4:_(s32) = G_EXTRACT_VECTOR_ELT %3(<2 x s32>), %5(s64)127 $s0 = COPY %4(s32)128 RET_ReallyLR implicit $s0129 130...131---132name: wrong_extract_idx133alignment: 4134legalized: true135tracksRegLiveness: true136liveins:137 - { reg: '$q0' }138body: |139 bb.1:140 liveins: $q0141 142 ; CHECK-LABEL: name: wrong_extract_idx143 ; CHECK: liveins: $q0144 ; CHECK-NEXT: {{ $}}145 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0146 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF147 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1148 ; CHECK-NEXT: [[SHUF:%[0-9]+]]:_(<2 x s64>) = G_SHUFFLE_VECTOR [[COPY]](<2 x s64>), [[DEF]], shufflemask(1, undef)149 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(<2 x s64>) = G_FADD [[SHUF]], [[COPY]]150 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[FADD]](<2 x s64>), [[C]](s64)151 ; CHECK-NEXT: $d0 = COPY [[EVEC]](s64)152 ; CHECK-NEXT: RET_ReallyLR implicit $d0153 %0:_(<2 x s64>) = COPY $q0154 %2:_(<2 x s64>) = G_IMPLICIT_DEF155 %5:_(s64) = G_CONSTANT i64 1156 %1:_(<2 x s64>) = G_SHUFFLE_VECTOR %0(<2 x s64>), %2, shufflemask(1, undef)157 %3:_(<2 x s64>) = G_FADD %1, %0158 %4:_(s64) = G_EXTRACT_VECTOR_ELT %3(<2 x s64>), %5(s64)159 $d0 = COPY %4(s64)160 RET_ReallyLR implicit $d0161 162...163---164name: wrong_shuffle_mask165alignment: 4166legalized: true167tracksRegLiveness: true168liveins:169 - { reg: '$q0' }170body: |171 bb.1:172 liveins: $q0173 174 ; CHECK-LABEL: name: wrong_shuffle_mask175 ; CHECK: liveins: $q0176 ; CHECK-NEXT: {{ $}}177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0178 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF179 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0180 ; CHECK-NEXT: [[SHUF:%[0-9]+]]:_(<2 x s64>) = G_SHUFFLE_VECTOR [[COPY]](<2 x s64>), [[DEF]], shufflemask(0, undef)181 ; CHECK-NEXT: [[FADD:%[0-9]+]]:_(<2 x s64>) = G_FADD [[SHUF]], [[COPY]]182 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[FADD]](<2 x s64>), [[C]](s64)183 ; CHECK-NEXT: $d0 = COPY [[EVEC]](s64)184 ; CHECK-NEXT: RET_ReallyLR implicit $d0185 %0:_(<2 x s64>) = COPY $q0186 %2:_(<2 x s64>) = G_IMPLICIT_DEF187 %5:_(s64) = G_CONSTANT i64 0188 %1:_(<2 x s64>) = G_SHUFFLE_VECTOR %0(<2 x s64>), %2, shufflemask(0, undef)189 %3:_(<2 x s64>) = G_FADD %1, %0190 %4:_(s64) = G_EXTRACT_VECTOR_ELT %3(<2 x s64>), %5(s64)191 $d0 = COPY %4(s64)192 RET_ReallyLR implicit $d0193 194...195