blob: 007b8df7e4628db02f0459a1ce0101efb593c148 [file]
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
; A regression test that checks if memset with a size larger exceeding i8 range
; does not crash the backend.
; CHECK-DAG: %[[#INT8:]] = OpTypeInt 8 0
; CHECK-DAG: %[[#INT32:]] = OpTypeInt 32 0
; CHECK-DAG: %[[#INT64:]] = OpTypeInt 64 0
; CHECK-DAG: %[[#SIZE:]] = OpConstant %[[#INT32]] 444
; CHECK-DAG: %[[#ARRTY:]] = OpTypeArray %[[#INT8]] %[[#SIZE]]
; CHECK-DAG: %[[#ZERO:]] = OpConstantNull %[[#ARRTY]]
; CHECK-DAG: %[[#LEN:]] = OpConstant %[[#INT64]] 444
; CHECK: OpCopyMemorySized %[[#]] %[[#]] %[[#LEN]] Aligned 1
define spir_func void @test_memset_large(ptr addrspace(4) %p) addrspace(4) {
entry:
call addrspace(4) void @llvm.memset.p4.i64(ptr addrspace(4) %p, i8 0, i64 444, i1 false)
ret void
}
declare void @llvm.memset.p4.i64(ptr addrspace(4) writeonly captures(none), i8, i64, i1 immarg) addrspace(4)