159 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -global-isel-abort=0 -verify-machineinstrs -o - %s | FileCheck -check-prefix=VI %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -run-pass=instruction-select -global-isel-abort=0 -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GCN,GFX11-TRUE16 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -global-isel-abort=0 -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GCN,GFX11-FAKE16 %s5 6---7name: ffloor_s16_ss8legalized: true9regBankSelected: true10tracksRegLiveness: true11 12body: |13 bb.0:14 liveins: $sgpr015 16 ; VI-LABEL: name: ffloor_s16_ss17 ; VI: liveins: $sgpr018 ; VI-NEXT: {{ $}}19 ; VI-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr020 ; VI-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)21 ; VI-NEXT: [[FFLOOR:%[0-9]+]]:sreg_32(s16) = G_FFLOOR [[TRUNC]]22 ; VI-NEXT: [[COPY1:%[0-9]+]]:sreg_32(s32) = COPY [[FFLOOR]](s16)23 ; VI-NEXT: $sgpr0 = COPY [[COPY1]](s32)24 ;25 ; GCN-LABEL: name: ffloor_s16_ss26 ; GCN: liveins: $sgpr027 ; GCN-NEXT: {{ $}}28 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr029 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)30 ; GCN-NEXT: [[FFLOOR:%[0-9]+]]:sreg_32(s16) = G_FFLOOR [[TRUNC]]31 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32(s32) = COPY [[FFLOOR]](s16)32 ; GCN-NEXT: $sgpr0 = COPY [[COPY1]](s32)33 %0:sgpr(s32) = COPY $sgpr034 %1:sgpr(s16) = G_TRUNC %035 %2:sgpr(s16) = G_FFLOOR %136 %3:sgpr(s32) = G_ANYEXT %237 $sgpr0 = COPY %338...39 40---41name: ffloor_s16_vv42legalized: true43regBankSelected: true44tracksRegLiveness: true45 46body: |47 bb.0:48 liveins: $vgpr049 50 ; VI-LABEL: name: ffloor_s16_vv51 ; VI: liveins: $vgpr052 ; VI-NEXT: {{ $}}53 ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr054 ; VI-NEXT: [[V_FLOOR_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec55 ; VI-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_e64_]]56 ;57 ; GFX11-TRUE16-LABEL: name: ffloor_s16_vv58 ; GFX11-TRUE16: liveins: $vgpr059 ; GFX11-TRUE16-NEXT: {{ $}}60 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr061 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo1662 ; GFX11-TRUE16-NEXT: [[V_FLOOR_F16_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_FLOOR_F16_t16_e64 0, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec63 ; GFX11-TRUE16-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF64 ; GFX11-TRUE16-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_FLOOR_F16_t16_e64_]], %subreg.lo16, [[DEF]], %subreg.hi1665 ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]66 ;67 ; GFX11-FAKE16-LABEL: name: ffloor_s16_vv68 ; GFX11-FAKE16: liveins: $vgpr069 ; GFX11-FAKE16-NEXT: {{ $}}70 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr071 ; GFX11-FAKE16-NEXT: [[V_FLOOR_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec72 ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_fake16_e64_]]73 %0:vgpr(s32) = COPY $vgpr074 %1:vgpr(s16) = G_TRUNC %075 %2:vgpr(s16) = G_FFLOOR %176 %3:vgpr(s32) = G_ANYEXT %277 $vgpr0 = COPY %378...79 80---81name: ffloor_s16_vs82legalized: true83regBankSelected: true84tracksRegLiveness: true85 86body: |87 bb.0:88 liveins: $sgpr089 90 ; VI-LABEL: name: ffloor_s16_vs91 ; VI: liveins: $sgpr092 ; VI-NEXT: {{ $}}93 ; VI-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr094 ; VI-NEXT: [[V_FLOOR_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec95 ; VI-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_e64_]]96 ;97 ; GFX11-TRUE16-LABEL: name: ffloor_s16_vs98 ; GFX11-TRUE16: liveins: $sgpr099 ; GFX11-TRUE16-NEXT: {{ $}}100 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0101 ; GFX11-TRUE16-NEXT: [[V_FLOOR_F16_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_FLOOR_F16_t16_e64 0, [[COPY]], 0, 0, 0, implicit $mode, implicit $exec102 ; GFX11-TRUE16-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF103 ; GFX11-TRUE16-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_FLOOR_F16_t16_e64_]], %subreg.lo16, [[DEF]], %subreg.hi16104 ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]105 ;106 ; GFX11-FAKE16-LABEL: name: ffloor_s16_vs107 ; GFX11-FAKE16: liveins: $sgpr0108 ; GFX11-FAKE16-NEXT: {{ $}}109 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0110 ; GFX11-FAKE16-NEXT: [[V_FLOOR_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec111 ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_fake16_e64_]]112 %0:sgpr(s32) = COPY $sgpr0113 %1:sgpr(s16) = G_TRUNC %0114 %2:vgpr(s16) = G_FFLOOR %1115 %3:vgpr(s32) = G_ANYEXT %2116 $vgpr0 = COPY %3117...118 119---120name: ffloor_fneg_s16_vv121legalized: true122regBankSelected: true123tracksRegLiveness: true124 125body: |126 bb.0:127 liveins: $vgpr0128 129 ; VI-LABEL: name: ffloor_fneg_s16_vv130 ; VI: liveins: $vgpr0131 ; VI-NEXT: {{ $}}132 ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0133 ; VI-NEXT: [[V_FLOOR_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_e64 1, [[COPY]], 0, 0, implicit $mode, implicit $exec134 ; VI-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_e64_]]135 ;136 ; GFX11-TRUE16-LABEL: name: ffloor_fneg_s16_vv137 ; GFX11-TRUE16: liveins: $vgpr0138 ; GFX11-TRUE16-NEXT: {{ $}}139 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0140 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16141 ; GFX11-TRUE16-NEXT: [[V_FLOOR_F16_t16_e64_:%[0-9]+]]:vgpr_16 = nofpexcept V_FLOOR_F16_t16_e64 1, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec142 ; GFX11-TRUE16-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF143 ; GFX11-TRUE16-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vgpr_32 = REG_SEQUENCE [[V_FLOOR_F16_t16_e64_]], %subreg.lo16, [[DEF]], %subreg.hi16144 ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]145 ;146 ; GFX11-FAKE16-LABEL: name: ffloor_fneg_s16_vv147 ; GFX11-FAKE16: liveins: $vgpr0148 ; GFX11-FAKE16-NEXT: {{ $}}149 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0150 ; GFX11-FAKE16-NEXT: [[V_FLOOR_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FLOOR_F16_fake16_e64 1, [[COPY]], 0, 0, implicit $mode, implicit $exec151 ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_FLOOR_F16_fake16_e64_]]152 %0:vgpr(s32) = COPY $vgpr0153 %1:vgpr(s16) = G_TRUNC %0154 %2:vgpr(s16) = G_FNEG %1155 %3:vgpr(s16) = G_FFLOOR %2156 %4:vgpr(s32) = G_ANYEXT %3157 $vgpr0 = COPY %4158...159