From e6be75cda2a815f2b79767046a8cc72bbcd238c8 Mon Sep 17 00:00:00 2001 From: Ryan Scott Date: Sun, 23 Apr 2023 10:12:53 -0400 Subject: [PATCH] disasm-test: Add opaque pointer test cases See #177. --- disasm-test/tests/opaque-atomicrmw.ll | 4 ++++ disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll | 4 ++++ disasm-test/tests/opaque-call.ll | 11 +++++++++++ disasm-test/tests/opaque-call.pre-llvm15.ll | 4 ++++ disasm-test/tests/opaque-constant-getelementptr.ll | 9 +++++++++ .../tests/opaque-constant-getelementptr.pre-llvm15.ll | 4 ++++ disasm-test/tests/opaque-getelementptr.ll | 8 ++++++++ disasm-test/tests/opaque-getelementptr.pre-llvm15.ll | 4 ++++ 8 files changed, 48 insertions(+) create mode 100644 disasm-test/tests/opaque-atomicrmw.ll create mode 100644 disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll create mode 100644 disasm-test/tests/opaque-call.ll create mode 100644 disasm-test/tests/opaque-call.pre-llvm15.ll create mode 100644 disasm-test/tests/opaque-constant-getelementptr.ll create mode 100644 disasm-test/tests/opaque-constant-getelementptr.pre-llvm15.ll create mode 100644 disasm-test/tests/opaque-getelementptr.ll create mode 100644 disasm-test/tests/opaque-getelementptr.pre-llvm15.ll diff --git a/disasm-test/tests/opaque-atomicrmw.ll b/disasm-test/tests/opaque-atomicrmw.ll new file mode 100644 index 00000000..27c27c59 --- /dev/null +++ b/disasm-test/tests/opaque-atomicrmw.ll @@ -0,0 +1,4 @@ +define void @atomicrmw(ptr %a, i32 %i) { + %b = atomicrmw add ptr %a, i32 %i acquire + ret void +} diff --git a/disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll b/disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll new file mode 100644 index 00000000..d7cb3b6c --- /dev/null +++ b/disasm-test/tests/opaque-atomicrmw.pre-llvm15.ll @@ -0,0 +1,4 @@ +SKIP_TEST + +This test case requires the use of opaque pointers, which are most easily +usable with LLVM 15 or later. diff --git a/disasm-test/tests/opaque-call.ll b/disasm-test/tests/opaque-call.ll new file mode 100644 index 00000000..8c323d32 --- /dev/null +++ b/disasm-test/tests/opaque-call.ll @@ -0,0 +1,11 @@ +define void @f(i32 %x) { + ret void +} + +define void @g() { + %p = alloca ptr + store ptr @f, ptr %p + %f = load ptr, ptr %p + call void (i32) %f(i32 42) + ret void +} diff --git a/disasm-test/tests/opaque-call.pre-llvm15.ll b/disasm-test/tests/opaque-call.pre-llvm15.ll new file mode 100644 index 00000000..d7cb3b6c --- /dev/null +++ b/disasm-test/tests/opaque-call.pre-llvm15.ll @@ -0,0 +1,4 @@ +SKIP_TEST + +This test case requires the use of opaque pointers, which are most easily +usable with LLVM 15 or later. diff --git a/disasm-test/tests/opaque-constant-getelementptr.ll b/disasm-test/tests/opaque-constant-getelementptr.ll new file mode 100644 index 00000000..7d3c5d5b --- /dev/null +++ b/disasm-test/tests/opaque-constant-getelementptr.ll @@ -0,0 +1,9 @@ +%struct.RT = type { i8, [10 x [20 x i32]], i8 } +%struct.ST = type { i32, double, %struct.RT } + +@.s = private constant %struct.ST zeroinitializer + +define ptr @foo() { +entry: + ret ptr getelementptr inbounds (%struct.ST, ptr @.s, i64 1, i32 2, i32 1, i64 5, i64 13) +} diff --git a/disasm-test/tests/opaque-constant-getelementptr.pre-llvm15.ll b/disasm-test/tests/opaque-constant-getelementptr.pre-llvm15.ll new file mode 100644 index 00000000..d7cb3b6c --- /dev/null +++ b/disasm-test/tests/opaque-constant-getelementptr.pre-llvm15.ll @@ -0,0 +1,4 @@ +SKIP_TEST + +This test case requires the use of opaque pointers, which are most easily +usable with LLVM 15 or later. diff --git a/disasm-test/tests/opaque-getelementptr.ll b/disasm-test/tests/opaque-getelementptr.ll new file mode 100644 index 00000000..b6739792 --- /dev/null +++ b/disasm-test/tests/opaque-getelementptr.ll @@ -0,0 +1,8 @@ +%struct.RT = type { i8, [10 x [20 x i32]], i8 } +%struct.ST = type { i32, double, %struct.RT } + +define ptr @foo(ptr %s) { +entry: + %arrayidx = getelementptr inbounds %struct.ST, ptr %s, i64 1, i32 2, i32 1, i64 5, i64 13 + ret ptr %arrayidx +} diff --git a/disasm-test/tests/opaque-getelementptr.pre-llvm15.ll b/disasm-test/tests/opaque-getelementptr.pre-llvm15.ll new file mode 100644 index 00000000..d7cb3b6c --- /dev/null +++ b/disasm-test/tests/opaque-getelementptr.pre-llvm15.ll @@ -0,0 +1,4 @@ +SKIP_TEST + +This test case requires the use of opaque pointers, which are most easily +usable with LLVM 15 or later.