Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/slang/hlsl.meta.slang
Original file line number Diff line number Diff line change
Expand Up @@ -25101,7 +25101,7 @@ struct CoopVec<T : __BuiltinArithmeticType, let N : int> : IArray<T>, IArithmeti
}

__intrinsic_op($(kIROp_Neg))
This __pureNeg(This other);
static This __pureNeg(This other);

/// Returns a new cooperative vector where each component has its sign negated.
/// @return A new cooperative vector containing the negated values.
Expand Down
27 changes: 27 additions & 0 deletions tests/cooperative-vector/neg.slang
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -render-feature cooperative-vector -output-using-type
//DISABLE_TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12 -render-feature cooperative-vector -dx12-experimental -use-dxil -output-using-type -profile cs_6_9 -Xslang... -Xdxc -Vd -X.
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -output-using-type

// CHECK: type: int32_t
// CHECK-NEXT: -1
// CHECK-NEXT: -2
// CHECK-NEXT: -3
// CHECK-NEXT: -4
// CHECK-NEXT: -5

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

//TEST_INPUT:ubuffer(data=[1 2 3 4 5], stride=4),name=input1
ByteAddressBuffer input1;

[numthreads(1, 1, 1)]
void computeMain()
{
CoopVec<int, 5> vec1 = coopVecLoad<5, int32_t>(input1);

let result = -vec1;

for(int i = 0; i < result.getCount(); ++i)
outputBuffer[i] = result[i];
}