207 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s --check-prefixes=CHECK,CHECK-PRE3# RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-postlegalizer-combiner -verify-machineinstrs %s | FileCheck %s --check-prefixes=CHECK,CHECK-POST4 5---6name: test_combine_trunc_undef7legalized: true8body: |9 bb.1:10 ; CHECK-LABEL: name: test_combine_trunc_undef11 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF12 ; CHECK-NEXT: $w0 = COPY [[DEF]](s32)13 %0:_(s64) = G_IMPLICIT_DEF14 %1:_(s32) = G_TRUNC %0(s64)15 $w0 = COPY %1(s32)16...17---18name: test_combine_trunc_undef_vec19legalized: true20body: |21 bb.1:22 ; CHECK-LABEL: name: test_combine_trunc_undef_vec23 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF24 ; CHECK-NEXT: $x0 = COPY [[DEF]](<2 x s32>)25 %0:_(<2 x s64>) = G_IMPLICIT_DEF26 %1:_(<2 x s32>) = G_TRUNC %0(<2 x s64>)27 $x0 = COPY %1(<2 x s32>)28...29---30name: test_combine_trunc_anyext_s32_s1631legalized: true32body: |33 bb.1:34 liveins: $h035 ; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s1636 ; CHECK: liveins: $h037 ; CHECK-NEXT: {{ $}}38 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h039 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s16)40 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)41 %0:_(s16) = COPY $h042 %1:_(s64) = G_ANYEXT %0(s16)43 %2:_(s32) = G_TRUNC %1(s64)44 $w0 = COPY %2(s32)45...46---47name: test_combine_trunc_anyext_s32_s16_vec48legalized: true49body: |50 bb.1:51 liveins: $s052 ; CHECK-PRE-LABEL: name: test_combine_trunc_anyext_s32_s16_vec53 ; CHECK-PRE: liveins: $s054 ; CHECK-PRE-NEXT: {{ $}}55 ; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $s056 ; CHECK-PRE-NEXT: [[ANYEXT:%[0-9]+]]:_(<2 x s32>) = G_ANYEXT [[COPY]](<2 x s16>)57 ; CHECK-PRE-NEXT: $x0 = COPY [[ANYEXT]](<2 x s32>)58 ;59 ; CHECK-POST-LABEL: name: test_combine_trunc_anyext_s32_s16_vec60 ; CHECK-POST: liveins: $s061 ; CHECK-POST-NEXT: {{ $}}62 ; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $s063 ; CHECK-POST-NEXT: [[ANYEXT:%[0-9]+]]:_(<2 x s64>) = G_ANYEXT [[COPY]](<2 x s16>)64 ; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[ANYEXT]](<2 x s64>)65 ; CHECK-POST-NEXT: $x0 = COPY [[TRUNC]](<2 x s32>)66 %0:_(<2 x s16>) = COPY $s067 %1:_(<2 x s64>) = G_ANYEXT %0(<2 x s16>)68 %2:_(<2 x s32>) = G_TRUNC %1(<2 x s64>)69 $x0 = COPY %2(<2 x s32>)70...71---72name: test_combine_trunc_sext_s32_s1673legalized: true74body: |75 bb.1:76 liveins: $h077 ; CHECK-LABEL: name: test_combine_trunc_sext_s32_s1678 ; CHECK: liveins: $h079 ; CHECK-NEXT: {{ $}}80 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h081 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s16)82 ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)83 %0:_(s16) = COPY $h084 %1:_(s64) = G_SEXT %0(s16)85 %2:_(s32) = G_TRUNC %1(s64)86 $w0 = COPY %2(s32)87...88---89name: test_combine_trunc_zext_s32_s1690legalized: true91body: |92 bb.1:93 liveins: $h094 ; CHECK-LABEL: name: test_combine_trunc_zext_s32_s1695 ; CHECK: liveins: $h096 ; CHECK-NEXT: {{ $}}97 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h098 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s16)99 ; CHECK-NEXT: $w0 = COPY [[ZEXT]](s32)100 %0:_(s16) = COPY $h0101 %1:_(s64) = G_ZEXT %0(s16)102 %2:_(s32) = G_TRUNC %1(s64)103 $w0 = COPY %2(s32)104...105---106name: test_combine_trunc_anyext_s32_s32107legalized: true108body: |109 bb.1:110 liveins: $w0111 ; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s32112 ; CHECK: liveins: $w0113 ; CHECK-NEXT: {{ $}}114 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0115 ; CHECK-NEXT: $w0 = COPY [[COPY]](s32)116 %0:_(s32) = COPY $w0117 %1:_(s64) = G_ANYEXT %0(s32)118 %2:_(s32) = G_TRUNC %1(s64)119 $w0 = COPY %2(s32)120...121---122name: test_combine_trunc_anyext_s32_s64123legalized: true124body: |125 bb.1:126 liveins: $x0127 ; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s64128 ; CHECK: liveins: $x0129 ; CHECK-NEXT: {{ $}}130 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0131 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)132 ; CHECK-NEXT: $w0 = COPY [[TRUNC]](s32)133 %0:_(s64) = COPY $x0134 %1:_(s128) = G_ANYEXT %0(s64)135 %2:_(s32) = G_TRUNC %1(s128)136 $w0 = COPY %2(s32)137...138---139name: test_combine_trunc_shl_s32_by_2140legalized: true141body: |142 bb.1:143 liveins: $w0144 ; CHECK-PRE-LABEL: name: test_combine_trunc_shl_s32_by_2145 ; CHECK-PRE: liveins: $w0146 ; CHECK-PRE-NEXT: {{ $}}147 ; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0148 ; CHECK-PRE-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2149 ; CHECK-PRE-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)150 ; CHECK-PRE-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[TRUNC]], [[C]](s32)151 ; CHECK-PRE-NEXT: $h0 = COPY [[SHL]](s16)152 ;153 ; CHECK-POST-LABEL: name: test_combine_trunc_shl_s32_by_2154 ; CHECK-POST: liveins: $w0155 ; CHECK-POST-NEXT: {{ $}}156 ; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0157 ; CHECK-POST-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2158 ; CHECK-POST-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)159 ; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)160 ; CHECK-POST-NEXT: $h0 = COPY [[TRUNC]](s16)161 %0:_(s32) = COPY $w0162 %1:_(s32) = G_CONSTANT i32 2163 %2:_(s32) = G_SHL %0(s32), %1(s32)164 %3:_(s16) = G_TRUNC %2(s32)165 $h0 = COPY %3(s16)166...167---168name: test_combine_trunc_shl_s32_by_17169legalized: true170body: |171 bb.1:172 liveins: $w0173 ; CHECK-LABEL: name: test_combine_trunc_shl_s32_by_17174 ; CHECK: liveins: $w0175 ; CHECK-NEXT: {{ $}}176 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0177 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 17178 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)179 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)180 ; CHECK-NEXT: $h0 = COPY [[TRUNC]](s16)181 %0:_(s32) = COPY $w0182 %1:_(s32) = G_CONSTANT i32 17183 %2:_(s32) = G_SHL %0(s32), %1(s32)184 %3:_(s16) = G_TRUNC %2(s32)185 $h0 = COPY %3(s16)186...187---188name: test_combine_trunc_multi_use189legalized: true190body: |191 bb.1:192 liveins: $w0193 ; CHECK-LABEL: name: test_combine_trunc_multi_use194 ; CHECK: liveins: $w0195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0197 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)198 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ZEXT]](s64)199 ; CHECK-NEXT: $h0 = COPY [[TRUNC]](s16)200 ; CHECK-NEXT: $x0 = COPY [[ZEXT]](s64)201 %0:_(s32) = COPY $w0202 %2:_(s64) = G_ZEXT %0(s32)203 %3:_(s16) = G_TRUNC %2(s64)204 $h0 = COPY %3(s16)205 $x0 = COPY %2(s64)206...207