Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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];
}
Loading