|
1 | 1 | ; RUN: llvm-as %s -o %t.bc
|
2 | 2 | ; RUN: llvm-spirv %t.bc -o %t.spv
|
3 | 3 | ; RUN: spirv-val %t.spv
|
4 |
| -; RUN: llvm-spirv %t.spv -to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV |
| 4 | +; RUN: llvm-spirv %t.spv -to-text -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-NOEXT |
| 5 | +; RUN: llvm-spirv -r %t.spv -o %t.rev.bc |
| 6 | +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM |
| 7 | + |
| 8 | +; Verify that even though we use the fract instruction with untyped pointers enabled, |
| 9 | +; the SPV binary is valid and we get exactly the same output IR after the reverse translation. |
| 10 | +; RUN: llvm-spirv %t.bc -o %t.spv --spirv-ext=+SPV_KHR_untyped_pointers |
| 11 | +; TODO: enable back once spirv-tools are updated |
| 12 | +; R/UN: spirv-val %t.spv |
| 13 | +; RUN: llvm-spirv %t.spv -to-text -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-EXT |
5 | 14 | ; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
|
6 | 15 | ; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
|
7 | 16 |
|
8 | 17 | source_filename = "math_builtin_float_half.cpp"
|
9 | 18 | target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
|
10 | 19 | target triple = "spirv64-unknown-unknown"
|
11 | 20 |
|
12 |
| -; CHECK-SPIRV: 3 TypeFloat [[HALF:[0-9]+]] 16 |
13 |
| -; CHECK-SPIRV: 4 TypePointer [[HALFPTR:[0-9]+]] 7 [[HALF]] |
14 |
| -; CHECK-SPIRV: 4 TypeVector [[HALFV2:[0-9]+]] [[HALF]] 2 |
15 |
| -; CHECK-SPIRV: 4 TypePointer [[HALFV2PTR:[0-9]+]] 7 [[HALFV2]] |
16 |
| -; CHECK-SPIRV: 4 Constant [[HALF]] [[CONST:[0-9]+]] 14788 |
17 |
| -; CHECK-SPIRV: 4 Variable [[HALFPTR]] [[ADDR:[0-9]+]] 7 |
18 |
| -; CHECK-SPIRV: 4 Variable [[HALFV2PTR]] [[ADDR2:[0-9]+]] 7 |
19 |
| -; CHECK-SPIRV: 7 ExtInst [[HALF]] [[#]] 1 fract [[CONST]] [[ADDR]] |
20 |
| -; CHECK-SPIRV: 7 ExtInst [[HALFV2]] [[#]] 1 fract [[#]] [[ADDR2]] |
| 21 | +; CHECK-SPIRV: TypeFloat [[HALF:[0-9]+]] 16 |
| 22 | +; CHECK-SPIRV-NOEXT: TypePointer [[HALFPTR:[0-9]+]] 7 [[HALF]] |
| 23 | +; CHECK-SPIRV-EXT: TypeUntypedPointerKHR [[HALFPTR:[0-9]+]] 7 |
| 24 | +; CHECK-SPIRV: TypeVector [[HALFV2:[0-9]+]] [[HALF]] 2 |
| 25 | +; CHECK-SPIRV: TypePointer [[HALFV2PTR:[0-9]+]] 7 [[HALFV2]] |
| 26 | +; CHECK-SPIRV: Constant [[HALF]] [[CONST:[0-9]+]] 14788 |
| 27 | +; CHECK-SPIRV-NOEXT: Variable [[HALFPTR]] [[ADDR:[0-9]+]] 7 |
| 28 | +; CHECK-SPIRV-EXT: UntypedVariableKHR [[HALFPTR]] [[ADDR:[0-9]+]] 7 [[HALF]] |
| 29 | +; CHECK-SPIRV: Variable [[HALFV2PTR]] [[ADDR2:[0-9]+]] 7 |
| 30 | +; CHECK-SPIRV: ExtInst [[HALF]] [[#]] 1 fract [[CONST]] [[ADDR]] |
| 31 | +; CHECK-SPIRV: ExtInst [[HALFV2]] [[#]] 1 fract [[#]] [[ADDR2]] |
21 | 32 |
|
22 | 33 | ; CHECK-LLVM: %addr = alloca half
|
23 | 34 | ; CHECK-LLVM: %addr2 = alloca <2 x half>
|
|
0 commit comments