blob: 4a4538ea780aa238b357243da4386dd6c01f2c52 [file] [edit]
; On z/OS, ebcdic output from printf is converted into utf-8 as
; the output being redirected, causing the magic bytes to be incorrect.
; TODO: use a builtin version of printf
; UNSUPPORTED: system-zos
; RUN: llvm-offload-binary -o %t --image=file=%s,arch=abc,triple=x-y-z
; RUN: llvm-objdump --offloading %t | FileCheck %s
; RUN: llvm-offload-binary %t --image=file=%t2,arch=abc,triple=x-y-z
; RUN: echo "-o %t --image=file=%s,arch=abc,triple=x-y-z" > %t.rsp
; RUN: llvm-offload-binary @%t.rsp
; RUN: llvm-objdump --offloading %t | FileCheck %s
; RUN: diff %s %t2
; CHECK: OFFLOADING IMAGE [0]:
; CHECK-NEXT: kind <none>
; CHECK-NEXT: arch abc
; CHECK-NEXT: triple x-y-z
; CHECK-NEXT: producer none
; RUN: llvm-offload-binary -o %t3 --image=file=%s
; RUN: llvm-offload-binary %t3 --image=file=%t4
; RUN: diff %s %t4
; Test extracting all images without specifying --image filters.
; RUN: rm -rf %t.dir && mkdir %t.dir
; RUN: cd %t.dir
; RUN: llvm-offload-binary %t | FileCheck --check-prefix=EXTRACT %s
; EXTRACT: Extracted: llvm-offload-binary.{{.*}}-x-y-z-abc.0.
; Test nested OffloadBinary construction with multiple inner images.
; RUN: llvm-offload-binary -o %t5 --image=file=%s,arch=abc,triple=x-y-z --image=file=%s,arch=def,triple=x-y-z
; RUN: llvm-offload-binary -o %t6 --image=file=%t5,arch=nested,triple=x-y-z
; RUN: llvm-objdump --offloading %t6 | FileCheck %s --check-prefix=NESTED
; NESTED: OFFLOADING IMAGE [0]:
; NESTED-NEXT: kind <none>
; NESTED-NEXT: arch nested
; NESTED-NEXT: triple x-y-z
; NESTED-NEXT: producer none
; NESTED-NEXT: image size {{.*}} bytes
; NESTED-NEXT: nested images 2
; NESTED-EMPTY:
; NESTED-NEXT: OFFLOADING IMAGE [0.0]:
; NESTED-NEXT: kind <none>
; NESTED-NEXT: arch abc
; NESTED-NEXT: triple x-y-z
; NESTED-NEXT: producer none
; NESTED-NEXT: image size {{.*}} bytes
; NESTED-EMPTY:
; NESTED-NEXT: OFFLOADING IMAGE [0.1]:
; NESTED-NEXT: kind <none>
; NESTED-NEXT: arch def
; NESTED-NEXT: triple x-y-z
; NESTED-NEXT: producer none
; NESTED-NEXT: image size {{.*}} bytes
; Test complex nested OffloadBinary construction with multiple levels.
; RUN: llvm-offload-binary -o %t7 --image=file=%s,arch=abc,triple=x-y-z --image=file=%t5,arch=nested,triple=x-y-z
; RUN: llvm-offload-binary -o %t8 --image=file=%t7,arch=nested,triple=x-y-z --image=file=%t5,arch=nested2,triple=x-y-z
; RUN: llvm-objdump --offloading %t8 | FileCheck %s --check-prefix=NESTED2
; NESTED2: OFFLOADING IMAGE [0]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch nested
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-NEXT: nested images 2
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [0.0]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch abc
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [0.1]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch nested
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-NEXT: nested images 2
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [0.1.0]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch abc
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [0.1.1]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch def
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [1]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch nested2
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-NEXT: nested images 2
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [1.0]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch abc
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; NESTED2-EMPTY:
; NESTED2-NEXT: OFFLOADING IMAGE [1.1]:
; NESTED2-NEXT: kind <none>
; NESTED2-NEXT: arch def
; NESTED2-NEXT: triple x-y-z
; NESTED2-NEXT: producer none
; NESTED2-NEXT: image size {{.*}} bytes
; Test extracting nested images.
; RUN: llvm-offload-binary %t6 | FileCheck --check-prefix=EXTRACT-NESTED %s
; EXTRACT-NESTED: Extracted: llvm-offload-binary.{{.*}}-x-y-z-abc.0.
; EXTRACT-NESTED-NEXT: Extracted: llvm-offload-binary.{{.*}}-x-y-z-def.1.
; Test mixed nested and non-nested images.
; RUN: llvm-offload-binary -o %t7 --image=file=%t5,arch=nested,triple=x-y-z --image=file=%s,arch=ghi,triple=x-y-z
; RUN: llvm-offload-binary %t7 | FileCheck --check-prefix=EXTRACT-MIXED %s
; EXTRACT-MIXED: Extracted: llvm-offload-binary.{{.*}}-x-y-z-abc.0.
; EXTRACT-MIXED-NEXT: Extracted: llvm-offload-binary.{{.*}}-x-y-z-def.1.
; EXTRACT-MIXED-NEXT: Extracted: llvm-offload-binary.{{.*}}-x-y-z-ghi.2.
; Test extracting inner OffloadBinary with --image filter.
; RUN: llvm-offload-binary %t7 --image=file=%t8,arch=nested,triple=x-y-z
; RUN: diff %t5 %t8