@@ -307,7 +307,7 @@ void func_single_struct_element_struct_arg(single_struct_element_struct_arg_t ar
307
307
// CHECK: void @func_different_size_type_pair_arg(i64 %arg1.coerce0, i32 %arg1.coerce1)
308
308
void func_different_size_type_pair_arg (different_size_type_pair arg1 ) { }
309
309
310
- // CHECK: void @func_flexible_array_arg(ptr addrspace(5) nocapture noundef byval(%struct.flexible_array) align 4 %arg)
310
+ // CHECK: void @func_flexible_array_arg(ptr addrspace(5) nocapture noundef readnone byval(%struct.flexible_array) align 4 %arg)
311
311
void func_flexible_array_arg (flexible_array arg ) { }
312
312
313
313
// CHECK: define{{.*}} float @func_f32_ret()
@@ -448,12 +448,11 @@ flexible_array func_flexible_array_ret()
448
448
// CHECK: define{{.*}} void @func_reg_state_lo(<4 x i32> noundef %arg0, <4 x i32> noundef %arg1, <4 x i32> noundef %arg2, i32 noundef %arg3, i32 %s.coerce0, float %s.coerce1, i32 %s.coerce2)
449
449
void func_reg_state_lo (int4 arg0 , int4 arg1 , int4 arg2 , int arg3 , struct_arg_t s ) { }
450
450
451
- // CHECK: define{{.*}} void @func_reg_state_hi(<4 x i32> noundef %arg0, <4 x i32> noundef %arg1, <4 x i32> noundef %arg2, i32 noundef %arg3, i32 noundef %arg4, ptr addrspace(5) nocapture noundef byref(%struct.struct_arg) align 4 %0)
452
-
451
+ // CHECK: define{{.*}} void @func_reg_state_hi(<4 x i32> noundef %arg0, <4 x i32> noundef %arg1, <4 x i32> noundef %arg2, i32 noundef %arg3, i32 noundef %arg4, ptr addrspace(5) nocapture noundef readnone byref(%struct.struct_arg) align 4 %{{.*}})
453
452
void func_reg_state_hi (int4 arg0 , int4 arg1 , int4 arg2 , int arg3 , int arg4 , struct_arg_t s ) { }
454
453
455
454
// XXX - Why don't the inner structs flatten?
456
- // CHECK: define{{.*}} void @func_reg_state_num_regs_nested_struct(<4 x i32> noundef %arg0, i32 noundef %arg1, i32 %arg2.coerce0, %struct.nested %arg2.coerce1, i32 %arg3.coerce0, %struct.nested %arg3.coerce1, ptr addrspace(5) nocapture noundef byref(%struct.num_regs_nested_struct) align 8 %0 )
455
+ // CHECK: define{{.*}} void @func_reg_state_num_regs_nested_struct(<4 x i32> noundef %arg0, i32 noundef %arg1, i32 %arg2.coerce0, %struct.nested %arg2.coerce1, i32 %arg3.coerce0, %struct.nested %arg3.coerce1, ptr addrspace(5) nocapture noundef readnone byref(%struct.num_regs_nested_struct) align 8 %{{.*}} )
457
456
void func_reg_state_num_regs_nested_struct (int4 arg0 , int arg1 , num_regs_nested_struct arg2 , num_regs_nested_struct arg3 , num_regs_nested_struct arg4 ) { }
458
457
459
458
// CHECK: define{{.*}} void @func_double_nested_struct_arg(<4 x i32> noundef %arg0, i32 noundef %arg1, i32 %arg2.coerce0, %struct.double_nested %arg2.coerce1, i16 %arg2.coerce2)
@@ -468,7 +467,7 @@ double_nested_struct func_double_nested_struct_ret(int4 arg0, int arg1) {
468
467
// CHECK: define{{.*}} void @func_large_struct_padding_arg_direct(i8 %arg.coerce0, i32 %arg.coerce1, i8 %arg.coerce2, i32 %arg.coerce3, i8 %arg.coerce4, i8 %arg.coerce5, i16 %arg.coerce6, i16 %arg.coerce7, [3 x i8] %arg.coerce8, i64 %arg.coerce9, i32 %arg.coerce10, i8 %arg.coerce11, i32 %arg.coerce12, i16 %arg.coerce13, i8 %arg.coerce14)
469
468
void func_large_struct_padding_arg_direct (large_struct_padding arg ) { }
470
469
471
- // CHECK: define{{.*}} void @func_large_struct_padding_arg_store(ptr addrspace(1) nocapture noundef writeonly %out, ptr addrspace(5) nocapture noundef readonly byref(%struct.large_struct_padding) align 8 %0 )
470
+ // CHECK: define{{.*}} void @func_large_struct_padding_arg_store(ptr addrspace(1) nocapture noundef writeonly %out, ptr addrspace(5) nocapture noundef readonly byref(%struct.large_struct_padding) align 8 %{{.*}} )
472
471
void func_large_struct_padding_arg_store (global large_struct_padding * out , large_struct_padding arg ) {
473
472
* out = arg ;
474
473
}
@@ -478,23 +477,23 @@ void v3i32_reg_count(int3 arg1, int3 arg2, int3 arg3, int3 arg4, struct_arg_t ar
478
477
479
478
// Function signature from blender, nothing should be passed byval. The v3i32
480
479
// should not count as 4 passed registers.
481
- // CHECK: define{{.*}} void @v3i32_pair_reg_count(ptr addrspace(5) nocapture noundef %arg0, <3 x i32> %arg1.coerce0, <3 x i32> %arg1.coerce1, <3 x i32> noundef %arg2, <3 x i32> %arg3.coerce0, <3 x i32> %arg3.coerce1, <3 x i32> noundef %arg4, float noundef %arg5)
480
+ // CHECK: define{{.*}} void @v3i32_pair_reg_count(ptr addrspace(5) nocapture noundef readnone %arg0, <3 x i32> %arg1.coerce0, <3 x i32> %arg1.coerce1, <3 x i32> noundef %arg2, <3 x i32> %arg3.coerce0, <3 x i32> %arg3.coerce1, <3 x i32> noundef %arg4, float noundef %arg5)
482
481
void v3i32_pair_reg_count (int3_pair * arg0 , int3_pair arg1 , int3 arg2 , int3_pair arg3 , int3 arg4 , float arg5 ) { }
483
482
484
483
// Each short4 should fit pack into 2 registers.
485
484
// CHECK: define{{.*}} void @v4i16_reg_count(<4 x i16> noundef %arg0, <4 x i16> noundef %arg1, <4 x i16> noundef %arg2, <4 x i16> noundef %arg3, <4 x i16> noundef %arg4, <4 x i16> noundef %arg5, i32 %arg6.coerce0, i32 %arg6.coerce1, i32 %arg6.coerce2, i32 %arg6.coerce3)
486
485
void v4i16_reg_count (short4 arg0 , short4 arg1 , short4 arg2 , short4 arg3 ,
487
486
short4 arg4 , short4 arg5 , struct_4regs arg6 ) { }
488
487
489
- // CHECK: define{{.*}} void @v4i16_pair_reg_count_over(<4 x i16> noundef %arg0, <4 x i16> noundef %arg1, <4 x i16> noundef %arg2, <4 x i16> noundef %arg3, <4 x i16> noundef %arg4, <4 x i16> noundef %arg5, <4 x i16> noundef %arg6, ptr addrspace(5) nocapture noundef byref(%struct.struct_4regs) align 4 %0 )
488
+ // CHECK: define{{.*}} void @v4i16_pair_reg_count_over(<4 x i16> noundef %arg0, <4 x i16> noundef %arg1, <4 x i16> noundef %arg2, <4 x i16> noundef %arg3, <4 x i16> noundef %arg4, <4 x i16> noundef %arg5, <4 x i16> noundef %arg6, ptr addrspace(5) nocapture noundef readnone byref(%struct.struct_4regs) align 4 %{{.*}} )
490
489
void v4i16_pair_reg_count_over (short4 arg0 , short4 arg1 , short4 arg2 , short4 arg3 ,
491
490
short4 arg4 , short4 arg5 , short4 arg6 , struct_4regs arg7 ) { }
492
491
493
492
// CHECK: define{{.*}} void @v3i16_reg_count(<3 x i16> noundef %arg0, <3 x i16> noundef %arg1, <3 x i16> noundef %arg2, <3 x i16> noundef %arg3, <3 x i16> noundef %arg4, <3 x i16> noundef %arg5, i32 %arg6.coerce0, i32 %arg6.coerce1, i32 %arg6.coerce2, i32 %arg6.coerce3)
494
493
void v3i16_reg_count (short3 arg0 , short3 arg1 , short3 arg2 , short3 arg3 ,
495
494
short3 arg4 , short3 arg5 , struct_4regs arg6 ) { }
496
495
497
- // CHECK: define{{.*}} void @v3i16_reg_count_over(<3 x i16> noundef %arg0, <3 x i16> noundef %arg1, <3 x i16> noundef %arg2, <3 x i16> noundef %arg3, <3 x i16> noundef %arg4, <3 x i16> noundef %arg5, <3 x i16> noundef %arg6, ptr addrspace(5) nocapture noundef byref(%struct.struct_4regs) align 4 %0 )
496
+ // CHECK: define{{.*}} void @v3i16_reg_count_over(<3 x i16> noundef %arg0, <3 x i16> noundef %arg1, <3 x i16> noundef %arg2, <3 x i16> noundef %arg3, <3 x i16> noundef %arg4, <3 x i16> noundef %arg5, <3 x i16> noundef %arg6, ptr addrspace(5) nocapture noundef readnone byref(%struct.struct_4regs) align 4 %{{.*}} )
498
497
void v3i16_reg_count_over (short3 arg0 , short3 arg1 , short3 arg2 , short3 arg3 ,
499
498
short3 arg4 , short3 arg5 , short3 arg6 , struct_4regs arg7 ) { }
500
499
@@ -504,7 +503,7 @@ void v2i16_reg_count(short2 arg0, short2 arg1, short2 arg2, short2 arg3,
504
503
short2 arg8 , short2 arg9 , short2 arg10 , short2 arg11 ,
505
504
struct_4regs arg13 ) { }
506
505
507
- // CHECK: define{{.*}} void @v2i16_reg_count_over(<2 x i16> noundef %arg0, <2 x i16> noundef %arg1, <2 x i16> noundef %arg2, <2 x i16> noundef %arg3, <2 x i16> noundef %arg4, <2 x i16> noundef %arg5, <2 x i16> noundef %arg6, <2 x i16> noundef %arg7, <2 x i16> noundef %arg8, <2 x i16> noundef %arg9, <2 x i16> noundef %arg10, <2 x i16> noundef %arg11, <2 x i16> noundef %arg12, ptr addrspace(5) nocapture noundef byref(%struct.struct_4regs) align 4 %0 )
506
+ // CHECK: define{{.*}} void @v2i16_reg_count_over(<2 x i16> noundef %arg0, <2 x i16> noundef %arg1, <2 x i16> noundef %arg2, <2 x i16> noundef %arg3, <2 x i16> noundef %arg4, <2 x i16> noundef %arg5, <2 x i16> noundef %arg6, <2 x i16> noundef %arg7, <2 x i16> noundef %arg8, <2 x i16> noundef %arg9, <2 x i16> noundef %arg10, <2 x i16> noundef %arg11, <2 x i16> noundef %arg12, ptr addrspace(5) nocapture noundef readnone byref(%struct.struct_4regs) align 4 %{{.*}} )
508
507
void v2i16_reg_count_over (short2 arg0 , short2 arg1 , short2 arg2 , short2 arg3 ,
509
508
short2 arg4 , short2 arg5 , short2 arg6 , short2 arg7 ,
510
509
short2 arg8 , short2 arg9 , short2 arg10 , short2 arg11 ,
@@ -514,7 +513,7 @@ void v2i16_reg_count_over(short2 arg0, short2 arg1, short2 arg2, short2 arg3,
514
513
void v2i8_reg_count (char2 arg0 , char2 arg1 , char2 arg2 , char2 arg3 ,
515
514
char2 arg4 , char2 arg5 , struct_4regs arg6 ) { }
516
515
517
- // CHECK: define{{.*}} void @v2i8_reg_count_over(<2 x i8> noundef %arg0, <2 x i8> noundef %arg1, <2 x i8> noundef %arg2, <2 x i8> noundef %arg3, <2 x i8> noundef %arg4, <2 x i8> noundef %arg5, i32 noundef %arg6, ptr addrspace(5) nocapture noundef byref(%struct.struct_4regs) align 4 %0 )
516
+ // CHECK: define{{.*}} void @v2i8_reg_count_over(<2 x i8> noundef %arg0, <2 x i8> noundef %arg1, <2 x i8> noundef %arg2, <2 x i8> noundef %arg3, <2 x i8> noundef %arg4, <2 x i8> noundef %arg5, i32 noundef %arg6, ptr addrspace(5) nocapture noundef readnone byref(%struct.struct_4regs) align 4 %{{.*}} )
518
517
void v2i8_reg_count_over (char2 arg0 , char2 arg1 , char2 arg2 , char2 arg3 ,
519
518
char2 arg4 , char2 arg5 , int arg6 , struct_4regs arg7 ) { }
520
519
0 commit comments