cbuffer A {
float a;
float b;
}
will be translated to a global variable.
Something like
struct CB_Ty {
float a;
float b;
};
CB_Ty A;
And all use of a and b will be replaced with A.a and A.b.
Only support none-legacy cbuffer layout now.
CodeGen for Resource binding will be in separate patch.
In the separate patch, resource binding will map the resource information to the global variable.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D130131
19 lines
488 B
HLSL
19 lines
488 B
HLSL
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
|
|
// RUN: dxil-pc-shadermodel6.3-library %s \
|
|
// RUN: -emit-llvm -disable-llvm-passes -o - | FileCheck %s
|
|
|
|
// CHECK-DAG: @[[CB:.+]] = external constant { float }
|
|
|
|
cbuffer A {
|
|
float a;
|
|
// CHECK-DAG:@b = internal global float 3.000000e+00, align 4
|
|
static float b = 3;
|
|
// CHECK:load float, ptr @[[CB]], align 4
|
|
// CHECK:load float, ptr @b, align 4
|
|
float foo() { return a + b; }
|
|
}
|
|
|
|
float bar() {
|
|
return foo();
|
|
}
|