| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- // RUN: %dxilver 1.2 | %dxc -E main -T ps_6_2 -enable-16bit-types -HV 2018 %s | FileCheck %s
- // CHECK: Use native low precision
- // CHECK: struct struct.Foo
- // CHECK: {
- // CHECK: int16_t h1; ; Offset: 0
- // CHECK: int3 f3; ; Offset: 4
- // CHECK: int16_t2 h2; ; Offset: 16
- // CHECK: int3 f3_1; ; Offset: 20
- // CHECK: int2 f2; ; Offset: 32
- // CHECK: int16_t4 h4; ; Offset: 40
- // CHECK: int16_t2 h2_1; ; Offset: 48
- // CHECK: int16_t3 h3; ; Offset: 52
- // CHECK: double d1; ; Offset: 64
- // CHECK: int16_t3 h3_1; ; Offset: 72
- // CHECK: int i1; ; Offset: 80
- // CHECK: double d2; ; Offset: 88
- // CHECK: } f; ; Offset: 0 Size: 96
- struct Foo {
- int16_t h1;
- int3 f3;
- int16_t2 h2;
- int3 f3_1;
- int2 f2;
- int16_t4 h4;
- int16_t2 h2_1;
- int16_t3 h3;
- double d1;
- int16_t3 h3_1;
- int i1;
- double d2;
- };
- // CHECK: struct struct.Bar
- // CHECK: {
- // CHECK: int16_t h1; ; Offset: 0
- // CHECK: uint16_t h2; ; Offset: 2
- // CHECK: int16_t h3; ; Offset: 4
- // CHECK: uint16_t2 h4; ; Offset: 6
- // CHECK: int16_t3 h5; ; Offset: 10
- // CHECK: uint16_t3 h6; ; Offset: 16
- // CHECK: int16_t4 h7; ; Offset: 22
- // CHECK: int16_t h8; ; Offset: 30
- // CHECK: uint16_t4 h9; ; Offset: 32
- // CHECK: int16_t3 h10; ; Offset: 40
- // CHECK: uint16_t2 h11; ; Offset: 48
- // CHECK: int16_t3 h12; ; Offset: 52
- // CHECK: int16_t2 h13; ; Offset: 58
- // CHECK: uint16_t h14; ; Offset: 62
- // CHECK: int16_t h16; ; Offset: 64
- // CHECK: int16_t h17; ; Offset: 66
- // CHECK: uint16_t h18; ; Offset: 68
- // CHECK: int16_t h19; ; Offset: 70
- // CHECK: int16_t h20; ; Offset: 72
- // CHECK: int16_t h21; ; Offset: 74
- // CHECK: uint16_t h22; ; Offset: 76
- // CHECK: int16_t h23; ; Offset: 78
- // CHECK: } b; ; Offset: 0 Size: 80
- struct Bar {
- int16_t h1;
- uint16_t h2;
- int16_t h3;
- uint16_t2 h4;
- int16_t3 h5;
- uint16_t3 h6;
- int16_t4 h7;
- int16_t h8;
- uint16_t4 h9;
- int16_t3 h10;
- uint16_t2 h11;
- int16_t3 h12;
- int16_t2 h13;
- uint16_t h14;
- int16_t h16;
- int16_t h17;
- uint16_t h18;
- int16_t h19;
- int16_t h20;
- int16_t h21;
- uint16_t h22;
- int16_t h23;
- };
- ConstantBuffer<Foo> f : register(b0);
- ConstantBuffer<Bar> b : register(b1);
- // CHECK: %dx.types.CBufRet.i16.8 = type { i16, i16, i16, i16, i16, i16, i16, i16 }
- int4 main() : SV_Target {
- return f.h1 + f.f3.x
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %f_cbuffer, i32 0) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %f_cbuffer, i32 0) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i32 {{%[0-9]+}}, 1
- + f.h2.x + f.h2.y + f.f3_1.z
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %f_cbuffer, i32 1) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %f_cbuffer, i32 1) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i32 {{%[0-9]+}}, 3
- + f.f2.x + f.h4.x + f.h4.y + f.h4.z + f.h4.w
- // CHECK: call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %f_cbuffer, i32 2) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i32 {{%[0-9]+}}, 0
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %f_cbuffer, i32 2) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 7
- + f.h2_1.x + f.h2_1.y + f.h3.x + f.h3.y + f.h3.z
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %f_cbuffer, i32 3) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- + f.d1 + f.h3_1.x
- // CHECK: call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %f_cbuffer, i32 4) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.f64 {{%[0-9]+}}, 0
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %f_cbuffer, i32 4) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- + f.i1 + f.d2
- // CHECK: call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %f_cbuffer, i32 5) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i32 {{%[0-9]+}}, 0
- // CHECK: call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %f_cbuffer, i32 5) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.f64 {{%[0-9]+}}, 1
- + b.h1 + b.h2 + b.h3 + b.h4.x + b.h5.y + b.h5.x + b.h5.y + b.h5.z +
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %b_cbuffer, i32 0) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 7
- + b.h6.x + b.h6.y + b.h6.z + b.h7.x + b.h7.y + b.h7.z + b.h7.w + b.h8
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %b_cbuffer, i32 1) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 7
- + b.h9.x + b.h9.y + b.h9.z + b.h9.w + b.h10.x + b.h10.y + b.h10.z
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %b_cbuffer, i32 2) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- + b.h11.x + b.h11.y + b.h12.x + b.h12.y + b.h12.z + b.h13.x + b.h13.y + b.h14
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %b_cbuffer, i32 3) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- + b.h16 + b.h17 + b.h18 + b.h19 + b.h20 + b.h21 + b.h22 + b.h23;
- // CHECK: call %dx.types.CBufRet.i16.8 @dx.op.cbufferLoadLegacy.i16(i32 59, %dx.types.Handle %b_cbuffer, i32 4) ; CBufferLoadLegacy(handle,regIndex)
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 0
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 1
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 2
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 3
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 4
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 5
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 6
- // CHECK: extractvalue %dx.types.CBufRet.i16.8 {{%[0-9]+}}, 7
- }
|