diff --git a/lld/test/ELF/lto/aarch64.ll b/lld/test/ELF/lto/aarch64.ll index a6f6ceeb3860..5aba466eaf6a 100644 --- a/lld/test/ELF/lto/aarch64.ll +++ b/lld/test/ELF/lto/aarch64.ll @@ -10,6 +10,7 @@ ; RUN: ld.lld %t/be.o -o %t/be ; RUN: llvm-readobj -h %t/be | FileCheck %s --check-prefixes=CHECK,BE +; CHECK: Class: 64-bit ; LE: DataEncoding: LittleEndian ; BE: DataEncoding: BigEndian ; CHECK: Machine: EM_AARCH64 diff --git a/lld/test/ELF/lto/ppc.ll b/lld/test/ELF/lto/ppc.ll new file mode 100644 index 000000000000..38312e8e530c --- /dev/null +++ b/lld/test/ELF/lto/ppc.ll @@ -0,0 +1,51 @@ +; REQUIRES: ppc +;; Test we can infer the e_machine value EM_PPC/EM_PPC64 from a bitcode file. + +; RUN: split-file %s %t +; RUN: llvm-as %t/32le.ll -o %t/32le.o +; RUN: ld.lld %t/32le.o -o %t/32le +; RUN: llvm-readobj -h %t/32le | FileCheck %s --check-prefix=LE32 + +; RUN: llvm-as %t/32be.ll -o %t/32be.o +; RUN: ld.lld %t/32be.o -o %t/32be +; RUN: llvm-readobj -h %t/32be | FileCheck %s --check-prefix=BE32 + +; RUN: llvm-as %t/64.ll -o %t/64.o +; RUN: ld.lld %t/64.o -o %t/64 +; RUN: llvm-readobj -h %t/64 | FileCheck %s --check-prefix=LE64 + +; LE32: Class: 32-bit +; LE32: DataEncoding: LittleEndian +; LE32: Machine: EM_PPC ( + +; BE32: Class: 32-bit +; BE32: DataEncoding: BigEndian +; BE32: Machine: EM_PPC ( + +; LE64: Class: 64-bit +; LE64: DataEncoding: LittleEndian +; LE64: Machine: EM_PPC64 + +;--- 32le.ll +target datalayout = "e-m:e-p:32:32-i64:64-n32" +target triple = "powerpcle-pc-freebsd" + +define void @_start() { + ret void +} + +;--- 32be.ll +target datalayout = "E-m:e-p:32:32-i64:64-n32" +target triple = "powerpc-unknown-linux-gnu" + +define void @_start() { + ret void +} + +;--- 64.ll +target datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512" +target triple = "powerpc64le-unknown-linux-gnu" + +define void @_start() { + ret void +} diff --git a/lld/test/ELF/lto/ppc64le.ll b/lld/test/ELF/lto/ppc64le.ll deleted file mode 100644 index 917b47231843..000000000000 --- a/lld/test/ELF/lto/ppc64le.ll +++ /dev/null @@ -1,12 +0,0 @@ -; REQUIRES: ppc - -; RUN: llvm-as %s -o %t.o -; RUN: ld.lld %t.o -o %t - -target datalayout = "e-m:e-i64:64-n32:64" -target triple = "powerpc64le-unknown-linux-gnu" - -define void @__start() { - entry: - ret void -} diff --git a/lld/test/ELF/lto/riscv.ll b/lld/test/ELF/lto/riscv.ll new file mode 100644 index 000000000000..6bacadfba005 --- /dev/null +++ b/lld/test/ELF/lto/riscv.ll @@ -0,0 +1,32 @@ +; REQUIRES: riscv +;; Test we can infer the e_machine value EM_RISCV from a bitcode file. + +; RUN: split-file %s %t +; RUN: llvm-as %t/32.ll -o %t/32.o +; RUN: ld.lld %t/32.o -o %t/32 +; RUN: llvm-readobj -h %t/32 | FileCheck %s --check-prefixes=CHECK,RV32 + +; RUN: llvm-as %t/64.ll -o %t/64.o +; RUN: ld.lld %t/64.o -o %t/64 +; RUN: llvm-readobj -h %t/64 | FileCheck %s --check-prefixes=CHECK,RV64 + +; RV32: Class: 32-bit +; RV64: Class: 64-bit +; CHECK: DataEncoding: LittleEndian +; CHECK: Machine: EM_RISCV + +;--- 32.ll +target datalayout = "e-m:e-p:32:32-i64:64-n32-S128" +target triple = "riscv32-unknown-elf" + +define void @_start() { + ret void +} + +;--- 64.ll +target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" +target triple = "riscv64-unknown-elf" + +define void @_start() { + ret void +} diff --git a/lld/test/ELF/lto/riscv32.ll b/lld/test/ELF/lto/riscv32.ll deleted file mode 100644 index 1fe5547748fc..000000000000 --- a/lld/test/ELF/lto/riscv32.ll +++ /dev/null @@ -1,10 +0,0 @@ -; REQUIRES: riscv - -; RUN: llvm-as %s -o %t.o -; RUN: ld.lld %t.o -o %t -target datalayout = "e-m:e-p:32:32-i64:64-n32-S128" -target triple = "riscv32-unknown-elf" - -define void @f() { - ret void -} diff --git a/lld/test/ELF/lto/riscv64.ll b/lld/test/ELF/lto/riscv64.ll deleted file mode 100644 index 59de1de4a8d9..000000000000 --- a/lld/test/ELF/lto/riscv64.ll +++ /dev/null @@ -1,10 +0,0 @@ -; REQUIRES: riscv - -; RUN: llvm-as %s -o %t.o -; RUN: ld.lld %t.o -o %t -target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" -target triple = "riscv64-unknown-elf" - -define void @f() { - ret void -}