82 lines · plain
1// REQUIRES: arm-emulator2 3// DEFINE: %{entry_point} = main4// DEFINE: %{compile} = mlir-opt %s \5// DEFINE: --pass-pipeline="builtin.module(func.func(convert-arm-sme-to-llvm),test-lower-to-llvm)"6// DEFINE: %{run} = %mcr_aarch64_cmd \7// DEFINE: -march=aarch64 -mattr=+sve,+sme \8// DEFINE: -e %{entry_point} -entry-point-result=void \9// DEFINE: -shared-libs=%native_mlir_runner_utils,%native_mlir_c_runner_utils,%native_mlir_arm_runner_utils10 11// RUN: %{compile} | %{run} | FileCheck %s12 13func.func @checkSVL() {14 %svl_b = arm_sme.streaming_vl <byte>15 %svl_h = arm_sme.streaming_vl <half>16 %svl_w = arm_sme.streaming_vl <word>17 %svl_d = arm_sme.streaming_vl <double>18 vector.print str "SVL.b\n"19 vector.print %svl_b : index20 vector.print str "SVL.h\n"21 vector.print %svl_h : index22 vector.print str "SVL.w\n"23 vector.print %svl_w : index24 vector.print str "SVL.d\n"25 vector.print %svl_d : index26 return27}28 29func.func @setAndCheckSVL(%bits: i32) {30 func.call @setArmSVLBits(%bits) : (i32) -> ()31 func.call @checkSVL() : () -> ()32 return33}34 35func.func @main() {36 // CHECK: SVL.b37 // CHECK-NEXT: 1638 //39 // CHECK-NEXT: SVL.h40 // CHECK-NEXT: 841 //42 // CHECK-NEXT: SVL.w43 // CHECK-NEXT: 444 //45 // CHECK-NEXT: SVL.d46 // CHECK-NEXT: 247 %c128 = arith.constant 128 : i3248 func.call @setAndCheckSVL(%c128) : (i32) -> ()49 50 // CHECK: SVL.b51 // CHECK-NEXT: 3252 //53 // CHECK-NEXT: SVL.h54 // CHECK-NEXT: 1655 //56 // CHECK-NEXT: SVL.w57 // CHECK-NEXT: 858 //59 // CHECK-NEXT: SVL.d60 // CHECK-NEXT: 461 %c256 = arith.constant 256 : i3262 func.call @setAndCheckSVL(%c256) : (i32) -> ()63 64 // CHECK: SVL.b65 // CHECK-NEXT: 6466 //67 // CHECK-NEXT: SVL.h68 // CHECK-NEXT: 3269 //70 // CHECK-NEXT: SVL.w71 // CHECK-NEXT: 1672 //73 // CHECK-NEXT: SVL.d74 // CHECK-NEXT: 875 %c512 = arith.constant 512 : i3276 func.call @setAndCheckSVL(%c512) : (i32) -> ()77 78 return79}80 81func.func private @setArmSVLBits(%bits : i32)82