[mlir][py] Enable loading only specified dialects during creation. (#121421)
[llvm-project.git] / mlir / test / Target / SPIRV / bit-ops.mlir
blob61e863eb9f1c4384cdb472b421aba7016dc6630e
1 // RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s
3 spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
4   spirv.func @bitcount(%arg: i32) -> i32 "None" {
5     // CHECK: spirv.BitCount {{%.*}} : i32
6     %0 = spirv.BitCount %arg : i32
7     spirv.ReturnValue %0 : i32
8   }
9   spirv.func @bit_field_insert(%base: vector<3xi32>, %insert: vector<3xi32>, %offset: i32, %count: i16) -> vector<3xi32> "None" {
10     // CHECK: {{%.*}} = spirv.BitFieldInsert {{%.*}}, {{%.*}}, {{%.*}}, {{%.*}} : vector<3xi32>, i32, i16
11     %0 = spirv.BitFieldInsert %base, %insert, %offset, %count : vector<3xi32>, i32, i16
12     spirv.ReturnValue %0 : vector<3xi32>
13   }
14   spirv.func @bit_field_s_extract(%base: vector<3xi32>, %offset: i8, %count: i8) -> vector<3xi32> "None" {
15     // CHECK: {{%.*}} = spirv.BitFieldSExtract {{%.*}}, {{%.*}}, {{%.*}} : vector<3xi32>, i8, i8
16     %0 = spirv.BitFieldSExtract %base, %offset, %count : vector<3xi32>, i8, i8
17     spirv.ReturnValue %0 : vector<3xi32>
18   }
19   spirv.func @bit_field_u_extract(%base: vector<3xi32>, %offset: i8, %count: i8) -> vector<3xi32> "None" {
20     // CHECK: {{%.*}} = spirv.BitFieldUExtract {{%.*}}, {{%.*}}, {{%.*}} : vector<3xi32>, i8, i8
21     %0 = spirv.BitFieldUExtract %base, %offset, %count : vector<3xi32>, i8, i8
22     spirv.ReturnValue %0 : vector<3xi32>
23   }
24   spirv.func @bitreverse(%arg: i32) -> i32 "None" {
25     // CHECK: spirv.BitReverse {{%.*}} : i32
26     %0 = spirv.BitReverse %arg : i32
27     spirv.ReturnValue %0 : i32
28   }
29   spirv.func @not(%arg: i32) -> i32 "None" {
30     // CHECK: spirv.Not {{%.*}} : i32
31     %0 = spirv.Not %arg : i32
32     spirv.ReturnValue %0 : i32
33   }
34   spirv.func @bitwise_scalar(%arg0 : i32, %arg1 : i32) "None" {
35     // CHECK: spirv.BitwiseAnd
36     %0 = spirv.BitwiseAnd %arg0, %arg1 : i32
37     // CHECK: spirv.BitwiseOr
38     %1 = spirv.BitwiseOr %arg0, %arg1 : i32
39     // CHECK: spirv.BitwiseXor
40     %2 = spirv.BitwiseXor %arg0, %arg1 : i32
41     spirv.Return
42   }
43   spirv.func @shift_left_logical(%arg0: i32, %arg1 : i16) -> i32 "None" {
44     // CHECK: {{%.*}} = spirv.ShiftLeftLogical {{%.*}}, {{%.*}} : i32, i16
45     %0 = spirv.ShiftLeftLogical %arg0, %arg1: i32, i16
46     spirv.ReturnValue %0 : i32
47   }
48   spirv.func @shift_right_arithmetic(%arg0: vector<4xi32>, %arg1 : vector<4xi8>) -> vector<4xi32> "None" {
49     // CHECK: {{%.*}} = spirv.ShiftRightArithmetic {{%.*}}, {{%.*}} : vector<4xi32>, vector<4xi8>
50     %0 = spirv.ShiftRightArithmetic %arg0, %arg1: vector<4xi32>, vector<4xi8>
51     spirv.ReturnValue %0 : vector<4xi32>
52   }
53   spirv.func @shift_right_logical(%arg0: vector<2xi32>, %arg1 : vector<2xi8>) -> vector<2xi32> "None" {
54     // CHECK: {{%.*}} = spirv.ShiftRightLogical {{%.*}}, {{%.*}} : vector<2xi32>, vector<2xi8>
55     %0 = spirv.ShiftRightLogical %arg0, %arg1: vector<2xi32>, vector<2xi8>
56     spirv.ReturnValue %0 : vector<2xi32>
57   }