168 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4---5name: rcp_sqrt_test_f326body: |7 bb.0:8 liveins: $sgpr09 10 ; GCN-LABEL: name: rcp_sqrt_test_f3211 ; GCN: liveins: $sgpr012 ; GCN-NEXT: {{ $}}13 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr014 ; GCN-NEXT: [[FSQRT:%[0-9]+]]:_(s32) = G_FSQRT [[COPY]]15 ; GCN-NEXT: [[INT:%[0-9]+]]:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), [[FSQRT]](s32)16 ; GCN-NEXT: $vgpr0 = COPY [[INT]](s32)17 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr018 %0:_(s32) = COPY $sgpr019 %2:_(s32) = G_FSQRT %0:_20 %3:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %2:_(s32)21 $vgpr0 = COPY %3:_(s32)22 SI_RETURN_TO_EPILOG implicit $vgpr023 24...25 26---27name: contract_afn_rcp_contract_sqrt_test_f3228body: |29 bb.0:30 liveins: $sgpr031 32 ; GCN-LABEL: name: contract_afn_rcp_contract_sqrt_test_f3233 ; GCN: liveins: $sgpr034 ; GCN-NEXT: {{ $}}35 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr036 ; GCN-NEXT: [[INT:%[0-9]+]]:_(s32) = contract afn G_INTRINSIC intrinsic(@llvm.amdgcn.rsq), [[COPY]](s32)37 ; GCN-NEXT: $vgpr0 = COPY [[INT]](s32)38 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr039 %0:_(s32) = COPY $sgpr040 %2:_(s32) = contract G_FSQRT %0:_41 %3:_(s32) = contract afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %2:_(s32)42 $vgpr0 = COPY %3:_(s32)43 SI_RETURN_TO_EPILOG implicit $vgpr044 45...46 47---48name: sqrt_rcp_test_f3249body: |50 bb.0:51 liveins: $sgpr052 53 ; GCN-LABEL: name: sqrt_rcp_test_f3254 ; GCN: liveins: $sgpr055 ; GCN-NEXT: {{ $}}56 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr057 ; GCN-NEXT: [[INT:%[0-9]+]]:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), [[COPY]](s32)58 ; GCN-NEXT: [[FSQRT:%[0-9]+]]:_(s32) = G_FSQRT [[INT]]59 ; GCN-NEXT: $vgpr0 = COPY [[FSQRT]](s32)60 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr061 %0:_(s32) = COPY $sgpr062 %2:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %0:_(s32)63 %3:_(s32) = G_FSQRT %2:_64 $vgpr0 = COPY %3:_(s32)65 SI_RETURN_TO_EPILOG implicit $vgpr066 67...68 69---70name: afn_rcp_afn_amdgcn_sqrt_test_f3271body: |72 bb.0:73 liveins: $sgpr074 75 ; GCN-LABEL: name: afn_rcp_afn_amdgcn_sqrt_test_f3276 ; GCN: liveins: $sgpr077 ; GCN-NEXT: {{ $}}78 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr079 ; GCN-NEXT: [[INT:%[0-9]+]]:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), [[COPY]](s32)80 ; GCN-NEXT: [[INT1:%[0-9]+]]:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), [[INT]](s32)81 ; GCN-NEXT: $vgpr0 = COPY [[INT1]](s32)82 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr083 %0:_(s32) = COPY $sgpr084 %1:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), %0:_(s32)85 %2:_(s32) = afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %1:_(s32)86 $vgpr0 = COPY %287 SI_RETURN_TO_EPILOG implicit $vgpr088 89...90 91---92name: afn_contract_rcp_afn_contract_amdgcn_sqrt_test_f3293body: |94 bb.0:95 liveins: $sgpr096 97 ; GCN-LABEL: name: afn_contract_rcp_afn_contract_amdgcn_sqrt_test_f3298 ; GCN: liveins: $sgpr099 ; GCN-NEXT: {{ $}}100 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0101 ; GCN-NEXT: [[INT:%[0-9]+]]:_(s32) = contract afn G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), [[COPY]](s32)102 ; GCN-NEXT: [[INT1:%[0-9]+]]:_(s32) = contract afn G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), [[INT]](s32)103 ; GCN-NEXT: $vgpr0 = COPY [[INT1]](s32)104 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0105 %0:_(s32) = COPY $sgpr0106 %1:_(s32) = afn contract G_INTRINSIC intrinsic(@llvm.amdgcn.sqrt), %0:_(s32)107 %2:_(s32) = afn contract G_INTRINSIC intrinsic(@llvm.amdgcn.rcp), %1:_(s32)108 $vgpr0 = COPY %2109 SI_RETURN_TO_EPILOG implicit $vgpr0110 111...112 113---114name: rsq_test_f16115body: |116 bb.0:117 liveins: $sgpr0118 119 ; GCN-LABEL: name: rsq_test_f16120 ; GCN: liveins: $sgpr0121 ; GCN-NEXT: {{ $}}122 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0123 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)124 ; GCN-NEXT: %sqrt:_(s16) = G_FSQRT [[TRUNC]]125 ; GCN-NEXT: %one:_(s16) = contract G_FCONSTANT half 0xH3C00126 ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %one, %sqrt127 ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)128 ; GCN-NEXT: $vgpr0 = COPY %ext(s32)129 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0130 %0:_(s32) = COPY $sgpr0131 %1:_(s16) = G_TRUNC %0132 %sqrt:_(s16) = G_FSQRT %1:_133 %one:_(s16) = contract G_FCONSTANT half 1.0134 %rsq:_(s16) = contract G_FDIV %one, %sqrt135 %ext:_(s32) = G_ANYEXT %rsq136 $vgpr0 = COPY %ext137 SI_RETURN_TO_EPILOG implicit $vgpr0138 139...140 141---142name: neg_rsq_test_f16143body: |144 bb.0:145 liveins: $sgpr0146 147 ; GCN-LABEL: name: neg_rsq_test_f16148 ; GCN: liveins: $sgpr0149 ; GCN-NEXT: {{ $}}150 ; GCN-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr0151 ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)152 ; GCN-NEXT: %sqrt:_(s16) = G_FSQRT [[TRUNC]]153 ; GCN-NEXT: %one:_(s16) = contract G_FCONSTANT half 0xHBC00154 ; GCN-NEXT: %rsq:_(s16) = contract G_FDIV %one, %sqrt155 ; GCN-NEXT: %ext:_(s32) = G_ANYEXT %rsq(s16)156 ; GCN-NEXT: $vgpr0 = COPY %ext(s32)157 ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0158 %0:_(s32) = COPY $sgpr0159 %1:_(s16) = G_TRUNC %0160 %sqrt:_(s16) = G_FSQRT %1:_161 %one:_(s16) = contract G_FCONSTANT half -1.0162 %rsq:_(s16) = contract G_FDIV %one, %sqrt163 %ext:_(s32) = G_ANYEXT %rsq164 $vgpr0 = COPY %ext165 SI_RETURN_TO_EPILOG implicit $vgpr0166 167...168