aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll')
-rw-r--r--llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll40
1 files changed, 22 insertions, 18 deletions
diff --git a/llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll b/llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll
index 5e4f1f1..f96d6ba 100644
--- a/llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll
+++ b/llvm/test/CodeGen/SPIRV/branching/OpSwitch64.ll
@@ -19,16 +19,20 @@
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
-; CHECK-SPIRV: OpSwitch %[[#]] %[[#]] 0 0 %[[#]] 1 0 %[[#]] 1 5 %[[#]]
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
-define spir_kernel void @test_64(i32 addrspace(1)* %res) {
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=asm | spirv-as - -o /dev/null %}
+
+; CHECK-SPIRV: OpSwitch %[[#]] %[[#]] 0 %[[#]] 1 %[[#]] 21474836481 %[[#]]
+
+define spir_kernel void @test_64(ptr addrspace(1) %res) {
entry:
- %res.addr = alloca i32 addrspace(1)*, align 8
+ %res.addr = alloca ptr addrspace(1), align 8
%tid = alloca i64, align 8
- store i32 addrspace(1)* %res, i32 addrspace(1)** %res.addr, align 8
+ store ptr addrspace(1) %res, ptr %res.addr, align 8
%call = call spir_func i64 @_Z13get_global_idj(i32 0)
- store i64 %call, i64* %tid, align 8
- %0 = load i64, i64* %tid, align 8
+ store i64 %call, ptr %tid, align 8
+ %0 = load i64, ptr %tid, align 8
switch i64 %0, label %sw.epilog [
i64 0, label %sw.bb
i64 1, label %sw.bb1
@@ -36,24 +40,24 @@ entry:
]
sw.bb: ; preds = %entry
- %1 = load i64, i64* %tid, align 8
- %2 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 8
- %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %2, i64 %1
- store i32 1, i32 addrspace(1)* %arrayidx, align 4
+ %1 = load i64, ptr %tid, align 8
+ %2 = load ptr addrspace(1), ptr %res.addr, align 8
+ %arrayidx = getelementptr inbounds i32, ptr addrspace(1) %2, i64 %1
+ store i32 1, ptr addrspace(1) %arrayidx, align 4
br label %sw.epilog
sw.bb1: ; preds = %entry
- %3 = load i64, i64* %tid, align 8
- %4 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 8
- %arrayidx2 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 %3
- store i32 2, i32 addrspace(1)* %arrayidx2, align 4
+ %3 = load i64, ptr %tid, align 8
+ %4 = load ptr addrspace(1), ptr %res.addr, align 8
+ %arrayidx2 = getelementptr inbounds i32, ptr addrspace(1) %4, i64 %3
+ store i32 2, ptr addrspace(1) %arrayidx2, align 4
br label %sw.epilog
sw.bb3: ; preds = %entry
- %5 = load i64, i64* %tid, align 8
- %6 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 8
- %arrayidx4 = getelementptr inbounds i32, i32 addrspace(1)* %6, i64 %5
- store i32 3, i32 addrspace(1)* %arrayidx4, align 4
+ %5 = load i64, ptr %tid, align 8
+ %6 = load ptr addrspace(1), ptr %res.addr, align 8
+ %arrayidx4 = getelementptr inbounds i32, ptr addrspace(1) %6, i64 %5
+ store i32 3, ptr addrspace(1) %arrayidx4, align 4
br label %sw.epilog
sw.epilog: ; preds = %entry, %sw.bb3, %sw.bb1, %sw.bb