160 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 %s -o - | FileCheck --check-prefix=GCN %s3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck --check-prefix=GCN %s4 5---6name: bfe_and_lshr_s327legalized: true8tracksRegLiveness: true9 10body: |11 bb.0.entry:12 liveins: $vgpr013 14 ; GCN-LABEL: name: bfe_and_lshr_s3215 ; GCN: liveins: $vgpr016 ; GCN-NEXT: {{ $}}17 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 519 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 820 ; GCN-NEXT: [[UBFX:%[0-9]+]]:_(s32) = G_UBFX [[COPY]], [[C1]](s32), [[C]]21 ; GCN-NEXT: $vgpr0 = COPY [[UBFX]](s32)22 %0:_(s32) = COPY $vgpr023 %1:_(s32) = G_CONSTANT i32 824 %2:_(s32) = G_LSHR %0, %1(s32)25 %3:_(s32) = G_CONSTANT i32 3126 %4:_(s32) = G_AND %2, %327 $vgpr0 = COPY %4(s32)28 29...30 31---32name: bfe_and_lshr_s6433legalized: true34tracksRegLiveness: true35 36body: |37 bb.0.entry:38 liveins: $vgpr0_vgpr139 40 ; GCN-LABEL: name: bfe_and_lshr_s6441 ; GCN: liveins: $vgpr0_vgpr142 ; GCN-NEXT: {{ $}}43 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr144 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1045 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 846 ; GCN-NEXT: [[UBFX:%[0-9]+]]:_(s64) = G_UBFX [[COPY]], [[C1]](s32), [[C]]47 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[UBFX]](s64)48 %0:_(s64) = COPY $vgpr0_vgpr149 %1:_(s32) = G_CONSTANT i32 850 %2:_(s64) = G_LSHR %0, %1(s32)51 %3:_(s64) = G_CONSTANT i64 102352 %4:_(s64) = G_AND %2, %353 $vgpr0_vgpr1 = COPY %4(s64)54 55...56 57---58name: toobig_and_lshr_s3259legalized: true60tracksRegLiveness: true61 62body: |63 bb.0.entry:64 liveins: $vgpr065 66 ; GCN-LABEL: name: toobig_and_lshr_s3267 ; GCN: liveins: $vgpr068 ; GCN-NEXT: {{ $}}69 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr070 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2871 ; GCN-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)72 ; GCN-NEXT: $vgpr0 = COPY [[LSHR]](s32)73 %0:_(s32) = COPY $vgpr074 %1:_(s32) = G_CONSTANT i32 2875 %2:_(s32) = G_LSHR %0, %1(s32)76 %3:_(s32) = G_CONSTANT i32 51177 %4:_(s32) = G_AND %2, %378 $vgpr0 = COPY %4(s32)79 80...81 82---83name: bfe_and_ashr_s3284legalized: true85tracksRegLiveness: true86 87body: |88 bb.0.entry:89 liveins: $vgpr090 91 ; GCN-LABEL: name: bfe_and_ashr_s3292 ; GCN: liveins: $vgpr093 ; GCN-NEXT: {{ $}}94 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr095 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 896 ; GCN-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[COPY]], [[C]](s32)97 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3198 ; GCN-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ASHR]], [[C1]]99 ; GCN-NEXT: $vgpr0 = COPY [[AND]](s32)100 %0:_(s32) = COPY $vgpr0101 %1:_(s32) = G_CONSTANT i32 8102 %2:_(s32) = G_ASHR %0, %1(s32)103 %3:_(s32) = G_CONSTANT i32 31104 %4:_(s32) = G_AND %2, %3105 $vgpr0 = COPY %4(s32)106 107...108 109---110name: bfe_lshr_and_s32111legalized: true112tracksRegLiveness: true113 114body: |115 bb.0.entry:116 liveins: $vgpr0117 118 ; GCN-LABEL: name: bfe_lshr_and_s32119 ; GCN: liveins: $vgpr0120 ; GCN-NEXT: {{ $}}121 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0122 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 5123 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8124 ; GCN-NEXT: [[UBFX:%[0-9]+]]:_(s32) = G_UBFX [[COPY]], [[C1]](s32), [[C]]125 ; GCN-NEXT: $vgpr0 = COPY [[UBFX]](s32)126 %0:_(s32) = COPY $vgpr0127 %1:_(s32) = G_CONSTANT i32 7936 ; 31 << 8128 %2:_(s32) = G_AND %0, %1129 %3:_(s32) = G_CONSTANT i32 8130 %4:_(s32) = G_LSHR %2, %3(s32)131 $vgpr0 = COPY %4(s32)132 133...134 135---136name: bfe_lshr_and_s64137legalized: true138tracksRegLiveness: true139 140body: |141 bb.0.entry:142 liveins: $vgpr0_vgpr1143 144 ; GCN-LABEL: name: bfe_lshr_and_s64145 ; GCN: liveins: $vgpr0_vgpr1146 ; GCN-NEXT: {{ $}}147 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1148 ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10149 ; GCN-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8150 ; GCN-NEXT: [[UBFX:%[0-9]+]]:_(s64) = G_UBFX [[COPY]], [[C1]](s32), [[C]]151 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[UBFX]](s64)152 %0:_(s64) = COPY $vgpr0_vgpr1153 %1:_(s64) = G_CONSTANT i64 261888 ; 1023 << 8154 %2:_(s64) = G_AND %0, %1155 %3:_(s32) = G_CONSTANT i32 8156 %4:_(s64) = G_LSHR %2, %3(s32)157 $vgpr0_vgpr1 = COPY %4(s64)158 159...160