174 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=WAVE64 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=WAVE32 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s6 7---8name: uitofp_s32_to_s32_vv9legalized: true10regBankSelected: true11tracksRegLiveness: true12 13body: |14 bb.0:15 liveins: $vgpr016 17 ; WAVE64-LABEL: name: uitofp_s32_to_s32_vv18 ; WAVE64: liveins: $vgpr019 ; WAVE64-NEXT: {{ $}}20 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr021 ; WAVE64-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec22 ; WAVE64-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]23 ;24 ; WAVE32-LABEL: name: uitofp_s32_to_s32_vv25 ; WAVE32: liveins: $vgpr026 ; WAVE32-NEXT: {{ $}}27 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr028 ; WAVE32-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec29 ; WAVE32-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]30 ;31 ; GFX11-LABEL: name: uitofp_s32_to_s32_vv32 ; GFX11: liveins: $vgpr033 ; GFX11-NEXT: {{ $}}34 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr035 ; GFX11-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec36 ; GFX11-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]37 %0:vgpr(s32) = COPY $vgpr038 %1:vgpr(s32) = G_UITOFP %039 $vgpr0 = COPY %140...41 42---43name: uitofp_s32_to_s32_vs44legalized: true45regBankSelected: true46tracksRegLiveness: true47 48body: |49 bb.0:50 liveins: $sgpr051 52 ; WAVE64-LABEL: name: uitofp_s32_to_s32_vs53 ; WAVE64: liveins: $sgpr054 ; WAVE64-NEXT: {{ $}}55 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr056 ; WAVE64-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec57 ; WAVE64-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]58 ;59 ; WAVE32-LABEL: name: uitofp_s32_to_s32_vs60 ; WAVE32: liveins: $sgpr061 ; WAVE32-NEXT: {{ $}}62 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr063 ; WAVE32-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec64 ; WAVE32-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]65 ;66 ; GFX11-LABEL: name: uitofp_s32_to_s32_vs67 ; GFX11: liveins: $sgpr068 ; GFX11-NEXT: {{ $}}69 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr070 ; GFX11-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec71 ; GFX11-NEXT: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]72 %0:sgpr(s32) = COPY $sgpr073 %1:vgpr(s32) = G_UITOFP %074 $vgpr0 = COPY %175...76 77---78name: uitofp_s32_to_s16_vv79legalized: true80regBankSelected: true81tracksRegLiveness: true82 83body: |84 bb.0:85 liveins: $vgpr086 87 ; WAVE64-LABEL: name: uitofp_s32_to_s16_vv88 ; WAVE64: liveins: $vgpr089 ; WAVE64-NEXT: {{ $}}90 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr091 ; WAVE64-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec92 ; WAVE64-NEXT: [[V_CVT_F16_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec93 ; WAVE64-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_e64_]]94 ;95 ; WAVE32-LABEL: name: uitofp_s32_to_s16_vv96 ; WAVE32: liveins: $vgpr097 ; WAVE32-NEXT: {{ $}}98 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr099 ; WAVE32-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec100 ; WAVE32-NEXT: [[V_CVT_F16_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec101 ; WAVE32-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_e64_]]102 ;103 ; GFX11-TRUE16-LABEL: name: uitofp_s32_to_s16_vv104 ; GFX11-TRUE16: liveins: $vgpr0105 ; GFX11-TRUE16-NEXT: {{ $}}106 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0107 ; GFX11-TRUE16-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec108 ; GFX11-TRUE16-NEXT: [[V_CVT_F16_F32_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_CVT_F16_F32_t16_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, 0, implicit $mode, implicit $exec109 ; GFX11-TRUE16-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF110 ; GFX11-TRUE16-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_CVT_F16_F32_t16_e64_]], %subreg.lo16, [[DEF]], %subreg.hi16111 ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]112 ;113 ; GFX11-FAKE16-LABEL: name: uitofp_s32_to_s16_vv114 ; GFX11-FAKE16: liveins: $vgpr0115 ; GFX11-FAKE16-NEXT: {{ $}}116 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0117 ; GFX11-FAKE16-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec118 ; GFX11-FAKE16-NEXT: [[V_CVT_F16_F32_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_fake16_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec119 ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_fake16_e64_]]120 %0:vgpr(s32) = COPY $vgpr0121 %1:vgpr(s16) = G_UITOFP %0122 %2:vgpr(s32) = G_ANYEXT %1123 $vgpr0 = COPY %2124...125 126---127name: uitofp_s32_to_s16_vs128legalized: true129regBankSelected: true130tracksRegLiveness: true131 132body: |133 bb.0:134 liveins: $sgpr0135 136 ; WAVE64-LABEL: name: uitofp_s32_to_s16_vs137 ; WAVE64: liveins: $sgpr0138 ; WAVE64-NEXT: {{ $}}139 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0140 ; WAVE64-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec141 ; WAVE64-NEXT: [[V_CVT_F16_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec142 ; WAVE64-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_e64_]]143 ;144 ; WAVE32-LABEL: name: uitofp_s32_to_s16_vs145 ; WAVE32: liveins: $sgpr0146 ; WAVE32-NEXT: {{ $}}147 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0148 ; WAVE32-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec149 ; WAVE32-NEXT: [[V_CVT_F16_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec150 ; WAVE32-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_e64_]]151 ;152 ; GFX11-TRUE16-LABEL: name: uitofp_s32_to_s16_vs153 ; GFX11-TRUE16: liveins: $sgpr0154 ; GFX11-TRUE16-NEXT: {{ $}}155 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0156 ; GFX11-TRUE16-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec157 ; GFX11-TRUE16-NEXT: [[V_CVT_F16_F32_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_CVT_F16_F32_t16_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, 0, implicit $mode, implicit $exec158 ; GFX11-TRUE16-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF159 ; GFX11-TRUE16-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_CVT_F16_F32_t16_e64_]], %subreg.lo16, [[DEF]], %subreg.hi16160 ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]161 ;162 ; GFX11-FAKE16-LABEL: name: uitofp_s32_to_s16_vs163 ; GFX11-FAKE16: liveins: $sgpr0164 ; GFX11-FAKE16-NEXT: {{ $}}165 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0166 ; GFX11-FAKE16-NEXT: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec167 ; GFX11-FAKE16-NEXT: [[V_CVT_F16_F32_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F16_F32_fake16_e64 0, [[V_CVT_F32_U32_e32_]], 0, 0, implicit $mode, implicit $exec168 ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_CVT_F16_F32_fake16_e64_]]169 %0:sgpr(s32) = COPY $sgpr0170 %1:vgpr(s16) = G_UITOFP %0171 %2:vgpr(s32) = G_ANYEXT %1172 $vgpr0 = COPY %2173...174