56 lines
1.6 KiB
Plaintext
56 lines
1.6 KiB
Plaintext
// Test to check 'alloca()' implementation.
|
|
// RUN: %{ispc} %s --target=host --nowrap -O0 --emit-llvm-text -o - | FileCheck %s
|
|
// RUN: %{ispc} %s --target=gen9-x8 --nowrap -O0 --emit-llvm-text -o - | FileCheck %s -check-prefix=CHECK-XE
|
|
|
|
// REQUIRES: X86_ENABLED
|
|
// REQUIRES: XE_ENABLED
|
|
|
|
extern void goo(uniform int *uniform alloca_ptr);
|
|
// CHECK: @foo0
|
|
// CHECK: alloca i8, i32 8, align 16
|
|
// CHECK-XE: @foo0
|
|
// CHECK-XE: alloca i8, i64 8, align 16
|
|
extern void foo0() {
|
|
goo((uniform int *uniform)alloca(8));
|
|
}
|
|
|
|
// CHECK: @foo1
|
|
// CHECK: alloca i8, i32 %size_load, align 16
|
|
// CHECK-XE: @foo1
|
|
// CHECK-XE: alloca i8, i64 %size, align 16
|
|
extern void foo1(uniform size_t size) {
|
|
goo((uniform int *uniform)alloca(size));
|
|
}
|
|
|
|
// CHECK: @foo2
|
|
// CHECK: alloca i8, i32 %size_load_to_uint32, align 16
|
|
// CHECK-XE: @foo2
|
|
// CHECK-XE: alloca i8, i64 %size_load_to_uint64, align 16
|
|
extern void foo2(uniform int8 size) {
|
|
goo((uniform int *uniform)alloca(size));
|
|
}
|
|
|
|
// CHECK: @foo3
|
|
// CHECK: alloca i8, i32 %size_load_to_uint32, align 16
|
|
// CHECK-XE: @foo3
|
|
// CHECK-XE: alloca i8, i64 %size_load_to_uint64, align 16
|
|
extern void foo3(uniform float size) {
|
|
goo((uniform int *uniform)alloca(size));
|
|
}
|
|
|
|
// CHECK: @foo4
|
|
// CHECK: alloca i8, i32 %size_load_load_to_uint32, align 16
|
|
// CHECK-XE: @foo4
|
|
// CHECK-XE: alloca i8, i64 %size_load_load_to_uint64, align 16
|
|
extern void foo4(uniform float *uniform size) {
|
|
goo((uniform int *uniform)alloca(*size));
|
|
}
|
|
|
|
// CHECK: @foo5
|
|
// CHECK: alloca i8, i32 8, align 16
|
|
// CHECK-XE: @foo5
|
|
// CHECK-XE: alloca i8, i64 8, align 16
|
|
extern void foo5() {
|
|
goo((uniform int *uniform)alloca(sizeof(uniform double)));
|
|
}
|