소스 검색

Fix D3DCOLORtoUBYTE4 intrinsic expansion (#1570)

Tex Riddell 7 년 전
부모
커밋
aba2d60dd0
3개의 변경된 파일6개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 3
      lib/HLSL/HLOperationLower.cpp
  2. 2 1
      tools/clang/test/CodeGenHLSL/intrinsic5.hlsl
  3. 2 1
      tools/clang/test/CodeGenHLSL/intrinsic5_minprec.hlsl

+ 2 - 3
lib/HLSL/HLOperationLower.cpp

@@ -605,9 +605,8 @@ Value *TranslateD3DColorToUByte4(CallInst *CI, IntrinsicOp IOP,
         ConstantVector::getSplat(Ty->getVectorNumElements(), toByteConst);
   }
   Value *byte4 = Builder.CreateFMul(toByteConst, val);
-  byte4 =
-      TrivialDxilUnaryOperation(OP::OpCode::Round_z, byte4, hlslOP, Builder);
-  return Builder.CreateBitCast(byte4, CI->getType());
+  byte4 = TrivialDxilUnaryOperation(OP::OpCode::Round_ne, byte4, hlslOP, Builder);
+  return Builder.CreateCast(Instruction::CastOps::FPToSI, byte4, CI->getType());
 }
 
 // Returns true if pow can be implemented using Fxc's mul-only code gen pattern.

+ 2 - 1
tools/clang/test/CodeGenHLSL/intrinsic5.hlsl

@@ -1,6 +1,7 @@
 // RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
 
-// CHECK: Round_z
+// CHECK: Round_ne
+// CHECK: fptosi
 // CHECK: IsInf
 // CHECK: IsNaN
 // CHECK: IsFinite

+ 2 - 1
tools/clang/test/CodeGenHLSL/intrinsic5_minprec.hlsl

@@ -1,6 +1,7 @@
 // RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
 
-// CHECK: Round_z
+// CHECK: Round_ne
+// CHECK: fptosi
 // CHECK: IsInf
 // CHECK: IsNaN
 // CHECK: IsFinite