207 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4---5name: zext_trunc_s32_s16_s326tracksRegLiveness: true7body: |8 bb.0:9 liveins: $vgpr010 11 ; GCN-LABEL: name: zext_trunc_s32_s16_s3212 ; GCN: liveins: $vgpr013 ; GCN-NEXT: {{ $}}14 ; GCN-NEXT: %var:_(s32) = COPY $vgpr015 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC %var(s32)16 ; GCN-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1638317 ; GCN-NEXT: %trunc:_(s16) = G_AND [[TRUNC]], [[C]]18 ; GCN-NEXT: %zext:_(s32) = G_ZEXT %trunc(s16)19 ; GCN-NEXT: $vgpr0 = COPY %zext(s32)20 %var:_(s32) = COPY $vgpr021 %c3FFF:_(s32) = G_CONSTANT i32 1638322 %low_bits:_(s32) = G_AND %var, %c3FFF23 %trunc:_(s16) = G_TRUNC %low_bits(s32)24 %zext:_(s32) = G_ZEXT %trunc(s16)25 $vgpr0 = COPY %zext(s32)26...27 28---29name: zext_trunc_s32_s16_s32_unknown_high_bits30tracksRegLiveness: true31body: |32 bb.0:33 liveins: $vgpr034 35 ; GCN-LABEL: name: zext_trunc_s32_s16_s32_unknown_high_bits36 ; GCN: liveins: $vgpr037 ; GCN-NEXT: {{ $}}38 ; GCN-NEXT: %var:_(s32) = COPY $vgpr039 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC %var(s32)40 ; GCN-NEXT: %zext:_(s32) = G_ZEXT [[TRUNC]](s16)41 ; GCN-NEXT: $vgpr0 = COPY %zext(s32)42 %var:_(s32) = COPY $vgpr043 %cFFFFF:_(s32) = G_CONSTANT i32 104857544 %low_bits:_(s32) = G_AND %var, %cFFFFF45 %trunc:_(s16) = G_TRUNC %low_bits(s32)46 %zext:_(s32) = G_ZEXT %trunc(s16)47 $vgpr0 = COPY %zext(s32)48...49 50---51name: zext_trunc_s64_s16_s3252tracksRegLiveness: true53body: |54 bb.0:55 liveins: $vgpr0_vgpr156 57 ; GCN-LABEL: name: zext_trunc_s64_s16_s3258 ; GCN: liveins: $vgpr0_vgpr159 ; GCN-NEXT: {{ $}}60 ; GCN-NEXT: %var:_(s64) = COPY $vgpr0_vgpr161 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC %var(s64)62 ; GCN-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1638363 ; GCN-NEXT: %trunc:_(s16) = G_AND [[TRUNC]], [[C]]64 ; GCN-NEXT: %zext:_(s32) = G_ZEXT %trunc(s16)65 ; GCN-NEXT: $vgpr0 = COPY %zext(s32)66 %var:_(s64) = COPY $vgpr0_vgpr167 %c3FFF:_(s64) = G_CONSTANT i64 1638368 %low_bits:_(s64) = G_AND %var, %c3FFF69 %trunc:_(s16) = G_TRUNC %low_bits(s64)70 %zext:_(s32) = G_ZEXT %trunc(s16)71 $vgpr0 = COPY %zext(s32)72...73 74---75name: zext_trunc_s32_s16_s6476tracksRegLiveness: true77body: |78 bb.0:79 liveins: $vgpr080 81 ; GCN-LABEL: name: zext_trunc_s32_s16_s6482 ; GCN: liveins: $vgpr083 ; GCN-NEXT: {{ $}}84 ; GCN-NEXT: %var:_(s32) = COPY $vgpr085 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC %var(s32)86 ; GCN-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1638387 ; GCN-NEXT: %trunc:_(s16) = G_AND [[TRUNC]], [[C]]88 ; GCN-NEXT: %zext:_(s64) = G_ZEXT %trunc(s16)89 ; GCN-NEXT: $vgpr0_vgpr1 = COPY %zext(s64)90 %var:_(s32) = COPY $vgpr091 %c3FFF:_(s32) = G_CONSTANT i32 1638392 %low_bits:_(s32) = G_AND %var, %c3FFF93 %trunc:_(s16) = G_TRUNC %low_bits(s32)94 %zext:_(s64) = G_ZEXT %trunc(s16)95 $vgpr0_vgpr1 = COPY %zext(s64)96...97 98---99name: zext_trunc_v2s32_v2s16_v2s32100tracksRegLiveness: true101body: |102 bb.0:103 liveins: $vgpr0_vgpr1104 105 ; GCN-LABEL: name: zext_trunc_v2s32_v2s16_v2s32106 ; GCN: liveins: $vgpr0_vgpr1107 ; GCN-NEXT: {{ $}}108 ; GCN-NEXT: %var:_(<2 x s32>) = COPY $vgpr0_vgpr1109 ; GCN-NEXT: %c3FFF:_(s32) = G_CONSTANT i32 16383110 ; GCN-NEXT: %c7FFF:_(s32) = G_CONSTANT i32 32767111 ; GCN-NEXT: %c:_(<2 x s32>) = G_BUILD_VECTOR %c3FFF(s32), %c7FFF(s32)112 ; GCN-NEXT: %low_bits:_(<2 x s32>) = G_AND %var, %c113 ; GCN-NEXT: $vgpr0_vgpr1 = COPY %low_bits(<2 x s32>)114 %var:_(<2 x s32>) = COPY $vgpr0_vgpr1115 %c3FFF:_(s32) = G_CONSTANT i32 16383116 %c7FFF:_(s32) = G_CONSTANT i32 32767117 %c:_(<2 x s32>) = G_BUILD_VECTOR %c3FFF(s32), %c7FFF(s32)118 %low_bits:_(<2 x s32>) = G_AND %var, %c119 %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s32>)120 %zext:_(<2 x s32>) = G_ZEXT %trunc(<2 x s16>)121 $vgpr0_vgpr1 = COPY %zext(<2 x s32>)122...123 124---125name: zext_trunc_v2s32_v2s16_v2s32_unknown_high_bits126tracksRegLiveness: true127body: |128 bb.0:129 liveins: $vgpr0_vgpr1130 131 ; GCN-LABEL: name: zext_trunc_v2s32_v2s16_v2s32_unknown_high_bits132 ; GCN: liveins: $vgpr0_vgpr1133 ; GCN-NEXT: {{ $}}134 ; GCN-NEXT: %var:_(<2 x s32>) = COPY $vgpr0_vgpr1135 ; GCN-NEXT: %cFFFFF:_(s32) = G_CONSTANT i32 1048575136 ; GCN-NEXT: %c7FFF:_(s32) = G_CONSTANT i32 32767137 ; GCN-NEXT: %c:_(<2 x s32>) = G_BUILD_VECTOR %cFFFFF(s32), %c7FFF(s32)138 ; GCN-NEXT: %low_bits:_(<2 x s32>) = G_AND %var, %c139 ; GCN-NEXT: %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s32>)140 ; GCN-NEXT: %zext:_(<2 x s32>) = G_ZEXT %trunc(<2 x s16>)141 ; GCN-NEXT: $vgpr0_vgpr1 = COPY %zext(<2 x s32>)142 %var:_(<2 x s32>) = COPY $vgpr0_vgpr1143 %cFFFFF:_(s32) = G_CONSTANT i32 1048575144 %c7FFF:_(s32) = G_CONSTANT i32 32767145 %c:_(<2 x s32>) = G_BUILD_VECTOR %cFFFFF(s32), %c7FFF(s32)146 %low_bits:_(<2 x s32>) = G_AND %var, %c147 %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s32>)148 %zext:_(<2 x s32>) = G_ZEXT %trunc(<2 x s16>)149 $vgpr0_vgpr1 = COPY %zext(<2 x s32>)150...151 152---153name: zext_trunc_v2s64_v2s16_v2s32154tracksRegLiveness: true155body: |156 bb.0:157 liveins: $vgpr0_vgpr1_vgpr2_vgpr3158 159 ; GCN-LABEL: name: zext_trunc_v2s64_v2s16_v2s32160 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3161 ; GCN-NEXT: {{ $}}162 ; GCN-NEXT: %var:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3163 ; GCN-NEXT: %c3FFF:_(s64) = G_CONSTANT i64 16383164 ; GCN-NEXT: %c7FFF:_(s64) = G_CONSTANT i64 32767165 ; GCN-NEXT: %c:_(<2 x s64>) = G_BUILD_VECTOR %c3FFF(s64), %c7FFF(s64)166 ; GCN-NEXT: %low_bits:_(<2 x s64>) = G_AND %var, %c167 ; GCN-NEXT: %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s64>)168 ; GCN-NEXT: %zext:_(<2 x s32>) = G_ZEXT %trunc(<2 x s16>)169 ; GCN-NEXT: $vgpr0_vgpr1 = COPY %zext(<2 x s32>)170 %var:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3171 %c3FFF:_(s64) = G_CONSTANT i64 16383172 %c7FFF:_(s64) = G_CONSTANT i64 32767173 %c:_(<2 x s64>) = G_BUILD_VECTOR %c3FFF(s64), %c7FFF(s64)174 %low_bits:_(<2 x s64>) = G_AND %var, %c175 %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s64>)176 %zext:_(<2 x s32>) = G_ZEXT %trunc(<2 x s16>)177 $vgpr0_vgpr1 = COPY %zext(<2 x s32>)178...179 180---181name: zext_trunc_v2s32_v2s16_v2s64182tracksRegLiveness: true183body: |184 bb.0:185 liveins: $vgpr0_vgpr1186 187 ; GCN-LABEL: name: zext_trunc_v2s32_v2s16_v2s64188 ; GCN: liveins: $vgpr0_vgpr1189 ; GCN-NEXT: {{ $}}190 ; GCN-NEXT: %var:_(<2 x s32>) = COPY $vgpr0_vgpr1191 ; GCN-NEXT: %c3FFF:_(s32) = G_CONSTANT i32 16383192 ; GCN-NEXT: %c7FFF:_(s32) = G_CONSTANT i32 32767193 ; GCN-NEXT: %c:_(<2 x s32>) = G_BUILD_VECTOR %c3FFF(s32), %c7FFF(s32)194 ; GCN-NEXT: %low_bits:_(<2 x s32>) = G_AND %var, %c195 ; GCN-NEXT: %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s32>)196 ; GCN-NEXT: %zext:_(<2 x s64>) = G_ZEXT %trunc(<2 x s16>)197 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %zext(<2 x s64>)198 %var:_(<2 x s32>) = COPY $vgpr0_vgpr1199 %c3FFF:_(s32) = G_CONSTANT i32 16383200 %c7FFF:_(s32) = G_CONSTANT i32 32767201 %c:_(<2 x s32>) = G_BUILD_VECTOR %c3FFF(s32), %c7FFF(s32)202 %low_bits:_(<2 x s32>) = G_AND %var, %c203 %trunc:_(<2 x s16>) = G_TRUNC %low_bits(<2 x s32>)204 %zext:_(<2 x s64>) = G_ZEXT %trunc(<2 x s16>)205 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %zext(<2 x s64>)206...207