aboutsummaryrefslogtreecommitdiff
path: root/tests/cl/program/execute/sha256-Ch.cl
blob: f56df38123f74603fda04a0213d708cd1fd17f8b (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

/*!
[config]
dimensions: 1
global_size: 1 0 0
kernel_name: Ch

[test]
name: 000
arg_out: 0 buffer uint[1] 0
arg_in:  1 uint 0
arg_in:  2 uint 0
arg_in:  3 uint 0

[test]
name: 001
arg_out: 0 buffer uint[1] 1
arg_in:  1 uint 0
arg_in:  2 uint 0
arg_in:  3 uint 1

[test]
name: 010
arg_out: 0 buffer uint[1] 0
arg_in:  1 uint 0
arg_in:  2 uint 1
arg_in:  3 uint 0

[test]
name: 011
arg_out: 0 buffer uint[1] 1
arg_in:  1 uint 0
arg_in:  2 uint 1
arg_in:  3 uint 1

[test]
name: 100
arg_out: 0 buffer uint[1] 0
arg_in:  1 uint 1
arg_in:  2 uint 0
arg_in:  3 uint 0

[test]
name: 101
arg_out: 0 buffer uint[1] 0
arg_in:  1 uint 1
arg_in:  2 uint 0
arg_in:  3 uint 1

[test]
name: 110
arg_out: 0 buffer uint[1] 1
arg_in:  1 uint 1
arg_in:  2 uint 1
arg_in:  3 uint 0

[test]
name: 111
arg_out: 0 buffer uint[1] 1
arg_in:  1 uint 1
arg_in:  2 uint 1
arg_in:  3 uint 1

!*/

kernel void Ch(global uint *out, uint x, uint y, uint z)
{
	// There are several ways to implement this, but this is a commonly used
	// optimized version of it.
	out[0] = (z ^ (x & (y ^ z)));
}