| ; RUN: llc -O0 -mtriple=spirv64v1.3-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV | |
| ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64v1.3-unknown-unknown %s -o - -filetype=obj | spirv-val %} | |
| ;; kernel void test(int global *in, int global *in2) { | |
| ;; if (!in) | |
| ;; return; | |
| ;; if (in == 1) | |
| ;; return; | |
| ;; if (in > in2) | |
| ;; return; | |
| ;; if (in < in2) | |
| ;; return; | |
| ;; } | |
| ; CHECK-SPIRV: OpSpecConstantOp %[[#]] ConvertPtrToU | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpINotEqual | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpIEqual | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpUGreaterThan | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpConvertPtrToU | |
| ; CHECK-SPIRV: OpULessThan | |
| define dso_local spir_kernel void @test(ptr addrspace(1) noundef %in, ptr addrspace(1) noundef %in2) { | |
| entry: | |
| %in.addr = alloca ptr addrspace(1), align 8 | |
| %in2.addr = alloca ptr addrspace(1), align 8 | |
| store ptr addrspace(1) %in, ptr %in.addr, align 8 | |
| store ptr addrspace(1) %in2, ptr %in2.addr, align 8 | |
| %0 = load ptr addrspace(1), ptr %in.addr, align 8 | |
| %tobool = icmp ne ptr addrspace(1) %0, null | |
| br i1 %tobool, label %if.end, label %if.then | |
| if.then: ; preds = %entry | |
| br label %if.end8 | |
| if.end: ; preds = %entry | |
| %1 = load ptr addrspace(1), ptr %in.addr, align 8 | |
| %cmp = icmp eq ptr addrspace(1) %1, inttoptr (i64 1 to ptr addrspace(1)) | |
| br i1 %cmp, label %if.then1, label %if.end2 | |
| if.then1: ; preds = %if.end | |
| br label %if.end8 | |
| if.end2: ; preds = %if.end | |
| %2 = load ptr addrspace(1), ptr %in.addr, align 8 | |
| %3 = load ptr addrspace(1), ptr %in2.addr, align 8 | |
| %cmp3 = icmp ugt ptr addrspace(1) %2, %3 | |
| br i1 %cmp3, label %if.then4, label %if.end5 | |
| if.then4: ; preds = %if.end2 | |
| br label %if.end8 | |
| if.end5: ; preds = %if.end2 | |
| %4 = load ptr addrspace(1), ptr %in.addr, align 8 | |
| %5 = load ptr addrspace(1), ptr %in2.addr, align 8 | |
| %cmp6 = icmp ult ptr addrspace(1) %4, %5 | |
| br i1 %cmp6, label %if.then7, label %if.end8 | |
| if.then7: ; preds = %if.end5 | |
| br label %if.end8 | |
| if.end8: ; preds = %if.then, %if.then1, %if.then4, %if.then7, %if.end5 | |
| ret void | |
| } |