brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 46dd4b5 Raw
80 lines · plain
1; RUN: mlir-translate -import-llvm %s -split-input-file | FileCheck %s2 3declare i64 @llvm.aarch64.ldxr.p0(ptr)4 5define dso_local void @t0(ptr %a) {6  %x = call i64 @llvm.aarch64.ldxr.p0(ptr elementtype(i8) %a)7  ret void8}9 10; CHECK-LABEL: llvm.func @llvm.aarch64.ldxr.p0(!llvm.ptr)11; CHECK-LABEL: llvm.func @t012; CHECK:   llvm.call_intrinsic "llvm.aarch64.ldxr.p0"({{.*}}) : (!llvm.ptr {llvm.elementtype = i8}) -> i6413; CHECK:   llvm.return14; CHECK: }15 16; // -----17 18declare <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8>, <8 x i8>)19 20define dso_local <8 x i8> @t1(<8 x i8> %lhs, <8 x i8> %rhs) {21  %r = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> %lhs, <8 x i8> %rhs)22  ret <8 x i8> %r23}24 25; CHECK: llvm.func @t1(%[[A0:.*]]: vector<8xi8>, %[[A1:.*]]: vector<8xi8>) -> vector<8xi8> {{.*}} {26; CHECK:   %[[R:.*]] = llvm.call_intrinsic "llvm.aarch64.neon.uabd.v8i8"(%[[A0]], %[[A1]]) : (vector<8xi8>, vector<8xi8>) -> vector<8xi8>27; CHECK:   llvm.return %[[R]] : vector<8xi8>28; CHECK: }29 30; // -----31 32declare void @llvm.aarch64.neon.st2.v8i8.p0(<8 x i8>, <8 x i8>, ptr)33 34define dso_local void @t2(<8 x i8> %lhs, <8 x i8> %rhs, ptr %a) {35  call void @llvm.aarch64.neon.st2.v8i8.p0(<8 x i8> %lhs, <8 x i8> %rhs, ptr %a)36  ret void37}38 39; CHECK: llvm.func @t2(%[[A0:.*]]: vector<8xi8>, %[[A1:.*]]: vector<8xi8>, %[[A2:.*]]: !llvm.ptr) {{.*}} {40; CHECK:   llvm.call_intrinsic "llvm.aarch64.neon.st2.v8i8.p0"(%[[A0]], %[[A1]], %[[A2]]) : (vector<8xi8>, vector<8xi8>, !llvm.ptr) -> ()41; CHECK:   llvm.return42; CHECK: }43 44; // -----45 46declare void @llvm.gcroot(ptr %arg1, ptr %arg2)47define void @gctest() gc "example" {48  %arg1 = alloca ptr49  call void @llvm.gcroot(ptr %arg1, ptr null)50  ret void51}52 53; CHECK-LABEL: @gctest54; CHECK: llvm.call_intrinsic "llvm.gcroot"({{.*}}, {{.*}}) : (!llvm.ptr, !llvm.ptr) -> ()55 56; // -----57 58; Test we get the supported version, not the unregistered one.59 60declare i32 @llvm.lround.i32.f32(float)61 62; CHECK-LABEL: llvm.func @lround_test63define void @lround_test(float %0, double %1) {64  ; CHECK-NOT: llvm.call_intrinsic "llvm.lround65  ; CHECK: llvm.intr.lround(%{{.*}}) : (f32) -> i3266  %3 = call i32 @llvm.lround.i32.f32(float %0)67  ret void68}69 70; // -----71 72declare i32 @llvm.riscv.sha256sig0(i32)73 74; CHECK-LABEL: test_intrin_arg_attr75define signext i32 @test_intrin_arg_attr(i32 signext %a) nounwind {76    ; CHECK: llvm.call_intrinsic "llvm.riscv.sha256sig0"({{.*}}) : (i32 {llvm.signext}) -> i3277    %val = call i32 @llvm.riscv.sha256sig0(i32 signext %a)78    ret i32 %val79}80