================ @@ -0,0 +1,63 @@ +# RUN: llc -verify-machineinstrs -O0 -mtriple spirv-unknown-unknown -run-pass=spirv-prelegalizer-combiner %s -o - | FileCheck %s +# REQUIRES: asserts +--- +name: faceforward_instcombine_float +tracksRegLiveness: true +legalized: true +body: | + bb.1.entry: + ; CHECK-LABEL: name: faceforward_instcombine_float + ; CHECK-NOT: %9:_(s32) = G_FCONSTANT float 0.000000e+00 + ; CHECK-NOT: %8:_(s32) = G_FMUL %1:fid, %2:fid + ; CHECK-NOT: %10:_(s1) = G_FCMP floatpred(olt), %8:_(s32), %9:_ + ; CHECK-NOT: %11:_(s32) = G_FNEG %0:fid + ; CHECK-NOT: %12:id(s32) = G_SELECT %10:_(s1), %0:fid, %11:_ + ; CHECK: %10:id(s32) = G_INTRINSIC intrinsic(@llvm.spv.faceforward), %2(s32), %3(s32), %4(s32) ---------------- kmpeng wrote:
I'm not really familiar with what `G_INTRINSIC_W_SIDE_EFFECTS` is. From my understanding, the spirv faceforward intrinsic is treated as a pure mathematical operation that doesn't have side effects (as it has the IntrNoMem property), so this shouldn't be needed? https://github.com/llvm/llvm-project/pull/139959 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits