| ; RUN: llc -verify-machineinstrs -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 %} | |
| ; CHECK-LABEL: Begin function original_testcase | |
| define fastcc void @original_testcase() { | |
| top: | |
| %0 = alloca [1 x ptr], align 4 | |
| ; CHECK: OpCompositeInsert | |
| %1 = insertvalue [1 x ptr] zeroinitializer, ptr poison, 0 | |
| store [1 x ptr] %1, ptr %0 | |
| ret void | |
| } | |
| ; CHECK-LABEL: Begin function additional_testcases | |
| define fastcc void @additional_testcases() { | |
| top: | |
| %0 = alloca [2 x ptr], align 4 | |
| ; Test with different pointer types | |
| ; CHECK: OpCompositeInsert | |
| %1 = insertvalue [1 x ptr] zeroinitializer, ptr undef, 0 | |
| ; CHECK: OpStore | |
| store [1 x ptr] %1, ptr %0 | |
| ; CHECK-NEXT: OpCompositeInsert | |
| %2 = insertvalue {ptr, i32} zeroinitializer, ptr poison, 0 | |
| ; CHECK: OpStore | |
| store {ptr, i32} %2, ptr %0 | |
| ; CHECK-NEXT: OpCompositeInsert | |
| %3 = insertvalue {ptr, ptr} undef, ptr null, 0 | |
| ; CHECK: OpStore | |
| store {ptr, ptr} %3, ptr %0 | |
| ; Test with undef aggregate | |
| ; CHECK-NEXT: OpCompositeInsert | |
| %4 = insertvalue [1 x ptr] undef, ptr undef, 0 | |
| ; CHECK: OpStore | |
| store [1 x ptr] %4, ptr %0 | |
| ret void | |
| } |