summaryrefslogtreecommitdiffstats
path: root/tests/language-feature/bit-cast/float-bit-cast.slang
blob: 66b6812c4dec66aeca7351b9454ca487f207df74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk

struct MyStruct
{
    half a;
    half b;
}



//TEST_INPUT:set inputBuffer = ubuffer(data=[1.0 3.0 4.0], stride=4)
RWStructuredBuffer<float> inputBuffer;


//TEST_INPUT:ubuffer(data=[0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<uint> outputBuffer;

[shader("compute")]
void computeMain()
{
    vector<float, 1> a = {inputBuffer[0]};

    outputBuffer[0] = bit_cast<uint>(a);
    // BUF: 3F800000

    MyStruct s = MyStruct(half(inputBuffer[1]), half(inputBuffer[2]));
    outputBuffer[1] = bit_cast<uint>(s);
    // 2.0 : 0x4000
    // 3.0 : 0x4200
    // BUF-NEXT: 44004200

}