[Frontend] Remove unused includes (NFC) (#116927)
[llvm-project.git] / llvm / test / CodeGen / SPIRV / instructions / scalar-bitwise-operations.ll
blob81f19b7e8ad64e13345ab0e47e2d2f66e3447c05
1 ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
3 ; CHECK-DAG: OpName [[SCALAR_SHL:%.+]] "scalar_shl"
4 ; CHECK-DAG: OpName [[SCALAR_LSHR:%.+]] "scalar_lshr"
5 ; CHECK-DAG: OpName [[SCALAR_ASHR:%.+]] "scalar_ashr"
6 ; CHECK-DAG: OpName [[SCALAR_AND:%.+]] "scalar_and"
7 ; CHECK-DAG: OpName [[SCALAR_OR:%.+]] "scalar_or"
8 ; CHECK-DAG: OpName [[SCALAR_XOR:%.+]] "scalar_xor"
10 ; CHECK-NOT: DAG-FENCE
12 ; CHECK-DAG: [[SCALAR:%.+]] = OpTypeInt 32
13 ; CHECK-DAG: [[SCALAR_FN:%.+]] = OpTypeFunction [[SCALAR]] [[SCALAR]] [[SCALAR]]
15 ; CHECK-NOT: DAG-FENCE
18 ;; Test shl on scalar:
19 define i32 @scalar_shl(i32 %a, i32 %b) {
20     %c = shl i32 %a, %b
21     ret i32 %c
24 ; CHECK:      [[SCALAR_SHL]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
25 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
26 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
27 ; CHECK:      OpLabel
28 ; CHECK:      [[C:%.+]] = OpShiftLeftLogical [[SCALAR]] [[A]] [[B]]
29 ; CHECK:      OpReturnValue [[C]]
30 ; CHECK-NEXT: OpFunctionEnd
33 ;; Test lshr on scalar:
34 define i32 @scalar_lshr(i32 %a, i32 %b) {
35     %c = lshr i32 %a, %b
36     ret i32 %c
39 ; CHECK:      [[SCALAR_LSHR]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
40 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
41 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
42 ; CHECK:      OpLabel
43 ; CHECK:      [[C:%.+]] = OpShiftRightLogical [[SCALAR]] [[A]] [[B]]
44 ; CHECK:      OpReturnValue [[C]]
45 ; CHECK-NEXT: OpFunctionEnd
48 ;; Test ashr on scalar:
49 define i32 @scalar_ashr(i32 %a, i32 %b) {
50     %c = ashr i32 %a, %b
51     ret i32 %c
54 ; CHECK:      [[SCALAR_ASHR]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
55 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
56 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
57 ; CHECK:      OpLabel
58 ; CHECK:      [[C:%.+]] = OpShiftRightArithmetic [[SCALAR]] [[A]] [[B]]
59 ; CHECK:      OpReturnValue [[C]]
60 ; CHECK-NEXT: OpFunctionEnd
63 ;; Test and on scalar:
64 define i32 @scalar_and(i32 %a, i32 %b) {
65     %c = and i32 %a, %b
66     ret i32 %c
69 ; CHECK:      [[SCALAR_AND]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
70 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
71 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
72 ; CHECK:      OpLabel
73 ; CHECK:      [[C:%.+]] = OpBitwiseAnd [[SCALAR]] [[A]] [[B]]
74 ; CHECK:      OpReturnValue [[C]]
75 ; CHECK-NEXT: OpFunctionEnd
78 ;; Test or on scalar:
79 define i32 @scalar_or(i32 %a, i32 %b) {
80     %c = or i32 %a, %b
81     ret i32 %c
84 ; CHECK:      [[SCALAR_OR]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
85 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
86 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
87 ; CHECK:      OpLabel
88 ; CHECK:      [[C:%.+]] = OpBitwiseOr [[SCALAR]] [[A]] [[B]]
89 ; CHECK:      OpReturnValue [[C]]
90 ; CHECK-NEXT: OpFunctionEnd
93 ;; Test xor on scalar:
94 define i32 @scalar_xor(i32 %a, i32 %b) {
95     %c = xor i32 %a, %b
96     ret i32 %c
99 ; CHECK:      [[SCALAR_XOR]] = OpFunction [[SCALAR]] None [[SCALAR_FN]]
100 ; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[SCALAR]]
101 ; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[SCALAR]]
102 ; CHECK:      OpLabel
103 ; CHECK:      [[C:%.+]] = OpBitwiseXor [[SCALAR]] [[A]] [[B]]
104 ; CHECK:      OpReturnValue [[C]]
105 ; CHECK-NEXT: OpFunctionEnd