1+ ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
2+ ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
3+
14; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
5+ ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
26
7+ ; CHECK-DAG: OpName [[BOOL_ADD:%.+]] "bool_add"
8+ ; CHECK-DAG: OpName [[BOOL_SUB:%.+]] "bool_sub"
39; CHECK-DAG: OpName [[SCALAR_ADD:%.+]] "scalar_add"
410; CHECK-DAG: OpName [[SCALAR_SUB:%.+]] "scalar_sub"
511; CHECK-DAG: OpName [[SCALAR_MUL:%.+]] "scalar_mul"
1016
1117; CHECK-NOT: DAG-FENCE
1218
19+ ; CHECK-DAG: [[BOOL:%.+]] = OpTypeBool
1320; CHECK-DAG: [[SCALAR:%.+]] = OpTypeInt 32
1421; CHECK-DAG: [[SCALAR_FN:%.+]] = OpTypeFunction [[SCALAR]] [[SCALAR]] [[SCALAR]]
22+ ; CHECK-DAG: [[BOOL_FN:%.+]] = OpTypeFunction [[BOOL]] [[BOOL]] [[BOOL]]
1523
1624; CHECK-NOT: DAG-FENCE
1725
1826
1927;; Test add on scalar:
28+ define i1 @bool_add (i1 %a , i1 %b ) {
29+ %c = add i1 %a , %b
30+ ret i1 %c
31+ }
32+
33+ ; CHECK: [[BOOL_ADD]] = OpFunction [[BOOL]] None [[BOOL_FN]]
34+ ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[BOOL]]
35+ ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[BOOL]]
36+ ; CHECK: OpLabel
37+ ; CHECK: [[C:%.+]] = OpLogicalNotEqual [[BOOL]] [[A]] [[B]]
38+ ; CHECK: OpReturnValue [[C]]
39+ ; CHECK-NEXT: OpFunctionEnd
40+
2041define i32 @scalar_add (i32 %a , i32 %b ) {
2142 %c = add i32 %a , %b
2243 ret i32 %c
@@ -32,6 +53,19 @@ define i32 @scalar_add(i32 %a, i32 %b) {
3253
3354
3455;; Test sub on scalar:
56+ define i1 @bool_sub (i1 %a , i1 %b ) {
57+ %c = sub i1 %a , %b
58+ ret i1 %c
59+ }
60+
61+ ; CHECK: [[BOOL_SUB]] = OpFunction [[BOOL]] None [[BOOL_FN]]
62+ ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[BOOL]]
63+ ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[BOOL]]
64+ ; CHECK: OpLabel
65+ ; CHECK: [[C:%.+]] = OpLogicalNotEqual [[BOOL]] [[A]] [[B]]
66+ ; CHECK: OpReturnValue [[C]]
67+ ; CHECK-NEXT: OpFunctionEnd
68+
3569define i32 @scalar_sub (i32 %a , i32 %b ) {
3670 %c = sub i32 %a , %b
3771 ret i32 %c
0 commit comments