200 lines · plain
1# RUN: llc -verify-machineinstrs -O0 -mtriple spirv-vulkan1.3-unknown -run-pass=spirv-prelegalizer-combiner %s -o - | FileCheck %s2# REQUIRES: asserts3---4name: faceforward_instcombine_float5tracksRegLiveness: true6legalized: true7body: |8 bb.1.entry:9 ; CHECK-LABEL: name: faceforward_instcombine_float10 ; CHECK-NOT: %9:_(s32) = G_FCONSTANT float 0.000000e+0011 ; CHECK-NOT: %8:_(s32) = G_FMUL %1:fid, %2:fid12 ; CHECK-NOT: %10:_(s1) = G_FCMP floatpred(olt), %8:_(s32), %9:_13 ; CHECK-NOT: %11:_(s32) = G_FNEG %0:fid14 ; CHECK-NOT: %12:id(s32) = G_SELECT %10:_(s1), %0:fid, %11:_15 ; CHECK: %10:id(s32) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %2(s32), %3(s32), %4(s32)16 ; CHECK: OpReturnValue %10(s32)17 %3:type(s64) = OpTypeFloat 3218 %5:type(s64) = OpTypeFunction %3:type(s64), %3:type(s64), %3:type(s64), %3:type(s64)19 OpName %0:fid(s32), 9720 OpName %1:fid(s32), 9821 OpName %2:fid(s32), 9922 %4:iid(s64) = OpFunction %3:type(s64), 0, %5:type(s64)23 %0:fid(s32) = OpFunctionParameter %3:type(s64)24 %1:fid(s32) = OpFunctionParameter %3:type(s64)25 %2:fid(s32) = OpFunctionParameter %3:type(s64)26 OpName %4:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 11627 %9:_(s32) = G_FCONSTANT float 0.000000e+0028 %8:_(s32) = G_FMUL %1:fid, %2:fid29 %10:_(s1) = G_FCMP floatpred(olt), %8:_(s32), %9:_30 %11:_(s32) = G_FNEG %0:fid31 %12:id(s32) = G_SELECT %10:_(s1), %0:fid, %11:_32 OpReturnValue %12:id(s32)33---34name: faceforward_instcombine_float435tracksRegLiveness: true36legalized: true37body: |38 bb.1.entry:39 ; CHECK-LABEL: name: faceforward_instcombine_float440 ; CHECK-NOT: %10:_(s32) = G_FCONSTANT float 0.000000e+0041 ; CHECK-NOT: %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)42 ; CHECK-NOT: %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_43 ; CHECK-NOT: %12:_(<4 x s32>) = G_FNEG %0:vfid44 ; CHECK-NOT: %13:id(<4 x s32>) = G_SELECT %11:_(s1), %0:vfid, %12:_45 ; CHECK: %11:id(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %3(<4 x s32>), %4(<4 x s32>), %5(<4 x s32>)46 ; CHECK: OpReturnValue %11(<4 x s32>)47 %4:type(s64) = OpTypeVector %3:type(s64), 448 %6:type(s64) = OpTypeFunction %4:type(s64), %4:type(s64), %4:type(s64), %4:type(s64)49 %3:type(s64) = OpTypeFloat 3250 OpName %0:vfid(<4 x s32>), 9751 OpName %1:vfid(<4 x s32>), 9852 OpName %2:vfid(<4 x s32>), 9953 %5:iid(s64) = OpFunction %4:type(s64), 0, %6:type(s64)54 %0:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)55 %1:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)56 %2:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)57 OpName %5:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 1342858 %10:_(s32) = G_FCONSTANT float 0.000000e+0059 %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)60 %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_61 %12:_(<4 x s32>) = G_FNEG %0:vfid62 %13:id(<4 x s32>) = G_SELECT %11:_(s1), %0:vfid, %12:_63 OpReturnValue %13:id(<4 x s32>)64---65name: faceforward_instcombine_float_constants66tracksRegLiveness: true67legalized: true68body: |69 bb.1.entry:70 ; CHECK-LABEL: name: faceforward_instcombine_float_constants71 ; CHECK-NOT: %9:_(s32) = G_FCONSTANT float 0.000000e+0072 ; CHECK-NOT: %13:_(s32) = G_FCONSTANT float -1.000000e+0073 ; CHECK-NOT: %8:_(s32) = G_FMUL %1:fid, %2:fid74 ; CHECK-NOT: %10:_(s1) = G_FCMP floatpred(olt), %8:_(s32), %9:_75 ; CHECK-NOT: %11:id(s32) = G_SELECT %10:_(s1), %12:_, %13:_76 ; CHECK: %7:_(s32) = G_FCONSTANT float 1.000000e+0077 ; CHECK: %11:id(s32) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %7(s32), %3(s32), %4(s32)78 ; CHECK: OpReturnValue %11(s32)79 %3:type(s64) = OpTypeFloat 3280 %5:type(s64) = OpTypeFunction %3:type(s64), %3:type(s64), %3:type(s64), %3:type(s64)81 OpName %0:fid(s32), 9782 OpName %1:fid(s32), 9883 OpName %2:fid(s32), 9984 %4:iid(s64) = OpFunction %3:type(s64), 0, %5:type(s64)85 %0:fid(s32) = OpFunctionParameter %3:type(s64)86 %1:fid(s32) = OpFunctionParameter %3:type(s64)87 %2:fid(s32) = OpFunctionParameter %3:type(s64)88 OpName %4:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 1868783476, 1635021678, 756644689 %9:_(s32) = G_FCONSTANT float 0.000000e+0090 %12:_(s32) = G_FCONSTANT float 1.000000e+0091 %13:_(s32) = G_FCONSTANT float -1.000000e+0092 %8:_(s32) = G_FMUL %1:fid, %2:fid93 %10:_(s1) = G_FCMP floatpred(olt), %8:_(s32), %9:_94 %11:id(s32) = G_SELECT %10:_(s1), %12:_, %13:_95 OpReturnValue %11:id(s32)96---97name: faceforward_instcombine_float4_constants98tracksRegLiveness: true99legalized: true100body: |101 bb.1.entry:102 ; CHECK-LABEL: name: faceforward_instcombine_float4_constants103 ; CHECK-NOT: %10:_(s32) = G_FCONSTANT float 0.000000e+00104 ; CHECK-NOT: %16:_(s32) = G_FCONSTANT float -1.000000e+00105 ; CHECK-NOT: %15:_(<4 x s32>) = G_BUILD_VECTOR %16:_(s32), %16:_(s32), %16:_(s32), %16:_(s32)106 ; CHECK-NOT: %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)107 ; CHECK-NOT: %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_108 ; CHECK-NOT: %12:id(<4 x s32>) = G_SELECT %11:_(s1), %13:_, %15:_109 ; CHECK: %8:_(s32) = G_FCONSTANT float 1.000000e+00110 ; CHECK: %9:_(<4 x s32>) = G_BUILD_VECTOR %8(s32), %8(s32), %8(s32), %8(s32)111 ; CHECK: %14:id(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %9(<4 x s32>), %4(<4 x s32>), %5(<4 x s32>)112 ; CHECK: OpReturnValue %14(<4 x s32>)113 %4:type(s64) = OpTypeVector %3:type(s64), 4114 %6:type(s64) = OpTypeFunction %4:type(s64), %4:type(s64), %4:type(s64), %4:type(s64)115 %3:type(s64) = OpTypeFloat 32116 OpName %0:vfid(<4 x s32>), 97117 OpName %1:vfid(<4 x s32>), 98118 OpName %2:vfid(<4 x s32>), 99119 %5:iid(s64) = OpFunction %4:type(s64), 0, %6:type(s64)120 %0:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)121 %1:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)122 %2:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)123 OpName %5:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 1667183732, 1953721967, 1937010273, 0124 %10:_(s32) = G_FCONSTANT float 0.000000e+00125 %14:_(s32) = G_FCONSTANT float 1.000000e+00126 %13:_(<4 x s32>) = G_BUILD_VECTOR %14:_(s32), %14:_(s32), %14:_(s32), %14:_(s32)127 %16:_(s32) = G_FCONSTANT float -1.000000e+00128 %15:_(<4 x s32>) = G_BUILD_VECTOR %16:_(s32), %16:_(s32), %16:_(s32), %16:_(s32)129 %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)130 %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_131 %12:id(<4 x s32>) = G_SELECT %11:_(s1), %13:_, %15:_132 OpReturnValue %12:id(<4 x s32>)133---134name: faceforward_instcombine_float4_false_fmul135tracksRegLiveness: true136legalized: true137body: |138 bb.1.entry:139 ; CHECK-LABEL: name: faceforward_instcombine_float4_false_fmul140 ; CHECK-NOT: %10:_(s32) = G_FCONSTANT float 0.000000e+00141 ; CHECK-NOT: %13:_(s32) = G_FCONSTANT float -1.000000e+00142 ; CHECK-NOT: %12:_(<4 x s32>) = G_BUILD_VECTOR %13:_(s32), %13:_(s32), %13:_(s32), %13:_(s32)143 ; CHECK-NOT: %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)144 ; CHECK-NOT: %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_145 ; CHECK-NOT: %14:_(<4 x s32>) = G_FMUL %0:vfid, %12:_146 ; CHECK-NOT: %15:id(<4 x s32>) = G_SELECT %11:_(s1), %0:vfid, %14:_147 ; CHECK: %13:id(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %3(<4 x s32>), %4(<4 x s32>), %5(<4 x s32>)148 ; CHECK: OpReturnValue %13(<4 x s32>)149 %4:type(s64) = OpTypeVector %3:type(s64), 4150 %6:type(s64) = OpTypeFunction %4:type(s64), %4:type(s64), %4:type(s64), %4:type(s64)151 %3:type(s64) = OpTypeFloat 32152 OpName %0:vfid(<4 x s32>), 97153 OpName %1:vfid(<4 x s32>), 98154 OpName %2:vfid(<4 x s32>), 99155 %5:iid(s64) = OpFunction %4:type(s64), 0, %6:type(s64)156 %0:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)157 %1:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)158 %2:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)159 OpName %5:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 1717515380, 1702063201, 1970103903, 108160 %10:_(s32) = G_FCONSTANT float 0.000000e+00161 %13:_(s32) = G_FCONSTANT float -1.000000e+00162 %12:_(<4 x s32>) = G_BUILD_VECTOR %13:_(s32), %13:_(s32), %13:_(s32), %13:_(s32)163 %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)164 %11:_(s1) = G_FCMP floatpred(olt), %9:_(s32), %10:_165 %14:_(<4 x s32>) = G_FMUL %0:vfid, %12:_166 %15:id(<4 x s32>) = G_SELECT %11:_(s1), %0:vfid, %14:_167 OpReturnValue %15:id(<4 x s32>)168---169name: faceforward_instcombine_float4_ogt170tracksRegLiveness: true171legalized: true172body: |173 bb.1.entry:174 ; CHECK-LABEL: name: faceforward_instcombine_float4175 ; CHECK-NOT: %10:_(s32) = G_FCONSTANT float 0.000000e+00176 ; CHECK-NOT: %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)177 ; CHECK-NOT: %11:_(s1) = G_FCMP floatpred(ogt), %10:_(s32), %9:_178 ; CHECK-NOT: %12:_(<4 x s32>) = G_FNEG %0:vfid179 ; CHECK-NOT: %13:id(<4 x s32>) = G_SELECT %11:_(s1), %12:_, %0:vfid180 ; CHECK: %11:id(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %3(<4 x s32>), %4(<4 x s32>), %5(<4 x s32>)181 ; CHECK: OpReturnValue %11(<4 x s32>)182 %4:type(s64) = OpTypeVector %3:type(s64), 4183 %6:type(s64) = OpTypeFunction %4:type(s64), %4:type(s64), %4:type(s64), %4:type(s64)184 %3:type(s64) = OpTypeFloat 32185 OpName %0:vfid(<4 x s32>), 97186 OpName %1:vfid(<4 x s32>), 98187 OpName %2:vfid(<4 x s32>), 99188 %5:iid(s64) = OpFunction %4:type(s64), 0, %6:type(s64)189 %0:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)190 %1:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)191 %2:vfid(<4 x s32>) = OpFunctionParameter %4:type(s64)192 OpName %5:iid(s64), 1701011814, 2003988326, 1600418401, 1953721961, 1651339107, 1600482921, 1634692198, 1868510324, 29799193 %10:_(s32) = G_FCONSTANT float 0.000000e+00194 %9:_(s32) = G_INTRINSIC intrinsic(@llvm.spv.fdot), %1:vfid(<4 x s32>), %2:vfid(<4 x s32>)195 %11:_(s1) = G_FCMP floatpred(ogt), %10:_(s32), %9:_196 %12:_(<4 x s32>) = G_FNEG %0:vfid197 %13:id(<4 x s32>) = G_SELECT %11:_(s1), %12:_, %0:vfid198 OpReturnValue %13:id(<4 x s32>)199 200