1c5b11a71SAlex MacLean; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 2*b279f6b0SFangrui Song; RUN: llc < %s -mtriple=nvptx64 | FileCheck %s 3*b279f6b0SFangrui Song; RUN: llc < %s -mtriple=nvptx | FileCheck %s 4*b279f6b0SFangrui Song; RUN: %if ptxas && !ptxas-12.0 %{ llc < %s -mtriple=nvptx -verify-machineinstrs | %ptxas-verify %} 5*b279f6b0SFangrui Song; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -verify-machineinstrs | %ptxas-verify %} 6c5b11a71SAlex MacLean 7c5b11a71SAlex MacLeantarget triple = "nvptx64-nvidia-cuda" 8c5b11a71SAlex MacLean 9c5b11a71SAlex MacLean%struct.A = type { i8, i16 } 10c5b11a71SAlex MacLean%struct.char2 = type { i8, i8 } 11c5b11a71SAlex MacLean%struct.char4 = type { i8, i8, i8, i8 } 12c5b11a71SAlex MacLean%struct.short2 = type { i16, i16 } 13c5b11a71SAlex MacLean%struct.short4 = type { i16, i16, i16, i16 } 14c5b11a71SAlex MacLean%struct.int2 = type { i32, i32 } 15c5b11a71SAlex MacLean%struct.int4 = type { i32, i32, i32, i32 } 16c5b11a71SAlex MacLean%struct.longlong2 = type { i64, i64 } 17c5b11a71SAlex MacLean%struct.float2 = type { float, float } 18c5b11a71SAlex MacLean%struct.float4 = type { float, float, float, float } 19c5b11a71SAlex MacLean%struct.double2 = type { double, double } 20c5b11a71SAlex MacLean 21c5b11a71SAlex MacLeandefine void @st_param_i8_i16() { 22c5b11a71SAlex MacLean; CHECK-LABEL: st_param_i8_i16( 23c5b11a71SAlex MacLean; CHECK: { 24c5b11a71SAlex MacLean; CHECK-EMPTY: 25c5b11a71SAlex MacLean; CHECK-EMPTY: 26c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 27c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 0, 0 28c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 2 .b8 param0[4]; 290f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b8 [param0], 1; 30c5b11a71SAlex MacLean; CHECK-NEXT: st.param.b16 [param0+2], 2; 31c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 32c5b11a71SAlex MacLean; CHECK-NEXT: call_i8_i16, 33c5b11a71SAlex MacLean; CHECK-NEXT: ( 34c5b11a71SAlex MacLean; CHECK-NEXT: param0 35c5b11a71SAlex MacLean; CHECK-NEXT: ); 36c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 0 37c5b11a71SAlex MacLean; CHECK-NEXT: ret; 38c5b11a71SAlex MacLean call void @call_i8_i16(%struct.A { i8 1, i16 2 }) 39c5b11a71SAlex MacLean ret void 40c5b11a71SAlex MacLean} 41c5b11a71SAlex MacLean 42c5b11a71SAlex MacLeandefine void @st_param_i32() { 43c5b11a71SAlex MacLean; CHECK-LABEL: st_param_i32( 44c5b11a71SAlex MacLean; CHECK: { 45c5b11a71SAlex MacLean; CHECK-EMPTY: 46c5b11a71SAlex MacLean; CHECK-EMPTY: 47c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 48c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 1, 0 49c5b11a71SAlex MacLean; CHECK-NEXT: .param .b32 param0; 500f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [param0], 3; 51c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 52c5b11a71SAlex MacLean; CHECK-NEXT: call_i32, 53c5b11a71SAlex MacLean; CHECK-NEXT: ( 54c5b11a71SAlex MacLean; CHECK-NEXT: param0 55c5b11a71SAlex MacLean; CHECK-NEXT: ); 56c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 1 57c5b11a71SAlex MacLean; CHECK-NEXT: ret; 58c5b11a71SAlex MacLean call void @call_i32(i32 3) 59c5b11a71SAlex MacLean ret void 60c5b11a71SAlex MacLean} 61c5b11a71SAlex MacLean 62c5b11a71SAlex MacLeandefine void @st_param_i64() { 63c5b11a71SAlex MacLean; CHECK-LABEL: st_param_i64( 64c5b11a71SAlex MacLean; CHECK: { 65c5b11a71SAlex MacLean; CHECK-EMPTY: 66c5b11a71SAlex MacLean; CHECK-EMPTY: 67c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 68c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 2, 0 69c5b11a71SAlex MacLean; CHECK-NEXT: .param .b64 param0; 700f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b64 [param0], 4; 71c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 72c5b11a71SAlex MacLean; CHECK-NEXT: call_i64, 73c5b11a71SAlex MacLean; CHECK-NEXT: ( 74c5b11a71SAlex MacLean; CHECK-NEXT: param0 75c5b11a71SAlex MacLean; CHECK-NEXT: ); 76c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 2 77c5b11a71SAlex MacLean; CHECK-NEXT: ret; 78c5b11a71SAlex MacLean call void @call_i64(i64 4) 79c5b11a71SAlex MacLean ret void 80c5b11a71SAlex MacLean} 81c5b11a71SAlex MacLean 82c5b11a71SAlex MacLeandefine void @st_param_f32() { 83c5b11a71SAlex MacLean; CHECK-LABEL: st_param_f32( 84c5b11a71SAlex MacLean; CHECK: { 85c5b11a71SAlex MacLean; CHECK-EMPTY: 86c5b11a71SAlex MacLean; CHECK-EMPTY: 87c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 88c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 3, 0 89c5b11a71SAlex MacLean; CHECK-NEXT: .param .b32 param0; 900f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.f32 [param0], 0f40A00000; 91c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 92c5b11a71SAlex MacLean; CHECK-NEXT: call_f32, 93c5b11a71SAlex MacLean; CHECK-NEXT: ( 94c5b11a71SAlex MacLean; CHECK-NEXT: param0 95c5b11a71SAlex MacLean; CHECK-NEXT: ); 96c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 3 97c5b11a71SAlex MacLean; CHECK-NEXT: ret; 98c5b11a71SAlex MacLean call void @call_f32(float 5.0) 99c5b11a71SAlex MacLean ret void 100c5b11a71SAlex MacLean} 101c5b11a71SAlex MacLean 102c5b11a71SAlex MacLeandefine void @st_param_f64() { 103c5b11a71SAlex MacLean; CHECK-LABEL: st_param_f64( 104c5b11a71SAlex MacLean; CHECK: { 105c5b11a71SAlex MacLean; CHECK-EMPTY: 106c5b11a71SAlex MacLean; CHECK-EMPTY: 107c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 108c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 4, 0 109c5b11a71SAlex MacLean; CHECK-NEXT: .param .b64 param0; 1100f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.f64 [param0], 0d4018000000000000; 111c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 112c5b11a71SAlex MacLean; CHECK-NEXT: call_f64, 113c5b11a71SAlex MacLean; CHECK-NEXT: ( 114c5b11a71SAlex MacLean; CHECK-NEXT: param0 115c5b11a71SAlex MacLean; CHECK-NEXT: ); 116c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 4 117c5b11a71SAlex MacLean; CHECK-NEXT: ret; 118c5b11a71SAlex MacLean call void @call_f64(double 6.0) 119c5b11a71SAlex MacLean ret void 120c5b11a71SAlex MacLean} 121c5b11a71SAlex MacLean 122c5b11a71SAlex MacLeandeclare void @call_i8_i16(%struct.A) 123c5b11a71SAlex MacLeandeclare void @call_i32(i32) 124c5b11a71SAlex MacLeandeclare void @call_i64(i64) 125c5b11a71SAlex MacLeandeclare void @call_f32(float) 126c5b11a71SAlex MacLeandeclare void @call_f64(double) 127c5b11a71SAlex MacLean 128c5b11a71SAlex MacLeandefine void @st_param_v2_i8_ii() { 129c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i8_ii( 130c5b11a71SAlex MacLean; CHECK: { 131c5b11a71SAlex MacLean; CHECK-EMPTY: 132c5b11a71SAlex MacLean; CHECK-EMPTY: 133c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 134c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 5, 0 135c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 2 .b8 param0[2]; 1360f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b8 [param0], {1, 2}; 137c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 138c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i8, 139c5b11a71SAlex MacLean; CHECK-NEXT: ( 140c5b11a71SAlex MacLean; CHECK-NEXT: param0 141c5b11a71SAlex MacLean; CHECK-NEXT: ); 142c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 5 143c5b11a71SAlex MacLean; CHECK-NEXT: ret; 144c5b11a71SAlex MacLean call void @call_v2_i8(%struct.char2 { i8 1, i8 2 }) 145c5b11a71SAlex MacLean ret void 146c5b11a71SAlex MacLean} 147c5b11a71SAlex MacLeandefine void @st_param_v2_i8_ir(i8 %val) { 148c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i8_ir( 149c5b11a71SAlex MacLean; CHECK: { 150c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 151c5b11a71SAlex MacLean; CHECK-EMPTY: 152c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 153c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v2_i8_ir_param_0]; 154c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 6, 0 155c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 2 .b8 param0[2]; 1560f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b8 [param0], {1, %rs1}; 157c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 158c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i8, 159c5b11a71SAlex MacLean; CHECK-NEXT: ( 160c5b11a71SAlex MacLean; CHECK-NEXT: param0 161c5b11a71SAlex MacLean; CHECK-NEXT: ); 162c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 6 163c5b11a71SAlex MacLean; CHECK-NEXT: ret; 164c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.char2 poison, i8 1, 0 165c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.char2 %struct.ir0, i8 %val, 1 166c5b11a71SAlex MacLean call void @call_v2_i8(%struct.char2 %struct.ir1) 167c5b11a71SAlex MacLean ret void 168c5b11a71SAlex MacLean} 169c5b11a71SAlex MacLeandefine void @st_param_v2_i8_ri(i8 %val) { 170c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i8_ri( 171c5b11a71SAlex MacLean; CHECK: { 172c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 173c5b11a71SAlex MacLean; CHECK-EMPTY: 174c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 175c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v2_i8_ri_param_0]; 176c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 7, 0 177c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 2 .b8 param0[2]; 1780f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b8 [param0], {%rs1, 2}; 179c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 180c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i8, 181c5b11a71SAlex MacLean; CHECK-NEXT: ( 182c5b11a71SAlex MacLean; CHECK-NEXT: param0 183c5b11a71SAlex MacLean; CHECK-NEXT: ); 184c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 7 185c5b11a71SAlex MacLean; CHECK-NEXT: ret; 186c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.char2 poison, i8 %val, 0 187c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.char2 %struct.ri0, i8 2, 1 188c5b11a71SAlex MacLean call void @call_v2_i8(%struct.char2 %struct.ri1) 189c5b11a71SAlex MacLean ret void 190c5b11a71SAlex MacLean} 191c5b11a71SAlex MacLean 192c5b11a71SAlex MacLeandefine void @st_param_v2_i16_ii() { 193c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i16_ii( 194c5b11a71SAlex MacLean; CHECK: { 195c5b11a71SAlex MacLean; CHECK-EMPTY: 196c5b11a71SAlex MacLean; CHECK-EMPTY: 197c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 198c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 8, 0 199c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 2000f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b16 [param0], {1, 2}; 201c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 202c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i16, 203c5b11a71SAlex MacLean; CHECK-NEXT: ( 204c5b11a71SAlex MacLean; CHECK-NEXT: param0 205c5b11a71SAlex MacLean; CHECK-NEXT: ); 206c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 8 207c5b11a71SAlex MacLean; CHECK-NEXT: ret; 208c5b11a71SAlex MacLean call void @call_v2_i16(%struct.short2 { i16 1, i16 2 }) 209c5b11a71SAlex MacLean ret void 210c5b11a71SAlex MacLean} 211c5b11a71SAlex MacLeandefine void @st_param_v2_i16_ir(i16 %val) { 212c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i16_ir( 213c5b11a71SAlex MacLean; CHECK: { 214c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 215c5b11a71SAlex MacLean; CHECK-EMPTY: 216c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 217c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v2_i16_ir_param_0]; 218c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 9, 0 219c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 2200f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b16 [param0], {1, %rs1}; 221c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 222c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i16, 223c5b11a71SAlex MacLean; CHECK-NEXT: ( 224c5b11a71SAlex MacLean; CHECK-NEXT: param0 225c5b11a71SAlex MacLean; CHECK-NEXT: ); 226c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 9 227c5b11a71SAlex MacLean; CHECK-NEXT: ret; 228c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.short2 poison, i16 1, 0 229c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.short2 %struct.ir0, i16 %val, 1 230c5b11a71SAlex MacLean call void @call_v2_i16(%struct.short2 %struct.ir1) 231c5b11a71SAlex MacLean ret void 232c5b11a71SAlex MacLean} 233c5b11a71SAlex MacLeandefine void @st_param_v2_i16_ri(i16 %val) { 234c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i16_ri( 235c5b11a71SAlex MacLean; CHECK: { 236c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 237c5b11a71SAlex MacLean; CHECK-EMPTY: 238c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 239c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v2_i16_ri_param_0]; 240c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 10, 0 241c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 2420f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b16 [param0], {%rs1, 2}; 243c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 244c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i16, 245c5b11a71SAlex MacLean; CHECK-NEXT: ( 246c5b11a71SAlex MacLean; CHECK-NEXT: param0 247c5b11a71SAlex MacLean; CHECK-NEXT: ); 248c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 10 249c5b11a71SAlex MacLean; CHECK-NEXT: ret; 250c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.short2 poison, i16 %val, 0 251c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.short2 %struct.ri0, i16 2, 1 252c5b11a71SAlex MacLean call void @call_v2_i16(%struct.short2 %struct.ri1) 253c5b11a71SAlex MacLean ret void 254c5b11a71SAlex MacLean} 255c5b11a71SAlex MacLean 256c5b11a71SAlex MacLeandefine void @st_param_v2_i32_ii() { 257c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i32_ii( 258c5b11a71SAlex MacLean; CHECK: { 259c5b11a71SAlex MacLean; CHECK-EMPTY: 260c5b11a71SAlex MacLean; CHECK-EMPTY: 261c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 262c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 11, 0 263c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 2640f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b32 [param0], {1, 2}; 265c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 266c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i32, 267c5b11a71SAlex MacLean; CHECK-NEXT: ( 268c5b11a71SAlex MacLean; CHECK-NEXT: param0 269c5b11a71SAlex MacLean; CHECK-NEXT: ); 270c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 11 271c5b11a71SAlex MacLean; CHECK-NEXT: ret; 272c5b11a71SAlex MacLean call void @call_v2_i32(%struct.int2 { i32 1, i32 2 }) 273c5b11a71SAlex MacLean ret void 274c5b11a71SAlex MacLean} 275c5b11a71SAlex MacLeandefine void @st_param_v2_i32_ir(i32 %val) { 276c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i32_ir( 277c5b11a71SAlex MacLean; CHECK: { 278c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 279c5b11a71SAlex MacLean; CHECK-EMPTY: 280c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 281c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v2_i32_ir_param_0]; 282c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 12, 0 283c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 2840f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b32 [param0], {1, %r1}; 285c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 286c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i32, 287c5b11a71SAlex MacLean; CHECK-NEXT: ( 288c5b11a71SAlex MacLean; CHECK-NEXT: param0 289c5b11a71SAlex MacLean; CHECK-NEXT: ); 290c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 12 291c5b11a71SAlex MacLean; CHECK-NEXT: ret; 292c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.int2 poison, i32 1, 0 293c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.int2 %struct.ir0, i32 %val, 1 294c5b11a71SAlex MacLean call void @call_v2_i32(%struct.int2 %struct.ir1) 295c5b11a71SAlex MacLean ret void 296c5b11a71SAlex MacLean} 297c5b11a71SAlex MacLeandefine void @st_param_v2_i32_ri(i32 %val) { 298c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i32_ri( 299c5b11a71SAlex MacLean; CHECK: { 300c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 301c5b11a71SAlex MacLean; CHECK-EMPTY: 302c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 303c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v2_i32_ri_param_0]; 304c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 13, 0 305c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 3060f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b32 [param0], {%r1, 2}; 307c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 308c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i32, 309c5b11a71SAlex MacLean; CHECK-NEXT: ( 310c5b11a71SAlex MacLean; CHECK-NEXT: param0 311c5b11a71SAlex MacLean; CHECK-NEXT: ); 312c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 13 313c5b11a71SAlex MacLean; CHECK-NEXT: ret; 314c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.int2 poison, i32 %val, 0 315c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.int2 %struct.ri0, i32 2, 1 316c5b11a71SAlex MacLean call void @call_v2_i32(%struct.int2 %struct.ri1) 317c5b11a71SAlex MacLean ret void 318c5b11a71SAlex MacLean} 319c5b11a71SAlex MacLean 320c5b11a71SAlex MacLeandefine void @st_param_v2_i64_ii() { 321c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i64_ii( 322c5b11a71SAlex MacLean; CHECK: { 323c5b11a71SAlex MacLean; CHECK-EMPTY: 324c5b11a71SAlex MacLean; CHECK-EMPTY: 325c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 326c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 14, 0 327c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 3280f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b64 [param0], {1, 2}; 329c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 330c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i64, 331c5b11a71SAlex MacLean; CHECK-NEXT: ( 332c5b11a71SAlex MacLean; CHECK-NEXT: param0 333c5b11a71SAlex MacLean; CHECK-NEXT: ); 334c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 14 335c5b11a71SAlex MacLean; CHECK-NEXT: ret; 336c5b11a71SAlex MacLean call void @call_v2_i64(%struct.longlong2 { i64 1, i64 2 }) 337c5b11a71SAlex MacLean ret void 338c5b11a71SAlex MacLean} 339c5b11a71SAlex MacLeandefine void @st_param_v2_i64_ir(i64 %val) { 340c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i64_ir( 341c5b11a71SAlex MacLean; CHECK: { 342c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b64 %rd<2>; 343c5b11a71SAlex MacLean; CHECK-EMPTY: 344c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 345c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u64 %rd1, [st_param_v2_i64_ir_param_0]; 346c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 15, 0 347c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 3480f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b64 [param0], {1, %rd1}; 349c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 350c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i64, 351c5b11a71SAlex MacLean; CHECK-NEXT: ( 352c5b11a71SAlex MacLean; CHECK-NEXT: param0 353c5b11a71SAlex MacLean; CHECK-NEXT: ); 354c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 15 355c5b11a71SAlex MacLean; CHECK-NEXT: ret; 356c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.longlong2 poison, i64 1, 0 357c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.longlong2 %struct.ir0, i64 %val, 1 358c5b11a71SAlex MacLean call void @call_v2_i64(%struct.longlong2 %struct.ir1) 359c5b11a71SAlex MacLean ret void 360c5b11a71SAlex MacLean} 361c5b11a71SAlex MacLeandefine void @st_param_v2_i64_ri(i64 %val) { 362c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_i64_ri( 363c5b11a71SAlex MacLean; CHECK: { 364c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b64 %rd<2>; 365c5b11a71SAlex MacLean; CHECK-EMPTY: 366c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 367c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u64 %rd1, [st_param_v2_i64_ri_param_0]; 368c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 16, 0 369c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 3700f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.b64 [param0], {%rd1, 2}; 371c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 372c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_i64, 373c5b11a71SAlex MacLean; CHECK-NEXT: ( 374c5b11a71SAlex MacLean; CHECK-NEXT: param0 375c5b11a71SAlex MacLean; CHECK-NEXT: ); 376c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 16 377c5b11a71SAlex MacLean; CHECK-NEXT: ret; 378c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.longlong2 poison, i64 %val, 0 379c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.longlong2 %struct.ri0, i64 2, 1 380c5b11a71SAlex MacLean call void @call_v2_i64(%struct.longlong2 %struct.ri1) 381c5b11a71SAlex MacLean ret void 382c5b11a71SAlex MacLean} 383c5b11a71SAlex MacLean 384c5b11a71SAlex MacLeandefine void @st_param_v2_f32_ii(float %val) { 385c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f32_ii( 386c5b11a71SAlex MacLean; CHECK: { 387c5b11a71SAlex MacLean; CHECK-EMPTY: 388c5b11a71SAlex MacLean; CHECK-EMPTY: 389c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 390c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 17, 0 391c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 3920f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f32 [param0], {0f3F800000, 0f40000000}; 393c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 394c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f32, 395c5b11a71SAlex MacLean; CHECK-NEXT: ( 396c5b11a71SAlex MacLean; CHECK-NEXT: param0 397c5b11a71SAlex MacLean; CHECK-NEXT: ); 398c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 17 399c5b11a71SAlex MacLean; CHECK-NEXT: ret; 400c5b11a71SAlex MacLean call void @call_v2_f32(%struct.float2 { float 1.0, float 2.0 }) 401c5b11a71SAlex MacLean ret void 402c5b11a71SAlex MacLean} 403c5b11a71SAlex MacLeandefine void @st_param_v2_f32_ir(float %val) { 404c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f32_ir( 405c5b11a71SAlex MacLean; CHECK: { 406c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 407c5b11a71SAlex MacLean; CHECK-EMPTY: 408c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 409c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v2_f32_ir_param_0]; 410c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 18, 0 411c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 4120f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f32 [param0], {0f3F800000, %f1}; 413c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 414c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f32, 415c5b11a71SAlex MacLean; CHECK-NEXT: ( 416c5b11a71SAlex MacLean; CHECK-NEXT: param0 417c5b11a71SAlex MacLean; CHECK-NEXT: ); 418c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 18 419c5b11a71SAlex MacLean; CHECK-NEXT: ret; 420c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.float2 poison, float 1.0, 0 421c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.float2 %struct.ir0, float %val, 1 422c5b11a71SAlex MacLean call void @call_v2_f32(%struct.float2 %struct.ir1) 423c5b11a71SAlex MacLean ret void 424c5b11a71SAlex MacLean} 425c5b11a71SAlex MacLeandefine void @st_param_v2_f32_ri(float %val) { 426c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f32_ri( 427c5b11a71SAlex MacLean; CHECK: { 428c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 429c5b11a71SAlex MacLean; CHECK-EMPTY: 430c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 431c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v2_f32_ri_param_0]; 432c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 19, 0 433c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 4340f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f32 [param0], {%f1, 0f40000000}; 435c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 436c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f32, 437c5b11a71SAlex MacLean; CHECK-NEXT: ( 438c5b11a71SAlex MacLean; CHECK-NEXT: param0 439c5b11a71SAlex MacLean; CHECK-NEXT: ); 440c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 19 441c5b11a71SAlex MacLean; CHECK-NEXT: ret; 442c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.float2 poison, float %val, 0 443c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.float2 %struct.ri0, float 2.0, 1 444c5b11a71SAlex MacLean call void @call_v2_f32(%struct.float2 %struct.ri1) 445c5b11a71SAlex MacLean ret void 446c5b11a71SAlex MacLean} 447c5b11a71SAlex MacLean 448c5b11a71SAlex MacLeandefine void @st_param_v2_f64_ii(double %val) { 449c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f64_ii( 450c5b11a71SAlex MacLean; CHECK: { 451c5b11a71SAlex MacLean; CHECK-EMPTY: 452c5b11a71SAlex MacLean; CHECK-EMPTY: 453c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 454c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 20, 0 455c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 4560f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f64 [param0], {0d3FF0000000000000, 0d4000000000000000}; 457c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 458c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f64, 459c5b11a71SAlex MacLean; CHECK-NEXT: ( 460c5b11a71SAlex MacLean; CHECK-NEXT: param0 461c5b11a71SAlex MacLean; CHECK-NEXT: ); 462c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 20 463c5b11a71SAlex MacLean; CHECK-NEXT: ret; 464c5b11a71SAlex MacLean call void @call_v2_f64(%struct.double2 { double 1.0, double 2.0 }) 465c5b11a71SAlex MacLean ret void 466c5b11a71SAlex MacLean} 467c5b11a71SAlex MacLeandefine void @st_param_v2_f64_ir(double %val) { 468c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f64_ir( 469c5b11a71SAlex MacLean; CHECK: { 470c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f64 %fd<2>; 471c5b11a71SAlex MacLean; CHECK-EMPTY: 472c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 473c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f64 %fd1, [st_param_v2_f64_ir_param_0]; 474c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 21, 0 475c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 4760f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f64 [param0], {0d3FF0000000000000, %fd1}; 477c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 478c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f64, 479c5b11a71SAlex MacLean; CHECK-NEXT: ( 480c5b11a71SAlex MacLean; CHECK-NEXT: param0 481c5b11a71SAlex MacLean; CHECK-NEXT: ); 482c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 21 483c5b11a71SAlex MacLean; CHECK-NEXT: ret; 484c5b11a71SAlex MacLean %struct.ir0 = insertvalue %struct.double2 poison, double 1.0, 0 485c5b11a71SAlex MacLean %struct.ir1 = insertvalue %struct.double2 %struct.ir0, double %val, 1 486c5b11a71SAlex MacLean call void @call_v2_f64(%struct.double2 %struct.ir1) 487c5b11a71SAlex MacLean ret void 488c5b11a71SAlex MacLean} 489c5b11a71SAlex MacLeandefine void @st_param_v2_f64_ri(double %val) { 490c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v2_f64_ri( 491c5b11a71SAlex MacLean; CHECK: { 492c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f64 %fd<2>; 493c5b11a71SAlex MacLean; CHECK-EMPTY: 494c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 495c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f64 %fd1, [st_param_v2_f64_ri_param_0]; 496c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 22, 0 497c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 4980f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v2.f64 [param0], {%fd1, 0d4000000000000000}; 499c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 500c5b11a71SAlex MacLean; CHECK-NEXT: call_v2_f64, 501c5b11a71SAlex MacLean; CHECK-NEXT: ( 502c5b11a71SAlex MacLean; CHECK-NEXT: param0 503c5b11a71SAlex MacLean; CHECK-NEXT: ); 504c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 22 505c5b11a71SAlex MacLean; CHECK-NEXT: ret; 506c5b11a71SAlex MacLean %struct.ri0 = insertvalue %struct.double2 poison, double %val, 0 507c5b11a71SAlex MacLean %struct.ri1 = insertvalue %struct.double2 %struct.ri0, double 2.0, 1 508c5b11a71SAlex MacLean call void @call_v2_f64(%struct.double2 %struct.ri1) 509c5b11a71SAlex MacLean ret void 510c5b11a71SAlex MacLean} 511c5b11a71SAlex MacLean 512c5b11a71SAlex MacLeandeclare void @call_v2_i8(%struct.char2 alignstack(2)) 513c5b11a71SAlex MacLeandeclare void @call_v2_i16(%struct.short2 alignstack(4)) 514c5b11a71SAlex MacLeandeclare void @call_v2_i32(%struct.int2 alignstack(8)) 515c5b11a71SAlex MacLeandeclare void @call_v2_i64(%struct.longlong2 alignstack(16)) 516c5b11a71SAlex MacLeandeclare void @call_v2_f32(%struct.float2 alignstack(8)) 517c5b11a71SAlex MacLeandeclare void @call_v2_f64(%struct.double2 alignstack(16)) 518c5b11a71SAlex MacLean 519c5b11a71SAlex MacLeandefine void @st_param_v4_i8_iiii() { 520c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_iiii( 521c5b11a71SAlex MacLean; CHECK: { 522c5b11a71SAlex MacLean; CHECK-EMPTY: 523c5b11a71SAlex MacLean; CHECK-EMPTY: 524c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 525c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 23, 0 526c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 5270f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, 2, 3, 4}; 528c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 529c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 530c5b11a71SAlex MacLean; CHECK-NEXT: ( 531c5b11a71SAlex MacLean; CHECK-NEXT: param0 532c5b11a71SAlex MacLean; CHECK-NEXT: ); 533c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 23 534c5b11a71SAlex MacLean; CHECK-NEXT: ret; 535c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 { i8 1, i8 2, i8 3, i8 4 }) 536c5b11a71SAlex MacLean ret void 537c5b11a71SAlex MacLean} 538c5b11a71SAlex MacLeandefine void @st_param_v4_i8_irrr(i8 %b, i8 %c, i8 %d) { 539c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_irrr( 540c5b11a71SAlex MacLean; CHECK: { 541c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 542c5b11a71SAlex MacLean; CHECK-EMPTY: 543c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 544c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_irrr_param_0]; 545c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_irrr_param_1]; 546c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs3, [st_param_v4_i8_irrr_param_2]; 547c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 24, 0 548c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 5490f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, %rs1, %rs2, %rs3}; 550c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 551c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 552c5b11a71SAlex MacLean; CHECK-NEXT: ( 553c5b11a71SAlex MacLean; CHECK-NEXT: param0 554c5b11a71SAlex MacLean; CHECK-NEXT: ); 555c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 24 556c5b11a71SAlex MacLean; CHECK-NEXT: ret; 557c5b11a71SAlex MacLean %struct.irrr0 = insertvalue %struct.char4 poison, i8 1, 0 558c5b11a71SAlex MacLean %struct.irrr1 = insertvalue %struct.char4 %struct.irrr0, i8 %b, 1 559c5b11a71SAlex MacLean %struct.irrr2 = insertvalue %struct.char4 %struct.irrr1, i8 %c, 2 560c5b11a71SAlex MacLean %struct.irrr3 = insertvalue %struct.char4 %struct.irrr2, i8 %d, 3 561c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.irrr3) 562c5b11a71SAlex MacLean ret void 563c5b11a71SAlex MacLean} 564c5b11a71SAlex MacLeandefine void @st_param_v4_i8_rirr(i8 %a, i8 %c, i8 %d) { 565c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_rirr( 566c5b11a71SAlex MacLean; CHECK: { 567c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 568c5b11a71SAlex MacLean; CHECK-EMPTY: 569c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 570c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_rirr_param_0]; 571c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_rirr_param_1]; 572c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs3, [st_param_v4_i8_rirr_param_2]; 573c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 25, 0 574c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 5750f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, 2, %rs2, %rs3}; 576c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 577c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 578c5b11a71SAlex MacLean; CHECK-NEXT: ( 579c5b11a71SAlex MacLean; CHECK-NEXT: param0 580c5b11a71SAlex MacLean; CHECK-NEXT: ); 581c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 25 582c5b11a71SAlex MacLean; CHECK-NEXT: ret; 583c5b11a71SAlex MacLean %struct.rirr0 = insertvalue %struct.char4 poison, i8 %a, 0 584c5b11a71SAlex MacLean %struct.rirr1 = insertvalue %struct.char4 %struct.rirr0, i8 2, 1 585c5b11a71SAlex MacLean %struct.rirr2 = insertvalue %struct.char4 %struct.rirr1, i8 %c, 2 586c5b11a71SAlex MacLean %struct.rirr3 = insertvalue %struct.char4 %struct.rirr2, i8 %d, 3 587c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.rirr3) 588c5b11a71SAlex MacLean ret void 589c5b11a71SAlex MacLean} 590c5b11a71SAlex MacLeandefine void @st_param_v4_i8_rrir(i8 %a, i8 %b, i8 %d) { 591c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_rrir( 592c5b11a71SAlex MacLean; CHECK: { 593c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 594c5b11a71SAlex MacLean; CHECK-EMPTY: 595c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 596c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_rrir_param_0]; 597c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_rrir_param_1]; 598c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs3, [st_param_v4_i8_rrir_param_2]; 599c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 26, 0 600c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 6010f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, %rs2, 3, %rs3}; 602c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 603c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 604c5b11a71SAlex MacLean; CHECK-NEXT: ( 605c5b11a71SAlex MacLean; CHECK-NEXT: param0 606c5b11a71SAlex MacLean; CHECK-NEXT: ); 607c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 26 608c5b11a71SAlex MacLean; CHECK-NEXT: ret; 609c5b11a71SAlex MacLean %struct.rrir0 = insertvalue %struct.char4 poison, i8 %a, 0 610c5b11a71SAlex MacLean %struct.rrir1 = insertvalue %struct.char4 %struct.rrir0, i8 %b, 1 611c5b11a71SAlex MacLean %struct.rrir2 = insertvalue %struct.char4 %struct.rrir1, i8 3, 2 612c5b11a71SAlex MacLean %struct.rrir3 = insertvalue %struct.char4 %struct.rrir2, i8 %d, 3 613c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.rrir3) 614c5b11a71SAlex MacLean ret void 615c5b11a71SAlex MacLean} 616c5b11a71SAlex MacLeandefine void @st_param_v4_i8_rrri(i8 %a, i8 %b, i8 %c) { 617c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_rrri( 618c5b11a71SAlex MacLean; CHECK: { 619c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 620c5b11a71SAlex MacLean; CHECK-EMPTY: 621c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 622c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_rrri_param_0]; 623c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_rrri_param_1]; 624c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs3, [st_param_v4_i8_rrri_param_2]; 625c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 27, 0 626c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 6270f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, %rs2, %rs3, 4}; 628c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 629c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 630c5b11a71SAlex MacLean; CHECK-NEXT: ( 631c5b11a71SAlex MacLean; CHECK-NEXT: param0 632c5b11a71SAlex MacLean; CHECK-NEXT: ); 633c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 27 634c5b11a71SAlex MacLean; CHECK-NEXT: ret; 635c5b11a71SAlex MacLean %struct.rrri0 = insertvalue %struct.char4 poison, i8 %a, 0 636c5b11a71SAlex MacLean %struct.rrri1 = insertvalue %struct.char4 %struct.rrri0, i8 %b, 1 637c5b11a71SAlex MacLean %struct.rrri2 = insertvalue %struct.char4 %struct.rrri1, i8 %c, 2 638c5b11a71SAlex MacLean %struct.rrri3 = insertvalue %struct.char4 %struct.rrri2, i8 4, 3 639c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.rrri3) 640c5b11a71SAlex MacLean ret void 641c5b11a71SAlex MacLean} 642c5b11a71SAlex MacLeandefine void @st_param_v4_i8_iirr(i8 %c, i8 %d) { 643c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_iirr( 644c5b11a71SAlex MacLean; CHECK: { 645c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 646c5b11a71SAlex MacLean; CHECK-EMPTY: 647c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 648c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_iirr_param_0]; 649c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_iirr_param_1]; 650c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 28, 0 651c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 6520f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, 2, %rs1, %rs2}; 653c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 654c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 655c5b11a71SAlex MacLean; CHECK-NEXT: ( 656c5b11a71SAlex MacLean; CHECK-NEXT: param0 657c5b11a71SAlex MacLean; CHECK-NEXT: ); 658c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 28 659c5b11a71SAlex MacLean; CHECK-NEXT: ret; 660c5b11a71SAlex MacLean %struct.iirr0 = insertvalue %struct.char4 poison, i8 1, 0 661c5b11a71SAlex MacLean %struct.iirr1 = insertvalue %struct.char4 %struct.iirr0, i8 2, 1 662c5b11a71SAlex MacLean %struct.iirr2 = insertvalue %struct.char4 %struct.iirr1, i8 %c, 2 663c5b11a71SAlex MacLean %struct.iirr3 = insertvalue %struct.char4 %struct.iirr2, i8 %d, 3 664c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.iirr3) 665c5b11a71SAlex MacLean ret void 666c5b11a71SAlex MacLean} 667c5b11a71SAlex MacLeandefine void @st_param_v4_i8_irir(i8 %b, i8 %d) { 668c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_irir( 669c5b11a71SAlex MacLean; CHECK: { 670c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 671c5b11a71SAlex MacLean; CHECK-EMPTY: 672c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 673c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_irir_param_0]; 674c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_irir_param_1]; 675c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 29, 0 676c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 6770f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, %rs1, 3, %rs2}; 678c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 679c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 680c5b11a71SAlex MacLean; CHECK-NEXT: ( 681c5b11a71SAlex MacLean; CHECK-NEXT: param0 682c5b11a71SAlex MacLean; CHECK-NEXT: ); 683c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 29 684c5b11a71SAlex MacLean; CHECK-NEXT: ret; 685c5b11a71SAlex MacLean %struct.irir0 = insertvalue %struct.char4 poison, i8 1, 0 686c5b11a71SAlex MacLean %struct.irir1 = insertvalue %struct.char4 %struct.irir0, i8 %b, 1 687c5b11a71SAlex MacLean %struct.irir2 = insertvalue %struct.char4 %struct.irir1, i8 3, 2 688c5b11a71SAlex MacLean %struct.irir3 = insertvalue %struct.char4 %struct.irir2, i8 %d, 3 689c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.irir3) 690c5b11a71SAlex MacLean ret void 691c5b11a71SAlex MacLean} 692c5b11a71SAlex MacLeandefine void @st_param_v4_i8_irri(i8 %b, i8 %c) { 693c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_irri( 694c5b11a71SAlex MacLean; CHECK: { 695c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 696c5b11a71SAlex MacLean; CHECK-EMPTY: 697c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 698c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_irri_param_0]; 699c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_irri_param_1]; 700c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 30, 0 701c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 7020f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, %rs1, %rs2, 4}; 703c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 704c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 705c5b11a71SAlex MacLean; CHECK-NEXT: ( 706c5b11a71SAlex MacLean; CHECK-NEXT: param0 707c5b11a71SAlex MacLean; CHECK-NEXT: ); 708c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 30 709c5b11a71SAlex MacLean; CHECK-NEXT: ret; 710c5b11a71SAlex MacLean %struct.irri0 = insertvalue %struct.char4 poison, i8 1, 0 711c5b11a71SAlex MacLean %struct.irri1 = insertvalue %struct.char4 %struct.irri0, i8 %b, 1 712c5b11a71SAlex MacLean %struct.irri2 = insertvalue %struct.char4 %struct.irri1, i8 %c, 2 713c5b11a71SAlex MacLean %struct.irri3 = insertvalue %struct.char4 %struct.irri2, i8 4, 3 714c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.irri3) 715c5b11a71SAlex MacLean ret void 716c5b11a71SAlex MacLean} 717c5b11a71SAlex MacLeandefine void @st_param_v4_i8_riir(i8 %a, i8 %d) { 718c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_riir( 719c5b11a71SAlex MacLean; CHECK: { 720c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 721c5b11a71SAlex MacLean; CHECK-EMPTY: 722c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 723c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_riir_param_0]; 724c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_riir_param_1]; 725c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 31, 0 726c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 7270f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, 2, 3, %rs2}; 728c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 729c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 730c5b11a71SAlex MacLean; CHECK-NEXT: ( 731c5b11a71SAlex MacLean; CHECK-NEXT: param0 732c5b11a71SAlex MacLean; CHECK-NEXT: ); 733c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 31 734c5b11a71SAlex MacLean; CHECK-NEXT: ret; 735c5b11a71SAlex MacLean %struct.riir0 = insertvalue %struct.char4 poison, i8 %a, 0 736c5b11a71SAlex MacLean %struct.riir1 = insertvalue %struct.char4 %struct.riir0, i8 2, 1 737c5b11a71SAlex MacLean %struct.riir2 = insertvalue %struct.char4 %struct.riir1, i8 3, 2 738c5b11a71SAlex MacLean %struct.riir3 = insertvalue %struct.char4 %struct.riir2, i8 %d, 3 739c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.riir3) 740c5b11a71SAlex MacLean ret void 741c5b11a71SAlex MacLean} 742c5b11a71SAlex MacLeandefine void @st_param_v4_i8_riri(i8 %a, i8 %c) { 743c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_riri( 744c5b11a71SAlex MacLean; CHECK: { 745c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 746c5b11a71SAlex MacLean; CHECK-EMPTY: 747c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 748c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_riri_param_0]; 749c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_riri_param_1]; 750c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 32, 0 751c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 7520f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, 2, %rs2, 4}; 753c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 754c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 755c5b11a71SAlex MacLean; CHECK-NEXT: ( 756c5b11a71SAlex MacLean; CHECK-NEXT: param0 757c5b11a71SAlex MacLean; CHECK-NEXT: ); 758c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 32 759c5b11a71SAlex MacLean; CHECK-NEXT: ret; 760c5b11a71SAlex MacLean %struct.riri0 = insertvalue %struct.char4 poison, i8 %a, 0 761c5b11a71SAlex MacLean %struct.riri1 = insertvalue %struct.char4 %struct.riri0, i8 2, 1 762c5b11a71SAlex MacLean %struct.riri2 = insertvalue %struct.char4 %struct.riri1, i8 %c, 2 763c5b11a71SAlex MacLean %struct.riri3 = insertvalue %struct.char4 %struct.riri2, i8 4, 3 764c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.riri3) 765c5b11a71SAlex MacLean ret void 766c5b11a71SAlex MacLean} 767c5b11a71SAlex MacLeandefine void @st_param_v4_i8_rrii(i8 %a, i8 %b) { 768c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_rrii( 769c5b11a71SAlex MacLean; CHECK: { 770c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 771c5b11a71SAlex MacLean; CHECK-EMPTY: 772c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 773c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_rrii_param_0]; 774c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs2, [st_param_v4_i8_rrii_param_1]; 775c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 33, 0 776c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 7770f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, %rs2, 3, 4}; 778c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 779c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 780c5b11a71SAlex MacLean; CHECK-NEXT: ( 781c5b11a71SAlex MacLean; CHECK-NEXT: param0 782c5b11a71SAlex MacLean; CHECK-NEXT: ); 783c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 33 784c5b11a71SAlex MacLean; CHECK-NEXT: ret; 785c5b11a71SAlex MacLean %struct.rrii0 = insertvalue %struct.char4 poison, i8 %a, 0 786c5b11a71SAlex MacLean %struct.rrii1 = insertvalue %struct.char4 %struct.rrii0, i8 %b, 1 787c5b11a71SAlex MacLean %struct.rrii2 = insertvalue %struct.char4 %struct.rrii1, i8 3, 2 788c5b11a71SAlex MacLean %struct.rrii3 = insertvalue %struct.char4 %struct.rrii2, i8 4, 3 789c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.rrii3) 790c5b11a71SAlex MacLean ret void 791c5b11a71SAlex MacLean} 792c5b11a71SAlex MacLeandefine void @st_param_v4_i8_iiir(i8 %d) { 793c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_iiir( 794c5b11a71SAlex MacLean; CHECK: { 795c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 796c5b11a71SAlex MacLean; CHECK-EMPTY: 797c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 798c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_iiir_param_0]; 799c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 34, 0 800c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 8010f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, 2, 3, %rs1}; 802c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 803c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 804c5b11a71SAlex MacLean; CHECK-NEXT: ( 805c5b11a71SAlex MacLean; CHECK-NEXT: param0 806c5b11a71SAlex MacLean; CHECK-NEXT: ); 807c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 34 808c5b11a71SAlex MacLean; CHECK-NEXT: ret; 809c5b11a71SAlex MacLean %struct.iiir0 = insertvalue %struct.char4 poison, i8 1, 0 810c5b11a71SAlex MacLean %struct.iiir1 = insertvalue %struct.char4 %struct.iiir0, i8 2, 1 811c5b11a71SAlex MacLean %struct.iiir2 = insertvalue %struct.char4 %struct.iiir1, i8 3, 2 812c5b11a71SAlex MacLean %struct.iiir3 = insertvalue %struct.char4 %struct.iiir2, i8 %d, 3 813c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.iiir3) 814c5b11a71SAlex MacLean ret void 815c5b11a71SAlex MacLean} 816c5b11a71SAlex MacLeandefine void @st_param_v4_i8_iiri(i8 %c) { 817c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_iiri( 818c5b11a71SAlex MacLean; CHECK: { 819c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 820c5b11a71SAlex MacLean; CHECK-EMPTY: 821c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 822c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_iiri_param_0]; 823c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 35, 0 824c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 8250f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, 2, %rs1, 4}; 826c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 827c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 828c5b11a71SAlex MacLean; CHECK-NEXT: ( 829c5b11a71SAlex MacLean; CHECK-NEXT: param0 830c5b11a71SAlex MacLean; CHECK-NEXT: ); 831c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 35 832c5b11a71SAlex MacLean; CHECK-NEXT: ret; 833c5b11a71SAlex MacLean %struct.iiri0 = insertvalue %struct.char4 poison, i8 1, 0 834c5b11a71SAlex MacLean %struct.iiri1 = insertvalue %struct.char4 %struct.iiri0, i8 2, 1 835c5b11a71SAlex MacLean %struct.iiri2 = insertvalue %struct.char4 %struct.iiri1, i8 %c, 2 836c5b11a71SAlex MacLean %struct.iiri3 = insertvalue %struct.char4 %struct.iiri2, i8 4, 3 837c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.iiri3) 838c5b11a71SAlex MacLean ret void 839c5b11a71SAlex MacLean} 840c5b11a71SAlex MacLeandefine void @st_param_v4_i8_irii(i8 %b) { 841c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_irii( 842c5b11a71SAlex MacLean; CHECK: { 843c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 844c5b11a71SAlex MacLean; CHECK-EMPTY: 845c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 846c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_irii_param_0]; 847c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 36, 0 848c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 8490f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {1, %rs1, 3, 4}; 850c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 851c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 852c5b11a71SAlex MacLean; CHECK-NEXT: ( 853c5b11a71SAlex MacLean; CHECK-NEXT: param0 854c5b11a71SAlex MacLean; CHECK-NEXT: ); 855c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 36 856c5b11a71SAlex MacLean; CHECK-NEXT: ret; 857c5b11a71SAlex MacLean %struct.irii0 = insertvalue %struct.char4 poison, i8 1, 0 858c5b11a71SAlex MacLean %struct.irii1 = insertvalue %struct.char4 %struct.irii0, i8 %b, 1 859c5b11a71SAlex MacLean %struct.irii2 = insertvalue %struct.char4 %struct.irii1, i8 3, 2 860c5b11a71SAlex MacLean %struct.irii3 = insertvalue %struct.char4 %struct.irii2, i8 4, 3 861c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.irii3) 862c5b11a71SAlex MacLean ret void 863c5b11a71SAlex MacLean} 864c5b11a71SAlex MacLeandefine void @st_param_v4_i8_riii(i8 %a) { 865c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i8_riii( 866c5b11a71SAlex MacLean; CHECK: { 867c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 868c5b11a71SAlex MacLean; CHECK-EMPTY: 869c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 870c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u8 %rs1, [st_param_v4_i8_riii_param_0]; 871c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 37, 0 872c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 4 .b8 param0[4]; 8730f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b8 [param0], {%rs1, 2, 3, 4}; 874c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 875c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i8, 876c5b11a71SAlex MacLean; CHECK-NEXT: ( 877c5b11a71SAlex MacLean; CHECK-NEXT: param0 878c5b11a71SAlex MacLean; CHECK-NEXT: ); 879c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 37 880c5b11a71SAlex MacLean; CHECK-NEXT: ret; 881c5b11a71SAlex MacLean %struct.riii0 = insertvalue %struct.char4 poison, i8 %a, 0 882c5b11a71SAlex MacLean %struct.riii1 = insertvalue %struct.char4 %struct.riii0, i8 2, 1 883c5b11a71SAlex MacLean %struct.riii2 = insertvalue %struct.char4 %struct.riii1, i8 3, 2 884c5b11a71SAlex MacLean %struct.riii3 = insertvalue %struct.char4 %struct.riii2, i8 4, 3 885c5b11a71SAlex MacLean call void @call_v4_i8(%struct.char4 %struct.riii3) 886c5b11a71SAlex MacLean ret void 887c5b11a71SAlex MacLean} 888c5b11a71SAlex MacLean 889c5b11a71SAlex MacLeandefine void @st_param_v4_i16_iiii() { 890c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_iiii( 891c5b11a71SAlex MacLean; CHECK: { 892c5b11a71SAlex MacLean; CHECK-EMPTY: 893c5b11a71SAlex MacLean; CHECK-EMPTY: 894c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 895c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 38, 0 896c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 8970f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, 2, 3, 4}; 898c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 899c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 900c5b11a71SAlex MacLean; CHECK-NEXT: ( 901c5b11a71SAlex MacLean; CHECK-NEXT: param0 902c5b11a71SAlex MacLean; CHECK-NEXT: ); 903c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 38 904c5b11a71SAlex MacLean; CHECK-NEXT: ret; 905c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 { i16 1, i16 2, i16 3, i16 4 }) 906c5b11a71SAlex MacLean ret void 907c5b11a71SAlex MacLean} 908c5b11a71SAlex MacLeandefine void @st_param_v4_i16_irrr(i16 %b, i16 %c, i16 %d) { 909c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_irrr( 910c5b11a71SAlex MacLean; CHECK: { 911c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 912c5b11a71SAlex MacLean; CHECK-EMPTY: 913c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 914c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_irrr_param_0]; 915c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_irrr_param_1]; 916c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs3, [st_param_v4_i16_irrr_param_2]; 917c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 39, 0 918c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 9190f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, %rs1, %rs2, %rs3}; 920c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 921c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 922c5b11a71SAlex MacLean; CHECK-NEXT: ( 923c5b11a71SAlex MacLean; CHECK-NEXT: param0 924c5b11a71SAlex MacLean; CHECK-NEXT: ); 925c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 39 926c5b11a71SAlex MacLean; CHECK-NEXT: ret; 927c5b11a71SAlex MacLean %struct.irrr0 = insertvalue %struct.short4 poison, i16 1, 0 928c5b11a71SAlex MacLean %struct.irrr1 = insertvalue %struct.short4 %struct.irrr0, i16 %b, 1 929c5b11a71SAlex MacLean %struct.irrr2 = insertvalue %struct.short4 %struct.irrr1, i16 %c, 2 930c5b11a71SAlex MacLean %struct.irrr3 = insertvalue %struct.short4 %struct.irrr2, i16 %d, 3 931c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.irrr3) 932c5b11a71SAlex MacLean ret void 933c5b11a71SAlex MacLean} 934c5b11a71SAlex MacLeandefine void @st_param_v4_i16_rirr(i16 %a, i16 %c, i16 %d) { 935c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_rirr( 936c5b11a71SAlex MacLean; CHECK: { 937c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 938c5b11a71SAlex MacLean; CHECK-EMPTY: 939c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 940c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_rirr_param_0]; 941c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_rirr_param_1]; 942c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs3, [st_param_v4_i16_rirr_param_2]; 943c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 40, 0 944c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 9450f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, 2, %rs2, %rs3}; 946c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 947c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 948c5b11a71SAlex MacLean; CHECK-NEXT: ( 949c5b11a71SAlex MacLean; CHECK-NEXT: param0 950c5b11a71SAlex MacLean; CHECK-NEXT: ); 951c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 40 952c5b11a71SAlex MacLean; CHECK-NEXT: ret; 953c5b11a71SAlex MacLean %struct.rirr0 = insertvalue %struct.short4 poison, i16 %a, 0 954c5b11a71SAlex MacLean %struct.rirr1 = insertvalue %struct.short4 %struct.rirr0, i16 2, 1 955c5b11a71SAlex MacLean %struct.rirr2 = insertvalue %struct.short4 %struct.rirr1, i16 %c, 2 956c5b11a71SAlex MacLean %struct.rirr3 = insertvalue %struct.short4 %struct.rirr2, i16 %d, 3 957c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.rirr3) 958c5b11a71SAlex MacLean ret void 959c5b11a71SAlex MacLean} 960c5b11a71SAlex MacLeandefine void @st_param_v4_i16_rrir(i16 %a, i16 %b, i16 %d) { 961c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_rrir( 962c5b11a71SAlex MacLean; CHECK: { 963c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 964c5b11a71SAlex MacLean; CHECK-EMPTY: 965c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 966c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_rrir_param_0]; 967c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_rrir_param_1]; 968c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs3, [st_param_v4_i16_rrir_param_2]; 969c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 41, 0 970c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 9710f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, %rs2, 3, %rs3}; 972c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 973c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 974c5b11a71SAlex MacLean; CHECK-NEXT: ( 975c5b11a71SAlex MacLean; CHECK-NEXT: param0 976c5b11a71SAlex MacLean; CHECK-NEXT: ); 977c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 41 978c5b11a71SAlex MacLean; CHECK-NEXT: ret; 979c5b11a71SAlex MacLean %struct.rrir0 = insertvalue %struct.short4 poison, i16 %a, 0 980c5b11a71SAlex MacLean %struct.rrir1 = insertvalue %struct.short4 %struct.rrir0, i16 %b, 1 981c5b11a71SAlex MacLean %struct.rrir2 = insertvalue %struct.short4 %struct.rrir1, i16 3, 2 982c5b11a71SAlex MacLean %struct.rrir3 = insertvalue %struct.short4 %struct.rrir2, i16 %d, 3 983c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.rrir3) 984c5b11a71SAlex MacLean ret void 985c5b11a71SAlex MacLean} 986c5b11a71SAlex MacLeandefine void @st_param_v4_i16_rrri(i16 %a, i16 %b, i16 %c) { 987c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_rrri( 988c5b11a71SAlex MacLean; CHECK: { 989c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<4>; 990c5b11a71SAlex MacLean; CHECK-EMPTY: 991c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 992c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_rrri_param_0]; 993c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_rrri_param_1]; 994c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs3, [st_param_v4_i16_rrri_param_2]; 995c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 42, 0 996c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 9970f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, %rs2, %rs3, 4}; 998c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 999c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1000c5b11a71SAlex MacLean; CHECK-NEXT: ( 1001c5b11a71SAlex MacLean; CHECK-NEXT: param0 1002c5b11a71SAlex MacLean; CHECK-NEXT: ); 1003c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 42 1004c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1005c5b11a71SAlex MacLean %struct.rrri0 = insertvalue %struct.short4 poison, i16 %a, 0 1006c5b11a71SAlex MacLean %struct.rrri1 = insertvalue %struct.short4 %struct.rrri0, i16 %b, 1 1007c5b11a71SAlex MacLean %struct.rrri2 = insertvalue %struct.short4 %struct.rrri1, i16 %c, 2 1008c5b11a71SAlex MacLean %struct.rrri3 = insertvalue %struct.short4 %struct.rrri2, i16 4, 3 1009c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.rrri3) 1010c5b11a71SAlex MacLean ret void 1011c5b11a71SAlex MacLean} 1012c5b11a71SAlex MacLeandefine void @st_param_v4_i16_iirr(i16 %c, i16 %d) { 1013c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_iirr( 1014c5b11a71SAlex MacLean; CHECK: { 1015c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1016c5b11a71SAlex MacLean; CHECK-EMPTY: 1017c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1018c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_iirr_param_0]; 1019c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_iirr_param_1]; 1020c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 43, 0 1021c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 10220f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, 2, %rs1, %rs2}; 1023c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1024c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1025c5b11a71SAlex MacLean; CHECK-NEXT: ( 1026c5b11a71SAlex MacLean; CHECK-NEXT: param0 1027c5b11a71SAlex MacLean; CHECK-NEXT: ); 1028c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 43 1029c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1030c5b11a71SAlex MacLean %struct.iirr0 = insertvalue %struct.short4 poison, i16 1, 0 1031c5b11a71SAlex MacLean %struct.iirr1 = insertvalue %struct.short4 %struct.iirr0, i16 2, 1 1032c5b11a71SAlex MacLean %struct.iirr2 = insertvalue %struct.short4 %struct.iirr1, i16 %c, 2 1033c5b11a71SAlex MacLean %struct.iirr3 = insertvalue %struct.short4 %struct.iirr2, i16 %d, 3 1034c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.iirr3) 1035c5b11a71SAlex MacLean ret void 1036c5b11a71SAlex MacLean} 1037c5b11a71SAlex MacLeandefine void @st_param_v4_i16_irir(i16 %b, i16 %d) { 1038c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_irir( 1039c5b11a71SAlex MacLean; CHECK: { 1040c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1041c5b11a71SAlex MacLean; CHECK-EMPTY: 1042c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1043c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_irir_param_0]; 1044c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_irir_param_1]; 1045c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 44, 0 1046c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 10470f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, %rs1, 3, %rs2}; 1048c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1049c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1050c5b11a71SAlex MacLean; CHECK-NEXT: ( 1051c5b11a71SAlex MacLean; CHECK-NEXT: param0 1052c5b11a71SAlex MacLean; CHECK-NEXT: ); 1053c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 44 1054c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1055c5b11a71SAlex MacLean %struct.irir0 = insertvalue %struct.short4 poison, i16 1, 0 1056c5b11a71SAlex MacLean %struct.irir1 = insertvalue %struct.short4 %struct.irir0, i16 %b, 1 1057c5b11a71SAlex MacLean %struct.irir2 = insertvalue %struct.short4 %struct.irir1, i16 3, 2 1058c5b11a71SAlex MacLean %struct.irir3 = insertvalue %struct.short4 %struct.irir2, i16 %d, 3 1059c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.irir3) 1060c5b11a71SAlex MacLean ret void 1061c5b11a71SAlex MacLean} 1062c5b11a71SAlex MacLeandefine void @st_param_v4_i16_irri(i16 %b, i16 %c) { 1063c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_irri( 1064c5b11a71SAlex MacLean; CHECK: { 1065c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1066c5b11a71SAlex MacLean; CHECK-EMPTY: 1067c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1068c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_irri_param_0]; 1069c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_irri_param_1]; 1070c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 45, 0 1071c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 10720f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, %rs1, %rs2, 4}; 1073c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1074c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1075c5b11a71SAlex MacLean; CHECK-NEXT: ( 1076c5b11a71SAlex MacLean; CHECK-NEXT: param0 1077c5b11a71SAlex MacLean; CHECK-NEXT: ); 1078c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 45 1079c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1080c5b11a71SAlex MacLean %struct.irri0 = insertvalue %struct.short4 poison, i16 1, 0 1081c5b11a71SAlex MacLean %struct.irri1 = insertvalue %struct.short4 %struct.irri0, i16 %b, 1 1082c5b11a71SAlex MacLean %struct.irri2 = insertvalue %struct.short4 %struct.irri1, i16 %c, 2 1083c5b11a71SAlex MacLean %struct.irri3 = insertvalue %struct.short4 %struct.irri2, i16 4, 3 1084c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.irri3) 1085c5b11a71SAlex MacLean ret void 1086c5b11a71SAlex MacLean} 1087c5b11a71SAlex MacLeandefine void @st_param_v4_i16_riir(i16 %a, i16 %d) { 1088c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_riir( 1089c5b11a71SAlex MacLean; CHECK: { 1090c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1091c5b11a71SAlex MacLean; CHECK-EMPTY: 1092c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1093c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_riir_param_0]; 1094c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_riir_param_1]; 1095c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 46, 0 1096c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 10970f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, 2, 3, %rs2}; 1098c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1099c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1100c5b11a71SAlex MacLean; CHECK-NEXT: ( 1101c5b11a71SAlex MacLean; CHECK-NEXT: param0 1102c5b11a71SAlex MacLean; CHECK-NEXT: ); 1103c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 46 1104c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1105c5b11a71SAlex MacLean %struct.riir0 = insertvalue %struct.short4 poison, i16 %a, 0 1106c5b11a71SAlex MacLean %struct.riir1 = insertvalue %struct.short4 %struct.riir0, i16 2, 1 1107c5b11a71SAlex MacLean %struct.riir2 = insertvalue %struct.short4 %struct.riir1, i16 3, 2 1108c5b11a71SAlex MacLean %struct.riir3 = insertvalue %struct.short4 %struct.riir2, i16 %d, 3 1109c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.riir3) 1110c5b11a71SAlex MacLean ret void 1111c5b11a71SAlex MacLean} 1112c5b11a71SAlex MacLeandefine void @st_param_v4_i16_riri(i16 %a, i16 %c) { 1113c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_riri( 1114c5b11a71SAlex MacLean; CHECK: { 1115c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1116c5b11a71SAlex MacLean; CHECK-EMPTY: 1117c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1118c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_riri_param_0]; 1119c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_riri_param_1]; 1120c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 47, 0 1121c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 11220f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, 2, %rs2, 4}; 1123c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1124c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1125c5b11a71SAlex MacLean; CHECK-NEXT: ( 1126c5b11a71SAlex MacLean; CHECK-NEXT: param0 1127c5b11a71SAlex MacLean; CHECK-NEXT: ); 1128c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 47 1129c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1130c5b11a71SAlex MacLean %struct.riri0 = insertvalue %struct.short4 poison, i16 %a, 0 1131c5b11a71SAlex MacLean %struct.riri1 = insertvalue %struct.short4 %struct.riri0, i16 2, 1 1132c5b11a71SAlex MacLean %struct.riri2 = insertvalue %struct.short4 %struct.riri1, i16 %c, 2 1133c5b11a71SAlex MacLean %struct.riri3 = insertvalue %struct.short4 %struct.riri2, i16 4, 3 1134c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.riri3) 1135c5b11a71SAlex MacLean ret void 1136c5b11a71SAlex MacLean} 1137c5b11a71SAlex MacLeandefine void @st_param_v4_i16_rrii(i16 %a, i16 %b) { 1138c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_rrii( 1139c5b11a71SAlex MacLean; CHECK: { 1140c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<3>; 1141c5b11a71SAlex MacLean; CHECK-EMPTY: 1142c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1143c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_rrii_param_0]; 1144c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs2, [st_param_v4_i16_rrii_param_1]; 1145c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 48, 0 1146c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 11470f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, %rs2, 3, 4}; 1148c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1149c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1150c5b11a71SAlex MacLean; CHECK-NEXT: ( 1151c5b11a71SAlex MacLean; CHECK-NEXT: param0 1152c5b11a71SAlex MacLean; CHECK-NEXT: ); 1153c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 48 1154c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1155c5b11a71SAlex MacLean %struct.rrii0 = insertvalue %struct.short4 poison, i16 %a, 0 1156c5b11a71SAlex MacLean %struct.rrii1 = insertvalue %struct.short4 %struct.rrii0, i16 %b, 1 1157c5b11a71SAlex MacLean %struct.rrii2 = insertvalue %struct.short4 %struct.rrii1, i16 3, 2 1158c5b11a71SAlex MacLean %struct.rrii3 = insertvalue %struct.short4 %struct.rrii2, i16 4, 3 1159c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.rrii3) 1160c5b11a71SAlex MacLean ret void 1161c5b11a71SAlex MacLean} 1162c5b11a71SAlex MacLeandefine void @st_param_v4_i16_iiir(i16 %d) { 1163c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_iiir( 1164c5b11a71SAlex MacLean; CHECK: { 1165c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 1166c5b11a71SAlex MacLean; CHECK-EMPTY: 1167c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1168c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_iiir_param_0]; 1169c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 49, 0 1170c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 11710f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, 2, 3, %rs1}; 1172c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1173c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1174c5b11a71SAlex MacLean; CHECK-NEXT: ( 1175c5b11a71SAlex MacLean; CHECK-NEXT: param0 1176c5b11a71SAlex MacLean; CHECK-NEXT: ); 1177c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 49 1178c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1179c5b11a71SAlex MacLean %struct.iiir0 = insertvalue %struct.short4 poison, i16 1, 0 1180c5b11a71SAlex MacLean %struct.iiir1 = insertvalue %struct.short4 %struct.iiir0, i16 2, 1 1181c5b11a71SAlex MacLean %struct.iiir2 = insertvalue %struct.short4 %struct.iiir1, i16 3, 2 1182c5b11a71SAlex MacLean %struct.iiir3 = insertvalue %struct.short4 %struct.iiir2, i16 %d, 3 1183c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.iiir3) 1184c5b11a71SAlex MacLean ret void 1185c5b11a71SAlex MacLean} 1186c5b11a71SAlex MacLeandefine void @st_param_v4_i16_iiri(i16 %c) { 1187c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_iiri( 1188c5b11a71SAlex MacLean; CHECK: { 1189c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 1190c5b11a71SAlex MacLean; CHECK-EMPTY: 1191c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1192c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_iiri_param_0]; 1193c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 50, 0 1194c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 11950f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, 2, %rs1, 4}; 1196c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1197c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1198c5b11a71SAlex MacLean; CHECK-NEXT: ( 1199c5b11a71SAlex MacLean; CHECK-NEXT: param0 1200c5b11a71SAlex MacLean; CHECK-NEXT: ); 1201c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 50 1202c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1203c5b11a71SAlex MacLean %struct.iiri0 = insertvalue %struct.short4 poison, i16 1, 0 1204c5b11a71SAlex MacLean %struct.iiri1 = insertvalue %struct.short4 %struct.iiri0, i16 2, 1 1205c5b11a71SAlex MacLean %struct.iiri2 = insertvalue %struct.short4 %struct.iiri1, i16 %c, 2 1206c5b11a71SAlex MacLean %struct.iiri3 = insertvalue %struct.short4 %struct.iiri2, i16 4, 3 1207c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.iiri3) 1208c5b11a71SAlex MacLean ret void 1209c5b11a71SAlex MacLean} 1210c5b11a71SAlex MacLeandefine void @st_param_v4_i16_irii(i16 %b) { 1211c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_irii( 1212c5b11a71SAlex MacLean; CHECK: { 1213c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 1214c5b11a71SAlex MacLean; CHECK-EMPTY: 1215c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1216c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_irii_param_0]; 1217c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 51, 0 1218c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 12190f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {1, %rs1, 3, 4}; 1220c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1221c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1222c5b11a71SAlex MacLean; CHECK-NEXT: ( 1223c5b11a71SAlex MacLean; CHECK-NEXT: param0 1224c5b11a71SAlex MacLean; CHECK-NEXT: ); 1225c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 51 1226c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1227c5b11a71SAlex MacLean %struct.irii0 = insertvalue %struct.short4 poison, i16 1, 0 1228c5b11a71SAlex MacLean %struct.irii1 = insertvalue %struct.short4 %struct.irii0, i16 %b, 1 1229c5b11a71SAlex MacLean %struct.irii2 = insertvalue %struct.short4 %struct.irii1, i16 3, 2 1230c5b11a71SAlex MacLean %struct.irii3 = insertvalue %struct.short4 %struct.irii2, i16 4, 3 1231c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.irii3) 1232c5b11a71SAlex MacLean ret void 1233c5b11a71SAlex MacLean} 1234c5b11a71SAlex MacLeandefine void @st_param_v4_i16_riii(i16 %a) { 1235c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i16_riii( 1236c5b11a71SAlex MacLean; CHECK: { 1237c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b16 %rs<2>; 1238c5b11a71SAlex MacLean; CHECK-EMPTY: 1239c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1240c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u16 %rs1, [st_param_v4_i16_riii_param_0]; 1241c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 52, 0 1242c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 8 .b8 param0[8]; 12430f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b16 [param0], {%rs1, 2, 3, 4}; 1244c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1245c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i16, 1246c5b11a71SAlex MacLean; CHECK-NEXT: ( 1247c5b11a71SAlex MacLean; CHECK-NEXT: param0 1248c5b11a71SAlex MacLean; CHECK-NEXT: ); 1249c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 52 1250c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1251c5b11a71SAlex MacLean %struct.riii0 = insertvalue %struct.short4 poison, i16 %a, 0 1252c5b11a71SAlex MacLean %struct.riii1 = insertvalue %struct.short4 %struct.riii0, i16 2, 1 1253c5b11a71SAlex MacLean %struct.riii2 = insertvalue %struct.short4 %struct.riii1, i16 3, 2 1254c5b11a71SAlex MacLean %struct.riii3 = insertvalue %struct.short4 %struct.riii2, i16 4, 3 1255c5b11a71SAlex MacLean call void @call_v4_i16(%struct.short4 %struct.riii3) 1256c5b11a71SAlex MacLean ret void 1257c5b11a71SAlex MacLean} 1258c5b11a71SAlex MacLean 1259c5b11a71SAlex MacLeandefine void @st_param_v4_i32_iiii() { 1260c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_iiii( 1261c5b11a71SAlex MacLean; CHECK: { 1262c5b11a71SAlex MacLean; CHECK-EMPTY: 1263c5b11a71SAlex MacLean; CHECK-EMPTY: 1264c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1265c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 53, 0 1266c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 12670f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, 2, 3, 4}; 1268c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1269c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1270c5b11a71SAlex MacLean; CHECK-NEXT: ( 1271c5b11a71SAlex MacLean; CHECK-NEXT: param0 1272c5b11a71SAlex MacLean; CHECK-NEXT: ); 1273c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 53 1274c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1275c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 { i32 1, i32 2, i32 3, i32 4 }) 1276c5b11a71SAlex MacLean ret void 1277c5b11a71SAlex MacLean} 1278c5b11a71SAlex MacLeandefine void @st_param_v4_i32_irrr(i32 %b, i32 %c, i32 %d) { 1279c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_irrr( 1280c5b11a71SAlex MacLean; CHECK: { 1281c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<4>; 1282c5b11a71SAlex MacLean; CHECK-EMPTY: 1283c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1284c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_irrr_param_0]; 1285c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_irrr_param_1]; 1286c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r3, [st_param_v4_i32_irrr_param_2]; 1287c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 54, 0 1288c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 12890f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, %r1, %r2, %r3}; 1290c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1291c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1292c5b11a71SAlex MacLean; CHECK-NEXT: ( 1293c5b11a71SAlex MacLean; CHECK-NEXT: param0 1294c5b11a71SAlex MacLean; CHECK-NEXT: ); 1295c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 54 1296c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1297c5b11a71SAlex MacLean %struct.irrr0 = insertvalue %struct.int4 poison, i32 1, 0 1298c5b11a71SAlex MacLean %struct.irrr1 = insertvalue %struct.int4 %struct.irrr0, i32 %b, 1 1299c5b11a71SAlex MacLean %struct.irrr2 = insertvalue %struct.int4 %struct.irrr1, i32 %c, 2 1300c5b11a71SAlex MacLean %struct.irrr3 = insertvalue %struct.int4 %struct.irrr2, i32 %d, 3 1301c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.irrr3) 1302c5b11a71SAlex MacLean ret void 1303c5b11a71SAlex MacLean} 1304c5b11a71SAlex MacLeandefine void @st_param_v4_i32_rirr(i32 %a, i32 %c, i32 %d) { 1305c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_rirr( 1306c5b11a71SAlex MacLean; CHECK: { 1307c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<4>; 1308c5b11a71SAlex MacLean; CHECK-EMPTY: 1309c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1310c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_rirr_param_0]; 1311c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_rirr_param_1]; 1312c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r3, [st_param_v4_i32_rirr_param_2]; 1313c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 55, 0 1314c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 13150f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, 2, %r2, %r3}; 1316c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1317c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1318c5b11a71SAlex MacLean; CHECK-NEXT: ( 1319c5b11a71SAlex MacLean; CHECK-NEXT: param0 1320c5b11a71SAlex MacLean; CHECK-NEXT: ); 1321c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 55 1322c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1323c5b11a71SAlex MacLean %struct.rirr0 = insertvalue %struct.int4 poison, i32 %a, 0 1324c5b11a71SAlex MacLean %struct.rirr1 = insertvalue %struct.int4 %struct.rirr0, i32 2, 1 1325c5b11a71SAlex MacLean %struct.rirr2 = insertvalue %struct.int4 %struct.rirr1, i32 %c, 2 1326c5b11a71SAlex MacLean %struct.rirr3 = insertvalue %struct.int4 %struct.rirr2, i32 %d, 3 1327c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.rirr3) 1328c5b11a71SAlex MacLean ret void 1329c5b11a71SAlex MacLean} 1330c5b11a71SAlex MacLeandefine void @st_param_v4_i32_rrir(i32 %a, i32 %b, i32 %d) { 1331c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_rrir( 1332c5b11a71SAlex MacLean; CHECK: { 1333c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<4>; 1334c5b11a71SAlex MacLean; CHECK-EMPTY: 1335c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1336c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_rrir_param_0]; 1337c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_rrir_param_1]; 1338c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r3, [st_param_v4_i32_rrir_param_2]; 1339c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 56, 0 1340c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 13410f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, %r2, 3, %r3}; 1342c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1343c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1344c5b11a71SAlex MacLean; CHECK-NEXT: ( 1345c5b11a71SAlex MacLean; CHECK-NEXT: param0 1346c5b11a71SAlex MacLean; CHECK-NEXT: ); 1347c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 56 1348c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1349c5b11a71SAlex MacLean %struct.rrir0 = insertvalue %struct.int4 poison, i32 %a, 0 1350c5b11a71SAlex MacLean %struct.rrir1 = insertvalue %struct.int4 %struct.rrir0, i32 %b, 1 1351c5b11a71SAlex MacLean %struct.rrir2 = insertvalue %struct.int4 %struct.rrir1, i32 3, 2 1352c5b11a71SAlex MacLean %struct.rrir3 = insertvalue %struct.int4 %struct.rrir2, i32 %d, 3 1353c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.rrir3) 1354c5b11a71SAlex MacLean ret void 1355c5b11a71SAlex MacLean} 1356c5b11a71SAlex MacLeandefine void @st_param_v4_i32_rrri(i32 %a, i32 %b, i32 %c) { 1357c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_rrri( 1358c5b11a71SAlex MacLean; CHECK: { 1359c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<4>; 1360c5b11a71SAlex MacLean; CHECK-EMPTY: 1361c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1362c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_rrri_param_0]; 1363c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_rrri_param_1]; 1364c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r3, [st_param_v4_i32_rrri_param_2]; 1365c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 57, 0 1366c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 13670f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, %r2, %r3, 4}; 1368c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1369c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1370c5b11a71SAlex MacLean; CHECK-NEXT: ( 1371c5b11a71SAlex MacLean; CHECK-NEXT: param0 1372c5b11a71SAlex MacLean; CHECK-NEXT: ); 1373c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 57 1374c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1375c5b11a71SAlex MacLean %struct.rrri0 = insertvalue %struct.int4 poison, i32 %a, 0 1376c5b11a71SAlex MacLean %struct.rrri1 = insertvalue %struct.int4 %struct.rrri0, i32 %b, 1 1377c5b11a71SAlex MacLean %struct.rrri2 = insertvalue %struct.int4 %struct.rrri1, i32 %c, 2 1378c5b11a71SAlex MacLean %struct.rrri3 = insertvalue %struct.int4 %struct.rrri2, i32 4, 3 1379c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.rrri3) 1380c5b11a71SAlex MacLean ret void 1381c5b11a71SAlex MacLean} 1382c5b11a71SAlex MacLeandefine void @st_param_v4_i32_iirr(i32 %c, i32 %d) { 1383c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_iirr( 1384c5b11a71SAlex MacLean; CHECK: { 1385c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1386c5b11a71SAlex MacLean; CHECK-EMPTY: 1387c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1388c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_iirr_param_0]; 1389c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_iirr_param_1]; 1390c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 58, 0 1391c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 13920f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, 2, %r1, %r2}; 1393c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1394c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1395c5b11a71SAlex MacLean; CHECK-NEXT: ( 1396c5b11a71SAlex MacLean; CHECK-NEXT: param0 1397c5b11a71SAlex MacLean; CHECK-NEXT: ); 1398c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 58 1399c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1400c5b11a71SAlex MacLean %struct.iirr0 = insertvalue %struct.int4 poison, i32 1, 0 1401c5b11a71SAlex MacLean %struct.iirr1 = insertvalue %struct.int4 %struct.iirr0, i32 2, 1 1402c5b11a71SAlex MacLean %struct.iirr2 = insertvalue %struct.int4 %struct.iirr1, i32 %c, 2 1403c5b11a71SAlex MacLean %struct.iirr3 = insertvalue %struct.int4 %struct.iirr2, i32 %d, 3 1404c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.iirr3) 1405c5b11a71SAlex MacLean ret void 1406c5b11a71SAlex MacLean} 1407c5b11a71SAlex MacLeandefine void @st_param_v4_i32_irir(i32 %b, i32 %d) { 1408c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_irir( 1409c5b11a71SAlex MacLean; CHECK: { 1410c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1411c5b11a71SAlex MacLean; CHECK-EMPTY: 1412c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1413c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_irir_param_0]; 1414c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_irir_param_1]; 1415c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 59, 0 1416c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 14170f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, %r1, 3, %r2}; 1418c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1419c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1420c5b11a71SAlex MacLean; CHECK-NEXT: ( 1421c5b11a71SAlex MacLean; CHECK-NEXT: param0 1422c5b11a71SAlex MacLean; CHECK-NEXT: ); 1423c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 59 1424c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1425c5b11a71SAlex MacLean %struct.irir0 = insertvalue %struct.int4 poison, i32 1, 0 1426c5b11a71SAlex MacLean %struct.irir1 = insertvalue %struct.int4 %struct.irir0, i32 %b, 1 1427c5b11a71SAlex MacLean %struct.irir2 = insertvalue %struct.int4 %struct.irir1, i32 3, 2 1428c5b11a71SAlex MacLean %struct.irir3 = insertvalue %struct.int4 %struct.irir2, i32 %d, 3 1429c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.irir3) 1430c5b11a71SAlex MacLean ret void 1431c5b11a71SAlex MacLean} 1432c5b11a71SAlex MacLeandefine void @st_param_v4_i32_irri(i32 %b, i32 %c) { 1433c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_irri( 1434c5b11a71SAlex MacLean; CHECK: { 1435c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1436c5b11a71SAlex MacLean; CHECK-EMPTY: 1437c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1438c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_irri_param_0]; 1439c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_irri_param_1]; 1440c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 60, 0 1441c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 14420f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, %r1, %r2, 4}; 1443c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1444c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1445c5b11a71SAlex MacLean; CHECK-NEXT: ( 1446c5b11a71SAlex MacLean; CHECK-NEXT: param0 1447c5b11a71SAlex MacLean; CHECK-NEXT: ); 1448c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 60 1449c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1450c5b11a71SAlex MacLean %struct.irri0 = insertvalue %struct.int4 poison, i32 1, 0 1451c5b11a71SAlex MacLean %struct.irri1 = insertvalue %struct.int4 %struct.irri0, i32 %b, 1 1452c5b11a71SAlex MacLean %struct.irri2 = insertvalue %struct.int4 %struct.irri1, i32 %c, 2 1453c5b11a71SAlex MacLean %struct.irri3 = insertvalue %struct.int4 %struct.irri2, i32 4, 3 1454c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.irri3) 1455c5b11a71SAlex MacLean ret void 1456c5b11a71SAlex MacLean} 1457c5b11a71SAlex MacLeandefine void @st_param_v4_i32_riir(i32 %a, i32 %d) { 1458c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_riir( 1459c5b11a71SAlex MacLean; CHECK: { 1460c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1461c5b11a71SAlex MacLean; CHECK-EMPTY: 1462c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1463c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_riir_param_0]; 1464c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_riir_param_1]; 1465c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 61, 0 1466c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 14670f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, 2, 3, %r2}; 1468c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1469c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1470c5b11a71SAlex MacLean; CHECK-NEXT: ( 1471c5b11a71SAlex MacLean; CHECK-NEXT: param0 1472c5b11a71SAlex MacLean; CHECK-NEXT: ); 1473c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 61 1474c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1475c5b11a71SAlex MacLean %struct.riir0 = insertvalue %struct.int4 poison, i32 %a, 0 1476c5b11a71SAlex MacLean %struct.riir1 = insertvalue %struct.int4 %struct.riir0, i32 2, 1 1477c5b11a71SAlex MacLean %struct.riir2 = insertvalue %struct.int4 %struct.riir1, i32 3, 2 1478c5b11a71SAlex MacLean %struct.riir3 = insertvalue %struct.int4 %struct.riir2, i32 %d, 3 1479c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.riir3) 1480c5b11a71SAlex MacLean ret void 1481c5b11a71SAlex MacLean} 1482c5b11a71SAlex MacLeandefine void @st_param_v4_i32_riri(i32 %a, i32 %c) { 1483c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_riri( 1484c5b11a71SAlex MacLean; CHECK: { 1485c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1486c5b11a71SAlex MacLean; CHECK-EMPTY: 1487c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1488c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_riri_param_0]; 1489c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_riri_param_1]; 1490c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 62, 0 1491c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 14920f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, 2, %r2, 4}; 1493c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1494c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1495c5b11a71SAlex MacLean; CHECK-NEXT: ( 1496c5b11a71SAlex MacLean; CHECK-NEXT: param0 1497c5b11a71SAlex MacLean; CHECK-NEXT: ); 1498c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 62 1499c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1500c5b11a71SAlex MacLean %struct.riri0 = insertvalue %struct.int4 poison, i32 %a, 0 1501c5b11a71SAlex MacLean %struct.riri1 = insertvalue %struct.int4 %struct.riri0, i32 2, 1 1502c5b11a71SAlex MacLean %struct.riri2 = insertvalue %struct.int4 %struct.riri1, i32 %c, 2 1503c5b11a71SAlex MacLean %struct.riri3 = insertvalue %struct.int4 %struct.riri2, i32 4, 3 1504c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.riri3) 1505c5b11a71SAlex MacLean ret void 1506c5b11a71SAlex MacLean} 1507c5b11a71SAlex MacLeandefine void @st_param_v4_i32_rrii(i32 %a, i32 %b) { 1508c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_rrii( 1509c5b11a71SAlex MacLean; CHECK: { 1510c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<3>; 1511c5b11a71SAlex MacLean; CHECK-EMPTY: 1512c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1513c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_rrii_param_0]; 1514c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [st_param_v4_i32_rrii_param_1]; 1515c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 63, 0 1516c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 15170f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, %r2, 3, 4}; 1518c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1519c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1520c5b11a71SAlex MacLean; CHECK-NEXT: ( 1521c5b11a71SAlex MacLean; CHECK-NEXT: param0 1522c5b11a71SAlex MacLean; CHECK-NEXT: ); 1523c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 63 1524c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1525c5b11a71SAlex MacLean %struct.rrii0 = insertvalue %struct.int4 poison, i32 %a, 0 1526c5b11a71SAlex MacLean %struct.rrii1 = insertvalue %struct.int4 %struct.rrii0, i32 %b, 1 1527c5b11a71SAlex MacLean %struct.rrii2 = insertvalue %struct.int4 %struct.rrii1, i32 3, 2 1528c5b11a71SAlex MacLean %struct.rrii3 = insertvalue %struct.int4 %struct.rrii2, i32 4, 3 1529c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.rrii3) 1530c5b11a71SAlex MacLean ret void 1531c5b11a71SAlex MacLean} 1532c5b11a71SAlex MacLeandefine void @st_param_v4_i32_iiir(i32 %d) { 1533c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_iiir( 1534c5b11a71SAlex MacLean; CHECK: { 1535c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 1536c5b11a71SAlex MacLean; CHECK-EMPTY: 1537c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1538c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_iiir_param_0]; 1539c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 64, 0 1540c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 15410f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, 2, 3, %r1}; 1542c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1543c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1544c5b11a71SAlex MacLean; CHECK-NEXT: ( 1545c5b11a71SAlex MacLean; CHECK-NEXT: param0 1546c5b11a71SAlex MacLean; CHECK-NEXT: ); 1547c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 64 1548c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1549c5b11a71SAlex MacLean %struct.iiir0 = insertvalue %struct.int4 poison, i32 1, 0 1550c5b11a71SAlex MacLean %struct.iiir1 = insertvalue %struct.int4 %struct.iiir0, i32 2, 1 1551c5b11a71SAlex MacLean %struct.iiir2 = insertvalue %struct.int4 %struct.iiir1, i32 3, 2 1552c5b11a71SAlex MacLean %struct.iiir3 = insertvalue %struct.int4 %struct.iiir2, i32 %d, 3 1553c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.iiir3) 1554c5b11a71SAlex MacLean ret void 1555c5b11a71SAlex MacLean} 1556c5b11a71SAlex MacLeandefine void @st_param_v4_i32_iiri(i32 %c) { 1557c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_iiri( 1558c5b11a71SAlex MacLean; CHECK: { 1559c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 1560c5b11a71SAlex MacLean; CHECK-EMPTY: 1561c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1562c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_iiri_param_0]; 1563c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 65, 0 1564c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 15650f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, 2, %r1, 4}; 1566c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1567c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1568c5b11a71SAlex MacLean; CHECK-NEXT: ( 1569c5b11a71SAlex MacLean; CHECK-NEXT: param0 1570c5b11a71SAlex MacLean; CHECK-NEXT: ); 1571c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 65 1572c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1573c5b11a71SAlex MacLean %struct.iiri0 = insertvalue %struct.int4 poison, i32 1, 0 1574c5b11a71SAlex MacLean %struct.iiri1 = insertvalue %struct.int4 %struct.iiri0, i32 2, 1 1575c5b11a71SAlex MacLean %struct.iiri2 = insertvalue %struct.int4 %struct.iiri1, i32 %c, 2 1576c5b11a71SAlex MacLean %struct.iiri3 = insertvalue %struct.int4 %struct.iiri2, i32 4, 3 1577c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.iiri3) 1578c5b11a71SAlex MacLean ret void 1579c5b11a71SAlex MacLean} 1580c5b11a71SAlex MacLeandefine void @st_param_v4_i32_irii(i32 %b) { 1581c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_irii( 1582c5b11a71SAlex MacLean; CHECK: { 1583c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 1584c5b11a71SAlex MacLean; CHECK-EMPTY: 1585c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1586c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_irii_param_0]; 1587c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 66, 0 1588c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 15890f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {1, %r1, 3, 4}; 1590c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1591c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1592c5b11a71SAlex MacLean; CHECK-NEXT: ( 1593c5b11a71SAlex MacLean; CHECK-NEXT: param0 1594c5b11a71SAlex MacLean; CHECK-NEXT: ); 1595c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 66 1596c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1597c5b11a71SAlex MacLean %struct.irii0 = insertvalue %struct.int4 poison, i32 1, 0 1598c5b11a71SAlex MacLean %struct.irii1 = insertvalue %struct.int4 %struct.irii0, i32 %b, 1 1599c5b11a71SAlex MacLean %struct.irii2 = insertvalue %struct.int4 %struct.irii1, i32 3, 2 1600c5b11a71SAlex MacLean %struct.irii3 = insertvalue %struct.int4 %struct.irii2, i32 4, 3 1601c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.irii3) 1602c5b11a71SAlex MacLean ret void 1603c5b11a71SAlex MacLean} 1604c5b11a71SAlex MacLeandefine void @st_param_v4_i32_riii(i32 %a) { 1605c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_i32_riii( 1606c5b11a71SAlex MacLean; CHECK: { 1607c5b11a71SAlex MacLean; CHECK-NEXT: .reg .b32 %r<2>; 1608c5b11a71SAlex MacLean; CHECK-EMPTY: 1609c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1610c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [st_param_v4_i32_riii_param_0]; 1611c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 67, 0 1612c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 16130f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.b32 [param0], {%r1, 2, 3, 4}; 1614c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1615c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_i32, 1616c5b11a71SAlex MacLean; CHECK-NEXT: ( 1617c5b11a71SAlex MacLean; CHECK-NEXT: param0 1618c5b11a71SAlex MacLean; CHECK-NEXT: ); 1619c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 67 1620c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1621c5b11a71SAlex MacLean %struct.riii0 = insertvalue %struct.int4 poison, i32 %a, 0 1622c5b11a71SAlex MacLean %struct.riii1 = insertvalue %struct.int4 %struct.riii0, i32 2, 1 1623c5b11a71SAlex MacLean %struct.riii2 = insertvalue %struct.int4 %struct.riii1, i32 3, 2 1624c5b11a71SAlex MacLean %struct.riii3 = insertvalue %struct.int4 %struct.riii2, i32 4, 3 1625c5b11a71SAlex MacLean call void @call_v4_i32(%struct.int4 %struct.riii3) 1626c5b11a71SAlex MacLean ret void 1627c5b11a71SAlex MacLean} 1628c5b11a71SAlex MacLean 1629c5b11a71SAlex MacLeandefine void @st_param_v4_f32_iiii() { 1630c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_iiii( 1631c5b11a71SAlex MacLean; CHECK: { 1632c5b11a71SAlex MacLean; CHECK-EMPTY: 1633c5b11a71SAlex MacLean; CHECK-EMPTY: 1634c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1635c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 68, 0 1636c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 16370f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, 0f40000000, 0f40400000, 0f40800000}; 1638c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1639c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1640c5b11a71SAlex MacLean; CHECK-NEXT: ( 1641c5b11a71SAlex MacLean; CHECK-NEXT: param0 1642c5b11a71SAlex MacLean; CHECK-NEXT: ); 1643c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 68 1644c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1645c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 { float 1.0, float 2.0, float 3.0, float 4.0 }) 1646c5b11a71SAlex MacLean ret void 1647c5b11a71SAlex MacLean} 1648c5b11a71SAlex MacLeandefine void @st_param_v4_f32_irrr(float %b, float %c, float %d) { 1649c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_irrr( 1650c5b11a71SAlex MacLean; CHECK: { 1651c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<4>; 1652c5b11a71SAlex MacLean; CHECK-EMPTY: 1653c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1654c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_irrr_param_0]; 1655c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_irrr_param_1]; 1656c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f3, [st_param_v4_f32_irrr_param_2]; 1657c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 69, 0 1658c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 16590f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, %f1, %f2, %f3}; 1660c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1661c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1662c5b11a71SAlex MacLean; CHECK-NEXT: ( 1663c5b11a71SAlex MacLean; CHECK-NEXT: param0 1664c5b11a71SAlex MacLean; CHECK-NEXT: ); 1665c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 69 1666c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1667c5b11a71SAlex MacLean %struct.irrr0 = insertvalue %struct.float4 poison, float 1.0, 0 1668c5b11a71SAlex MacLean %struct.irrr1 = insertvalue %struct.float4 %struct.irrr0, float %b, 1 1669c5b11a71SAlex MacLean %struct.irrr2 = insertvalue %struct.float4 %struct.irrr1, float %c, 2 1670c5b11a71SAlex MacLean %struct.irrr3 = insertvalue %struct.float4 %struct.irrr2, float %d, 3 1671c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.irrr3) 1672c5b11a71SAlex MacLean ret void 1673c5b11a71SAlex MacLean} 1674c5b11a71SAlex MacLeandefine void @st_param_v4_f32_rirr(float %a, float %c, float %d) { 1675c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_rirr( 1676c5b11a71SAlex MacLean; CHECK: { 1677c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<4>; 1678c5b11a71SAlex MacLean; CHECK-EMPTY: 1679c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1680c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_rirr_param_0]; 1681c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_rirr_param_1]; 1682c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f3, [st_param_v4_f32_rirr_param_2]; 1683c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 70, 0 1684c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 16850f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, 0f40000000, %f2, %f3}; 1686c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1687c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1688c5b11a71SAlex MacLean; CHECK-NEXT: ( 1689c5b11a71SAlex MacLean; CHECK-NEXT: param0 1690c5b11a71SAlex MacLean; CHECK-NEXT: ); 1691c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 70 1692c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1693c5b11a71SAlex MacLean %struct.rirr0 = insertvalue %struct.float4 poison, float %a, 0 1694c5b11a71SAlex MacLean %struct.rirr1 = insertvalue %struct.float4 %struct.rirr0, float 2.0, 1 1695c5b11a71SAlex MacLean %struct.rirr2 = insertvalue %struct.float4 %struct.rirr1, float %c, 2 1696c5b11a71SAlex MacLean %struct.rirr3 = insertvalue %struct.float4 %struct.rirr2, float %d, 3 1697c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.rirr3) 1698c5b11a71SAlex MacLean ret void 1699c5b11a71SAlex MacLean} 1700c5b11a71SAlex MacLeandefine void @st_param_v4_f32_rrir(float %a, float %b, float %d) { 1701c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_rrir( 1702c5b11a71SAlex MacLean; CHECK: { 1703c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<4>; 1704c5b11a71SAlex MacLean; CHECK-EMPTY: 1705c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1706c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_rrir_param_0]; 1707c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_rrir_param_1]; 1708c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f3, [st_param_v4_f32_rrir_param_2]; 1709c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 71, 0 1710c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 17110f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, %f2, 0f40400000, %f3}; 1712c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1713c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1714c5b11a71SAlex MacLean; CHECK-NEXT: ( 1715c5b11a71SAlex MacLean; CHECK-NEXT: param0 1716c5b11a71SAlex MacLean; CHECK-NEXT: ); 1717c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 71 1718c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1719c5b11a71SAlex MacLean %struct.rrir0 = insertvalue %struct.float4 poison, float %a, 0 1720c5b11a71SAlex MacLean %struct.rrir1 = insertvalue %struct.float4 %struct.rrir0, float %b, 1 1721c5b11a71SAlex MacLean %struct.rrir2 = insertvalue %struct.float4 %struct.rrir1, float 3.0, 2 1722c5b11a71SAlex MacLean %struct.rrir3 = insertvalue %struct.float4 %struct.rrir2, float %d, 3 1723c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.rrir3) 1724c5b11a71SAlex MacLean ret void 1725c5b11a71SAlex MacLean} 1726c5b11a71SAlex MacLeandefine void @st_param_v4_f32_rrri(float %a, float %b, float %c) { 1727c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_rrri( 1728c5b11a71SAlex MacLean; CHECK: { 1729c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<4>; 1730c5b11a71SAlex MacLean; CHECK-EMPTY: 1731c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1732c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_rrri_param_0]; 1733c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_rrri_param_1]; 1734c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f3, [st_param_v4_f32_rrri_param_2]; 1735c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 72, 0 1736c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 17370f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, %f2, %f3, 0f40800000}; 1738c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1739c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1740c5b11a71SAlex MacLean; CHECK-NEXT: ( 1741c5b11a71SAlex MacLean; CHECK-NEXT: param0 1742c5b11a71SAlex MacLean; CHECK-NEXT: ); 1743c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 72 1744c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1745c5b11a71SAlex MacLean %struct.rrri0 = insertvalue %struct.float4 poison, float %a, 0 1746c5b11a71SAlex MacLean %struct.rrri1 = insertvalue %struct.float4 %struct.rrri0, float %b, 1 1747c5b11a71SAlex MacLean %struct.rrri2 = insertvalue %struct.float4 %struct.rrri1, float %c, 2 1748c5b11a71SAlex MacLean %struct.rrri3 = insertvalue %struct.float4 %struct.rrri2, float 4.0, 3 1749c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.rrri3) 1750c5b11a71SAlex MacLean ret void 1751c5b11a71SAlex MacLean} 1752c5b11a71SAlex MacLeandefine void @st_param_v4_f32_iirr(float %c, float %d) { 1753c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_iirr( 1754c5b11a71SAlex MacLean; CHECK: { 1755c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1756c5b11a71SAlex MacLean; CHECK-EMPTY: 1757c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1758c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_iirr_param_0]; 1759c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_iirr_param_1]; 1760c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 73, 0 1761c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 17620f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, 0f40000000, %f1, %f2}; 1763c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1764c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1765c5b11a71SAlex MacLean; CHECK-NEXT: ( 1766c5b11a71SAlex MacLean; CHECK-NEXT: param0 1767c5b11a71SAlex MacLean; CHECK-NEXT: ); 1768c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 73 1769c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1770c5b11a71SAlex MacLean %struct.iirr0 = insertvalue %struct.float4 poison, float 1.0, 0 1771c5b11a71SAlex MacLean %struct.iirr1 = insertvalue %struct.float4 %struct.iirr0, float 2.0, 1 1772c5b11a71SAlex MacLean %struct.iirr2 = insertvalue %struct.float4 %struct.iirr1, float %c, 2 1773c5b11a71SAlex MacLean %struct.iirr3 = insertvalue %struct.float4 %struct.iirr2, float %d, 3 1774c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.iirr3) 1775c5b11a71SAlex MacLean ret void 1776c5b11a71SAlex MacLean} 1777c5b11a71SAlex MacLeandefine void @st_param_v4_f32_irir(float %b, float %d) { 1778c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_irir( 1779c5b11a71SAlex MacLean; CHECK: { 1780c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1781c5b11a71SAlex MacLean; CHECK-EMPTY: 1782c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1783c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_irir_param_0]; 1784c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_irir_param_1]; 1785c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 74, 0 1786c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 17870f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, %f1, 0f40400000, %f2}; 1788c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1789c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1790c5b11a71SAlex MacLean; CHECK-NEXT: ( 1791c5b11a71SAlex MacLean; CHECK-NEXT: param0 1792c5b11a71SAlex MacLean; CHECK-NEXT: ); 1793c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 74 1794c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1795c5b11a71SAlex MacLean %struct.irir0 = insertvalue %struct.float4 poison, float 1.0, 0 1796c5b11a71SAlex MacLean %struct.irir1 = insertvalue %struct.float4 %struct.irir0, float %b, 1 1797c5b11a71SAlex MacLean %struct.irir2 = insertvalue %struct.float4 %struct.irir1, float 3.0, 2 1798c5b11a71SAlex MacLean %struct.irir3 = insertvalue %struct.float4 %struct.irir2, float %d, 3 1799c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.irir3) 1800c5b11a71SAlex MacLean ret void 1801c5b11a71SAlex MacLean} 1802c5b11a71SAlex MacLeandefine void @st_param_v4_f32_irri(float %b, float %c) { 1803c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_irri( 1804c5b11a71SAlex MacLean; CHECK: { 1805c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1806c5b11a71SAlex MacLean; CHECK-EMPTY: 1807c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1808c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_irri_param_0]; 1809c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_irri_param_1]; 1810c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 75, 0 1811c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 18120f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, %f1, %f2, 0f40800000}; 1813c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1814c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1815c5b11a71SAlex MacLean; CHECK-NEXT: ( 1816c5b11a71SAlex MacLean; CHECK-NEXT: param0 1817c5b11a71SAlex MacLean; CHECK-NEXT: ); 1818c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 75 1819c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1820c5b11a71SAlex MacLean %struct.irri0 = insertvalue %struct.float4 poison, float 1.0, 0 1821c5b11a71SAlex MacLean %struct.irri1 = insertvalue %struct.float4 %struct.irri0, float %b, 1 1822c5b11a71SAlex MacLean %struct.irri2 = insertvalue %struct.float4 %struct.irri1, float %c, 2 1823c5b11a71SAlex MacLean %struct.irri3 = insertvalue %struct.float4 %struct.irri2, float 4.0, 3 1824c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.irri3) 1825c5b11a71SAlex MacLean ret void 1826c5b11a71SAlex MacLean} 1827c5b11a71SAlex MacLeandefine void @st_param_v4_f32_riir(float %a, float %d) { 1828c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_riir( 1829c5b11a71SAlex MacLean; CHECK: { 1830c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1831c5b11a71SAlex MacLean; CHECK-EMPTY: 1832c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1833c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_riir_param_0]; 1834c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_riir_param_1]; 1835c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 76, 0 1836c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 18370f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, 0f40000000, 0f40400000, %f2}; 1838c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1839c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1840c5b11a71SAlex MacLean; CHECK-NEXT: ( 1841c5b11a71SAlex MacLean; CHECK-NEXT: param0 1842c5b11a71SAlex MacLean; CHECK-NEXT: ); 1843c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 76 1844c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1845c5b11a71SAlex MacLean %struct.riir0 = insertvalue %struct.float4 poison, float %a, 0 1846c5b11a71SAlex MacLean %struct.riir1 = insertvalue %struct.float4 %struct.riir0, float 2.0, 1 1847c5b11a71SAlex MacLean %struct.riir2 = insertvalue %struct.float4 %struct.riir1, float 3.0, 2 1848c5b11a71SAlex MacLean %struct.riir3 = insertvalue %struct.float4 %struct.riir2, float %d, 3 1849c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.riir3) 1850c5b11a71SAlex MacLean ret void 1851c5b11a71SAlex MacLean} 1852c5b11a71SAlex MacLeandefine void @st_param_v4_f32_riri(float %a, float %c) { 1853c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_riri( 1854c5b11a71SAlex MacLean; CHECK: { 1855c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1856c5b11a71SAlex MacLean; CHECK-EMPTY: 1857c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1858c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_riri_param_0]; 1859c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_riri_param_1]; 1860c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 77, 0 1861c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 18620f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, 0f40000000, %f2, 0f40800000}; 1863c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1864c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1865c5b11a71SAlex MacLean; CHECK-NEXT: ( 1866c5b11a71SAlex MacLean; CHECK-NEXT: param0 1867c5b11a71SAlex MacLean; CHECK-NEXT: ); 1868c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 77 1869c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1870c5b11a71SAlex MacLean %struct.riri0 = insertvalue %struct.float4 poison, float %a, 0 1871c5b11a71SAlex MacLean %struct.riri1 = insertvalue %struct.float4 %struct.riri0, float 2.0, 1 1872c5b11a71SAlex MacLean %struct.riri2 = insertvalue %struct.float4 %struct.riri1, float %c, 2 1873c5b11a71SAlex MacLean %struct.riri3 = insertvalue %struct.float4 %struct.riri2, float 4.0, 3 1874c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.riri3) 1875c5b11a71SAlex MacLean ret void 1876c5b11a71SAlex MacLean} 1877c5b11a71SAlex MacLeandefine void @st_param_v4_f32_rrii(float %a, float %b) { 1878c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_rrii( 1879c5b11a71SAlex MacLean; CHECK: { 1880c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<3>; 1881c5b11a71SAlex MacLean; CHECK-EMPTY: 1882c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1883c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_rrii_param_0]; 1884c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f2, [st_param_v4_f32_rrii_param_1]; 1885c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 78, 0 1886c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 18870f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, %f2, 0f40400000, 0f40800000}; 1888c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1889c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1890c5b11a71SAlex MacLean; CHECK-NEXT: ( 1891c5b11a71SAlex MacLean; CHECK-NEXT: param0 1892c5b11a71SAlex MacLean; CHECK-NEXT: ); 1893c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 78 1894c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1895c5b11a71SAlex MacLean %struct.rrii0 = insertvalue %struct.float4 poison, float %a, 0 1896c5b11a71SAlex MacLean %struct.rrii1 = insertvalue %struct.float4 %struct.rrii0, float %b, 1 1897c5b11a71SAlex MacLean %struct.rrii2 = insertvalue %struct.float4 %struct.rrii1, float 3.0, 2 1898c5b11a71SAlex MacLean %struct.rrii3 = insertvalue %struct.float4 %struct.rrii2, float 4.0, 3 1899c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.rrii3) 1900c5b11a71SAlex MacLean ret void 1901c5b11a71SAlex MacLean} 1902c5b11a71SAlex MacLeandefine void @st_param_v4_f32_iiir(float %d) { 1903c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_iiir( 1904c5b11a71SAlex MacLean; CHECK: { 1905c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 1906c5b11a71SAlex MacLean; CHECK-EMPTY: 1907c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1908c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_iiir_param_0]; 1909c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 79, 0 1910c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 19110f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, 0f40000000, 0f40400000, %f1}; 1912c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1913c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1914c5b11a71SAlex MacLean; CHECK-NEXT: ( 1915c5b11a71SAlex MacLean; CHECK-NEXT: param0 1916c5b11a71SAlex MacLean; CHECK-NEXT: ); 1917c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 79 1918c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1919c5b11a71SAlex MacLean %struct.iiir0 = insertvalue %struct.float4 poison, float 1.0, 0 1920c5b11a71SAlex MacLean %struct.iiir1 = insertvalue %struct.float4 %struct.iiir0, float 2.0, 1 1921c5b11a71SAlex MacLean %struct.iiir2 = insertvalue %struct.float4 %struct.iiir1, float 3.0, 2 1922c5b11a71SAlex MacLean %struct.iiir3 = insertvalue %struct.float4 %struct.iiir2, float %d, 3 1923c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.iiir3) 1924c5b11a71SAlex MacLean ret void 1925c5b11a71SAlex MacLean} 1926c5b11a71SAlex MacLeandefine void @st_param_v4_f32_iiri(float %c) { 1927c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_iiri( 1928c5b11a71SAlex MacLean; CHECK: { 1929c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 1930c5b11a71SAlex MacLean; CHECK-EMPTY: 1931c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1932c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_iiri_param_0]; 1933c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 80, 0 1934c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 19350f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, 0f40000000, %f1, 0f40800000}; 1936c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1937c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1938c5b11a71SAlex MacLean; CHECK-NEXT: ( 1939c5b11a71SAlex MacLean; CHECK-NEXT: param0 1940c5b11a71SAlex MacLean; CHECK-NEXT: ); 1941c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 80 1942c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1943c5b11a71SAlex MacLean %struct.iiri0 = insertvalue %struct.float4 poison, float 1.0, 0 1944c5b11a71SAlex MacLean %struct.iiri1 = insertvalue %struct.float4 %struct.iiri0, float 2.0, 1 1945c5b11a71SAlex MacLean %struct.iiri2 = insertvalue %struct.float4 %struct.iiri1, float %c, 2 1946c5b11a71SAlex MacLean %struct.iiri3 = insertvalue %struct.float4 %struct.iiri2, float 4.0, 3 1947c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.iiri3) 1948c5b11a71SAlex MacLean ret void 1949c5b11a71SAlex MacLean} 1950c5b11a71SAlex MacLeandefine void @st_param_v4_f32_irii(float %b) { 1951c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_irii( 1952c5b11a71SAlex MacLean; CHECK: { 1953c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 1954c5b11a71SAlex MacLean; CHECK-EMPTY: 1955c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1956c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_irii_param_0]; 1957c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 81, 0 1958c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 19590f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {0f3F800000, %f1, 0f40400000, 0f40800000}; 1960c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1961c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1962c5b11a71SAlex MacLean; CHECK-NEXT: ( 1963c5b11a71SAlex MacLean; CHECK-NEXT: param0 1964c5b11a71SAlex MacLean; CHECK-NEXT: ); 1965c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 81 1966c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1967c5b11a71SAlex MacLean %struct.irii0 = insertvalue %struct.float4 poison, float 1.0, 0 1968c5b11a71SAlex MacLean %struct.irii1 = insertvalue %struct.float4 %struct.irii0, float %b, 1 1969c5b11a71SAlex MacLean %struct.irii2 = insertvalue %struct.float4 %struct.irii1, float 3.0, 2 1970c5b11a71SAlex MacLean %struct.irii3 = insertvalue %struct.float4 %struct.irii2, float 4.0, 3 1971c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.irii3) 1972c5b11a71SAlex MacLean ret void 1973c5b11a71SAlex MacLean} 1974c5b11a71SAlex MacLeandefine void @st_param_v4_f32_riii(float %a) { 1975c5b11a71SAlex MacLean; CHECK-LABEL: st_param_v4_f32_riii( 1976c5b11a71SAlex MacLean; CHECK: { 1977c5b11a71SAlex MacLean; CHECK-NEXT: .reg .f32 %f<2>; 1978c5b11a71SAlex MacLean; CHECK-EMPTY: 1979c5b11a71SAlex MacLean; CHECK-NEXT: // %bb.0: 1980c5b11a71SAlex MacLean; CHECK-NEXT: ld.param.f32 %f1, [st_param_v4_f32_riii_param_0]; 1981c5b11a71SAlex MacLean; CHECK-NEXT: { // callseq 82, 0 1982c5b11a71SAlex MacLean; CHECK-NEXT: .param .align 16 .b8 param0[16]; 19830f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.v4.f32 [param0], {%f1, 0f40000000, 0f40400000, 0f40800000}; 1984c5b11a71SAlex MacLean; CHECK-NEXT: call.uni 1985c5b11a71SAlex MacLean; CHECK-NEXT: call_v4_f32, 1986c5b11a71SAlex MacLean; CHECK-NEXT: ( 1987c5b11a71SAlex MacLean; CHECK-NEXT: param0 1988c5b11a71SAlex MacLean; CHECK-NEXT: ); 1989c5b11a71SAlex MacLean; CHECK-NEXT: } // callseq 82 1990c5b11a71SAlex MacLean; CHECK-NEXT: ret; 1991c5b11a71SAlex MacLean %struct.riii0 = insertvalue %struct.float4 poison, float %a, 0 1992c5b11a71SAlex MacLean %struct.riii1 = insertvalue %struct.float4 %struct.riii0, float 2.0, 1 1993c5b11a71SAlex MacLean %struct.riii2 = insertvalue %struct.float4 %struct.riii1, float 3.0, 2 1994c5b11a71SAlex MacLean %struct.riii3 = insertvalue %struct.float4 %struct.riii2, float 4.0, 3 1995c5b11a71SAlex MacLean call void @call_v4_f32(%struct.float4 %struct.riii3) 1996c5b11a71SAlex MacLean ret void 1997c5b11a71SAlex MacLean} 1998c5b11a71SAlex MacLean 1999c5b11a71SAlex MacLeandeclare void @call_v4_i8(%struct.char4 alignstack(4)) 2000c5b11a71SAlex MacLeandeclare void @call_v4_i16(%struct.short4 alignstack(8)) 2001c5b11a71SAlex MacLeandeclare void @call_v4_i32(%struct.int4 alignstack(16)) 2002c5b11a71SAlex MacLeandeclare void @call_v4_f32(%struct.float4 alignstack(16)) 2003