|
9 | 9 | ; operations are supported. Also verify that edge cases such as division |
10 | 10 | ; by zero are handled gracefully. |
11 | 11 |
|
| 12 | +; CHECK: @var_snegate = addrspace(1) global i32 -53 |
| 13 | +; CHECK: @var_not = addrspace(1) global i32 -54 |
12 | 14 | ; CHECK: @var_iadd = addrspace(1) global i32 49 |
13 | 15 | ; CHECK: @var_isub = addrspace(1) global i32 57 |
14 | 16 | ; CHECK: @var_imul = addrspace(1) global i32 -212 |
|
28 | 30 | ; CHECK: @var_bitand = addrspace(1) global i32 52 |
29 | 31 | ; CHECK: @var_logor = addrspace(1) global i1 true |
30 | 32 | ; CHECK: @var_logand = addrspace(1) global i1 false |
| 33 | +; CHECK: @var_lognot = addrspace(1) global i1 false |
31 | 34 |
|
32 | 35 | OpCapability Addresses |
33 | 36 | OpCapability Linkage |
34 | 37 | OpCapability Kernel |
35 | 38 | OpMemoryModel Physical32 OpenCL |
36 | 39 | OpEntryPoint Kernel %15 "foo" |
37 | 40 | OpName %entry "entry" |
| 41 | + OpDecorate %var_snegate LinkageAttributes "var_snegate" Export |
| 42 | + OpDecorate %var_not LinkageAttributes "var_not" Export |
38 | 43 | OpDecorate %var_iadd LinkageAttributes "var_iadd" Export |
39 | 44 | OpDecorate %var_isub LinkageAttributes "var_isub" Export |
40 | 45 | OpDecorate %var_imul LinkageAttributes "var_imul" Export |
|
53 | 58 | OpDecorate %var_bitand LinkageAttributes "var_bitand" Export |
54 | 59 | OpDecorate %var_logor LinkageAttributes "var_logor" Export |
55 | 60 | OpDecorate %var_logand LinkageAttributes "var_logand" Export |
| 61 | + OpDecorate %var_lognot LinkageAttributes "var_lognot" Export |
56 | 62 | %bool = OpTypeBool |
57 | 63 | %true = OpConstantTrue %bool |
58 | 64 | %false = OpConstantFalse %bool |
|
61 | 67 | %uint_4 = OpConstant %uint 4 |
62 | 68 | %uint_53 = OpConstant %uint 53 |
63 | 69 | %uint_min4 = OpConstant %uint 0xfffffffc |
| 70 | + %snegate = OpSpecConstantOp %uint SNegate %uint_53 |
| 71 | + %not = OpSpecConstantOp %uint Not %uint_53 |
64 | 72 | %iadd = OpSpecConstantOp %uint IAdd %uint_53 %uint_min4 |
65 | 73 | %isub = OpSpecConstantOp %uint ISub %uint_53 %uint_min4 |
66 | 74 | %imul = OpSpecConstantOp %uint IMul %uint_53 %uint_min4 |
|
79 | 87 | %bitand = OpSpecConstantOp %uint BitwiseAnd %uint_53 %uint_min4 |
80 | 88 | %logor = OpSpecConstantOp %bool LogicalOr %true %false |
81 | 89 | %logand = OpSpecConstantOp %bool LogicalAnd %true %false |
| 90 | + %lognot = OpSpecConstantOp %bool LogicalNot %true |
82 | 91 | %_ptr_uint = OpTypePointer CrossWorkgroup %uint |
83 | 92 | %_ptr_bool = OpTypePointer CrossWorkgroup %bool |
84 | 93 | %void = OpTypeVoid |
85 | 94 | %14 = OpTypeFunction %void |
86 | 95 |
|
| 96 | +%var_snegate = OpVariable %_ptr_uint CrossWorkgroup %snegate |
| 97 | + %var_not = OpVariable %_ptr_uint CrossWorkgroup %not |
87 | 98 | %var_iadd = OpVariable %_ptr_uint CrossWorkgroup %iadd |
88 | 99 | %var_isub = OpVariable %_ptr_uint CrossWorkgroup %isub |
89 | 100 | %var_imul = OpVariable %_ptr_uint CrossWorkgroup %imul |
|
102 | 113 | %var_bitand = OpVariable %_ptr_uint CrossWorkgroup %bitand |
103 | 114 | %var_logor = OpVariable %_ptr_bool CrossWorkgroup %logor |
104 | 115 | %var_logand = OpVariable %_ptr_bool CrossWorkgroup %logand |
| 116 | + %var_lognot = OpVariable %_ptr_bool CrossWorkgroup %lognot |
105 | 117 |
|
106 | 118 | %15 = OpFunction %void Pure %14 |
107 | 119 | %entry = OpLabel |
|
0 commit comments