1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr: 7*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v1, v0 8*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_add_f32_e32 v0, 1.0, v1 9*9880d681SAndroid Build Coastguard Worker; GCN-DAG: exp 15, 0, 1, 1, 1, v1, v1, v1, v1 10*9880d681SAndroid Build Coastguard Worker; GCN: s_waitcnt expcnt(0) 11*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 12*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {float, float} @vgpr([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 13*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3) 14*9880d681SAndroid Build Coastguard Worker %x = fadd float %3, 1.0 15*9880d681SAndroid Build Coastguard Worker %a = insertvalue {float, float} undef, float %x, 0 16*9880d681SAndroid Build Coastguard Worker %b = insertvalue {float, float} %a, float %3, 1 17*9880d681SAndroid Build Coastguard Worker ret {float, float} %b 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr_literal: 21*9880d681SAndroid Build Coastguard Worker; GCN: exp 15, 0, 1, 1, 1, v0, v0, v0, v0 22*9880d681SAndroid Build Coastguard Worker; GCN: s_waitcnt expcnt(0) 23*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v0, 1.0 24*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v1, 2.0 25*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v2, 4.0 26*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v3, -1.0 27*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 28*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {float, float, float, float} @vgpr_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 29*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3) 30*9880d681SAndroid Build Coastguard Worker ret {float, float, float, float} {float 1.0, float 2.0, float 4.0, float -1.0} 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 35*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 562 36*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 37*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 562 38*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr_ps_addr0: 39*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v0 40*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v1 41*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v2 42*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v3, v4 43*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v4, v6 44*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 45*9880d681SAndroid Build Coastguard Workerattributes #0 = { "InitialPSInputAddr"="0" } 46*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps {float, float, float, float, float} @vgpr_ps_addr0([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #0 { 47*9880d681SAndroid Build Coastguard Worker %i0 = extractelement <2 x i32> %4, i32 0 48*9880d681SAndroid Build Coastguard Worker %i1 = extractelement <2 x i32> %4, i32 1 49*9880d681SAndroid Build Coastguard Worker %i2 = extractelement <2 x i32> %7, i32 0 50*9880d681SAndroid Build Coastguard Worker %i3 = extractelement <2 x i32> %8, i32 0 51*9880d681SAndroid Build Coastguard Worker %f0 = bitcast i32 %i0 to float 52*9880d681SAndroid Build Coastguard Worker %f1 = bitcast i32 %i1 to float 53*9880d681SAndroid Build Coastguard Worker %f2 = bitcast i32 %i2 to float 54*9880d681SAndroid Build Coastguard Worker %f3 = bitcast i32 %i3 to float 55*9880d681SAndroid Build Coastguard Worker %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0 56*9880d681SAndroid Build Coastguard Worker %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1 57*9880d681SAndroid Build Coastguard Worker %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2 58*9880d681SAndroid Build Coastguard Worker %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3 59*9880d681SAndroid Build Coastguard Worker %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4 60*9880d681SAndroid Build Coastguard Worker ret {float, float, float, float, float} %r4 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 65*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 1 66*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 67*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 1 68*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}ps_input_ena_no_inputs: 69*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v0, 1.0 70*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 71*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps float @ps_input_ena_no_inputs([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #0 { 72*9880d681SAndroid Build Coastguard Worker ret float 1.0 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 77*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 2081 78*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 79*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 2081 80*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}ps_input_ena_pos_w: 81*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v0, v4 82*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v1, v2 83*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v2, v3 84*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 85*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps {float, <2 x float>} @ps_input_ena_pos_w([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #0 { 86*9880d681SAndroid Build Coastguard Worker %f = bitcast <2 x i32> %8 to <2 x float> 87*9880d681SAndroid Build Coastguard Worker %s = insertvalue {float, <2 x float>} undef, float %14, 0 88*9880d681SAndroid Build Coastguard Worker %s1 = insertvalue {float, <2 x float>} %s, <2 x float> %f, 1 89*9880d681SAndroid Build Coastguard Worker ret {float, <2 x float>} %s1 90*9880d681SAndroid Build Coastguard Worker} 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 94*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 562 95*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 96*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 563 97*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr_ps_addr1: 98*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v0, v2 99*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v1, v3 100*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v2, v4 101*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v3, v6 102*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v4, v8 103*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 104*9880d681SAndroid Build Coastguard Workerattributes #1 = { "InitialPSInputAddr"="1" } 105*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps {float, float, float, float, float} @vgpr_ps_addr1([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #1 { 106*9880d681SAndroid Build Coastguard Worker %i0 = extractelement <2 x i32> %4, i32 0 107*9880d681SAndroid Build Coastguard Worker %i1 = extractelement <2 x i32> %4, i32 1 108*9880d681SAndroid Build Coastguard Worker %i2 = extractelement <2 x i32> %7, i32 0 109*9880d681SAndroid Build Coastguard Worker %i3 = extractelement <2 x i32> %8, i32 0 110*9880d681SAndroid Build Coastguard Worker %f0 = bitcast i32 %i0 to float 111*9880d681SAndroid Build Coastguard Worker %f1 = bitcast i32 %i1 to float 112*9880d681SAndroid Build Coastguard Worker %f2 = bitcast i32 %i2 to float 113*9880d681SAndroid Build Coastguard Worker %f3 = bitcast i32 %i3 to float 114*9880d681SAndroid Build Coastguard Worker %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0 115*9880d681SAndroid Build Coastguard Worker %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1 116*9880d681SAndroid Build Coastguard Worker %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2 117*9880d681SAndroid Build Coastguard Worker %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3 118*9880d681SAndroid Build Coastguard Worker %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4 119*9880d681SAndroid Build Coastguard Worker ret {float, float, float, float, float} %r4 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 124*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 562 125*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 126*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 631 127*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr_ps_addr119: 128*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v0, v2 129*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v1, v3 130*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v2, v6 131*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v3, v8 132*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v4, v12 133*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 134*9880d681SAndroid Build Coastguard Workerattributes #2 = { "InitialPSInputAddr"="119" } 135*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps {float, float, float, float, float} @vgpr_ps_addr119([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #2 { 136*9880d681SAndroid Build Coastguard Worker %i0 = extractelement <2 x i32> %4, i32 0 137*9880d681SAndroid Build Coastguard Worker %i1 = extractelement <2 x i32> %4, i32 1 138*9880d681SAndroid Build Coastguard Worker %i2 = extractelement <2 x i32> %7, i32 0 139*9880d681SAndroid Build Coastguard Worker %i3 = extractelement <2 x i32> %8, i32 0 140*9880d681SAndroid Build Coastguard Worker %f0 = bitcast i32 %i0 to float 141*9880d681SAndroid Build Coastguard Worker %f1 = bitcast i32 %i1 to float 142*9880d681SAndroid Build Coastguard Worker %f2 = bitcast i32 %i2 to float 143*9880d681SAndroid Build Coastguard Worker %f3 = bitcast i32 %i3 to float 144*9880d681SAndroid Build Coastguard Worker %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0 145*9880d681SAndroid Build Coastguard Worker %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1 146*9880d681SAndroid Build Coastguard Worker %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2 147*9880d681SAndroid Build Coastguard Worker %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3 148*9880d681SAndroid Build Coastguard Worker %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4 149*9880d681SAndroid Build Coastguard Worker ret {float, float, float, float, float} %r4 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; GCN: .long 165580 154*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 562 155*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 165584 156*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: .long 946 157*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}vgpr_ps_addr418: 158*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v0 159*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v1 160*9880d681SAndroid Build Coastguard Worker; GCN-NOT: v_mov_b32_e32 v2 161*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v3, v4 162*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v4, v8 163*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 164*9880d681SAndroid Build Coastguard Workerattributes #3 = { "InitialPSInputAddr"="418" } 165*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps {float, float, float, float, float} @vgpr_ps_addr418([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #3 { 166*9880d681SAndroid Build Coastguard Worker %i0 = extractelement <2 x i32> %4, i32 0 167*9880d681SAndroid Build Coastguard Worker %i1 = extractelement <2 x i32> %4, i32 1 168*9880d681SAndroid Build Coastguard Worker %i2 = extractelement <2 x i32> %7, i32 0 169*9880d681SAndroid Build Coastguard Worker %i3 = extractelement <2 x i32> %8, i32 0 170*9880d681SAndroid Build Coastguard Worker %f0 = bitcast i32 %i0 to float 171*9880d681SAndroid Build Coastguard Worker %f1 = bitcast i32 %i1 to float 172*9880d681SAndroid Build Coastguard Worker %f2 = bitcast i32 %i2 to float 173*9880d681SAndroid Build Coastguard Worker %f3 = bitcast i32 %i3 to float 174*9880d681SAndroid Build Coastguard Worker %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0 175*9880d681SAndroid Build Coastguard Worker %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1 176*9880d681SAndroid Build Coastguard Worker %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2 177*9880d681SAndroid Build Coastguard Worker %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3 178*9880d681SAndroid Build Coastguard Worker %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4 179*9880d681SAndroid Build Coastguard Worker ret {float, float, float, float, float} %r4 180*9880d681SAndroid Build Coastguard Worker} 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}sgpr: 184*9880d681SAndroid Build Coastguard Worker; GCN: s_add_i32 s0, s3, 2 185*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 s2, s3 186*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 187*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {i32, i32, i32} @sgpr([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 188*9880d681SAndroid Build Coastguard Worker %x = add i32 %2, 2 189*9880d681SAndroid Build Coastguard Worker %a = insertvalue {i32, i32, i32} undef, i32 %x, 0 190*9880d681SAndroid Build Coastguard Worker %b = insertvalue {i32, i32, i32} %a, i32 %1, 1 191*9880d681SAndroid Build Coastguard Worker %c = insertvalue {i32, i32, i32} %a, i32 %2, 2 192*9880d681SAndroid Build Coastguard Worker ret {i32, i32, i32} %c 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}sgpr_literal: 197*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 s0, 5 198*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_mov_b32 s0, s0 199*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s1, 6 200*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s2, 7 201*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s3, 8 202*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 203*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {i32, i32, i32, i32} @sgpr_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 204*9880d681SAndroid Build Coastguard Worker %x = add i32 %2, 2 205*9880d681SAndroid Build Coastguard Worker ret {i32, i32, i32, i32} {i32 5, i32 6, i32 7, i32 8} 206*9880d681SAndroid Build Coastguard Worker} 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}both: 210*9880d681SAndroid Build Coastguard Worker; GCN: v_mov_b32_e32 v1, v0 211*9880d681SAndroid Build Coastguard Worker; GCN-DAG: exp 15, 0, 1, 1, 1, v1, v1, v1, v1 212*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_add_f32_e32 v0, 1.0, v1 213*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_add_i32 s0, s3, 2 214*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s1, s2 215*9880d681SAndroid Build Coastguard Worker; GCN: s_mov_b32 s2, s3 216*9880d681SAndroid Build Coastguard Worker; GCN: s_waitcnt expcnt(0) 217*9880d681SAndroid Build Coastguard Worker; GCN-NOT: s_endpgm 218*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {float, i32, float, i32, i32} @both([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 219*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3) 220*9880d681SAndroid Build Coastguard Worker %v = fadd float %3, 1.0 221*9880d681SAndroid Build Coastguard Worker %s = add i32 %2, 2 222*9880d681SAndroid Build Coastguard Worker %a0 = insertvalue {float, i32, float, i32, i32} undef, float %v, 0 223*9880d681SAndroid Build Coastguard Worker %a1 = insertvalue {float, i32, float, i32, i32} %a0, i32 %s, 1 224*9880d681SAndroid Build Coastguard Worker %a2 = insertvalue {float, i32, float, i32, i32} %a1, float %3, 2 225*9880d681SAndroid Build Coastguard Worker %a3 = insertvalue {float, i32, float, i32, i32} %a2, i32 %1, 3 226*9880d681SAndroid Build Coastguard Worker %a4 = insertvalue {float, i32, float, i32, i32} %a3, i32 %2, 4 227*9880d681SAndroid Build Coastguard Worker ret {float, i32, float, i32, i32} %a4 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}structure_literal: 232*9880d681SAndroid Build Coastguard Worker; GCN: exp 15, 0, 1, 1, 1, v0, v0, v0, v0 233*9880d681SAndroid Build Coastguard Worker; GCN: s_waitcnt expcnt(0) 234*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v0, 1.0 235*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s0, 2 236*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_mov_b32 s1, 3 237*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v1, 2.0 238*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v2, 4.0 239*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs {{float, i32}, {i32, <2 x float>}} @structure_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) { 240*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3) 241*9880d681SAndroid Build Coastguard Worker ret {{float, i32}, {i32, <2 x float>}} {{float, i32} {float 1.0, i32 2}, {i32, <2 x float>} {i32 3, <2 x float> <float 2.0, float 4.0>}} 242*9880d681SAndroid Build Coastguard Worker} 243