This commit is contained in:
Xiang Li 2020-03-19 11:48:47 -07:00 коммит произвёл GitHub
Родитель 43122fc20b
Коммит 729307c4d9
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 22 добавлений и 9 удалений

Просмотреть файл

@ -712,8 +712,13 @@ Value *TranslatePowUsingFxcMulOnlyPattern(IRBuilder<>& Builder, Value *x, const
Value *TranslatePowImpl(hlsl::OP *hlslOP, IRBuilder<>& Builder, Value *x, Value *y, bool isFXCCompatMode = false) {
// As applicable implement pow using only mul ops as done by Fxc.
int32_t p = 0;
if (isFXCCompatMode && CanUseFxcMulOnlyPatternForPow(Builder, x, y, p)) {
if (CanUseFxcMulOnlyPatternForPow(Builder, x, y, p)) {
if (isFXCCompatMode) {
return TranslatePowUsingFxcMulOnlyPattern(Builder, x, p);
} else if (p == 2) {
// Only take care 2 for it will not affect register pressure.
return Builder.CreateFMul(x, x);
}
}
// Default to log-mul-exp pattern if previous scenarios don't apply.

Просмотреть файл

@ -0,0 +1,16 @@
// RUN: %dxc -T ps_6_0 -E main %s | FileCheck %s
// Make sure pow 2 not generate log -> mul 2 -> exp.
// Log
// CHECK-NOT:call float @dx.op.unary.f32(i32 23,
// CHECK-NOT:fmul fast float %{{.*}}, 2.000000e+00
// Exp
// CHECK-NOT:call float @dx.op.unary.f32(i32 21,
// CHECK: fmul fast float %[[a:.*]], %[[a]]
// CHECK: fmul fast float %[[b:.*]], %[[b]]
// CHECK: fmul fast float %[[c:.*]], %[[c]]
// CHECK: fmul fast float %[[d:.*]], %[[d]]
float4 main(float a :A, float3 b:B) : SV_Target {
return float4(pow(a, 2), pow(b,2));
}

Просмотреть файл

@ -9,8 +9,6 @@
// CHECK: FMax
// CHECK: FMin
// CHECK: FAbs
// CHECK: Log
// CHECK: Exp
// CHECK: Saturate
// CHECK: bufferUpdateCounter
// CHECK: bufferStore

Просмотреть файл

@ -10,8 +10,6 @@
// CHECK: FMax
// CHECK: FMin
// CHECK: FAbs
// CHECK: Log
// CHECK: Exp
// CHECK: Saturate
// CHECK: bufferUpdateCounter
// CHECK: bufferStore

Просмотреть файл

@ -7,8 +7,6 @@
// CHECK: Rsqrt
// CHECK: sample
// CHECK: sample
// CHECK: Log
// CHECK: Exp
// CHECK: Rsqrt
// CHECK: dot3
// CHECK: Saturate

Просмотреть файл

@ -7,8 +7,6 @@
// CHECK: Rsqrt
// CHECK: sample
// CHECK: sample
// CHECK: Log
// CHECK: Exp
// CHECK: Rsqrt
// CHECK: dot3
// CHECK: Saturate