diff options
| author | Tom Eccles <tom.eccles@codethink.co.uk> | 2020-06-04 11:13:52 +0100 |
|---|---|---|
| committer | Tom Eccles <tom.eccles@codethink.co.uk> | 2020-06-04 12:02:03 +0100 |
| commit | 37e8e0571279265f8abfdd9dd93fbc58677029df (patch) | |
| tree | 784b806209cb5adda79f3aa5093e5cc9fc819826 | |
| parent | c872dcf956e541315985ee5fdc592907c20df8ec (diff) | |
| download | rust-37e8e0571279265f8abfdd9dd93fbc58677029df.tar.gz rust-37e8e0571279265f8abfdd9dd93fbc58677029df.zip | |
test: codegen: Add riscv abi llvm intrinsics test
| -rw-r--r-- | src/test/codegen/call-llvm-intrinsics.rs | 2 | ||||
| -rw-r--r-- | src/test/codegen/riscv-abi/call-llvm-intrinsics.rs | 30 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/test/codegen/call-llvm-intrinsics.rs b/src/test/codegen/call-llvm-intrinsics.rs index c7a464a9b0e..24e3d3cd64b 100644 --- a/src/test/codegen/call-llvm-intrinsics.rs +++ b/src/test/codegen/call-llvm-intrinsics.rs @@ -1,5 +1,7 @@ // compile-flags: -C no-prepopulate-passes +// ignore-riscv64 + #![feature(link_llvm_intrinsics)] #![crate_type = "lib"] diff --git a/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs b/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs new file mode 100644 index 00000000000..f100a23a318 --- /dev/null +++ b/src/test/codegen/riscv-abi/call-llvm-intrinsics.rs @@ -0,0 +1,30 @@ +// compile-flags: -C no-prepopulate-passes + +// only-riscv64 + +#![feature(link_llvm_intrinsics)] +#![crate_type = "lib"] + +struct A; + +impl Drop for A { + fn drop(&mut self) { + println!("A"); + } +} + +extern { + #[link_name = "llvm.sqrt.f32"] + fn sqrt(x: f32) -> f32; +} + +pub fn do_call() { + let _a = A; + + unsafe { + // Ensure that we `call` LLVM intrinsics instead of trying to `invoke` them + // CHECK: store float 4.000000e+00, float* %{{.}}, align 4 + // CHECK: call float @llvm.sqrt.f32(float %{{.}} + sqrt(4.0); + } +} |
