|
| 1 | +;=========================== begin_copyright_notice ============================ |
| 2 | +; |
| 3 | +; Copyright (C) 2026 Intel Corporation |
| 4 | +; |
| 5 | +; SPDX-License-Identifier: MIT |
| 6 | +; |
| 7 | +;============================ end_copyright_notice ============================= |
| 8 | + |
| 9 | +; RUN: igc_opt %s --opaque-pointers -S -o - -types-legalization-pass -dce | FileCheck %s |
| 10 | +; REQUIRES: llvm-14-plus |
| 11 | + |
| 12 | + |
| 13 | +; CHECK-LABEL: define spir_kernel void @test_ResolveStoreArgStruct(%nested.struct.type %in, ptr %out_ptr) { |
| 14 | +; CHECK: [[T1:%.*]] = extractvalue %nested.struct.type %in, 0, 0 |
| 15 | +; CHECK-NEXT: [[T2:%.*]] = getelementptr %nested.struct.type, ptr %out_ptr, i32 0, i32 0, i32 0 |
| 16 | +; CHECK-NEXT: store i32 [[T1]], ptr [[T2]], align 4 |
| 17 | +; CHECK-NEXT: [[T3:%.*]] = extractvalue %nested.struct.type %in, 0, 1 |
| 18 | +; CHECK-NEXT: [[T4:%.*]] = getelementptr %nested.struct.type, ptr %out_ptr, i32 0, i32 0, i32 1 |
| 19 | +; CHECK-NEXT: store double [[T3]], ptr [[T4]], align 4 |
| 20 | +; CHECK-NEXT: [[T5:%.*]] = extractvalue %nested.struct.type %in, 1, 0 |
| 21 | +; CHECK-NEXT: [[T6:%.*]] = getelementptr %nested.struct.type, ptr %out_ptr, i32 0, i32 1, i32 0 |
| 22 | +; CHECK-NEXT: store i32 [[T5]], ptr [[T6]], align 4 |
| 23 | +; CHECK-NEXT: [[T7:%.*]] = extractvalue %nested.struct.type %in, 1, 1 |
| 24 | +; CHECK-NEXT: [[T8:%.*]] = getelementptr %nested.struct.type, ptr %out_ptr, i32 0, i32 1, i32 1 |
| 25 | +; CHECK-NEXT: store i32 [[T7]], ptr [[T8]], align 4 |
| 26 | + |
| 27 | + |
| 28 | +%simple.struct.type = type { i32, double } |
| 29 | +%nested.struct.type = type { %simple.struct.type, [2 x i32] } |
| 30 | + |
| 31 | +define spir_kernel void @test_ResolveStoreArgStruct(%nested.struct.type %in, ptr %out_ptr) |
| 32 | +{ |
| 33 | + store %nested.struct.type %in, ptr %out_ptr, align 4 |
| 34 | + ret void |
| 35 | +} |
0 commit comments