1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK 3 4--- 5name: test_neg_one_f16_sgpr 6tracksRegLiveness: true 7body: | 8 bb.0: 9 liveins: $sgpr0 10 11 ; CHECK-LABEL: name: test_neg_one_f16_sgpr 12 ; CHECK: liveins: $sgpr0 13 ; CHECK-NEXT: {{ $}} 14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 15 ; CHECK-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32) 16 ; CHECK-NEXT: %d:_(s16) = G_FNEG %x 17 ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT %d(s16) 18 ; CHECK-NEXT: $sgpr0 = COPY %ext(s32) 19 %0:_(s32) = COPY $sgpr0 20 %x:_(s16) = G_TRUNC %0:_(s32) 21 %y:_(s16) = G_FCONSTANT half -1.0 22 %d:_(s16) = G_FMUL %x, %y 23 %ext:_(s32) = G_ANYEXT %d:_(s16) 24 $sgpr0 = COPY %ext 25 26... 27 28--- 29name: test_neg_one_f32_sgpr 30body: | 31 bb.0: 32 liveins: $sgpr0 33 34 ; CHECK-LABEL: name: test_neg_one_f32_sgpr 35 ; CHECK: liveins: $sgpr0 36 ; CHECK-NEXT: {{ $}} 37 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 38 ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[COPY]] 39 ; CHECK-NEXT: $sgpr0 = COPY [[FNEG]](s32) 40 %0:_(s32) = COPY $sgpr0 41 %1:_(s32) = G_FCONSTANT float -1.0 42 %2:_(s32) = G_FMUL %0, %1 43 $sgpr0 = COPY %2(s32) 44 45... 46 47--- 48name: test_neg_one_f64_sgpr 49tracksRegLiveness: true 50body: | 51 bb.0: 52 liveins: $sgpr0 53 54 ; CHECK-LABEL: name: test_neg_one_f64_sgpr 55 ; CHECK: liveins: $sgpr0 56 ; CHECK-NEXT: {{ $}} 57 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 58 ; CHECK-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32) 59 ; CHECK-NEXT: %d:_(s64) = G_FNEG %x 60 ; CHECK-NEXT: %ext:_(s32) = G_TRUNC %d(s64) 61 ; CHECK-NEXT: $sgpr0 = COPY %ext(s32) 62 %0:_(s32) = COPY $sgpr0 63 %x:_(s64) = G_ANYEXT %0:_(s32) 64 %y:_(s64) = G_FCONSTANT double -1.0 65 %d:_(s64) = G_FMUL %x, %y 66 %ext:_(s32) = G_TRUNC %d:_(s64) 67 $sgpr0 = COPY %ext 68 69... 70 71--- 72name: test_neg_ten_f32_sgpr 73body: | 74 bb.0: 75 liveins: $sgpr0 76 77 ; CHECK-LABEL: name: test_neg_ten_f32_sgpr 78 ; CHECK: liveins: $sgpr0 79 ; CHECK-NEXT: {{ $}} 80 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 81 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+01 82 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[C]] 83 ; CHECK-NEXT: $sgpr0 = COPY [[FMUL]](s32) 84 %0:_(s32) = COPY $sgpr0 85 %1:_(s32) = G_FCONSTANT float -10.0 86 %2:_(s32) = G_FMUL %0, %1 87 $sgpr0 = COPY %2(s32) 88 89... 90 91--- 92name: test_neg_fract_f32_sgpr 93body: | 94 bb.0: 95 liveins: $sgpr0 96 97 ; CHECK-LABEL: name: test_neg_fract_f32_sgpr 98 ; CHECK: liveins: $sgpr0 99 ; CHECK-NEXT: {{ $}} 100 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0 101 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -5.000000e-01 102 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[C]] 103 ; CHECK-NEXT: $sgpr0 = COPY [[FMUL]](s32) 104 %0:_(s32) = COPY $sgpr0 105 %1:_(s32) = G_FCONSTANT float -0.5 106 %2:_(s32) = G_FMUL %0, %1 107 $sgpr0 = COPY %2(s32) 108 109... 110 111--- 112name: test_neg_one_f16_vgpr 113tracksRegLiveness: true 114body: | 115 bb.0: 116 liveins: $vgpr0 117 118 ; CHECK-LABEL: name: test_neg_one_f16_vgpr 119 ; CHECK: liveins: $vgpr0 120 ; CHECK-NEXT: {{ $}} 121 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 122 ; CHECK-NEXT: %x:_(s16) = G_TRUNC [[COPY]](s32) 123 ; CHECK-NEXT: %d:_(s16) = G_FNEG %x 124 ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT %d(s16) 125 ; CHECK-NEXT: $vgpr0 = COPY %ext(s32) 126 %0:_(s32) = COPY $vgpr0 127 %x:_(s16) = G_TRUNC %0:_(s32) 128 %y:_(s16) = G_FCONSTANT half -1.0 129 %d:_(s16) = G_FMUL %x, %y 130 %ext:_(s32) = G_ANYEXT %d:_(s16) 131 $vgpr0 = COPY %ext 132 133... 134 135--- 136name: test_neg_one_f32_vgpr 137body: | 138 bb.0: 139 liveins: $vgpr0 140 141 ; CHECK-LABEL: name: test_neg_one_f32_vgpr 142 ; CHECK: liveins: $vgpr0 143 ; CHECK-NEXT: {{ $}} 144 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 145 ; CHECK-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[COPY]] 146 ; CHECK-NEXT: $vgpr0 = COPY [[FNEG]](s32) 147 %0:_(s32) = COPY $vgpr0 148 %1:_(s32) = G_FCONSTANT float -1.0 149 %2:_(s32) = G_FMUL %0, %1 150 $vgpr0 = COPY %2(s32) 151 152... 153 154--- 155name: test_neg_one_f64_vgpr 156tracksRegLiveness: true 157body: | 158 bb.0: 159 liveins: $vgpr0 160 161 ; CHECK-LABEL: name: test_neg_one_f64_vgpr 162 ; CHECK: liveins: $vgpr0 163 ; CHECK-NEXT: {{ $}} 164 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 165 ; CHECK-NEXT: %x:_(s64) = G_ANYEXT [[COPY]](s32) 166 ; CHECK-NEXT: %d:_(s64) = G_FNEG %x 167 ; CHECK-NEXT: %ext:_(s32) = G_TRUNC %d(s64) 168 ; CHECK-NEXT: $vgpr0 = COPY %ext(s32) 169 %0:_(s32) = COPY $vgpr0 170 %x:_(s64) = G_ANYEXT %0:_(s32) 171 %y:_(s64) = G_FCONSTANT double -1.0 172 %d:_(s64) = G_FMUL %x, %y 173 %ext:_(s32) = G_TRUNC %d:_(s64) 174 $vgpr0 = COPY %ext 175 176... 177 178--- 179name: test_neg_ten_f32_vgpr 180body: | 181 bb.0: 182 liveins: $vgpr0 183 184 ; CHECK-LABEL: name: test_neg_ten_f32_vgpr 185 ; CHECK: liveins: $vgpr0 186 ; CHECK-NEXT: {{ $}} 187 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 188 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+01 189 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[C]] 190 ; CHECK-NEXT: $vgpr0 = COPY [[FMUL]](s32) 191 %0:_(s32) = COPY $vgpr0 192 %1:_(s32) = G_FCONSTANT float -10.0 193 %2:_(s32) = G_FMUL %0, %1 194 $vgpr0 = COPY %2(s32) 195 196... 197 198--- 199name: test_neg_fract_f32_vgpr 200body: | 201 bb.0: 202 liveins: $vgpr0 203 204 ; CHECK-LABEL: name: test_neg_fract_f32_vgpr 205 ; CHECK: liveins: $vgpr0 206 ; CHECK-NEXT: {{ $}} 207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 208 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -5.000000e-01 209 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[C]] 210 ; CHECK-NEXT: $vgpr0 = COPY [[FMUL]](s32) 211 %0:_(s32) = COPY $vgpr0 212 %1:_(s32) = G_FCONSTANT float -0.5 213 %2:_(s32) = G_FMUL %0, %1 214 $vgpr0 = COPY %2(s32) 215 216... 217