@@ -26,53 +26,58 @@ void main()
26
26
//////////////////////////////////////////////////////////////////////////
27
27
28
28
// CHECK: [[val1_27:%[0-9]+]] = OpLoad %int %val1
29
- // CHECK-NEXT: [[iadd27:%[0-9]+]] = OpAtomicIAdd %int %dest_i %uint_1 %uint_0 [[val1_27]]
29
+ // CHECK-NEXT: [[iadd27:%[0-9]+]] = OpAtomicIAdd %int %dest_i %uint_2 %uint_0 [[val1_27]]
30
30
// CHECK-NEXT: OpStore %original_i_val [[iadd27]]
31
31
InterlockedAdd (dest_i, val1, original_i_val);
32
32
33
33
// CHECK: [[buff:%[0-9]+]] = OpFunctionCall %type_buffer_image %getDest
34
34
// CHECK-NEXT: OpStore %temp_var_RWBuffer [[buff]]
35
- // CHECK-NEXT: OpImageTexelPointer %_ptr_Image_uint %temp_var_RWBuffer %uint_0 %uint_0
35
+ // CHECK-NEXT: [[ptr:%[0-9]+]] = OpImageTexelPointer %_ptr_Image_uint %temp_var_RWBuffer %uint_0 %uint_0
36
+ // CHECK-NEXT: [[load_28:%[0-9]+]] = OpLoad %int %val1
37
+ // CHECK-NEXT: [[val1_28:%[0-9]+]] = OpBitcast %uint [[load_28]]
38
+ // CHECK-NEXT: [[iadd28:%[0-9]+]] = OpAtomicIAdd %uint [[ptr]] %uint_1 %uint_0 [[val1_28]]
39
+ // CHECK-NEXT: [[iadd28_2:%[0-9]+]] = OpBitcast %int [[iadd28]]
40
+ // CHECK-NEXT: OpStore %original_i_val [[iadd28_2]]
36
41
InterlockedAdd (getDest ()[0 ], val1, original_i_val);
37
42
38
- // CHECK: [[and28:%[0-9]+]] = OpAtomicAnd %uint %dest_u %uint_1 %uint_0 %uint_10
43
+ // CHECK: [[and28:%[0-9]+]] = OpAtomicAnd %uint %dest_u %uint_2 %uint_0 %uint_10
39
44
// CHECK-NEXT: OpStore %original_u_val [[and28]]
40
45
InterlockedAnd (dest_u, 10 , original_u_val);
41
46
42
47
// CHECK: [[uint10:%[0-9]+]] = OpBitcast %int %uint_10
43
- // CHECK-NEXT: [[asmax29:%[0-9]+]] = OpAtomicSMax %int %dest_i %uint_1 %uint_0 [[uint10]]
48
+ // CHECK-NEXT: [[asmax29:%[0-9]+]] = OpAtomicSMax %int %dest_i %uint_2 %uint_0 [[uint10]]
44
49
// CHECK-NEXT: OpStore %original_i_val [[asmax29]]
45
50
InterlockedMax (dest_i, 10 , original_i_val);
46
51
47
- // CHECK: [[umin30:%[0-9]+]] = OpAtomicUMin %uint %dest_u %uint_1 %uint_0 %uint_10
52
+ // CHECK: [[umin30:%[0-9]+]] = OpAtomicUMin %uint %dest_u %uint_2 %uint_0 %uint_10
48
53
// CHECK-NEXT: OpStore %original_u_val [[umin30]]
49
54
InterlockedMin (dest_u, 10 , original_u_val);
50
55
51
56
// CHECK: [[val2_31:%[0-9]+]] = OpLoad %int %val2
52
- // CHECK-NEXT: [[or31:%[0-9]+]] = OpAtomicOr %int %dest_i %uint_1 %uint_0 [[val2_31]]
57
+ // CHECK-NEXT: [[or31:%[0-9]+]] = OpAtomicOr %int %dest_i %uint_2 %uint_0 [[val2_31]]
53
58
// CHECK-NEXT: OpStore %original_i_val [[or31]]
54
59
InterlockedOr (dest_i, val2, original_i_val);
55
60
56
- // CHECK: [[xor32:%[0-9]+]] = OpAtomicXor %uint %dest_u %uint_1 %uint_0 %uint_10
61
+ // CHECK: [[xor32:%[0-9]+]] = OpAtomicXor %uint %dest_u %uint_2 %uint_0 %uint_10
57
62
// CHECK-NEXT: OpStore %original_u_val [[xor32]]
58
63
InterlockedXor (dest_u, 10 , original_u_val);
59
64
60
65
// CHECK: [[val1_33:%[0-9]+]] = OpLoad %int %val1
61
66
// CHECK-NEXT: [[val2_33:%[0-9]+]] = OpLoad %int %val2
62
- // CHECK-NEXT: {{%[0-9]+}} = OpAtomicCompareExchange %int %dest_i %uint_1 %uint_0 %uint_0 [[val2_33]] [[val1_33]]
67
+ // CHECK-NEXT: {{%[0-9]+}} = OpAtomicCompareExchange %int %dest_i %uint_2 %uint_0 %uint_0 [[val2_33]] [[val1_33]]
63
68
InterlockedCompareStore (dest_i, val1, val2);
64
69
65
- // CHECK: [[ace34:%[0-9]+]] = OpAtomicCompareExchange %uint %dest_u %uint_1 %uint_0 %uint_0 %uint_20 %uint_15
70
+ // CHECK: [[ace34:%[0-9]+]] = OpAtomicCompareExchange %uint %dest_u %uint_2 %uint_0 %uint_0 %uint_20 %uint_15
66
71
// CHECK-NEXT: OpStore %original_u_val [[ace34]]
67
72
InterlockedCompareExchange (dest_u, 15 , 20 , original_u_val);
68
73
69
74
// CHECK: [[val2_35:%[0-9]+]] = OpLoad %int %val2
70
- // CHECK-NEXT: [[ace35:%[0-9]+]] = OpAtomicExchange %int %dest_i %uint_1 %uint_0 [[val2_35]]
75
+ // CHECK-NEXT: [[ace35:%[0-9]+]] = OpAtomicExchange %int %dest_i %uint_2 %uint_0 [[val2_35]]
71
76
// CHECK-NEXT: OpStore %original_i_val [[ace35]]
72
77
InterlockedExchange (dest_i, val2, original_i_val);
73
78
74
79
// CHECK: [[val_f:%[0-9]+]] = OpLoad %float %val_f1
75
- // CHECK-NEXT: [[ace36:%[0-9]+]] = OpAtomicExchange %float %dest_f %uint_1 %uint_0 [[val_f]]
80
+ // CHECK-NEXT: [[ace36:%[0-9]+]] = OpAtomicExchange %float %dest_f %uint_2 %uint_0 [[val_f]]
76
81
// CHECK-NEXT: OpStore %original_f_val [[ace36]]
77
82
InterlockedExchange (dest_f, val_f1, original_f_val);
78
83
}
0 commit comments