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
+
1
4
; 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 %}
2
6
7
+ ; CHECK-DAG: OpName [[BOOL_ADD:%.+]] "bool_add"
8
+ ; CHECK-DAG: OpName [[BOOL_SUB:%.+]] "bool_sub"
3
9
; CHECK-DAG: OpName [[SCALAR_ADD:%.+]] "scalar_add"
4
10
; CHECK-DAG: OpName [[SCALAR_SUB:%.+]] "scalar_sub"
5
11
; CHECK-DAG: OpName [[SCALAR_MUL:%.+]] "scalar_mul"
10
16
11
17
; CHECK-NOT: DAG-FENCE
12
18
19
+ ; CHECK-DAG: [[BOOL:%.+]] = OpTypeBool
13
20
; CHECK-DAG: [[SCALAR:%.+]] = OpTypeInt 32
14
21
; CHECK-DAG: [[SCALAR_FN:%.+]] = OpTypeFunction [[SCALAR]] [[SCALAR]] [[SCALAR]]
22
+ ; CHECK-DAG: [[BOOL_FN:%.+]] = OpTypeFunction [[BOOL]] [[BOOL]] [[BOOL]]
15
23
16
24
; CHECK-NOT: DAG-FENCE
17
25
18
26
19
27
;; 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
+
20
41
define i32 @scalar_add (i32 %a , i32 %b ) {
21
42
%c = add i32 %a , %b
22
43
ret i32 %c
@@ -32,6 +53,19 @@ define i32 @scalar_add(i32 %a, i32 %b) {
32
53
33
54
34
55
;; 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
+
35
69
define i32 @scalar_sub (i32 %a , i32 %b ) {
36
70
%c = sub i32 %a , %b
37
71
ret i32 %c
0 commit comments