|
41 | 41 | #include "llvm/ADT/SmallPtrSet.h" |
42 | 42 | #include "llvm/ADT/StringExtras.h" |
43 | 43 | #include "llvm/Analysis/ValueTracking.h" |
44 | | -#include "llvm/IR/Constants.h" |
45 | 44 | #include "llvm/IR/DataLayout.h" |
46 | 45 | #include "llvm/IR/InlineAsm.h" |
47 | | -#include "llvm/IR/InstrTypes.h" |
48 | 46 | #include "llvm/IR/Intrinsics.h" |
49 | 47 | #include "llvm/IR/IntrinsicsAArch64.h" |
50 | 48 | #include "llvm/IR/IntrinsicsAMDGPU.h" |
|
57 | 55 | #include "llvm/IR/IntrinsicsR600.h" |
58 | 56 | #include "llvm/IR/IntrinsicsRISCV.h" |
59 | 57 | #include "llvm/IR/IntrinsicsS390.h" |
60 | | -#include "llvm/IR/IntrinsicsSPIRV.h" |
61 | 58 | #include "llvm/IR/IntrinsicsVE.h" |
62 | 59 | #include "llvm/IR/IntrinsicsWebAssembly.h" |
63 | 60 | #include "llvm/IR/IntrinsicsX86.h" |
64 | 61 | #include "llvm/IR/MDBuilder.h" |
65 | 62 | #include "llvm/IR/MatrixBuilder.h" |
66 | 63 | #include "llvm/IR/MemoryModelRelaxationAnnotations.h" |
67 | | -#include "llvm/IR/Type.h" |
68 | 64 | #include "llvm/Support/AMDGPUAddrSpace.h" |
69 | 65 | #include "llvm/Support/ConvertUTF.h" |
70 | 66 | #include "llvm/Support/MathExtras.h" |
@@ -112,35 +108,31 @@ static Value *handleHlslClip(const CallExpr *E, CodeGenFunction *CGF) { |
112 | 108 | if (const auto *VecTy = E->getArg(0)->getType()->getAs<clang::VectorType>()) { |
113 | 109 | FZeroConst = ConstantVector::getSplat( |
114 | 110 | ElementCount::getFixed(VecTy->getNumElements()), FZeroConst); |
115 | | - CMP = CGF->Builder.CreateFCmpOLT(Op0, FZeroConst); |
| 111 | + auto *FCompInst = CGF->Builder.CreateFCmpOLT(Op0, FZeroConst); |
| 112 | + CMP = CGF->Builder.CreateIntrinsic( |
| 113 | + CGF->Builder.getInt1Ty(), CGF->CGM.getHLSLRuntime().getAnyIntrinsic(), |
| 114 | + {FCompInst}, nullptr); |
116 | 115 | } else |
117 | 116 | CMP = CGF->Builder.CreateFCmpOLT(Op0, FZeroConst); |
118 | 117 |
|
119 | 118 | if (CGF->CGM.getTarget().getTriple().isDXIL()) |
120 | 119 | return CGF->Builder.CreateIntrinsic(CGF->VoidTy, llvm::Intrinsic::dx_clip, |
121 | 120 | {CMP}, nullptr); |
122 | 121 |
|
123 | | - if (const auto *VecTy = E->getArg(0)->getType()->getAs<clang::VectorType>()){ |
124 | | - |
125 | | - CMP = CGF->Builder.CreateIntrinsic(CGF->Builder.getInt1Ty(), llvm::Intrinsic::spv_any, |
126 | | - {CMP}, nullptr); |
127 | | - } |
128 | | - |
129 | | - |
130 | 122 | BasicBlock *LT0 = CGF->createBasicBlock("lt0", CGF->CurFn); |
131 | 123 | BasicBlock *End = CGF->createBasicBlock("end", CGF->CurFn); |
132 | 124 |
|
133 | 125 | CGF->Builder.CreateCondBr(CMP, LT0, End); |
134 | 126 |
|
135 | 127 | CGF->Builder.SetInsertPoint(LT0); |
136 | 128 |
|
137 | | - auto *IntrCall = CGF->Builder.CreateIntrinsic( |
138 | | - CGF->VoidTy, llvm::Intrinsic::spv_clip, {}, nullptr); |
| 129 | + CGF->Builder.CreateIntrinsic(CGF->VoidTy, llvm::Intrinsic::spv_clip, {}, |
| 130 | + nullptr); |
139 | 131 |
|
140 | | - CGF->Builder.CreateBr(End); |
| 132 | + auto *BrCall = CGF->Builder.CreateBr(End); |
141 | 133 |
|
142 | 134 | CGF->Builder.SetInsertPoint(End); |
143 | | - return IntrCall; |
| 135 | + return BrCall; |
144 | 136 | } |
145 | 137 |
|
146 | 138 | static Value *handleHlslSplitdouble(const CallExpr *E, CodeGenFunction *CGF) { |
|
0 commit comments