180 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s3 4# Post-legalizer should not generate illegal extending loads5---6name: sextload_from_inreg7tracksRegLiveness: true8legalized: true9body: |10 bb.0:11 liveins: $vgpr0_vgpr112 ; CHECK-LABEL: name: sextload_from_inreg13 ; CHECK: liveins: $vgpr0_vgpr114 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr116 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p1) :: (load (s64), addrspace 1)17 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[LOAD]], 818 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[SEXT_INREG]](s64)19 %0:_(p1) = COPY $vgpr0_vgpr120 %1:_(s64) = G_LOAD %0 :: (load (s64), align 8, addrspace 1)21 %2:_(s64) = G_SEXT_INREG %1, 822 $vgpr0_vgpr1 = COPY %223...24 25# Legal to fold into sextload26---27name: sext_inreg_8_sextload_s3228tracksRegLiveness: true29legalized: true30body: |31 bb.0:32 liveins: $vgpr0_vgpr133 ; CHECK-LABEL: name: sext_inreg_8_sextload_s3234 ; CHECK: liveins: $vgpr0_vgpr135 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr137 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), align 4, addrspace 1)38 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)39 %0:_(p1) = COPY $vgpr0_vgpr140 %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)41 %2:_(s32) = G_SEXT_INREG %1, 842 $vgpr0 = COPY %243...44 45---46name: sext_inreg_7_sextload_s3247tracksRegLiveness: true48legalized: true49body: |50 bb.0:51 liveins: $vgpr0_vgpr152 ; CHECK-LABEL: name: sext_inreg_7_sextload_s3253 ; CHECK: liveins: $vgpr0_vgpr154 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr156 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)57 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 758 ; CHECK-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)59 %0:_(p1) = COPY $vgpr0_vgpr160 %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)61 %2:_(s32) = G_SEXT_INREG %1, 762 $vgpr0 = COPY %263...64 65---66name: sext_inreg_9_sextload_s3267tracksRegLiveness: true68legalized: true69body: |70 bb.0:71 liveins: $vgpr0_vgpr172 ; CHECK-LABEL: name: sext_inreg_9_sextload_s3273 ; CHECK: liveins: $vgpr0_vgpr174 ; CHECK-NEXT: {{ $}}75 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr176 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)77 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 978 ; CHECK-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)79 %0:_(p1) = COPY $vgpr0_vgpr180 %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)81 %2:_(s32) = G_SEXT_INREG %1, 982 $vgpr0 = COPY %283...84 85# Legal to fold into sextload86---87name: sext_inreg_16_sextload_s3288tracksRegLiveness: true89legalized: true90body: |91 bb.0:92 liveins: $vgpr0_vgpr193 ; CHECK-LABEL: name: sext_inreg_16_sextload_s3294 ; CHECK: liveins: $vgpr0_vgpr195 ; CHECK-NEXT: {{ $}}96 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr197 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)98 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)99 %0:_(p1) = COPY $vgpr0_vgpr1100 %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)101 %2:_(s32) = G_SEXT_INREG %1, 16102 $vgpr0 = COPY %2103...104 105---106name: sext_inreg_8_sextload_s8107tracksRegLiveness: true108legalized: true109body: |110 bb.0:111 liveins: $vgpr0_vgpr1112 ; CHECK-LABEL: name: sext_inreg_8_sextload_s8113 ; CHECK: liveins: $vgpr0_vgpr1114 ; CHECK-NEXT: {{ $}}115 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1116 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)117 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)118 %0:_(p1) = COPY $vgpr0_vgpr1119 %1:_(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 1)120 %2:_(s32) = G_SEXT_INREG %1, 8121 $vgpr0 = COPY %2122...123 124---125name: sext_inreg_8_sextload_s8_volatile126tracksRegLiveness: true127legalized: true128body: |129 bb.0:130 liveins: $vgpr0_vgpr1131 ; CHECK-LABEL: name: sext_inreg_8_sextload_s8_volatile132 ; CHECK: liveins: $vgpr0_vgpr1133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1135 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (volatile load (s8), addrspace 1)136 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)137 %0:_(p1) = COPY $vgpr0_vgpr1138 %1:_(s32) = G_LOAD %0 :: (volatile load (s8), align 1, addrspace 1)139 %2:_(s32) = G_SEXT_INREG %1, 8140 $vgpr0 = COPY %2141...142 143---144name: sext_inreg_16_sextload_s16145tracksRegLiveness: true146legalized: true147body: |148 bb.0:149 liveins: $vgpr0_vgpr1150 ; CHECK-LABEL: name: sext_inreg_16_sextload_s16151 ; CHECK: liveins: $vgpr0_vgpr1152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1154 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)155 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)156 %0:_(p1) = COPY $vgpr0_vgpr1157 %1:_(s32) = G_LOAD %0 :: (load (s16), align 2, addrspace 1)158 %2:_(s32) = G_SEXT_INREG %1, 16159 $vgpr0 = COPY %2160...161 162---163name: sext_inreg_16_sextload_s16_volatile164tracksRegLiveness: true165legalized: true166body: |167 bb.0:168 liveins: $vgpr0_vgpr1169 ; CHECK-LABEL: name: sext_inreg_16_sextload_s16_volatile170 ; CHECK: liveins: $vgpr0_vgpr1171 ; CHECK-NEXT: {{ $}}172 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1173 ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (volatile load (s16), addrspace 1)174 ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)175 %0:_(p1) = COPY $vgpr0_vgpr1176 %1:_(s32) = G_LOAD %0 :: (volatile load (s16), align 2, addrspace 1)177 %2:_(s32) = G_SEXT_INREG %1, 16178 $vgpr0 = COPY %2179...180