1// RUN: mlir-opt %s -convert-vector-to-scf -convert-scf-to-cf -convert-vector-to-llvm="enable-x86vector" -convert-func-to-llvm -reconcile-unrealized-casts | \ 2// RUN: mlir-translate --mlir-to-llvmir | \ 3// RUN: %lli --entry-function=entry --mattr="avx512bw,avx512vp2intersect" --dlopen=%mlir_c_runner_utils | \ 4// RUN: FileCheck %s 5 6// Note: To run this test, your CPU must support AVX512 vp2intersect. 7 8func.func @entry() -> i32 { 9 %i0 = arith.constant 0 : i32 10 %i1 = arith.constant 1: i32 11 %i2 = arith.constant 2: i32 12 %i3 = arith.constant 7: i32 13 %i4 = arith.constant 12: i32 14 %i5 = arith.constant -10: i32 15 %i6 = arith.constant -219: i32 16 17 %v0 = vector.broadcast %i1 : i32 to vector<16xi32> 18 %v1 = vector.insert %i2, %v0[1] : i32 into vector<16xi32> 19 %v2 = vector.insert %i3, %v1[4] : i32 into vector<16xi32> 20 %v3 = vector.insert %i4, %v2[6] : i32 into vector<16xi32> 21 %v4 = vector.insert %i5, %v3[7] : i32 into vector<16xi32> 22 %v5 = vector.insert %i0, %v4[10] : i32 into vector<16xi32> 23 %v6 = vector.insert %i0, %v5[12] : i32 into vector<16xi32> 24 %v7 = vector.insert %i3, %v6[13] : i32 into vector<16xi32> 25 %v8 = vector.insert %i3, %v7[14] : i32 into vector<16xi32> 26 %v9 = vector.insert %i0, %v8[15] : i32 into vector<16xi32> 27 vector.print %v9 : vector<16xi32> 28 // CHECK: ( 1, 2, 1, 1, 7, 1, 12, -10, 1, 1, 0, 1, 0, 7, 7, 0 ) 29 30 %w0 = vector.broadcast %i1 : i32 to vector<16xi32> 31 %w1 = vector.insert %i2, %w0[4] : i32 into vector<16xi32> 32 %w2 = vector.insert %i6, %w1[7] : i32 into vector<16xi32> 33 %w3 = vector.insert %i4, %w2[8] : i32 into vector<16xi32> 34 %w4 = vector.insert %i4, %w3[9] : i32 into vector<16xi32> 35 %w5 = vector.insert %i4, %w4[10] : i32 into vector<16xi32> 36 %w6 = vector.insert %i0, %w5[11] : i32 into vector<16xi32> 37 %w7 = vector.insert %i0, %w6[12] : i32 into vector<16xi32> 38 %w8 = vector.insert %i0, %w7[13] : i32 into vector<16xi32> 39 %w9 = vector.insert %i0, %w8[15] : i32 into vector<16xi32> 40 vector.print %w9 : vector<16xi32> 41 // CHECK: ( 1, 1, 1, 1, 2, 1, 1, -219, 12, 12, 12, 0, 0, 0, 1, 0 ) 42 43 %k1, %k2 = x86vector.avx512.vp2intersect %v9, %w9 : vector<16xi32> 44 45 vector.print %k1 : vector<16xi1> 46 // CHECK: ( 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1 ) 47 48 vector.print %k2 : vector<16xi1> 49 // CHECK: ( 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 ) 50 51 return %i0 : i32 52} 53