|
@@ -1,38 +1,85 @@
|
|
|
// Run: %dxc -T ps_6_0 -E main
|
|
|
|
|
|
-// TODO
|
|
|
-// - 16bit & 64bit integers/floats (require additional capabilities)
|
|
|
+// CHECK: OpCapability Float64
|
|
|
+
|
|
|
+// CHECK: OpDecorate %m16i RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m12i RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m16u RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m16f RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m10f RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m16i1 RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m12i1 RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m16u1 RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m16f1 RelaxedPrecision
|
|
|
+// CHECK: OpDecorate %m10f1 RelaxedPrecision
|
|
|
|
|
|
// CHECK-DAG: %void = OpTypeVoid
|
|
|
// CHECK-DAG: %{{[0-9]+}} = OpTypeFunction %void
|
|
|
void main() {
|
|
|
+
|
|
|
// CHECK-DAG: %bool = OpTypeBool
|
|
|
// CHECK-DAG: %_ptr_Function_bool = OpTypePointer Function %bool
|
|
|
- bool a;
|
|
|
+ bool boolvar;
|
|
|
+
|
|
|
// CHECK-DAG: %int = OpTypeInt 32 1
|
|
|
// CHECK-DAG: %_ptr_Function_int = OpTypePointer Function %int
|
|
|
- int b;
|
|
|
+ int intvar;
|
|
|
+ min16int m16i;
|
|
|
+ min12int m12i;
|
|
|
+
|
|
|
// CHECK-DAG: %uint = OpTypeInt 32 0
|
|
|
// CHECK-DAG: %_ptr_Function_uint = OpTypePointer Function %uint
|
|
|
- uint c;
|
|
|
- dword d;
|
|
|
+ uint uintvar;
|
|
|
+ dword dwordvar;
|
|
|
+ min16uint m16u;
|
|
|
+
|
|
|
// CHECK-DAG: %float = OpTypeFloat 32
|
|
|
// CHECK-DAG: %_ptr_Function_float = OpTypePointer Function %float
|
|
|
- float e;
|
|
|
- bool1 a1;
|
|
|
- int1 b1;
|
|
|
- uint1 c1;
|
|
|
- dword1 d1;
|
|
|
- float1 e1;
|
|
|
-
|
|
|
-// CHECK: %a = OpVariable %_ptr_Function_bool Function
|
|
|
-// CHECK-NEXT: %b = OpVariable %_ptr_Function_int Function
|
|
|
-// CHECK-NEXT: %c = OpVariable %_ptr_Function_uint Function
|
|
|
-// CHECK-NEXT: %d = OpVariable %_ptr_Function_uint Function
|
|
|
-// CHECK-NEXT: %e = OpVariable %_ptr_Function_float Function
|
|
|
-// CHECK-NEXT: %a1 = OpVariable %_ptr_Function_bool Function
|
|
|
-// CHECK-NEXT: %b1 = OpVariable %_ptr_Function_int Function
|
|
|
-// CHECK-NEXT: %c1 = OpVariable %_ptr_Function_uint Function
|
|
|
-// CHECK-NEXT: %d1 = OpVariable %_ptr_Function_uint Function
|
|
|
-// CHECK-NEXT: %e1 = OpVariable %_ptr_Function_float Function
|
|
|
+ float floatvar;
|
|
|
+ half halfvar;
|
|
|
+ min16float m16f;
|
|
|
+ min10float m10f;
|
|
|
+
|
|
|
+// CHECK-DAG: %double = OpTypeFloat 64
|
|
|
+// CHECK-DAG: %_ptr_Function_double = OpTypePointer Function %double
|
|
|
+ double doublevar;
|
|
|
+
|
|
|
+// These following variables should use the types already defined above.
|
|
|
+ bool1 boolvar1;
|
|
|
+ int1 intvar1;
|
|
|
+ min16int1 m16i1;
|
|
|
+ min12int1 m12i1;
|
|
|
+ uint1 uintvar1;
|
|
|
+ dword1 dwordvar1;
|
|
|
+ min16uint1 m16u1;
|
|
|
+ float1 floatvar1;
|
|
|
+ half1 halfvar1;
|
|
|
+ min16float1 m16f1;
|
|
|
+ min10float1 m10f1;
|
|
|
+ double1 doublevar1;
|
|
|
+
|
|
|
+// CHECK: %boolvar = OpVariable %_ptr_Function_bool Function
|
|
|
+// CHECK-NEXT: %intvar = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %m16i = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %m12i = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %uintvar = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %dwordvar = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %m16u = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %floatvar = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %halfvar = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %m16f = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %m10f = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %doublevar = OpVariable %_ptr_Function_double Function
|
|
|
+// CHECK-NEXT: %boolvar1 = OpVariable %_ptr_Function_bool Function
|
|
|
+// CHECK-NEXT: %intvar1 = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %m16i1 = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %m12i1 = OpVariable %_ptr_Function_int Function
|
|
|
+// CHECK-NEXT: %uintvar1 = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %dwordvar1 = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %m16u1 = OpVariable %_ptr_Function_uint Function
|
|
|
+// CHECK-NEXT: %floatvar1 = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %halfvar1 = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %m16f1 = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %m10f1 = OpVariable %_ptr_Function_float Function
|
|
|
+// CHECK-NEXT: %doublevar1 = OpVariable %_ptr_Function_double Function
|
|
|
}
|