117 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s6 7---8name: smax_neg_abs_pattern_s32_ss9legalized: true10regBankSelected: true11tracksRegLiveness: true12 13body: |14 bb.0:15 liveins: $sgpr016 17 ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_ss18 ; GFX6: liveins: $sgpr019 ; GFX6-NEXT: {{ $}}20 ; GFX6-NEXT: %src0:sreg_32 = COPY $sgpr021 ; GFX6-NEXT: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def dead $scc22 ; GFX6-NEXT: S_ENDPGM 0, implicit %smax23 ;24 ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_ss25 ; GFX9: liveins: $sgpr026 ; GFX9-NEXT: {{ $}}27 ; GFX9-NEXT: %src0:sreg_32 = COPY $sgpr028 ; GFX9-NEXT: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def dead $scc29 ; GFX9-NEXT: S_ENDPGM 0, implicit %smax30 %src0:sgpr(s32) = COPY $sgpr031 %zero:sgpr(s32) = G_CONSTANT i32 032 %ineg:sgpr(s32) = G_SUB %zero, %src033 %smax:sgpr(s32) = G_SMAX %src0, %ineg34 S_ENDPGM 0, implicit %smax35...36 37---38name: smax_neg_abs_pattern_s32_ss_commute39legalized: true40regBankSelected: true41tracksRegLiveness: true42 43body: |44 bb.0:45 liveins: $sgpr046 47 ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_ss_commute48 ; GFX6: liveins: $sgpr049 ; GFX6-NEXT: {{ $}}50 ; GFX6-NEXT: %src0:sreg_32 = COPY $sgpr051 ; GFX6-NEXT: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def dead $scc52 ; GFX6-NEXT: S_ENDPGM 0, implicit %smax53 ;54 ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_ss_commute55 ; GFX9: liveins: $sgpr056 ; GFX9-NEXT: {{ $}}57 ; GFX9-NEXT: %src0:sreg_32 = COPY $sgpr058 ; GFX9-NEXT: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def dead $scc59 ; GFX9-NEXT: S_ENDPGM 0, implicit %smax60 %src0:sgpr(s32) = COPY $sgpr061 %zero:sgpr(s32) = G_CONSTANT i32 062 %ineg:sgpr(s32) = G_SUB %zero, %src063 %smax:sgpr(s32) = G_SMAX %ineg, %src064 S_ENDPGM 0, implicit %smax65...66 67---68name: smax_neg_abs_pattern_s32_vv69legalized: true70regBankSelected: true71tracksRegLiveness: true72 73body: |74 bb.0:75 liveins: $vgpr076 77 ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_vv78 ; GFX6: liveins: $vgpr079 ; GFX6-NEXT: {{ $}}80 ; GFX6-NEXT: %src0:vgpr_32 = COPY $vgpr081 ; GFX6-NEXT: %zero:vgpr_32 = V_MOV_B32_e32 0, implicit $exec82 ; GFX6-NEXT: %ineg:vgpr_32, dead %4:sreg_64 = V_SUB_CO_U32_e64 %zero, %src0, 0, implicit $exec83 ; GFX6-NEXT: %smax:vgpr_32 = V_MAX_I32_e64 %src0, %ineg, implicit $exec84 ; GFX6-NEXT: S_ENDPGM 0, implicit %smax85 ;86 ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_vv87 ; GFX9: liveins: $vgpr088 ; GFX9-NEXT: {{ $}}89 ; GFX9-NEXT: %src0:vgpr_32 = COPY $vgpr090 ; GFX9-NEXT: %zero:vgpr_32 = V_MOV_B32_e32 0, implicit $exec91 ; GFX9-NEXT: %ineg:vgpr_32 = V_SUB_U32_e64 %zero, %src0, 0, implicit $exec92 ; GFX9-NEXT: %smax:vgpr_32 = V_MAX_I32_e64 %src0, %ineg, implicit $exec93 ; GFX9-NEXT: S_ENDPGM 0, implicit %smax94 %src0:vgpr(s32) = COPY $vgpr095 %zero:vgpr(s32) = G_CONSTANT i32 096 %ineg:vgpr(s32) = G_SUB %zero, %src097 %smax:vgpr(s32) = G_SMAX %src0, %ineg98 S_ENDPGM 0, implicit %smax99...100 101# FIXME: Violates constant bus restriction102# ---103# name: smax_neg_abs_pattern_s32_vs104# legalized: true105# regBankSelected: true106 107# body: |108# bb.0:109# liveins: $sgpr0110 111# %src0:sgpr(s32) = COPY $sgpr0112# %zero:sgpr(s32) = G_CONSTANT i32 0113# %ineg:sgpr(s32) = G_SUB %zero, %src0114# %smax:vgpr(s32) = G_SMAX %src0, %ineg115# S_ENDPGM 0, implicit %smax116# ...117