142 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s4# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s5# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s7 8---9name: sextload_local_s32_from_s8_align110legalized: true11regBankSelected: true12tracksRegLiveness: true13 14body: |15 bb.0:16 liveins: $vgpr017 18 ; GFX6-LABEL: name: sextload_local_s32_from_s8_align119 ; GFX6: liveins: $vgpr020 ; GFX6-NEXT: {{ $}}21 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr022 ; GFX6-NEXT: $m0 = S_MOV_B32 -123 ; GFX6-NEXT: [[DS_READ_I8_:%[0-9]+]]:vgpr_32 = DS_READ_I8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)24 ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_I8_]]25 ;26 ; GFX7-LABEL: name: sextload_local_s32_from_s8_align127 ; GFX7: liveins: $vgpr028 ; GFX7-NEXT: {{ $}}29 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr030 ; GFX7-NEXT: $m0 = S_MOV_B32 -131 ; GFX7-NEXT: [[DS_READ_I8_:%[0-9]+]]:vgpr_32 = DS_READ_I8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)32 ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_I8_]]33 ;34 ; GFX9-LABEL: name: sextload_local_s32_from_s8_align135 ; GFX9: liveins: $vgpr036 ; GFX9-NEXT: {{ $}}37 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr038 ; GFX9-NEXT: [[DS_READ_I8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_I8_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s8), addrspace 3)39 ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_I8_gfx9_]]40 %0:vgpr(p3) = COPY $vgpr041 %1:vgpr(s32) = G_SEXTLOAD %0 :: (load (s8), align 1, addrspace 3)42 $vgpr0 = COPY %143 44...45 46---47name: sextload_local_s32_from_s16_align248legalized: true49regBankSelected: true50tracksRegLiveness: true51 52body: |53 bb.0:54 liveins: $vgpr055 56 ; GFX6-LABEL: name: sextload_local_s32_from_s16_align257 ; GFX6: liveins: $vgpr058 ; GFX6-NEXT: {{ $}}59 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr060 ; GFX6-NEXT: $m0 = S_MOV_B32 -161 ; GFX6-NEXT: [[DS_READ_I16_:%[0-9]+]]:vgpr_32 = DS_READ_I16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s16), addrspace 3)62 ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_I16_]]63 ;64 ; GFX7-LABEL: name: sextload_local_s32_from_s16_align265 ; GFX7: liveins: $vgpr066 ; GFX7-NEXT: {{ $}}67 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr068 ; GFX7-NEXT: $m0 = S_MOV_B32 -169 ; GFX7-NEXT: [[DS_READ_I16_:%[0-9]+]]:vgpr_32 = DS_READ_I16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s16), addrspace 3)70 ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_I16_]]71 ;72 ; GFX9-LABEL: name: sextload_local_s32_from_s16_align273 ; GFX9: liveins: $vgpr074 ; GFX9-NEXT: {{ $}}75 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr076 ; GFX9-NEXT: [[DS_READ_I16_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_I16_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (s16), addrspace 3)77 ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_I16_gfx9_]]78 %0:vgpr(p3) = COPY $vgpr079 %1:vgpr(s32) = G_SEXTLOAD %0 :: (load (s16), align 2, addrspace 3)80 $vgpr0 = COPY %181 82...83 84# ---85# name: sextload_local_s16_from_s8_align186# legalized: true87# regBankSelected: true88# tracksRegLiveness: true89 90# body: |91# bb.0:92# liveins: $vgpr093 94# %0:vgpr(p3) = COPY $vgpr095# %1:vgpr(s16) = G_SEXTLOAD %0 :: (load (s8), align 1, addrspace 3)96# %2:vgpr(s32) = G_ANYEXT %197# $vgpr0 = COPY %298 99# ...100 101---102name: sextload_local_s32_from_s8_align1_offset4095103legalized: true104regBankSelected: true105tracksRegLiveness: true106 107body: |108 bb.0:109 liveins: $vgpr0110 111 ; GFX6-LABEL: name: sextload_local_s32_from_s8_align1_offset4095112 ; GFX6: liveins: $vgpr0113 ; GFX6-NEXT: {{ $}}114 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0115 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec116 ; GFX6-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec117 ; GFX6-NEXT: $m0 = S_MOV_B32 -1118 ; GFX6-NEXT: [[DS_READ_I8_:%[0-9]+]]:vgpr_32 = DS_READ_I8 [[V_ADD_CO_U32_e64_]], 0, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)119 ; GFX6-NEXT: $vgpr0 = COPY [[DS_READ_I8_]]120 ;121 ; GFX7-LABEL: name: sextload_local_s32_from_s8_align1_offset4095122 ; GFX7: liveins: $vgpr0123 ; GFX7-NEXT: {{ $}}124 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0125 ; GFX7-NEXT: $m0 = S_MOV_B32 -1126 ; GFX7-NEXT: [[DS_READ_I8_:%[0-9]+]]:vgpr_32 = DS_READ_I8 [[COPY]], 4095, 0, implicit $m0, implicit $exec :: (load (s8), addrspace 3)127 ; GFX7-NEXT: $vgpr0 = COPY [[DS_READ_I8_]]128 ;129 ; GFX9-LABEL: name: sextload_local_s32_from_s8_align1_offset4095130 ; GFX9: liveins: $vgpr0131 ; GFX9-NEXT: {{ $}}132 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0133 ; GFX9-NEXT: [[DS_READ_I8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_I8_gfx9 [[COPY]], 4095, 0, implicit $exec :: (load (s8), addrspace 3)134 ; GFX9-NEXT: $vgpr0 = COPY [[DS_READ_I8_gfx9_]]135 %0:vgpr(p3) = COPY $vgpr0136 %1:vgpr(s32) = G_CONSTANT i32 4095137 %2:vgpr(p3) = G_PTR_ADD %0, %1138 %3:vgpr(s32) = G_SEXTLOAD %2 :: (load (s8), align 1, addrspace 3)139 $vgpr0 = COPY %3140 141...142